markocupic/contao-famulaturboerse-bundle

为 https://degam-famulaturboerse.de 提供的 Contao famulaturboerse 模块。

0.0.2 2019-03-20 20:28 UTC

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');