Пример #1
0
 public static function getCategoryValue($id, $field, $clang = null)
 {
     if ($clang === null) {
         $clang = rex_clang::getCurrentId();
     }
     $cat = rex_category::get($id, $clang);
     if ($cat) {
         return htmlspecialchars($cat->getValue($field));
     }
 }
Пример #2
0
 public function hasCategoryPerm($category_id)
 {
     if ($this->hasAll() || in_array($category_id, $this->perms)) {
         return true;
     }
     if ($c = rex_category::get($category_id)) {
         foreach ($c->getPathAsArray() as $k) {
             if (in_array($k, $this->perms)) {
                 return true;
             }
         }
     }
     return false;
 }
Пример #3
0
 /**
  * Löscht die gecachten Meta-Dateien eines Artikels. Wenn keine clang angegeben, wird
  * der Artikel in allen Sprachen gelöscht.
  *
  * @param int $id    ArtikelId des Artikels
  * @param int $clang ClangId des Artikels
  *
  * @return bool True on success, False on errro
  */
 public static function deleteMeta($id, $clang = null)
 {
     // sanity check
     if ($id < 0) {
         return false;
     }
     $cachePath = rex_path::addonCache('structure');
     foreach (rex_clang::getAllIds() as $_clang) {
         if ($clang !== null && $clang != $_clang) {
             continue;
         }
         rex_file::delete($cachePath . $id . '.' . $_clang . '.article');
         rex_article::clearInstance([$id, $_clang]);
         rex_category::clearInstance([$id, $_clang]);
     }
     return true;
 }
Пример #4
0
 protected function buildFilterCondition(array $params)
 {
     $s = '';
     if (!empty($params['id'])) {
         $OOCat = rex_category::get($params['id'], $params['clang']);
         // Alle Metafelder des Pfades sind erlaubt
         foreach ($OOCat->getPathAsArray() as $pathElement) {
             if ($pathElement != '') {
                 $s .= ' OR `p`.`restrictions` LIKE "%|' . $pathElement . '|%"';
             }
         }
         // Auch die Kategorie selbst kann Metafelder haben
         $s .= ' OR `p`.`restrictions` LIKE "%|' . $params['id'] . '|%"';
     }
     $restrictionsCondition = 'AND (`p`.`restrictions` = "" OR `p`.`restrictions` IS NULL ' . $s . ')';
     return $restrictionsCondition;
 }
Пример #5
0
 public function execute()
 {
     // check if a new category was folded
     $category_id = rex_request('toggle_category_id', 'int', -1);
     $category_id = rex_category::get($category_id) ? $category_id : -1;
     /**
      * @var rex_user
      */
     $user = rex::getUser();
     if (!$user->getComplexPerm('structure')->hasCategoryPerm($category_id)) {
         throw new rex_api_exception('user has no permission for this category!');
     }
     $context = rex_context::fromGet();
     $categoryTree = new rex_sitemap_category_tree($context);
     $tree = $categoryTree->getTree($category_id);
     $result = new rex_api_result(true);
     return $result;
 }
Пример #6
0
 protected function addCatOption(rex_category $cat, $group = null)
 {
     if (!$this->check_perms || $this->check_perms && rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($cat->getId(), false)) {
         $cid = $cat->getId();
         $cname = $cat->getName() . ' [' . $cid . ']';
         if ($group === null) {
             $group = $cat->getParentId();
         }
         $this->addOption($cname, $cid, $cid, $group);
         $childs = $cat->getChildren($this->ignore_offlines, $this->clang);
         if (is_array($childs)) {
             foreach ($childs as $child) {
                 $this->addCatOption($child);
             }
         }
     }
 }
Пример #7
0
 /**
  * @param string              $path
  * @param rex_category        $cat
  * @param rex_yrewrite_domain $domain
  *
  * @return string
  */
 public function appendCategory($path, rex_category $cat, rex_yrewrite_domain $domain)
 {
     return $path . '/' . $this->normalize($cat->getName(), $cat->getClang());
 }
Пример #8
0
<?php

/**
 * Regelt die Rechte an den einzelnen Kategorien und gibt den Pfad aus
 * Kategorien = Startartikel und Bezüge.
 *
 * @package redaxo5
 */
$KATout = '';
// Variable definiert und vorbelegt wenn nicht existent
$KAToutARR = [];
// Variable definiert und vorbelegt wenn nicht existent
$navigation = [];
$ooCat = rex_category::get($category_id, $clang);
if ($ooCat) {
    foreach ($ooCat->getParentTree() as $parent) {
        $catid = $parent->getId();
        if (rex::getUser()->getComplexPerm('structure')->hasCategoryPerm($catid)) {
            $n = [];
            $n['title'] = str_replace(' ', '&nbsp;', htmlspecialchars($parent->getName()));
            $n['href'] = rex_url::backendPage('structure', ['category_id' => $catid, 'clang' => $clang]);
            $navigation[] = $n;
        }
    }
}
$title = '<a href="' . rex_url::backendPage('structure', ['category_id' => 0, 'clang' => $clang]) . '"><i class="rex-icon rex-icon-sitestartarticle"></i> ' . rex_i18n::msg('homepage') . '</a>';
$fragment = new rex_fragment();
$fragment->setVar('title', $title, false);
$fragment->setVar('items', $navigation, false);
echo $fragment->parse('core/navigations/breadcrumb.php');
unset($fragment);
Пример #9
0
 /**
  * Returns TRUE if this category is the direct
  * parent of the other category.
  *
  * @param self $otherCat
  *
  * @return bool
  */
 public function isParent(self $otherCat)
 {
     return $this->getId() == $otherCat->getParentId() && $this->getClang() == $otherCat->getClang();
 }
Пример #10
0
 protected function _getNavigation($category_id, $depth = 1)
 {
     if ($category_id < 1) {
         $nav_obj = rex_category::getRootCategories();
     } else {
         $nav_obj = rex_category::get($category_id)->getChildren();
     }
     $return = '';
     if (count($nav_obj) > 0) {
         $return .= '<ul class="rex-navi' . ($depth + 1) . '">';
     }
     $lis = [];
     foreach ($nav_obj as $nav) {
         $li = [];
         $a = [];
         $li['class'] = [];
         $a['class'] = [];
         $a['href'] = [$nav->getUrl()];
         if ($this->checkFilter($nav, $depth) && $this->checkCallbacks($nav, $depth, $li, $a)) {
             $li['class'][] = 'rex-article-' . $nav->getId();
             // classes abhaengig vom pfad
             if ($nav->getId() == $this->current_category_id) {
                 $li['class'][] = 'rex-current';
                 $a['class'][] = 'rex-current';
             } elseif (in_array($nav->getId(), $this->path)) {
                 $li['class'][] = 'rex-active';
                 $a['class'][] = 'rex-active';
             } else {
                 $li['class'][] = 'rex-normal';
             }
             if (isset($this->linkclasses[$depth - 1])) {
                 $a['class'][] = $this->linkclasses[$depth - 1];
             }
             if (isset($this->classes[$depth - 1])) {
                 $li['class'][] = $this->classes[$depth - 1];
             }
             $li_attr = [];
             foreach ($li as $attr => $v) {
                 $li_attr[] = $attr . '="' . implode(' ', $v) . '"';
             }
             $a_attr = [];
             foreach ($a as $attr => $v) {
                 $a_attr[] = $attr . '="' . implode(' ', $v) . '"';
             }
             $l = '<li ' . implode(' ', $li_attr) . '>';
             $l .= '<a ' . implode(' ', $a_attr) . '>' . htmlspecialchars($nav->getName()) . '</a>';
             ++$depth;
             if (($this->open || $nav->getId() == $this->current_category_id || in_array($nav->getId(), $this->path)) && ($this->depth >= $depth || $this->depth < 0)) {
                 $l .= $this->_getNavigation($nav->getId(), $depth);
             }
             --$depth;
             $l .= '</li>';
             $lis[] = $l;
         }
     }
     if (count($lis) > 0) {
         return '<ul class="rex-navi' . $depth . ' rex-navi-depth-' . $depth . ' rex-navi-has-' . count($lis) . '-elements">' . implode('', $lis) . '</ul>';
     }
     return '';
 }
Пример #11
0
 /**
  * Erstellt eine neue Kategorie.
  *
  * @param int   $category_id KategorieId in der die neue Kategorie erstellt werden soll
  * @param array $data        Array mit den Daten der Kategorie
  *
  * @throws rex_api_exception
  *
  * @return string Eine Statusmeldung
  */
 public static function addCategory($category_id, array $data)
 {
     $message = '';
     if (!is_array($data)) {
         throw new rex_api_exception('Expecting $data to be an array!');
     }
     self::reqKey($data, 'catpriority');
     self::reqKey($data, 'catname');
     // parent may be null, when adding in the root cat
     $parent = rex_category::get($category_id);
     if ($parent) {
         $path = $parent->getPath();
         $path .= $parent->getId() . '|';
     } else {
         $path = '|';
     }
     if ($data['catpriority'] <= 0) {
         $data['catpriority'] = 1;
     }
     if (!isset($data['name'])) {
         $data['name'] = $data['catname'];
     }
     if (!isset($data['status'])) {
         $data['status'] = 0;
     }
     $contentAvailable = rex_plugin::get('structure', 'content')->isAvailable();
     if ($contentAvailable) {
         $startpageTemplates = [];
         if ($category_id != '') {
             // TemplateId vom Startartikel der jeweiligen Sprache vererben
             $sql = rex_sql::factory();
             // $sql->setDebug();
             $sql->setQuery('select clang_id,template_id from ' . rex::getTablePrefix() . "article where id={$category_id} and startarticle=1");
             for ($i = 0; $i < $sql->getRows(); $i++, $sql->next()) {
                 $startpageTemplates[$sql->getValue('clang_id')] = $sql->getValue('template_id');
             }
         }
         // Alle Templates der Kategorie
         $templates = rex_template::getTemplatesForCategory($category_id);
     }
     $user = rex::isBackend() ? null : 'frontend';
     // Kategorie in allen Sprachen anlegen
     $AART = rex_sql::factory();
     foreach (rex_clang::getAllIds() as $key) {
         if ($contentAvailable) {
             $template_id = rex_template::getDefaultId();
             if (isset($startpageTemplates[$key]) && $startpageTemplates[$key] != '') {
                 $template_id = $startpageTemplates[$key];
             }
             // Wenn Template nicht vorhanden, dann entweder erlaubtes nehmen
             // oder leer setzen.
             if (!isset($templates[$template_id])) {
                 $template_id = 0;
                 if (count($templates) > 0) {
                     $template_id = key($templates);
                 }
             }
         }
         $AART->setTable(rex::getTablePrefix() . 'article');
         if (!isset($id)) {
             $id = $AART->setNewId('id');
         } else {
             $AART->setValue('id', $id);
         }
         $AART->setValue('clang_id', $key);
         $AART->setValue('template_id', $template_id);
         $AART->setValue('name', $data['name']);
         $AART->setValue('catname', $data['catname']);
         $AART->setValue('catpriority', $data['catpriority']);
         $AART->setValue('parent_id', $category_id);
         $AART->setValue('priority', 1);
         $AART->setValue('path', $path);
         $AART->setValue('startarticle', 1);
         $AART->setValue('status', $data['status']);
         $AART->addGlobalUpdateFields($user);
         $AART->addGlobalCreateFields($user);
         try {
             $AART->insert();
             // ----- PRIOR
             if (isset($data['catpriority'])) {
                 self::newCatPrio($category_id, $key, 0, $data['catpriority']);
             }
             $message = rex_i18n::msg('category_added_and_startarticle_created');
             rex_article_cache::delete($id, $key);
             // ----- EXTENSION POINT
             // Objekte clonen, damit diese nicht von der extension veraendert werden koennen
             $message = rex_extension::registerPoint(new rex_extension_point('CAT_ADDED', $message, ['category' => clone $AART, 'id' => $id, 'parent_id' => $category_id, 'clang' => $key, 'name' => $data['catname'], 'priority' => $data['catpriority'], 'path' => $path, 'status' => $data['status'], 'article' => clone $AART, 'data' => $data]));
         } catch (rex_sql_exception $e) {
             throw new rex_api_exception($e);
         }
     }
     return $message;
 }
Пример #12
0
 /**
  * Get an array of all parentCategories.
  * Returns an array of rex_structure_element objects.
  *
  * @return rex_category[]
  */
 public function getParentTree()
 {
     $return = [];
     if ($this->path) {
         if ($this->isStartArticle()) {
             $explode = explode('|', $this->path . $this->id . '|');
         } else {
             $explode = explode('|', $this->path);
         }
         if (is_array($explode)) {
             foreach ($explode as $var) {
                 if ($var != '') {
                     $return[] = rex_category::get($var, $this->clang_id);
                 }
             }
         }
     }
     return $return;
 }
Пример #13
0
 /**
  * Returns an array containing all templates which are available for the given category_id.
  * if the category_id is non-positive all templates in the system are returned.
  * if the category_id is invalid an empty array is returned.
  *
  * @param int  $category_id
  * @param bool $ignore_inactive
  *
  * @return array
  */
 public static function getTemplatesForCategory($category_id, $ignore_inactive = true)
 {
     $ignore_inactive = $ignore_inactive ? 1 : 0;
     $templates = [];
     $t_sql = rex_sql::factory();
     $t_sql->setQuery('select id,name,attributes from ' . rex::getTablePrefix() . 'template where active=' . $ignore_inactive . ' order by name');
     if ($category_id < 1) {
         // Alle globalen Templates
         foreach ($t_sql as $row) {
             $attributes = $row->getArrayValue('attributes');
             $categories = isset($attributes['categories']) ? $attributes['categories'] : [];
             if (!is_array($categories) || $categories['all'] == 1) {
                 $templates[$row->getValue('id')] = $row->getValue('name');
             }
         }
     } else {
         if ($c = rex_category::get($category_id)) {
             $path = $c->getPathAsArray();
             $path[] = $category_id;
             foreach ($t_sql as $row) {
                 $attributes = $row->getArrayValue('attributes');
                 $categories = isset($attributes['categories']) ? $attributes['categories'] : [];
                 // template ist nicht kategoriespezifisch -> includen
                 if (!is_array($categories) || $categories['all'] == 1) {
                     $templates[$row->getValue('id')] = $row->getValue('name');
                 } else {
                     // template ist auf kategorien beschraenkt..
                     // nachschauen ob eine davon im pfad der aktuellen kategorie liegt
                     foreach ($path as $p) {
                         if (in_array($p, $categories)) {
                             $templates[$row->getValue('id')] = $row->getValue('name');
                             break;
                         }
                     }
                 }
             }
         }
     }
     return $templates;
 }
Пример #14
0
 /**
  * Returns the parent category.
  *
  * @return rex_category
  */
 public function getCategory()
 {
     return rex_category::get($this->getCategoryId(), $this->getClang());
 }
Пример #15
0
 /**
  * Erstellt einen neuen Artikel.
  *
  * @param array $data Array mit den Daten des Artikels
  *
  * @throws rex_api_exception
  *
  * @return string Eine Statusmeldung
  */
 public static function addArticle($data)
 {
     if (!is_array($data)) {
         throw new rex_api_exception('Expecting $data to be an array!');
     }
     self::reqKey($data, 'category_id');
     self::reqKey($data, 'priority');
     self::reqKey($data, 'name');
     if ($data['priority'] <= 0) {
         $data['priority'] = 1;
     }
     // parent may be null, when adding in the root cat
     $parent = rex_category::get($data['category_id']);
     if ($parent) {
         $path = $parent->getPath();
         $path .= $parent->getId() . '|';
     } else {
         $path = '|';
     }
     if (rex_plugin::get('structure', 'content')->isAvailable()) {
         $templates = rex_template::getTemplatesForCategory($data['category_id']);
         // Wenn Template nicht vorhanden, dann entweder erlaubtes nehmen
         // oder leer setzen.
         if (!isset($templates[$data['template_id']])) {
             $data['template_id'] = 0;
             if (count($templates) > 0) {
                 $data['template_id'] = key($templates);
             }
         }
     }
     $message = rex_i18n::msg('article_added');
     $AART = rex_sql::factory();
     unset($id);
     foreach (rex_clang::getAllIds() as $key) {
         // ------- Kategorienamen holen
         $category = rex_category::get($data['category_id'], $key);
         $categoryName = '';
         if ($category) {
             $categoryName = $category->getName();
         }
         $AART->setTable(rex::getTablePrefix() . 'article');
         if (!isset($id) || !$id) {
             $id = $AART->setNewId('id');
         } else {
             $AART->setValue('id', $id);
         }
         $AART->setValue('name', $data['name']);
         $AART->setValue('catname', $categoryName);
         $AART->setValue('clang_id', $key);
         $AART->setValue('parent_id', $data['category_id']);
         $AART->setValue('priority', $data['priority']);
         $AART->setValue('path', $path);
         $AART->setValue('startarticle', 0);
         $AART->setValue('status', 0);
         $AART->setValue('template_id', $data['template_id']);
         $AART->addGlobalCreateFields();
         $AART->addGlobalUpdateFields();
         try {
             $AART->insert();
             // ----- PRIOR
             self::newArtPrio($data['category_id'], $key, 0, $data['priority']);
         } catch (rex_sql_exception $e) {
             throw new rex_api_exception($e);
         }
         rex_article_cache::delete($id, $key);
         // ----- EXTENSION POINT
         $message = rex_extension::registerPoint(new rex_extension_point('ART_ADDED', $message, ['id' => $id, 'clang' => $key, 'status' => 0, 'name' => $data['name'], 'parent_id' => $data['category_id'], 'priority' => $data['priority'], 'path' => $path, 'template_id' => $data['template_id'], 'data' => $data]));
     }
     return $message;
 }
Пример #16
0
 public function getList($category_id)
 {
     $isRoot = $category_id === 0;
     $mountpoints = rex::getUser()->getComplexPerm('structure')->getMountpoints();
     if ($isRoot && count($mountpoints) == 0) {
         $articles = rex_article::getRootArticles();
     } else {
         $articles = rex_category::get($category_id)->getArticles();
     }
     return self::renderList($articles, $category_id);
 }
Пример #17
0
 public static function generatePathFile($params)
 {
     $setDomain = function (rex_yrewrite_domain &$domain, &$path, rex_structure_element $element) {
         $id = $element->getId();
         $clang = $element->getClang();
         if (isset(rex_yrewrite::$domainsByMountId[$id][$clang])) {
             $domain = rex_yrewrite::$domainsByMountId[$id][$clang];
             $path = rex_yrewrite::$scheme->getClang($clang, $domain);
         }
     };
     $setPath = function (rex_yrewrite_domain $domain, $path, rex_article $art) use($setDomain) {
         $setDomain($domain, $path, $art);
         if (($redirection = rex_yrewrite::$scheme->getRedirection($art, $domain)) instanceof rex_structure_element) {
             rex_yrewrite::$paths['redirections'][$art->getId()][$art->getClang()] = ['id' => $redirection->getId(), 'clang' => $redirection->getClang()];
             unset(rex_yrewrite::$paths['paths'][$domain->getName()][$art->getId()][$art->getClang()]);
             return;
         }
         unset(rex_yrewrite::$paths['redirections'][$art->getId()][$art->getClang()]);
         $url = rex_yrewrite::$scheme->getCustomUrl($art, $domain);
         if (!is_string($url)) {
             $url = rex_yrewrite::$scheme->appendArticle($path, $art, $domain);
         }
         rex_yrewrite::$paths['paths'][$domain->getName()][$art->getId()][$art->getClang()] = ltrim($url, '/');
     };
     $generatePaths = function (rex_yrewrite_domain $domain, $path, rex_category $cat) use(&$generatePaths, $setDomain, $setPath) {
         $path = rex_yrewrite::$scheme->appendCategory($path, $cat, $domain);
         $setDomain($domain, $path, $cat);
         foreach ($cat->getChildren() as $child) {
             $generatePaths($domain, $path, $child);
         }
         foreach ($cat->getArticles() as $art) {
             $setPath($domain, $path, $art);
         }
     };
     $ep = isset($params['extension_point']) ? $params['extension_point'] : '';
     switch ($ep) {
         // clang and id specific update
         case 'CAT_DELETED':
         case 'ART_DELETED':
             foreach (self::$paths['paths'] as $domain => $c) {
                 unset(self::$paths['paths'][$domain][$params['id']]);
             }
             unset(self::$paths['redirections'][$params['id']]);
             if (0 == $params['re_id']) {
                 break;
             }
             $params['id'] = $params['re_id'];
             // no break
         // no break
         case 'CAT_ADDED':
         case 'CAT_UPDATED':
         case 'CAT_STATUS':
         case 'ART_ADDED':
         case 'ART_UPDATED':
         case 'ART_STATUS':
             rex_article_cache::delete($params['id']);
             $domain = self::$domainsByMountId[0][$params['clang']];
             $path = self::$scheme->getClang($params['clang'], $domain);
             $art = rex_article::get($params['id'], $params['clang']);
             $tree = $art->getParentTree();
             if ($art->isStartArticle()) {
                 $cat = array_pop($tree);
             }
             foreach ($tree as $parent) {
                 $path = self::$scheme->appendCategory($path, $parent, $domain);
                 $setDomain($domain, $path, $parent);
                 $setPath($domain, $path, rex_article::get($parent->getId(), $parent->getClang()));
             }
             if ($art->isStartArticle()) {
                 $generatePaths($domain, $path, $cat);
             } else {
                 $setPath($domain, $path, $art);
             }
             break;
             // update all
         // update all
         case 'CLANG_DELETED':
         case 'CLANG_ADDED':
         case 'CLANG_UPDATED':
             //case 'ALL_GENERATED':
         //case 'ALL_GENERATED':
         default:
             self::$paths = ['paths' => [], 'redirections' => []];
             foreach (rex_clang::getAllIds() as $clangId) {
                 $domain = self::$domainsByMountId[0][$clangId];
                 $path = self::$scheme->getClang($clangId, $domain);
                 foreach (rex_category::getRootCategories(false, $clangId) as $cat) {
                     $generatePaths($domain, $path, $cat);
                 }
                 foreach (rex_article::getRootArticles(false, $clangId) as $art) {
                     $setPath($domain, $path, $art);
                 }
             }
             break;
     }
     rex_file::putCache(self::$pathfile, self::$paths);
 }
Пример #18
0
                             window.opener.document.getElementById("' . $opener_input_field_name . '").value = name;
                             self.close();';
}
// ------------------------ Print JS Functions
?>
<script type="text/javascript">
    function insertLink(link,name){
        <?php 
echo $func_body . "\n";
?>
    }
</script>

<?php 
$isRoot = $category_id === 0;
$category = rex_category::get($category_id);
$navigation = [];
if ($category) {
    foreach ($category->getParentTree() as $parent) {
        $n = [];
        $n['title'] = str_replace(' ', '&nbsp;', htmlspecialchars($parent->getName()));
        $n['href'] = $context->getUrl(['category_id' => $parent->getId()]);
        $navigation[] = $n;
    }
}
echo rex_view::title('Linkmap');
$title = '<a href="' . $context->getUrl(['category_id' => 0]) . '"><i class="rex-icon rex-icon-sitestartarticle"></i> ' . rex_i18n::msg('homepage') . '</a>';
$fragment = new rex_fragment();
$fragment->setVar('title', $title, false);
$fragment->setVar('items', $navigation, false);
echo $fragment->parse('core/navigations/breadcrumb.php');
Пример #19
0
            <input type="hidden" name="edit_id" value="' . $edit_id . '" />';
}
// --------------------- PRINT CATS/SUBCATS
$echo .= '
            <table class="table table-striped table-hover">
                <thead>
                    <tr>
                        <th class="rex-table-icon">' . $add_category . '</th>
                        <th class="rex-table-id">' . rex_i18n::msg('header_id') . '</th>
                        <th>' . rex_i18n::msg('header_category') . '</th>
                        <th class="rex-table-priority">' . rex_i18n::msg('header_priority') . '</th>
                        <th class="rex-table-action" colspan="3">' . rex_i18n::msg('header_status') . '</th>
                    </tr>
                </thead>
                <tbody>';
if ($category_id != 0 && ($category = rex_category::get($category_id))) {
    $echo .= '  <tr>
                    <td class="rex-table-icon"><i class="rex-icon rex-icon-open-category"></i></td>
                    <td class="rex-table-id">-</td>
                    <td data-title="' . rex_i18n::msg('header_category') . '"><a href="' . $context->getUrl(['category_id' => $category->getParentId()]) . '">..</a></td>
                    <td class="rex-table-priority" data-title="' . rex_i18n::msg('header_priority') . '">&nbsp;</td>
                    <td class="rex-table-action" colspan="3">&nbsp;</td>
                </tr>';
}
// --------------------- KATEGORIE ADD FORM
if ($function == 'add_cat' && $KATPERM) {
    $meta_buttons = rex_extension::registerPoint(new rex_extension_point('CAT_FORM_BUTTONS', '', ['id' => $category_id, 'clang' => $clang]));
    $add_buttons = '
        <input type="hidden" name="rex-api-call" value="category_add" />
        <input type="hidden" name="parent-category-id" value="' . $category_id . '" />
        <button class="btn btn-save" type="submit" name="category-add-button"' . rex::getAccesskey(rex_i18n::msg('add_category'), 'save') . '>' . rex_i18n::msg('add_category') . '</button>';
Пример #20
0
 static function getListValue($params)
 {
     $return = array();
     foreach (explode(',', $params['value']) as $id) {
         if ($cat = rex_category::get($id, (int) $params['params']['field']['clang'])) {
             $return[] = $cat->getName();
         }
     }
     return implode('<br />', $return);
 }
Пример #21
0
}
if (rex::isBackend() && rex::getUser()) {
    rex_view::addJsFile($this->getAssetsUrl('linkmap.js'));
    rex_extension::register('PAGE_SIDEBAR', function () {
        $category_id = rex_request('category_id', 'int');
        $article_id = rex_request('article_id', 'int');
        $clang = rex_request('clang', 'int');
        $ctype = rex_request('ctype', 'int');
        $category_id = rex_category::get($category_id) ? $category_id : 0;
        $article_id = rex_article::get($article_id) ? $article_id : 0;
        $clang = rex_clang::exists($clang) ? $clang : rex_clang::getStartId();
        // TODO - CHECK PERM
        $context = new rex_context(['page' => 'structure', 'category_id' => $category_id, 'article_id' => $article_id, 'clang' => $clang, 'ctype' => $ctype]);
        // check if a new category was folded
        $category_id = rex_request('toggle_category_id', 'int', -1);
        $category_id = rex_category::get($category_id) ? $category_id : -1;
        $tree = '';
        $tree .= '<div id="rex-sitemap">';
        // TODO remove container (just their to get some linkmap styles)
        $tree .= '<div id="rex-linkmap">';
        $categoryTree = new rex_sitemap_category_tree($context);
        $tree .= $categoryTree->getTree($category_id);
        $tree .= '</div>';
        $tree .= '</div>';
        return $tree;
    });
    if (rex_be_controller::getCurrentPagePart(1) == 'system') {
        rex_system_setting::register(new rex_system_setting_article_id('start_article_id'));
        rex_system_setting::register(new rex_system_setting_article_id('notfound_article_id'));
    }
}