markocupic / contao-famulaturboerse-bundle
为 https://degam-famulaturboerse.de 提供的 Contao famulaturboerse 模块。
0.0.2
2019-03-20 20:28 UTC
Requires
- codefog/contao-haste: ^4.23
- contao/core-bundle: ^4.4
- terminal42/notification_center: ^1.5
This package is auto-updated.
Last update: 2024-09-04 09:12:23 UTC
README
该包包含用于 https://degam-famulaturboerse.de 的前端和后端模块。
安装
Opengeo 数据库
在安装之前,应该在服务器上安装 Opengeo 数据库。文件位于 src/Resources/contao。Opengeo 数据库用于范围搜索。
插件安装
然后通过 Contao 管理员或控制台安装包。
composer require markocupic/contao-famulaturboerse-bundle
现在更新数据库。
插件还安装了扩展
"require": { ... .... ..... "codefog/contao-haste": "^4.23", "terminal42/notification_center": "^1.5" ..... .... ... },
Opengeo 设置
在后台设置中,必须设置数据库连接选项。数据库用户、密码、端口、数据库名称
创建页面/前端模块
必须创建 4 个页面
- 实习机会(阅读器)
- 实习机会(列表)
- 用于记录实习机会的表单页面
- 登录成员的仪表板
最好按照以下顺序创建 4 个模块。
- 实习机会(阅读器)
- 实习机会(列表)
- 用于记录实习机会的表单页面
- 实习机会仪表板
此外,现在还需要在通知中心创建通知并设置 SMTP 设置,以便在 Famulatur 表中插入新内容时发送电子邮件。以下标签可用于通知:##anform_*## 用于访问表单值,##email_text## 用于访问整个数据集,##link_backend## 用于访问当前 Famulatur 数据集的 Contao 后端链接。
然后分配模块到页面/文章。
钩子
为了能够响应更新和插入,存在两个钩子。请参阅 config.php
$GLOBALS['TL_HOOKS']['onInsertFamulaturAngebot'][] = array('Markocupic\Famulatur\Hooks\InsertFamulaturAngebot', 'insertFamulaturAngebot'); $GLOBALS['TL_HOOKS']['onUpdateFamulaturAngebot'][] = array('Markocupic\Famulatur\Hooks\UpdateFamulaturAngebot', 'updateFamulaturAngebot');
例如,onInsertFamulaturAngebot 钩子用于发送新插入的通知。
<?php /* * This file is part of Contao Famulaturbörse Bundle. * * (c) Marko Cupic * @author Marko Cupic <https://github.com/markocupic/contao-famulaturboerse-bundle> * @license MIT */ namespace Markocupic\Famulatur\Hooks; use Contao\Controller; use Contao\Environment; use Contao\FamulaturAngebotModel; use Contao\MemberModel; use Contao\Module; use Contao\StringUtil; use NotificationCenter\Model\Notification; use Haste\Form\Form; /** * Class InsertFamulaturAngebot * @package Markocupic\Famulatur\Hooks */ class InsertFamulaturAngebot { /** * @param FamulaturAngebotModel $objAngebotModel * @param MemberModel|null $objMember * @param Form $objForm * @param Module|null $objModule */ public static function insertFamulaturAngebot(FamulaturAngebotModel $objAngebotModel, MemberModel $objMember = null, Form $objForm, Module $objModule = null) { global $objPage; Controller::loadLanguageFile('tl_famulatur_angebot'); if ($objModule !== null) { if ($objModule->notifyOnFamulaturAngebotInserts) { $objEmail = Notification::findByPk($objModule->insertFamulaturAngebotNotification); if ($objEmail !== null) { // Set token array $arrTokens = array( 'link_backend' => sprintf('%s/contao?do=famulatur_angebotn&act=edit&id=%s', Environment::get('url'), $objAngebotModel->id), ); // Add wildcards anform_* & email_text $strText = ''; $arrRow = $objAngebotModel->row(); $arrAllowedFields = StringUtil::deserialize($objModule->formFields, true); foreach ($arrRow as $k => $v) { if (in_array($k, $arrAllowedFields)) { $key = $GLOBALS['TL_LANG']['tl_famulatur_angebot'][$k][0] != '' ? $GLOBALS['TL_LANG']['tl_famulatur_angebot'][$k][0] : $k; $strText .= '[' . $key . ']'; $strText .= "\r\n"; $strText .= html_entity_decode($v) != '' ? html_entity_decode($v) : '----'; $strText .= "\r\n"; $strText .= "\r\n"; } if (strpos($k, 'anform_') === 0) { $arrTokens[$k] = html_entity_decode($v); } } $arrTokens['email_text'] = $strText; $objEmail->send($arrTokens, $objPage->language); } } } } } class_alias(InsertFamulaturAngebot::class, 'InsertFamulaturAngebot');