示例#1
0
if (!rex::isBackend()) {
    \rex_extension::register('OUTPUT_FILTER', '\\Sprog\\Extension::replaceWildcards');
}
if (rex::isBackend() && rex::getUser()) {
    \rex_extension::register('CLANG_ADDED', '\\Sprog\\Extension::clangAdded');
    \rex_extension::register('CLANG_DELETED', '\\Sprog\\Extension::clangDeleted');
    rex_extension::register('PAGES_PREPARED', function () {
        if (rex::getUser()->isAdmin()) {
            if (\rex_be_controller::getCurrentPage() == 'sprog/settings') {
                $func = rex_request('func', 'string');
                if ($func == 'update') {
                    \rex_config::set('sprog', 'wildcard_clang_switch', rex_request('clang_switch', 'bool'));
                }
            }
        }
        if (rex::getUser()->isAdmin() || rex::getUser()->hasPerm('sprog[wildcard]')) {
            $page = \rex_be_controller::getPageObject('sprog/wildcard');
            if (Wildcard::isClangSwitchMode()) {
                $clang_id = str_replace('clang', '', rex_be_controller::getCurrentPagePart(3));
                $page->setSubPath(rex_path::addon('sprog', 'pages/wildcard.clang_switch.php'));
                foreach (\rex_clang::getAll() as $id => $clang) {
                    if (rex::getUser()->getComplexPerm('clang')->hasPerm($id)) {
                        $page->addSubpage((new rex_be_page('clang' . $id, $clang->getName()))->setSubPath(rex_path::addon('sprog', 'pages/wildcard.clang_switch.php'))->setIsActive($id == $clang_id));
                    }
                }
            } else {
                $page->setSubPath(rex_path::addon('sprog', 'pages/wildcard.clang_all.php'));
            }
        }
    });
}
    $content = $fragment->parse('core/page/section.php');
} else {
    $title = $func == 'edit' ? $this->i18n('edit') : $this->i18n('add');
    \rex_extension::register('REX_FORM_CONTROL_FIELDS', '\\Sprog\\Extension::wildcardFormControlElement');
    $form = rex_form::factory(rex::getTable('sprog_wildcard'), '', 'pid = ' . $pid);
    $form->addParam('pid', $pid);
    $form->setApplyUrl(rex_url::currentBackendPage());
    $form->setLanguageSupport('id', 'clang_id');
    $form->setEditMode($func == 'edit');
    if ($func == 'add' && rex::getUser()->getComplexPerm('clang')->hasAll()) {
        $field = $form->addTextField('wildcard', rex_request('wildcard_name', 'string', null));
        $field->setNotice($this->i18n('wildcard_without_tag'));
    } else {
        $field = $form->addReadOnlyField('wildcard', rex_request('wildcard_name', 'string', null));
    }
    $field->setLabel($this->i18n('wildcard'));
    $field->getValidator()->add('notEmpty', $this->i18n('wildcard_error_no_wildcard'));
    $field = $form->addTextAreaField('replace');
    $field->setLabel($this->i18n('wildcard_replace'));
    $content .= $form->get();
    $fragment = new rex_fragment();
    $fragment->setVar('class', 'edit', false);
    $fragment->setVar('title', $title);
    $fragment->setVar('body', $content, false);
    $content = $fragment->parse('core/page/section.php');
}
echo $message;
echo $content;
if (rex::getUser()->getComplexPerm('clang')->hasAll()) {
    echo Wildcard::getMissingWildcardsAsTable();
}