Ejemplo n.º 1
0
 public function __construct($tag = '', rex_form $table = null, array $attributes = [])
 {
     parent::__construct('', $table, $attributes);
     $this->labelField = '';
     $this->whereCondition = '';
     $this->primaryKey = 'id';
     $this->firstOptionMsg = 'form_field_first_priority';
     $this->optionMsg = 'form_field_after_priority';
     $this->select->setSize(1);
     rex_extension::register('REX_FORM_SAVED', [$this, 'organizePriorities']);
 }
Ejemplo n.º 2
0
 public function testRegister()
 {
     $EP = 'TEST_EP_LEVELS';
     $callback = function ($str) {
         return function (rex_extension_point $ep) use($str) {
             return $ep->getSubject() . $str . ' ';
         };
     };
     rex_extension::register($EP, $callback('late1'), rex_extension::LATE);
     rex_extension::register($EP, $callback('normal1'));
     rex_extension::register($EP, $callback('early1'), rex_extension::EARLY);
     rex_extension::register($EP, $callback('late2'), rex_extension::LATE);
     rex_extension::register($EP, $callback('normal2'), rex_extension::NORMAL);
     rex_extension::register($EP, $callback('early2'), rex_extension::EARLY);
     $expected = 'early1 early2 normal1 normal2 late1 late2 ';
     $actual = rex_extension::registerPoint(new rex_extension_point($EP, ''));
     $this->assertEquals($expected, $actual);
 }
 public function show_counter()
 {
     $counter = 0;
     $current_user = rex::getUser()->getId();
     $sql_counter = rex_sql::factory();
     //$sql_counter->setDebug();
     $sql_counter->setQuery('SELECT counter FROM rex_aufgaben_user_settings WHERE user = '******'</i> Aufgaben <span class="label label-default">' . $counter . '</span></a>';
         $counter = $sql_counter->getValue('counter');
         if ($counter > 0) {
             $ersetzen = '</i> Aufgaben <span class="label label-danger">' . $counter . '</span></a>';
         } else {
             $ersetzen = '</i> Aufgaben <span class="label label-default">' . $counter . '</span></a>';
         }
         rex_extension::register('OUTPUT_FILTER', function (rex_extension_point $ep) use($ersetzen) {
             $suchmuster = '</i> Aufgaben';
             $ersetzen = $ersetzen;
             $ep->setSubject(str_replace($suchmuster, $ersetzen, $ep->getSubject()));
         });
     }
 }
Ejemplo n.º 4
0
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo5
 *
 * @var rex_addon $this
 */
$mypage = 'metainfo';
if (!defined('REX_METAINFO_FIELD_TEXT')) {
    // Feldtypen
    define('REX_METAINFO_FIELD_TEXT', 1);
    define('REX_METAINFO_FIELD_TEXTAREA', 2);
    define('REX_METAINFO_FIELD_SELECT', 3);
    define('REX_METAINFO_FIELD_RADIO', 4);
    define('REX_METAINFO_FIELD_CHECKBOX', 5);
    define('REX_METAINFO_FIELD_REX_MEDIA_WIDGET', 6);
    define('REX_METAINFO_FIELD_REX_MEDIALIST_WIDGET', 7);
    define('REX_METAINFO_FIELD_REX_LINK_WIDGET', 8);
    define('REX_METAINFO_FIELD_REX_LINKLIST_WIDGET', 9);
    define('REX_METAINFO_FIELD_DATE', 10);
    define('REX_METAINFO_FIELD_DATETIME', 11);
    define('REX_METAINFO_FIELD_LEGEND', 12);
    define('REX_METAINFO_FIELD_TIME', 13);
    define('REX_METAINFO_FIELD_COUNT', 13);
}
$this->setProperty('prefixes', ['art_', 'cat_', 'med_']);
$this->setProperty('metaTables', ['art_' => rex::getTablePrefix() . 'article', 'cat_' => rex::getTablePrefix() . 'article', 'med_' => rex::getTablePrefix() . 'media']);
if (rex::isBackend()) {
    $curDir = __DIR__;
    require_once $curDir . '/functions/function_metainfo.php';
    rex_extension::register('PAGE_CHECKED', 'rex_metainfo_extensions_handler');
}
Ejemplo n.º 5
0
<?php

if (rex::isBackend()) {
    rex_extension::register('MEDIA_ADDED', 'rex_focuspoint::set_media');
    rex_extension::register('MEDIA_UPDATED', 'rex_focuspoint::set_media');
    rex_extension::register('MEDIA_FORM_EDIT', 'rex_focuspoint::show_form_info');
}
rex_media_manager::addEffect('rex_effect_focuspoint_resize');
Ejemplo n.º 6
0
    {
        $params = $ep->getParams();
        if (isset($params['category'])) {
            $params['activeItem'] = $params['category'];
            // Hier die category_id setzen, damit beim klick auf den REX_LINK_BUTTON der Medienpool in der aktuellen Kategorie startet
            $params['activeItem']->setValue('category_id', $params['id']);
        }
        $result = '
            <tr id="' . self::CONTAINER . '" class="collapse mark">
                <td colspan="2"></td>
                <td colspan="5">
                    <div class="rex-collapse-content">
                    ' . parent::renderFormAndSave(self::PREFIX, $params) . '
                    </div>
                </td>
            </tr>';
        // Bei CAT_ADDED und CAT_UPDATED nur speichern und kein Formular zurückgeben
        if ('CAT_UPDATED' == $ep->getName() || 'CAT_ADDED' == $ep->getName()) {
            return $ep->getSubject();
        } else {
            return $ep->getSubject() . $result;
        }
    }
}
$catHandler = new rex_metainfo_category_handler();
rex_extension::register('CAT_FORM_ADD', [$catHandler, 'extendForm']);
rex_extension::register('CAT_FORM_EDIT', [$catHandler, 'extendForm']);
rex_extension::register('CAT_ADDED', [$catHandler, 'extendForm']);
rex_extension::register('CAT_UPDATED', [$catHandler, 'extendForm']);
rex_extension::register('CAT_FORM_BUTTONS', [$catHandler, 'renderToggleButton']);
Ejemplo n.º 7
0
 public function testRegisterMultiple()
 {
     $EP1 = 'TEST_EP_MULTIPLE_1';
     $EP2 = 'TEST_EP_MULTIPLE_2';
     rex_extension::register([$EP1, $EP2], function () {
         return 'foo';
     });
     $this->assertSame('foo', rex_extension::registerPoint(new rex_extension_point($EP1)));
     $this->assertSame('foo', rex_extension::registerPoint(new rex_extension_point($EP2)));
 }
Ejemplo n.º 8
0
            $compiler->setScssFile($this->getPath('scss/master.scss'));
            // Compile in backend assets dir
            $compiler->setCssFile($this->getPath('assets/css/styles.css'));
            $compiler->compile();
            // Compiled file to copy in frontend assets dir
            rex_file::copy($this->getPath('assets/css/styles.css'), $this->getAssetsPath('css/styles.css'));
        });
    }
    rex_view::addCssFile($this->getAssetsUrl('css/styles.css'));
    rex_view::addJsFile($this->getAssetsUrl('javascripts/redaxo.js'));
    rex_extension::register('PAGE_HEADER', function (rex_extension_point $ep) {
        $icons = [];
        foreach (['57', '60', '72', '76', '114', '120', '144', '152'] as $size) {
            $size = $size . 'x' . $size;
            $icons[] = '<link rel="apple-touch-icon-precomposed" sizes="' . $size . '" href="' . $this->getAssetsUrl('images/apple-touch-icon-' . $size . '.png') . '" />';
        }
        foreach (['16', '32', '96', '128', '196'] as $size) {
            $size = $size . 'x' . $size;
            $icons[] = '<link rel="icon" type="image/png" href="' . $this->getAssetsUrl('images/favicon-' . $size . '.png') . '" sizes="' . $size . '" />';
        }
        $icons[] = '<meta name="msapplication-TileColor" content="#FFFFFF" />';
        $icons[] = '<meta name="msapplication-TileImage" content="' . $this->getAssetsUrl('images/mstile-144x144.png') . '" />';
        foreach (['70', '150', '310'] as $size) {
            $size = $size . 'x' . $size;
            $icons[] = '<meta name="msapplication-square' . $size . 'logo" content="' . $this->getAssetsUrl('images/mstile-' . $size . '.png') . '" />';
        }
        $icons[] = '<meta name="msapplication-wide310x150logo" content="' . $this->getAssetsUrl('images/mstile-310x150.png') . '" />';
        $icons = implode("\n    ", $icons);
        $ep->setSubject($icons . $ep->getSubject());
    });
}
Ejemplo n.º 9
0
<?php

/**
 * Cronjob Addon.
 *
 * @author gharlan[at]web[dot]de Gregor Harlan
 *
 * @package redaxo5
 *
 * @var rex_addon $this
 */
define('REX_CRONJOB_LOG_FOLDER', $this->getDataPath());
define('REX_CRONJOB_TABLE', rex::getTable('cronjob'));
rex_extension::register('PACKAGES_INCLUDED', function () {
    foreach ($this->getAvailablePlugins() as $plugin) {
        if (($type = $plugin->getProperty('cronjob_type')) != '') {
            rex_cronjob_manager::registerType($type);
        }
    }
});
$nexttime = $this->getConfig('nexttime', 0);
if ($nexttime != 0 && time() >= $nexttime) {
    $EP = rex::isBackend() ? 'PAGE_CHECKED' : 'PACKAGES_INCLUDED';
    rex_extension::register($EP, function () {
        if (!rex::isBackend() || !in_array(rex_be_controller::getCurrentPagePart(1), ['setup', 'login', 'cronjob'])) {
            rex_cronjob_manager_sql::factory()->check();
        }
    });
}
Ejemplo n.º 10
0
<?php

rex_extension::register('PAGE_CONTENT_SIDEBAR', 'rex_metainfo_content_sidebar');
function rex_metainfo_content_sidebar($extionPointParams)
{
    $params = $extionPointParams->getParams();
    $article = rex_article::get($params['article_id'], $params['clang']);
    $articleStatusTypes = rex_article_service::statusTypes();
    $panel = '';
    $panel .= '<dl class="dl-horizontal">';
    $panel .= '<dt>' . rex_i18n::msg('created_by') . '</dt>';
    $panel .= '<dd>' . $article->getValue('createuser') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('created_on') . '</dt>';
    $panel .= '<dd>' . rex_formatter::strftime($article->getValue('createdate'), 'date') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('updated_by') . '</dt>';
    $panel .= '<dd>' . $article->getValue('updateuser') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('updated_on') . '</dt>';
    $panel .= '<dd>' . rex_formatter::strftime($article->getValue('updatedate'), 'date') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('status') . '</dt>';
    $panel .= '<dd class="' . $articleStatusTypes[$article->getValue('status')][1] . '">' . $articleStatusTypes[$article->getValue('status')][0] . '</dd>';
    $panel .= '</dl>';
    $fragment = new rex_fragment();
    $fragment->setVar('title', rex_i18n::msg('metadata'), false);
    $fragment->setVar('body', $panel, false);
    $content = $fragment->parse('core/page/section.php');
    return $content;
}
Ejemplo n.º 11
0
<?php

/**
 * MetaForm Addon.
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo\metainfo
 */
rex_extension::register('BACKUP_BEFORE_DB_IMPORT', 'rex_metainfo_cleanup');
/**
 * Alle Metafelder löschen, nicht das nach einem Import in der Parameter Tabelle
 * noch Datensätze zu Feldern stehen, welche nicht als Spalten in der
 * rex_article angelegt wurden!
 */
function rex_metainfo_cleanup($epOrParams)
{
    $params = $epOrParams instanceof rex_extension_point ? $epOrParams->getParams() : $epOrParams;
    // Cleanup nur durchführen, wenn auch die rex_article Tabelle neu angelegt wird
    if (isset($params['force']) && $params['force'] != true && strpos($params['content'], 'CREATE TABLE `' . rex::getTablePrefix() . 'article`') === false && strpos($params['content'], 'CREATE TABLE ' . rex::getTablePrefix() . 'article') === false) {
        return;
    }
    // check wheter tables exists
    $tables = rex_sql::showTables();
    if (!isset($tables[rex::getTablePrefix() . 'metainfo_field'])) {
        return false;
    }
    // since this extension may be used also when the addon is not yet installed,
    // require needed classes manually
    require_once __DIR__ . '/../lib/table_manager.php';
    $sql = rex_sql::factory();
Ejemplo n.º 12
0
Archivo: boot.php Proyecto: eaCe/redaxo
rex_extension::register('PAGE_CONTENT_HEADER', function (rex_extension_point $ep) {
    $params = $ep->getParams();
    $return = '';
    $rex_version_article = rex::getProperty('login')->getSessionVar('rex_version_article');
    if (!is_array($rex_version_article)) {
        $rex_version_article = [];
    }
    $working_version_empty = true;
    $gw = rex_sql::factory();
    $gw->setQuery('select * from ' . rex::getTablePrefix() . 'article_slice where article_id=' . $params['article_id'] . ' and clang_id=' . $params['clang'] . ' and revision=1 LIMIT 1');
    if ($gw->getRows() > 0) {
        $working_version_empty = false;
    }
    $revisions = [];
    $revisions[0] = rex_i18n::msg('version_liveversion');
    $revisions[1] = rex_i18n::msg('version_workingversion');
    $version_id = rex_request('rex_set_version', 'int', '-1');
    if ($version_id === 0) {
        $rex_version_article[$params['article_id']] = 0;
    } elseif ($version_id == 1) {
        $rex_version_article[$params['article_id']] = 1;
    } elseif (!isset($rex_version_article[$params['article_id']])) {
        $rex_version_article[$params['article_id']] = 1;
    }
    $func = rex_request('rex_version_func', 'string');
    switch ($func) {
        case 'copy_work_to_live':
            if ($working_version_empty) {
                $return .= rex_view::error(rex_i18n::msg('version_warning_working_version_to_live'));
            } elseif (rex::getUser()->hasPerm('version[live_version]')) {
                rex_article_revision::copyContent($params['article_id'], $params['clang'], rex_article_revision::WORK, rex_article_revision::LIVE);
                $return .= rex_view::success(rex_i18n::msg('version_info_working_version_to_live'));
            }
            break;
        case 'copy_live_to_work':
            rex_article_revision::copyContent($params['article_id'], $params['clang'], rex_article_revision::LIVE, rex_article_revision::WORK);
            $return .= rex_view::success(rex_i18n::msg('version_info_live_version_to_working'));
            break;
    }
    if (!rex::getUser()->hasPerm('version[live_version]')) {
        $rex_version_article[$params['article_id']] = 1;
        unset($revisions[0]);
    }
    rex::getProperty('login')->setSessionVar('rex_version_article', $rex_version_article);
    $context = new rex_context(['page' => $params['page'], 'article_id' => $params['article_id'], 'clang' => $params['clang'], 'ctype' => $params['ctype']]);
    $items = [];
    $brand = '';
    foreach ($revisions as $version => $revision) {
        $item = [];
        $item['title'] = $revision;
        $item['href'] = $context->getUrl(['rex_set_version' => $version]);
        if ($rex_version_article[$params['article_id']] == $version) {
            $item['active'] = true;
            $brand = $revision;
        }
        $items[] = $item;
    }
    $toolbar = '';
    $fragment = new rex_fragment();
    $fragment->setVar('button_prefix', rex_i18n::msg('version'));
    $fragment->setVar('items', $items, false);
    $fragment->setVar('toolbar', true);
    if (!rex::getUser()->hasPerm('version[live_version]')) {
        $fragment->setVar('disabled', true);
    }
    $toolbar .= '<li class="dropdown">' . $fragment->parse('core/dropdowns/dropdown.php') . '</li>';
    if (!rex::getUser()->hasPerm('version[live_version]')) {
        if ($rex_version_article[$params['article_id']] > 0) {
            $toolbar .= '<li><a href="' . $context->getUrl(['rex_version_func' => 'copy_live_to_work']) . '">' . rex_i18n::msg('version_copy_from_liveversion') . '</a></li>';
            $toolbar .= '<li><a href="' . rex_getUrl($params['article_id'], $params['clang'], ['rex_version' => 1]) . '" target="_blank">' . rex_i18n::msg('version_preview') . '</a></li>';
        }
    } else {
        if ($rex_version_article[$params['article_id']] > 0) {
            if (!$working_version_empty) {
                $toolbar .= '<li><a href="' . $context->getUrl(['rex_version_func' => 'copy_work_to_live']) . '">' . rex_i18n::msg('version_working_to_live') . '</a></li>';
            }
            $toolbar .= '<li><a href="' . rex_getUrl($params['article_id'], $params['clang'], ['rex_version' => 1]) . '" target="_blank">' . rex_i18n::msg('version_preview') . '</a></li>';
        } else {
            $toolbar .= '<li><a href="' . $context->getUrl(['rex_version_func' => 'copy_live_to_work']) . '" data-confirm="' . rex_i18n::msg('version_confirm_copy_live_to_workingversion') . '">' . rex_i18n::msg('version_copy_live_to_workingversion') . '</a></li>';
        }
    }
    $inverse = $rex_version_article[$params['article_id']] == 1 ? true : false;
    $cssClass = $rex_version_article[$params['article_id']] == 1 ? 'rex-state-inprogress' : 'rex-state-live';
    $return .= rex_view::toolbar('<ul class="nav navbar-nav">' . $toolbar . '</ul>', $brand, $cssClass, $inverse);
    $params['slice_revision'] = $rex_version_article[$params['article_id']];
    return $return;
});
Ejemplo n.º 13
0
<?php

/**
 * media_manager Addon.
 *
 * @author markus.staab[at]redaxo[dot]de Markus Staab
 * @author jan.kristinus[at]redaxo[dot]de Jan Kristinus
 *
 * @package redaxo5
 */
rex_extension::register('PACKAGES_INCLUDED', 'rex_media_manager::init', rex_extension::EARLY);
if (rex::isBackend()) {
    // delete thumbnails on mediapool changes
    rex_extension::register('MEDIA_UPDATED', 'rex_media_manager::mediaUpdated');
    rex_extension::register('MEDIA_DELETED', 'rex_media_manager::mediaUpdated');
}
Ejemplo n.º 14
0
<?php

/** @var rex_addon $this */
rex_user::setRoleClass('rex_user_role');
rex_perm::register('users[]', rex_i18n::msg('user_management'));
rex_extension::register('COMPLEX_PERM_REMOVE_ITEM', 'rex_user_role::removeOrReplaceItem');
rex_extension::register('COMPLEX_PERM_REPLACE_ITEM', 'rex_user_role::removeOrReplaceItem');
Ejemplo n.º 15
0
<?php

rex_extension::register('BE_STYLE_LESS_FILES', function (rex_extension_point $ep) {
    $subject = $ep->getSubject();
    array_unshift($subject, rex_plugin::get('slice_ui', 'slice_json_block')->getPath('less/styles.less|sourceMap|compress'));
    return $subject;
}, rex_extension::EARLY);
if (!rex_plugin::exists('be_style', 'lessphp')) {
    rex_view::addCssFile($this->getPath() . 'less/styles.min.css');
}
rex_view::addJsFile($this->getAssetsUrl('slice_skin.js'));
Ejemplo n.º 16
0
        if (rex_be_controller::getCurrentPagePart(1) == 'content') {
            rex_be_controller::getPageObject('structure')->setIsActive(true);
        }
    });
    if (rex_be_controller::getCurrentPagePart(1) == 'system') {
        rex_system_setting::register(new rex_system_setting_default_template_id());
    }
    rex_extension::register('CLANG_DELETED', function (rex_extension_point $ep) {
        $del = rex_sql::factory();
        $del->setQuery('delete from ' . rex::getTablePrefix() . "article_slice where clang_id='" . $ep->getParam('clang')->getId() . "'");
    });
} else {
    rex_extension::register('FE_OUTPUT', function (rex_extension_point $ep) {
        $content = $ep->getSubject();
        $article = new rex_article_content();
        $article->setCLang(rex_clang::getCurrentId());
        if ($article->setArticleId(rex_article::getCurrentId())) {
            $content .= $article->getArticleTemplate();
        } else {
            $content .= 'Kein Startartikel selektiert / No starting Article selected. Please click here to enter <a href="' . rex_url::backendController() . '">redaxo</a>';
            rex_response::sendPage($content);
            exit;
        }
        $art_id = $article->getArticleId();
        if ($art_id == rex_article::getNotfoundArticleId() && $art_id != rex_article::getSiteStartArticleId()) {
            rex_response::setStatus(rex_response::HTTP_NOT_FOUND);
        }
        // ----- inhalt ausgeben
        rex_response::sendPage($content, $article->getValue('updatedate'));
    });
}
Ejemplo n.º 17
0
<?php

if (rex::isBackend()) {
    if ($this->getConfig('status') != 'deaktiviert') {
        rex_extension::register('OUTPUT_FILTER', function (rex_extension_point $ep) {
            $suchmuster = '<div id="rex-start-of-page" class="rex-page">';
            $ersetzen = '<div style="font-size: 12px; background-color: ' . $this->getConfig('farbe') . '; color: #fff; width: 100%; font-weight: bold; text-align: center; padding: 8px 0 6px 0;">' . $this->getConfig('text') . '</div><div id="rex-start-of-page" class="rex-page">';
            $ep->setSubject(str_replace($suchmuster, $ersetzen, $ep->getSubject()));
        });
    }
}
Ejemplo n.º 18
0
<?php

rex_extension::register('STRUCTURE_CONTENT_SIDEBAR', function (rex_extension_point $ep) {
    $params = $ep->getParams();
    $subject = $ep->getSubject();
    $article = rex_article::get($params['article_id'], $params['clang']);
    $articleStatusTypes = rex_article_service::statusTypes();
    $panel = '';
    $panel .= '<dl class="dl-horizontal text-left">';
    $panel .= '<dt>' . rex_i18n::msg('created_by') . '</dt>';
    $panel .= '<dd>' . $article->getValue('createuser') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('created_on') . '</dt>';
    $panel .= '<dd>' . rex_formatter::strftime($article->getValue('createdate'), 'date') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('updated_by') . '</dt>';
    $panel .= '<dd>' . $article->getValue('updateuser') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('updated_on') . '</dt>';
    $panel .= '<dd>' . rex_formatter::strftime($article->getValue('updatedate'), 'date') . '</dd>';
    $panel .= '<dt>' . rex_i18n::msg('status') . '</dt>';
    $panel .= '<dd class="' . $articleStatusTypes[$article->getValue('status')][1] . '">' . $articleStatusTypes[$article->getValue('status')][0] . '</dd>';
    $panel .= '</dl>';
    $fragment = new rex_fragment();
    $fragment->setVar('title', '<i class="rex-icon rex-icon-info"></i> ' . rex_i18n::msg('metadata'), false);
    $fragment->setVar('body', $panel, false);
    $fragment->setVar('collapse', true);
    $fragment->setVar('collapsed', true);
    $content = $fragment->parse('core/page/section.php');
    return $content . $subject;
});
Ejemplo n.º 19
0
 /**
  * Extends rex_extension::register() with FirePHP logging.
  */
 public static function register($extensionPoint, callable $extension, $level = self::NORMAL, array $params = [])
 {
     $timer = new rex_timer();
     parent::register($extensionPoint, $extension, $level, $params);
     self::$log[] = ['type' => 'EXT', 'ep' => $extensionPoint, 'callable' => $extension, 'level' => $level, 'params' => $params, 'timer' => $timer->getFormattedDelta()];
 }
Ejemplo n.º 20
0
    $fragment = new rex_fragment();
    $fragment->setVar('title', rex_i18n::msg('media_manager_type_caption'), false);
    $fragment->setVar('content', $content, false);
    $content = $fragment->parse('core/page/section.php');
    echo $content;
} elseif ($func == 'add' || $func == 'edit' && $type_id > 0) {
    if ($func == 'edit') {
        $formLabel = rex_i18n::msg('media_manager_type_edit');
    } elseif ($func == 'add') {
        $formLabel = rex_i18n::msg('media_manager_type_create');
    }
    rex_extension::register('REX_FORM_CONTROL_FIELDS', function (rex_extension_point $ep) {
        $controlFields = $ep->getSubject();
        $form = $ep->getParam('form');
        $sql = $form->getSql();
        // remove delete button on internal types (status == 1)
        if ($sql->getRows() > 0 && $sql->hasValue('status') && $sql->getValue('status') == 1) {
            $controlFields['delete'] = '';
        }
        return $controlFields;
    });
    $form = rex_form::factory(rex::getTablePrefix() . 'media_manager_type', '', 'id = ' . $type_id);
    $form->addParam('type_id', $type_id);
    if ($func == 'edit') {
        $form->setEditMode($func == 'edit');
    }
    $form->addErrorMessage(REX_FORM_ERROR_VIOLATE_UNIQUE_KEY, rex_i18n::msg('media_manager_error_type_name_not_unique'));
    $field = $form->addTextField('name');
    $field->setLabel(rex_i18n::msg('media_manager_type_name'));
    $field = $form->addTextareaField('description');
    $field->setLabel(rex_i18n::msg('media_manager_type_description'));
    $content .= $form->get();
Ejemplo n.º 21
0
<?php

if (rex_string::versionCompare(rex::getVersion(), '5.0.0-beta1', '<=')) {
    rex_extension::register('RESPONSE_SHUTDOWN', function () {
        rex_file::delete(rex_path::assets('jquery.min.js'));
        rex_file::delete(rex_path::assets('jquery.min.map'));
        rex_file::delete(rex_path::assets('jquery-pjax.min.js'));
        rex_file::delete(rex_path::assets('jquery-ui.custom.min.js'));
        rex_file::delete(rex_path::assets('jquery-ui.custom.txt'));
        rex_file::delete(rex_path::assets('redaxo-logo.svg'));
        rex_file::delete(rex_path::assets('sha1.js'));
        rex_file::delete(rex_path::assets('standard.js'));
    });
    rex_dir::copy(__DIR__ . '/assets', rex_path::assets('core'));
    rex_dir::create(rex_path::data('core'));
    rename(rex_path::data('config.yml'), rex_path::data('core/config.yml'));
}
Ejemplo n.º 22
0
    }
    public function extendForm(rex_extension_point $ep)
    {
        $params = $ep->getParams();
        if (isset($params['sql'])) {
            $params['activeItem'] = $params['sql'];
        }
        $result = '
            <tr id="' . self::CONTAINER . '" class="collapse mark">
                <td colspan="2"></td>
                <td colspan="6">
                    <div class="rex-collapse-content">
                        ' . parent::renderFormAndSave(self::PREFIX, $params) . '
                    </div>
                </td>
            </tr>';
        // Bei CLANG_ADDED und CLANG_UPDATED nur speichern und kein Formular zurückgeben
        if ('CLANG_UPDATED' == $ep->getName() || 'CLANG_ADDED' == $ep->getName()) {
            return $ep->getSubject();
        } else {
            return $ep->getSubject() . $result;
        }
    }
}
$clangHandler = new rex_metainfo_clang_handler();
rex_extension::register('CLANG_FORM_ADD', [$clangHandler, 'extendForm']);
rex_extension::register('CLANG_FORM_EDIT', [$clangHandler, 'extendForm']);
rex_extension::register('CLANG_ADDED', [$clangHandler, 'extendForm']);
rex_extension::register('CLANG_UPDATED', [$clangHandler, 'extendForm']);
rex_extension::register('CLANG_FORM_BUTTONS', [$clangHandler, 'renderToggleButton']);
Ejemplo n.º 23
0
        return $field;
    }
    public function extendForm(rex_extension_point $ep)
    {
        $params = $ep->getParams();
        // Nur beim EDIT gibts auch ein Medium zum bearbeiten
        if ($ep->getName() == 'MEDIA_FORM_EDIT') {
            $params['activeItem'] = $params['media'];
            unset($params['media']);
            // Hier die category_id setzen, damit keine Warnung entsteht (REX_LINK_BUTTON)
            // $params['activeItem']->setValue('category_id', 0);
        } elseif ($ep->getName() == 'MEDIA_ADDED') {
            $sql = rex_sql::factory();
            $qry = 'SELECT id FROM ' . rex::getTablePrefix() . 'media WHERE filename="' . $params['filename'] . '"';
            $sql->setQuery($qry);
            if ($sql->getRows() == 1) {
                $params['id'] = $sql->getValue('id');
            } else {
                throw new rex_exception('Error occured during file upload!');
            }
        }
        return parent::renderFormAndSave(self::PREFIX, $params);
    }
}
$mediaHandler = new rex_metainfo_media_handler();
rex_extension::register('MEDIA_FORM_EDIT', [$mediaHandler, 'extendForm']);
rex_extension::register('MEDIA_FORM_ADD', [$mediaHandler, 'extendForm']);
rex_extension::register('MEDIA_ADDED', [$mediaHandler, 'extendForm']);
rex_extension::register('MEDIA_UPDATED', [$mediaHandler, 'extendForm']);
rex_extension::register('MEDIA_IS_IN_USE', ['rex_metainfo_media_handler', 'isMediaInUse']);
Ejemplo n.º 24
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'));
            }
        }
    });
}
Ejemplo n.º 25
0
<?php

rex_extension::register('OUTPUT_FILTER', ['rex_sql_debug', 'doLog']);
/**
 * Class to monitor sql queries.
 *
 * @author staabm
 *
 * @package redaxo\debug
 */
class rex_sql_debug extends rex_sql
{
    private static $queries = [];
    private static $errors = 0;
    /**
     * {@inheritdoc}.
     */
    public function setQuery($qry, array $params = [])
    {
        try {
            parent::setQuery($qry, $params);
        } catch (rex_exception $e) {
            $trace = debug_backtrace();
            for ($i = 0; $trace && $i < count($trace); ++$i) {
                if (isset($trace[$i]['file']) && strpos($trace[$i]['file'], 'sql.php') === false) {
                    $file = $trace[$i]['file'];
                    $line = $trace[$i]['line'];
                    break;
                }
            }
            $firephp = FirePHP::getInstance(true);
Ejemplo n.º 26
0
         }
         $registerImplicitePagePermissions($page->getSubpages());
     }
 };
 $registerImplicitePagePermissions(rex_be_controller::getPages());
 foreach ([rex_perm::GENERAL, rex_perm::OPTIONS, rex_perm::EXTRAS] as $permgroup) {
     $field = $fieldContainer->addGroupedField($group, 'select', $permgroup);
     $field->setLabel(rex_i18n::msg('user_' . $permgroup));
     $select = $field->getSelect();
     $select->setMultiple(true);
     $perms = rex_perm::getAll($permgroup);
     $select->setSize(min(10, max(3, count($perms))));
     $select->addArrayOptions($perms);
 }
 rex_extension::register('REX_FORM_INPUT_CLASS', function (rex_extension_point $ep) {
     return $ep->getParam('inputType') == 'perm_select' ? 'rex_form_perm_select_element' : null;
 });
 $fieldIds = [];
 foreach (rex_complex_perm::getAll() as $key => $class) {
     $params = $class::getFieldParams();
     if (!empty($params)) {
         $field = $fieldContainer->addGroupedField($group, 'perm_select', $key);
         $field->setLabel($params['label']);
         $field->setCheckboxLabel($params['all_label']);
         $fieldIds[] = $field->getAttribute('id');
         if (rex_request('default_value', 'boolean')) {
             $field->setValue(rex_complex_perm::ALL);
         }
         if (isset($params['select'])) {
             $field->setSelect($params['select']);
         }
Ejemplo n.º 27
0
                $select .= '<option value="' . $version['history_date'] . '">' . $version['history_date'] . '</option>';
            }
            $content1select = '<select id="content-history-select-date-1" class="content-history-select" data-iframe="content-history-iframe-1" style="">' . $select . '</select>';
            $content1iframe = '<iframe id="content-history-iframe-1" class="history-iframe"></iframe>';
            $content2select = '<select id="content-history-select-date-2" class="content-history-select" data-iframe="content-history-iframe-2">' . $select . '</select>';
            $content2iframe = '<iframe id="content-history-iframe-2" class="history-iframe"></iframe>';
            $button_restore = '<a class="btn btn-apply" href="javascript:rex_history_snapVersion(\'content-history-select-date-2\');">' . $this->i18n('snapshot_reactivate') . '</a>';
            // fragment holen und ausgeben
            $fragment = new rex_fragment();
            $fragment->setVar('title', $this->i18n('overview_versions'));
            $fragment->setVar('info', $info, false);
            $fragment->setVar('content1select', $content1select, false);
            $fragment->setVar('content1iframe', $content1iframe, false);
            $fragment->setVar('content2select', $content2select, false);
            $fragment->setVar('content2iframe', $content2iframe, false);
            $fragment->setVar('button_restore', $button_restore, false);
            echo $fragment->parse('history/layer.php');
            exit;
    }
    rex_extension::register('STRUCTURE_CONTENT_HEADER', function (rex_extension_point $ep) {
        if ($ep->getParam('page') == 'content/edit') {
            echo '<script>
                    var history_article_id = ' . rex_article::getCurrentId() . ';
                    var history_clang_id = ' . rex_clang::getCurrentId() . ';
                    var history_ctype_id = ' . rex_request('ctype', 'int', 0) . ';
                    var history_revision = ' . rex_request('rex_set_version', 'int', 0) . ';
                    var history_article_link = "' . rex_getUrl(rex_article::getCurrentId(), rex_clang::getCurrentId(), ['history_revision' => rex_request('rex_set_version', 'int', 0)], '&') . '";
                    </script>';
        }
    });
}
Ejemplo n.º 28
0
 * @author <a href="http://www.redaxo.org">www.redaxo.org</a>
 *
 * @package redaxo5
 */
$mypage = 'be_style';
/* Addon Parameter */
if (rex::isBackend()) {
    require_once rex_path::addon($mypage, 'extensions/function_extensions.php');
    rex_extension::register('PACKAGES_INCLUDED', 'rex_be_add_page');
    $files = [$this->getPath('vendor/bootstrap/assets/javascripts/bootstrap.js') => $this->getAssetsPath('javascripts/bootstrap.js'), $this->getPath('vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.eot') => $this->getAssetsPath('fonts/bootstrap/glyphicons-halflings-regular.eot'), $this->getPath('vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.svg') => $this->getAssetsPath('fonts/bootstrap/glyphicons-halflings-regular.svg'), $this->getPath('vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf') => $this->getAssetsPath('fonts/bootstrap/glyphicons-halflings-regular.ttf'), $this->getPath('vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff') => $this->getAssetsPath('fonts/bootstrap/glyphicons-halflings-regular.woff'), $this->getPath('vendor/font-awesome/fonts/fontawesome-webfont.eot') => $this->getAssetsPath('fonts/fontawesome-webfont.eot'), $this->getPath('vendor/font-awesome/fonts/fontawesome-webfont.svg') => $this->getAssetsPath('fonts/fontawesome-webfont.svg'), $this->getPath('vendor/font-awesome/fonts/fontawesome-webfont.ttf') => $this->getAssetsPath('fonts/fontawesome-webfont.ttf'), $this->getPath('vendor/font-awesome/fonts/fontawesome-webfont.woff') => $this->getAssetsPath('fonts/fontawesome-webfont.woff'), $this->getPath('vendor/font-awesome/fonts/FontAwesome.otf') => $this->getAssetsPath('fonts/FontAwesome.otf')];
    foreach ($files as $source => $destination) {
        if (!file_exists($destination)) {
            rex_file::copy($source, $destination);
        }
    }
    rex_extension::register('PACKAGES_INCLUDED', function () {
        if (rex::getUser() && $this->getProperty('compile')) {
            $compiler = new rex_scss_compiler();
            $scss_files = rex_extension::registerPoint(new rex_extension_point('BE_STYLE_SCSS_FILES', [$this->getPath('scss/master.scss')]));
            $compiler->setScssFile($scss_files);
            //$compiler->setScssFile($this->getPath('scss/master.scss'));
            // Compile in backend assets dir
            $compiler->setCssFile($this->getPath('assets/css/styles.css'));
            $compiler->compile();
            // Compiled file to copy in frontend assets dir
            rex_file::copy($this->getPath('assets/css/styles.css'), $this->getAssetsPath('css/styles.css'));
        }
    });
    rex_view::addCssFile($this->getAssetsUrl('css/styles.css'));
    rex_view::addJsFile($this->getAssetsUrl('javascripts/bootstrap.js'));
}
Ejemplo n.º 29
0
 rex_extension::register('OUTPUT_FILTER', function (rex_extension_point $ep) {
     // Bereite Ausnahmen vor: Templates und Artikel
     // Dort werden E-Mailadressen nicht verschlüsselt
     $whitelistTemplates = rex_addon::get('emailobfuscator')->getConfig('templates', []);
     $whitelistArticles = rex_addon::get('emailobfuscator')->getConfig('articles', '');
     if ($whitelistArticles != '') {
         $whitelistArticles = explode(',', $whitelistArticles);
     } else {
         $whitelistArticles = [];
     }
     if (!is_null(rex_article::getCurrent()) && !in_array(rex_article::getCurrent()->getTemplateId(), $whitelistTemplates) && !in_array(rex_article::getCurrentId(), $whitelistArticles)) {
         $subject = $ep->getSubject();
         // Ersetze mailto-Links (zuerst!)
         // Anmerkung: Attributwerte (hier: href) benötigen nicht zwingend Anführungsstriche drumrum,
         // deshalb prüfen wir zusätzlich noch auf '>' am Ende .
         $subject = preg_replace_callback('/mailto:(.*?)(?=[\'|"|\\>])/', 'emailobfuscator::encodeEmailLinks', $subject);
         // Ersetze E-Mailadressen
         $subject = preg_replace_callback('/([\\w\\-\\+\\.]+)@([\\w\\-\\.]+\\.[\\w]{2,})/', 'emailobfuscator::encodeEmail', $subject);
         // Injiziere CSS vors schließende </head> im Seitenkopf
         if ($this->getConfig('autoload_css')) {
             $cssFile = '<link rel="stylesheet" href="' . $this->getAssetsUrl('emailobfuscator.css?v=' . $this->getVersion()) . '">';
             $subject = str_replace('</head>', $cssFile . '</head>', $subject);
         }
         // Injiziere JavaScript vors schließende </body> der Seite
         if ($this->getConfig('autoload_js')) {
             $jsFile = '<script src="' . $this->getAssetsUrl('emailobfuscator.js?v=' . $this->getVersion()) . '"></script>';
             $subject = str_replace('</body>', $jsFile . '</body>', $subject);
         }
         $ep->setSubject($subject);
     }
 });
Ejemplo n.º 30
0
 public function check()
 {
     $sql = rex_sql::factory();
     // $sql->setDebug();
     $sql->setQuery('
         SELECT    id, name, type, parameters, `interval`, execution_moment
         FROM      ' . REX_CRONJOB_TABLE . '
         WHERE     status = 1
             AND   execution_start < ?
             AND   environment LIKE ?
             AND   nexttime <= ?
         ORDER BY  nexttime ASC, execution_moment DESC, name ASC
         LIMIT     1
     ', [rex_sql::datetime(time() - 2 * ini_get('max_execution_time')), '%|' . (int) rex::isBackend() . '|%', rex_sql::datetime()]);
     if ($sql->getRows() != 0) {
         ignore_user_abort(true);
         register_shutdown_function([$this, 'timeout'], $sql);
         $this->setExecutionStart($sql->getValue('id'));
         if ($sql->getValue('execution_moment') == 1) {
             $this->tryExecuteSql($sql, true, true);
         } else {
             rex_extension::register('RESPONSE_SHUTDOWN', function () use($sql) {
                 $this->tryExecuteSql($sql, true, true);
             });
         }
     } else {
         $this->saveNextTime();
     }
 }