Exemplo n.º 1
0
<?php

/**
 * This file is part of the Url package.
 *
 * @author (c) Thomas Blum <*****@*****.**>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
/**
 * Convert some text to Markdown...
 */
function markdown($text)
{
    return (new ParsedownExtra())->text($text);
}
if (rex::isBackend()) {
    rex_view::addCssFile($this->getAssetsUrl('dao.css'));
    rex_view::addJsFile($this->getAssetsUrl('vendor/redips/redips-table.js'));
    if (rex_be_controller::getCurrentPage() == 'dao_var/readme') {
        rex_view::addJsFile($this->getAssetsUrl('prism.js'));
    }
}
Exemplo n.º 2
0
<?php

/**
 * @package redaxo5
 */
// -------------- Defaults
$subpage = rex_be_controller::getCurrentPagePart(2);
$func = rex_request('func', 'string');
echo rex_view::title(rex_i18n::msg('modules'));
include rex_be_controller::getCurrentPageObject()->getSubPath();
Exemplo n.º 3
0
<?php

/**
 * Cronjob Addon.
 *
 * @author gharlan[at]web[dot]de Gregor Harlan
 *
 * @package redaxo5
 *
 * @var rex_addon $this
 */
echo rex_view::title($this->i18n('title'));
rex_be_controller::includeCurrentPageSubPath();
Exemplo n.º 4
0
        <nav class="rex-nav-top navbar navbar-default">
            <div class="container-fluid">
                <div class="navbar-header">
                    <?php 
if (rex_be_controller::getCurrentPageObject()->isPopup()) {
    ?>
                        <span class="navbar-brand"><img class="rex-js-svg rex-redaxo-logo" src="<?php 
    echo rex_url::coreAssets('redaxo-logo.svg');
    ?>
" /></span>
                    <?php 
} else {
    ?>
                        <a class="navbar-brand" href="<?php 
    echo rex_url::backendController();
    ?>
"><img class="rex-js-svg rex-redaxo-logo" src="<?php 
    echo rex_url::coreAssets('redaxo-logo.svg');
    ?>
" /></a>
                    <?php 
}
?>
                </div>
                <?php 
echo $this->meta_navigation;
?>
            </div>
        </nav>
Exemplo n.º 5
0
 /**
  * Returns the url to the current backend page.
  *
  * @param array $params Params
  * @param bool  $escape Flag whether the argument separator "&" should be escaped (&amp;)
  *
  * @return string
  */
 public static function currentBackendPage(array $params = [], $escape = true)
 {
     return self::backendPage(rex_be_controller::getCurrentPage(), $params, $escape);
 }
Exemplo n.º 6
0
 /**
  * Returns the formatted title.
  *
  * @param string            $head
  * @param null|string|array $subtitle
  *
  * @throws InvalidArgumentException
  *
  * @return string
  */
 public static function title($head, $subtitle = null)
 {
     if ($subtitle !== null && !is_string($subtitle) && (!is_array($subtitle) || count($subtitle) > 0 && !reset($subtitle) instanceof rex_be_page)) {
         throw new InvalidArgumentException('Expecting $subtitle to be a string or an array of rex_be_page!');
     }
     if ($subtitle === null) {
         $subtitle = rex_be_controller::getPageObject(rex_be_controller::getCurrentPagePart(1))->getSubpages();
     }
     if (is_array($subtitle) && count($subtitle) && reset($subtitle) instanceof rex_be_page) {
         $nav = rex_be_navigation::factory();
         $nav->setHeadline('default', rex_i18n::msg('subnavigation', $head));
         foreach ($subtitle as $pageObj) {
             $nav->addPage($pageObj);
         }
         $blocks = $nav->getNavigation();
         $navigation = [];
         if (count($blocks) == 1) {
             $navigation = current($blocks);
             $navigation = $navigation['navigation'];
         }
         if (!empty($navigation)) {
             $fragment = new rex_fragment();
             $fragment->setVar('left', $navigation, false);
             $subtitle = $fragment->parse('core/navigations/content.php');
         } else {
             $subtitle = '';
         }
     } elseif (!is_string($subtitle)) {
         $subtitle = '';
     }
     $title = rex_extension::registerPoint(new rex_extension_point('PAGE_TITLE', $head));
     $fragment = new rex_fragment();
     $fragment->setVar('heading', $title, false);
     $fragment->setVar('subtitle', $subtitle, false);
     $return = $fragment->parse('core/page/header.php');
     $return .= rex_extension::registerPoint(new rex_extension_point('PAGE_TITLE_SHOWN', ''));
     return $return;
 }
Exemplo n.º 7
0
<?php

/**
 * MetaForm Addon.
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo5
 */
// Parameter
$Basedir = __DIR__;
$subpage = rex_be_controller::getCurrentPagePart(2);
$func = rex_request('func', 'string');
echo rex_view::title(rex_i18n::msg('minfo_title'));
// Include Current Page
switch ($subpage) {
    case 'media':
        $prefix = 'med_';
        break;
    case 'categories':
        $prefix = 'cat_';
        break;
    default:
        $prefix = 'art_';
}
$metaTable = rex_metainfo_meta_table($prefix);
require $Basedir . '/field.php';
Exemplo n.º 8
0
        // ------------------------------------------ END: CONTENT HEAD MENUE
        // ------------------------------------------ WARNING
        if ($global_warning != '') {
            $contentMain .= rex_view::warning($global_warning);
        }
        if ($global_info != '') {
            $contentMain .= rex_view::success($global_info);
        }
        // --------------------------------------------- API MESSAGES
        $contentMain .= rex_api_function::getMessage();
        if ($warning != '') {
            $contentMain .= rex_view::warning($warning);
        }
        if ($info != '') {
            $contentMain .= rex_view::success($info);
        }
        // ----- EXTENSION POINT
        $contentMain .= rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_BEFORE_SLICES', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision]));
        // ------------------------------------------ START: MODULE EDITIEREN/ADDEN ETC.
        $contentMain .= (include rex_be_controller::getCurrentPageObject()->getSubPath());
        // ------------------------------------------ END: AUSGABE
        // ----- EXTENSION POINT
        $contentMain .= rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_AFTER_SLICES', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision]));
        // ----- EXTENSION POINT
        $contentSidebar = rex_extension::registerPoint(new rex_extension_point('STRUCTURE_CONTENT_SIDEBAR', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision]));
        $fragment = new rex_fragment();
        $fragment->setVar('content', $contentMain, false);
        $fragment->setVar('sidebar', $contentSidebar, false);
        echo $fragment->parse('core/page/main_content.php');
    }
}
Exemplo n.º 9
0
 protected function loadBackendConfig()
 {
     $this->addParam('page', rex_be_controller::getCurrentPage());
 }
Exemplo n.º 10
0
/**
 * Page Content Addon.
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo5
 */
rex_perm::register('moveSlice[]', null, rex_perm::OPTIONS);
rex_complex_perm::register('modules', 'rex_module_perm');
if (rex::isBackend()) {
    rex_extension::register('PAGE_CHECKED', function () {
        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>';
Exemplo n.º 11
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) {
    $env = rex_cronjob_manager::getCurrentEnvironment();
    $EP = 'backend' === $env ? 'PAGE_CHECKED' : 'PACKAGES_INCLUDED';
    rex_extension::register($EP, function () use($env) {
        if ('backend' !== $env || !in_array(rex_be_controller::getCurrentPagePart(1), ['setup', 'login', 'cronjob'])) {
            rex_cronjob_manager_sql::factory()->check();
        }
    });
}
Exemplo n.º 12
0
<?php

// ------- Default Values
$HTMLArea = rex_request('HTMLArea', 'string');
$opener_input_field = rex_request('opener_input_field', 'string');
$opener_input_field_name = rex_request('opener_input_field_name', 'string');
$category_id = rex_request('category_id', 'int');
$category_id = rex_category::get($category_id) ? $category_id : 0;
$clang = rex_request('clang', 'int');
$clang = rex_clang::exists($clang) ? $clang : rex_clang::getStartId();
$context = new rex_context(['page' => rex_be_controller::getCurrentPage(), 'HTMLArea' => $HTMLArea, 'opener_input_field' => $opener_input_field, 'opener_input_field_name' => $opener_input_field_name, 'category_id' => $category_id, 'clang' => $clang]);
// ------- Build JS Functions
$func_body = '';
if ($HTMLArea != '') {
    if ($HTMLArea == 'TINY') {
        $func_body = 'window.opener.tinyMCE.insertLink(link);';
    } else {
        $func_body = 'window.opener.' . $HTMLArea . '.surroundHTML("<a href="+link+">","</a>");';
    }
}
if ($opener_input_field != '' && $opener_input_field_name == '') {
    $opener_input_field_name = $opener_input_field . '_NAME';
}
if ($opener_input_field == 'TINY') {
    $func_body .= 'window.opener.insertLink(link,name);
                                 self.close();';
} elseif (substr($opener_input_field, 0, 13) == 'REX_LINKLIST_') {
    $id = substr($opener_input_field, 13, strlen($opener_input_field));
    $func_body .= 'var linklist = "REX_LINKLIST_SELECT_' . $id . '";
                             var linkid = link.replace("redaxo://","");
                 var source = opener.document.getElementById(linklist);
Exemplo n.º 13
0
/**
 * @param rex_context $context
 *
 * @return string
 *
 * @package redaxo\structure
 */
function rex_structure_searchbar(rex_context $context)
{
    $message = '';
    $search_result = '';
    // ------------ Parameter
    $clang = $context->getParam('clang', 1);
    $category_id = $context->getParam('category_id', 0);
    $article_id = $context->getParam('article_id', 0);
    $search_article_name = rex_request('search_article_name', 'string');
    // ------------ Suche via ArtikelId
    if (preg_match('/^[0-9]+$/', $search_article_name, $matches)) {
        if ($OOArt = rex_article::get($matches[0], $clang)) {
            rex_response::sendRedirect($context->getUrl(['page' => 'content/edit', 'article_id' => $OOArt->getId()], false));
        }
    }
    // Auswahl eines normalen Artikels => category holen
    if ($article_id != 0) {
        $OOArt = rex_article::get($article_id, $clang);
        // Falls Artikel gerade geloescht wird, gibts keinen rex_article
        if ($OOArt) {
            $category_id = $OOArt->getCategoryId();
        }
    }
    // ------------ Suche via ArtikelName
    if (rex_request('search_start', 'bool')) {
        // replace LIKE wildcards
        $search_article_name_like = str_replace(['_', '%'], ['\\_', '\\%'], $search_article_name);
        $qry = '
        SELECT id
        FROM ' . rex::getTablePrefix() . 'article
        WHERE
            clang_id = ' . $clang . ' AND
            (
                name LIKE "%' . $search_article_name_like . '%" OR
                catname LIKE "%' . $search_article_name_like . '%"
            )';
        if (rex_addon::get('structure')->getConfig('searchmode', 'local') != 'global') {
            // Suche auf aktuellen Kontext eingrenzen
            if ($category_id != 0) {
                $qry .= ' AND path LIKE "%|' . $category_id . '|%"';
            }
        }
        $search = rex_sql::factory();
        //    $search->setDebug();
        $search->setQuery($qry);
        $foundRows = $search->getRows();
        // Suche ergab nur einen Treffer => Direkt auf den Treffer weiterleiten
        if ($foundRows == 1) {
            $OOArt = rex_article::get($search->getValue('id'), $clang);
            if (rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($OOArt->getCategoryId())) {
                rex_response::sendRedirect($context->getUrl(['page' => 'content/edit', 'article_id' => $search->getValue('id')], false));
            }
        } elseif ($foundRows > 0) {
            $needle = htmlspecialchars($search_article_name);
            $search_result .= '<div class="list-group">';
            for ($i = 0; $i < $foundRows; ++$i) {
                $breadcrumb = [];
                $OOArt = rex_article::get($search->getValue('id'), $clang);
                $label = $OOArt->getName();
                if (rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($OOArt->getCategoryId())) {
                    $label .= ' [' . $search->getValue('id') . ']';
                    $highlightHit = function ($string, $needle) {
                        return preg_replace('/(.*)(' . preg_quote($needle, '/') . ')(.*)/i', '\\1<mark>\\2</mark>\\3', $string);
                    };
                    foreach ($OOArt->getParentTree() as $treeItem) {
                        $treeLabel = $treeItem->getName();
                        if (rex::getUser()->hasPerm('advancedMode[]')) {
                            $treeLabel .= ' [' . $treeItem->getId() . ']';
                        }
                        $treeLabel = htmlspecialchars($treeLabel);
                        $treeLabel = $highlightHit($treeLabel, $needle);
                        $e = [];
                        $e['title'] = $treeLabel;
                        $e['href'] = $context->getUrl(['page' => 'structure', 'category_id' => $treeItem->getId()]);
                        $breadcrumb[] = $e;
                    }
                    $label = htmlspecialchars($label);
                    $label = $highlightHit($label, $needle);
                    $e = [];
                    $e['title'] = $label;
                    $e['href'] = $context->getUrl(['page' => 'content/edit', 'article_id' => $treeItem->getId()]);
                    $breadcrumb[] = $e;
                    $fragment = new rex_fragment();
                    $fragment->setVar('items', $breadcrumb, false);
                    $search_result .= '<div class="list-group-item">' . $fragment->parse('core/navigations/breadcrumb.php') . '</div>';
                }
                $search->next();
            }
            $search_result .= '</div>';
            $fragment = new rex_fragment();
            $fragment->setVar('title', rex_i18n::msg('be_search_result'), false);
            $fragment->setVar('content', $search_result, false);
            $search_result = $fragment->parse('core/page/section.php');
        } else {
            $message = rex_view::info(rex_i18n::msg('be_search_no_results'));
        }
    }
    $select_name = 'category_id';
    $add_homepage = true;
    if (rex_be_controller::getCurrentPagePart(1) == 'content') {
        $select_name = 'article_id';
        $add_homepage = false;
    }
    $category_select = new rex_category_select(false, false, true, $add_homepage);
    $category_select->setName($select_name);
    $category_select->setSize('1');
    $category_select->setAttribute('onchange', 'this.form.submit();');
    $category_select->setSelected($category_id);
    $select = $category_select->get();
    $doc = new DOMDocument();
    $doc->loadHTML('<?xml encoding="UTF-8">' . $select);
    $options = $doc->getElementsByTagName('option');
    $droplistContext = new rex_context(['page' => 'structure', 'category_id' => 0]);
    $button_label = '';
    $items = [];
    foreach ($options as $option) {
        $value = '';
        $item = [];
        if ($option->hasAttributes()) {
            foreach ($option->attributes as $attribute) {
                if ($attribute->name == 'value') {
                    $value = $attribute->value;
                    $droplistContext->setParam('category_id', $value);
                    if ($attribute->value == $category_id) {
                        $button_label = str_replace(" ", '', $option->nodeValue);
                        $item['active'] = true;
                    }
                }
            }
        }
        $item['title'] = preg_replace('/\\[([0-9]+)\\]$/', '<small class="rex-primary-id">$1</small>', $option->nodeValue);
        $item['href'] = $droplistContext->getUrl();
        $items[] = $item;
    }
    $fragment = new rex_fragment();
    $fragment->setVar('button_prefix', rex_i18n::msg('be_search_quick_navi'));
    $fragment->setVar('button_label', $button_label);
    $fragment->setVar('items', $items, false);
    $droplist = '<div class="navbar-btn navbar-right">' . $fragment->parse('core/dropdowns/dropdown.php');
    $formElements = [];
    $n = [];
    $n['field'] = '<input class="form-control" type="text" name="search_article_name" value="' . htmlspecialchars($search_article_name) . '" placeholder="' . htmlspecialchars(rex_i18n::msg('be_search_article_name') . '/' . rex_i18n::msg('be_search_article_id')) . '" />';
    $n['right'] = '<button class="btn btn-search" type="submit" name="search_start" value="1">' . rex_i18n::msg('be_search_start') . '</button>';
    $formElements[] = $n;
    $fragment = new rex_fragment();
    $fragment->setVar('elements', $formElements, false);
    $toolbar = $fragment->parse('core/form/input_group.php');
    $toolbar = '
    <form action="' . rex_url::currentBackendPage() . '" method="post">
    ' . $context->getHiddenInputFields() . '
    <div class="navbar-form navbar-left">
        <div class="form-group">
            ' . $toolbar . '
        </div>
    </div>
    </form>';
    $toolbar = rex_view::toolbar($toolbar . $droplist, rex_i18n::msg('be_search_search'));
    return $toolbar . $search_result;
}
Exemplo n.º 14
0
foreach (rex_i18n::getLocales() as $locale) {
    rex_i18n::setLocale($locale, false);
    // Locale nicht neu setzen
    $sel_be_sprache->addOption(rex_i18n::msg('lang'), $locale);
}
rex_i18n::setLocale($saveLocale, false);
$userperm_be_sprache = rex_request('userperm_be_sprache', 'string');
// ----- welche startseite
$sel_startpage = new rex_select();
$sel_startpage->setSize(1);
$sel_startpage->setName('userperm_startpage');
$sel_startpage->setId('rex-user-perm-startpage');
$sel_startpage->setAttribute('class', 'form-control');
$sel_startpage->addOption('default', '');
$startpages = [];
foreach (rex_be_controller::getPages() as $page => $pageObj) {
    /* @var $pageObj rex_be_page */
    if ($pageObj->hasNavigation() && !$pageObj->isHidden()) {
        $startpages[$page] = $pageObj->getTitle();
    }
}
asort($startpages);
$sel_startpage->addOptions($startpages);
$userperm_startpage = rex_request('userperm_startpage', 'string');
// --------------------------------- Title
// --------------------------------- FUNCTIONS
$FUNC_UPDATE = '';
$FUNC_APPLY = '';
$FUNC_DELETE = '';
if ($user_id != 0 && (rex::getUser()->isAdmin() || !$sql->getValue('admin'))) {
    $FUNC_UPDATE = rex_request('FUNC_UPDATE', 'string');
Exemplo n.º 15
0
 public static function addSlice()
 {
     $article_id = rex_request('article_id', 'int');
     $function = rex_request('page', 'string');
     $cut_slice_id = $slice_id = $_SESSION['slice_ui']['slice_id'];
     $module_id = $_SESSION['slice_ui']['module_id'];
     $clang = rex_get('clang');
     $ctype = rex_get('ctype');
     if (!self::checkPermissions(array('article_id' => $article_id, 'clang' => $clang, 'ctype' => $ctype, 'module_id' => $module_id))) {
         // Alle OBs schließen
         while (@ob_end_clean()) {
         }
         header("Location: " . rex_url::backendController() . '?article_id=' . $article_id . '&clang=' . $clang . '&page=content/edit&ctype=' . $ctype);
         exit;
     }
     $slice_revision = 0;
     $template_attributes = [];
     $newsql = rex_sql::factory();
     // $newsql->setDebug();
     $sliceTable = rex::getTablePrefix() . 'article_slice';
     $newsql->setTable($sliceTable);
     if (strpos($function, 'content/paste') !== false && !empty($_SESSION['slice_ui'])) {
         // determine priority value to get the new slice into the right order
         $priority = '0';
         // $prevSlice->setDebug();
         if ($function === 'content/paste') {
             $priority = 1;
         } else {
             $prevSlice = rex_sql::factory();
             $prevSlice->setQuery('SELECT * FROM ' . $sliceTable . ' WHERE id=' . rex_get('slice_id'));
             $priority = $prevSlice->getValue('priority') + 1;
         }
         $newsql->setValue('article_id', $article_id);
         $newsql->setValue('module_id', $module_id);
         $newsql->setValue('clang_id', $clang);
         $newsql->setValue('ctype_id', $ctype);
         $newsql->setValue('revision', $slice_revision);
         $newsql->setValue('priority', $priority);
         $newsql->addGlobalUpdateFields();
         $newsql->addGlobalCreateFields();
         try {
             $newsql->insert();
             $info = $action_message . rex_i18n::msg('block_added');
             $slice_id = $newsql->getLastId();
             if ($slice_id !== 0) {
                 $_SESSION['slice_ui']['slice_id'] = $slice_id;
             }
             rex_sql_util::organizePriorities(rex::getTable('article_slice'), 'priority', 'article_id=' . $article_id . ' AND clang_id=' . $clang . ' AND ctype_id=' . $ctype . ' AND revision=' . $slice_revision, 'priority, updatedate DESC');
             $function = '';
             // ----- EXTENSION POINT
             rex_extension::registerPoint(new rex_extension_point('SLICE_PASTED', '', ['article_id' => $article_id, 'clang' => $clang, 'function' => $function, 'slice_id' => $slice_id, 'page' => rex_be_controller::getCurrentPage(), 'ctype' => $ctype, 'category_id' => $category_id, 'module_id' => $module_id, 'article_revision' => &$article_revision, 'slice_revision' => &$slice_revision]));
             if ($_SESSION['slice_ui']['cut'] == 1) {
                 $curr = rex_sql::factory();
                 $curr->setDebug();
                 $curr->setTable($sliceTable);
                 $curr->setWhere(array('id' => $cut_slice_id));
                 $curr->delete();
                 rex_sql_util::organizePriorities(rex::getTable('article_slice'), 'priority', 'article_id=' . $_SESSION['slice_ui']['article_id'] . ' AND clang_id=' . $clang . ' AND ctype_id=' . $ctype . ' AND revision=' . $slice_revision, 'priority, updatedate DESC');
             }
         } catch (rex_sql_exception $e) {
             // echo rex_view::warning($e->getMessage());
         }
         // Alle OBs schließen
         while (@ob_end_clean()) {
         }
         header("Location: " . rex_url::backendController() . '?article_id=' . $article_id . '&clang=' . $clang . '&page=content/edit&ctype=' . $ctype);
         exit;
     }
 }
Exemplo n.º 16
0
Arquivo: top.php Projeto: eaCe/redaxo
    $fragment = new rex_fragment();
    $fragment->setVar('pageTitle', rex_be_controller::getPageTitle());
    $fragment->setVar('cssFiles', rex_view::getCssFiles());
    $fragment->setVar('jsFiles', rex_view::getJsFiles());
    $fragment->setVar('jsProperties', json_encode(rex_view::getJsProperties()), false);
    $fragment->setVar('favicon', rex_view::getFavicon());
    $fragment->setVar('pageHeader', rex_extension::registerPoint(new rex_extension_point('PAGE_HEADER', '')), false);
    $fragment->setVar('bodyAttr', $body, false);
    echo $fragment->parse('core/top.php');
    $fragment = new rex_fragment();
    $fragment->setVar('items', $meta_items, false);
    $meta_navigation = $fragment->parse('core/navigations/meta.php');
    $fragment = new rex_fragment();
    // $fragment->setVar('pageHeader', rex_extension::registerPoint(new rex_extension_point('PAGE_HEADER', '')), false);
    $fragment->setVar('meta_navigation', $meta_navigation, false);
    echo $fragment->parse('core/header.php');
    echo '<div id="rex-js-page-container" class="rex-page-container">';
} elseif (rex_request::isPJAXRequest()) {
    // add title to the page, so pjax can update it. see gh#136
    echo '<title>' . htmlspecialchars(rex_be_controller::getPageTitle()) . '</title>';
}
$fragment = new rex_fragment();
$fragment->setVar('navigation', $navigation, false);
echo $fragment->parse('core/navigation.php');
$pjax = $curPage->allowsPjax() ? ' data-pjax-container="#rex-js-page-main"' : '';
?>
<div class="rex-page-main"><section class="rex-page-main-inner" id="rex-js-page-main"<?php 
echo $pjax;
?>
>
Exemplo n.º 17
0
// ----- INCLUDE ADDONS
include_once rex_path::core('packages.php');
// ----- Prepare AddOn Pages
if (rex::getUser()) {
    rex_be_controller::appendPackagePages();
}
$pages = rex_extension::registerPoint(new rex_extension_point('PAGES_PREPARED', rex_be_controller::getPages()));
rex_be_controller::setPages($pages);
// Set Startpage
if ($user = rex::getUser()) {
    // --- page pruefen und benoetigte rechte checken
    rex_be_controller::checkPagePermissions($user);
}
$page = rex_be_controller::getCurrentPage();
rex_view::setJsProperty('page', $page);
// ----- EXTENSION POINT
// page variable validated
rex_extension::registerPoint(new rex_extension_point('PAGE_CHECKED', $page, ['pages' => $pages], true));
// trigger api functions
// If the backend session is timed out, rex_api_function would throw an exception
// so only trigger api functions if page != login
if ($page != 'login') {
    rex_api_function::handleCall();
}
// include the requested backend page
rex_be_controller::includeCurrentPage();
// ----- caching end für output filter
$CONTENT = ob_get_contents();
ob_end_clean();
// ----- inhalt ausgeben
rex_response::sendPage($CONTENT);
Exemplo n.º 18
0
 /**
  * Returns whether the page is active.
  *
  * @return bool
  */
 public function isActive()
 {
     if ($this->isActive !== null) {
         return $this->isActive;
     }
     $page = rex_be_controller::getCurrentPageObject();
     do {
         if ($page === $this) {
             return true;
         }
     } while ($page = $page->getParent());
     return false;
 }
Exemplo n.º 19
0
                        for(var i = 0; i < files.length; i++)
                        {
                            if (files[i].checked)
                            {
                                option = opener.document.createElement("OPTION");
                                option.text = files[i].value;
                                option.value = files[i].value;

                                source.options.add(option, sourcelength);
                                sourcelength++;
                            }
                        }

                        opener.writeREXMedialist(' . $id . ');';
}
?>
}

function openPage(src)
{
    window.opener.location.href = src;
    self.close();
}

//-->
</script>
<?php 
// -------------- Include Page
rex_be_controller::includeCurrentPageSubPath(compact('opener_input_field', 'opener_link', 'arg_url', 'args', 'arg_fields', 'rex_file_category', 'rex_file_category_name', 'PERMALL', 'file_id', 'error', 'success'));
Exemplo n.º 20
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'));
            }
        }
    });
}
Exemplo n.º 21
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();
        }
    });
}
Exemplo n.º 22
0
 $fieldContainer->setMultiple(false);
 $group = 'all';
 $fieldContainer->setActive($group);
 // Check all page permissions and add them to rex_perm if not already registered
 $registerImplicitePagePermissions = function ($pages) use(&$registerImplicitePagePermissions) {
     foreach ($pages as $page) {
         foreach ($page->getRequiredPermissions() as $perm) {
             // ignore admin perm and complex perms (with "/")
             if ($perm && !in_array($perm, ['isAdmin', 'admin', 'admin[]']) && strpos($perm, '/') === false && !rex_perm::has($perm)) {
                 rex_perm::register($perm);
             }
         }
         $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();
Exemplo n.º 23
0
$n['right'] = '<button class="btn btn-search" type="submit"><i class="rex-icon rex-icon-search"></i></button>';
//$n['right'] = $dropdown;
$formElements[] = $n;
$fragment = new rex_fragment();
$fragment->setVar('elements', $formElements, false);
$toolbar = $fragment->parse('core/form/input_group.php');
$toolbar = '
<div class="navbar-form navbar-right">
<form action="' . rex_url::currentBackendPage() . '" method="post">
    ' . $arg_fields . '
    <div class="form-group">
    ' . $toolbar . '
    </div>
</form>
</div>';
$context = new rex_context(['page' => rex_be_controller::getCurrentPage()]);
/*
$view_buttons = [];

// symbol view
$button = [];
$button['url'] = $context->getUrl(['func' => 'media-view-icon']);
$button['attributes']['class'][] = 'btn-default';
$button['attributes']['title'] = rex_i18n::msg('mediapool_view_icon');
$button['icon'] = 'view-icon';
$view_buttons[] = $button;

// list view
$button = [];
$button['url'] = $context->getUrl(['func' => 'media-view-list']);
$button['attributes']['class'][] = 'btn-default';
Exemplo n.º 24
0
 /**
  * @param rex_be_page[] $pages
  */
 public static function setPages(array $pages)
 {
     self::$pages = $pages;
 }
Exemplo n.º 25
0
/**
 * Bindet ggf extensions ein.
 *
 * @param rex_extension_point $ep
 */
function rex_metainfo_extensions_handler(rex_extension_point $ep)
{
    $page = $ep->getSubject();
    $mainpage = rex_be_controller::getCurrentPagePart(1);
    $mypage = 'metainfo';
    // additional javascripts
    if ($mainpage == 'metainfo' || $page == 'content/metainfo' || $page == 'structure') {
        rex_view::addJsFile(rex_url::addonAssets($mypage, 'metainfo.js'));
    }
    // include extensions
    $curDir = __DIR__ . '/..';
    if ($page == 'structure') {
        require_once $curDir . '/lib/handler/category_handler.php';
    } elseif ($mainpage == 'mediapool') {
        require_once $curDir . '/lib/handler/media_handler.php';
    } elseif ($mainpage == 'content') {
        require_once $curDir . '/extensions/extension_content_sidebar.php';
    } elseif ($page == 'backup') {
        require_once $curDir . '/extensions/extension_cleanup.php';
    }
}
Exemplo n.º 26
0
<?php

$curPage = rex_be_controller::getCurrentPageObject();
if (!$curPage->hasLayout()) {
    if (rex_request::isPJAXRequest()) {
        echo '</section>';
    }
    return;
}
?>

</section></div><?php 
if (rex_request::isPJAXContainer('#rex-js-page-container')) {
    return;
}
echo '</div>';
$sidebar = rex_extension::registerPoint(new rex_extension_point('PAGE_SIDEBAR', ''));
if ($sidebar != '') {
    $sidebarfragment = new rex_fragment();
    $sidebarfragment->content = $sidebar;
    echo $sidebarfragment->parse('core/sidebar.php');
    unset($sidebarfragment);
}
unset($fragment);
$footerfragment = new rex_fragment();
$footerfragment->setVar('time', rex::getProperty('timer')->getFormattedDelta(rex_timer::SEC));
echo $footerfragment->parse('core/footer.php');
unset($footerfragment);
$bottomfragment = new rex_fragment();
echo $bottomfragment->parse('core/bottom.php');
unset($bottomfragment);
Exemplo n.º 27
0
 /**
  * Laedt die Konfiguration die noetig ist um rex_form im REDAXO Backend zu verwenden.
  */
 protected function loadBackendConfig()
 {
     $func = rex_request('func', 'string');
     $this->addParam('page', rex_be_controller::getCurrentPage());
     $this->addParam('func', $func);
     $this->addParam('list', rex_request('list', 'string'));
     $controlFields = [];
     $controlFields['save'] = rex_i18n::msg('form_save');
     $controlFields['apply'] = $func == 'edit' ? rex_i18n::msg('form_apply') : '';
     $controlFields['delete'] = $func == 'edit' ? rex_i18n::msg('form_delete') : '';
     $controlFields['reset'] = '';
     //rex_i18n::msg('form_reset');
     $controlFields['abort'] = rex_i18n::msg('form_abort');
     // ----- EXTENSION POINT
     $controlFields = rex_extension::registerPoint(new rex_extension_point('REX_FORM_CONTROL_FIELDS', $controlFields, ['form' => $this]));
     $controlElements = [];
     foreach ($controlFields as $name => $label) {
         if ($label) {
             $controlElements[$name] = $this->addField('button', $name, $label, ['type' => 'submit', 'internal::useArraySyntax' => false, 'internal::fieldSeparateEnding' => true], false);
         } else {
             $controlElements[$name] = null;
         }
     }
     $this->addControlField($controlElements['save'], $controlElements['apply'], $controlElements['delete'], $controlElements['reset'], $controlElements['abort']);
 }
Exemplo n.º 28
0
 private function getModuleSelect($sliceId)
 {
     // ----- BLOCKAUSWAHL - SELECT
     $context = new rex_context(['page' => rex_be_controller::getCurrentPage(), 'article_id' => $this->article_id, 'clang' => $this->clang, 'ctype' => $this->ctype, 'slice_id' => $sliceId, 'function' => 'add']);
     $items = [];
     if (isset($this->MODULESELECT[$this->ctype])) {
         foreach ($this->MODULESELECT[$this->ctype] as $module) {
             $item = [];
             $item['title'] = $module['name'];
             $item['href'] = $context->getUrl(['module_id' => $module['id']]) . '#slice' . $sliceId;
             $items[] = $item;
         }
     }
     $fragment = new rex_fragment();
     $fragment->setVar('block', true);
     $fragment->setVar('button_label', rex_i18n::msg('add_block'));
     $fragment->setVar('items', $items, false);
     return '<li class="rex-slice rex-slice-select">' . $fragment->parse('core/dropdowns/dropdown.php') . '</li>';
 }
Exemplo n.º 29
0
</div><!-- END .rex-page -->
<?php 
if (rex_be_controller::getCurrentPage() != 'login' && !rex_be_controller::getCurrentPageObject()->isPopup()) {
    ?>
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".rex-nav-main > .navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
<?php 
}
?>
</body>
</html>
Exemplo n.º 30
0
 public static function checkPagePermissions(rex_user $user)
 {
     $check = function (rex_be_page $page) use(&$check, $user) {
         if (!$page->checkPermission($user)) {
             return false;
         }
         $subpages = $page->getSubpages();
         foreach ($subpages as $key => $subpage) {
             if (!$check($subpage)) {
                 unset($subpages[$key]);
             }
         }
         $page->setSubpages($subpages);
         return true;
     };
     foreach (self::$pages as $key => $page) {
         if (!$check($page)) {
             unset(self::$pages[$key]);
         }
     }
     self::$pageObject = null;
     $page = self::getCurrentPageObject();
     // --- page pruefen und benoetigte rechte checken
     if (!$page) {
         // --- fallback zur user startpage -> rechte checken
         $page = self::getPageObject($user->getStartPage());
         if (!$page) {
             // --- fallback zur system startpage -> rechte checken
             $page = self::getPageObject(rex::getProperty('start_page'));
             if (!$page) {
                 // --- fallback zur profile page
                 $page = self::getPageObject('profile');
             }
         }
         rex_response::setStatus(rex_response::HTTP_NOT_FOUND);
         rex_response::sendRedirect($page->getHref());
     }
     if ($page !== ($leaf = $page->getFirstSubpagesLeaf())) {
         rex_response::setStatus(rex_response::HTTP_MOVED_PERMANENTLY);
         $url = $leaf->hasHref() ? $leaf->getHref() : rex_context::restore()->getUrl(['page' => $leaf->getFullKey()], false);
         rex_response::sendRedirect($url);
     }
 }