ConLite/conlite/includes/include.str_overview.php

1000 Zeilen
41 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Displays structure
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend includes
* @version 1.0.4
* @author Olaf Niemann
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
* @since file available since contenido release <= 4.6
*
* {@internal
* created 2003-03-28
* modified 2008-06-27, Dominik Ziegler, add security fix
* modified 2009-10-14, Dominik Ziegler - added some functionality for "cancel moving tree"
* modified 2009-10-15, Dominik Ziegler - removed unnecessary database query for selecting the level (level is already available)
* modified 2010-01-30, Ingo van Peeren, some optimization of the amount of db queries for template names and descriptions, see [CON-301]
* removed use of deprecated methods of class.template.php, see [CON-302]
* modified 2010-02-06, Ingo van Peeren, fixed small bug added by last modification
*
* $Id$:
* }}
*
*/
if (!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
$debug = FALSE;
$tmp_area = "str";
if ($action == "str_duplicate" &&
($perm->have_perm_area_action("str", "str_duplicate") ||
$perm->have_perm_area_action_item("str", "str_duplicate", $idcat))) {
strCopyTree($idcat, $parentid);
}
//Everybody is allowed to update aliases, if there is no Permission to update category names, this block updates category alias only
if (isset($_POST['newcategoryalias']) && isset($_POST['action']) && $_POST['action'] == 'str_renamecat') {
$iIdCat = (int) $_POST['idcat'];
if (!($perm->have_perm_area_action($tmp_area, "str_renamecat") || $perm->have_perm_area_action_item($tmp_area, "str_renamecat", $iIdCat))) {
if (trim($_POST['newcategoryalias']) != '') {
$sUrlName = capiStrCleanURLCharacters($_POST['newcategoryalias']);
$sql = "UPDATE {$cfg['tab']['cat_lang']} SET urlname = '" . Contenido_Security::escapeDB($sUrlName, $db) . "' WHERE idcat = '" . Contenido_Security::toInteger($iIdCat) . "' AND idlang = '" . Contenido_Security::toInteger($lang) . "'";
$db->query($sql);
} else {
//Use categoryname as default -> get it escape it save it as urlname
$sql = "SELECT name from {$cfg['tab']['cat_lang']} WHERE idcat = '" . Contenido_Security::toInteger($iIdCat) . "' AND idlang = '" . Contenido_Security::toInteger($lang) . "'";
$db->query($sql);
if ($db->next_record()) {
$sUrlName = capiStrCleanURLCharacters($db->f('name'));
$sql = "UPDATE {$cfg['tab']['cat_lang']} SET urlname = '" . $sUrlName . "' WHERE idcat = '" . Contenido_Security::toInteger($iIdCat) . "' AND idlang = '" . Contenido_Security::toInteger($lang) . "'";
$db->query($sql);
$lang = Contenido_Security::escapeDB($lang, null);
@unlink($cfgClient[$client]["path"]["frontend"] . "cache/locationstring-url-cache-$lang.txt");
}
}
}
}
$oDirectionDb = new DB_ConLite();
/**
* Build a Category select Box containg all categories which user is allowed to create new categories
*
* @return String HTML
*/
function buildCategorySelectRights() {
global $cfg, $client, $lang, $idcat, $perm, $tmp_area;
$db = new DB_ConLite();
$oHtmlSelect = new cHTMLSelectElement('idcat', "", "new_idcat");
$oHtmlSelectOption = new cHTMLOptionElement(i18n("Please choose"), '', true);
$oHtmlSelect->addOptionElement(0, $oHtmlSelectOption);
$sql = "SELECT a.idcat AS idcat, b.name AS name, c.level FROM
" . $cfg["tab"]["cat"] . " AS a, " . $cfg["tab"]["cat_lang"] . " AS b,
" . $cfg["tab"]["cat_tree"] . " AS c WHERE a.idclient = '" . Contenido_Security::toInteger($client) . "'
AND b.idlang = '" . Contenido_Security::toInteger($lang) . "' AND b.idcat = a.idcat AND c.idcat = a.idcat
ORDER BY c.idtree";
$db->query($sql);
$categories = array();
while ($db->next_record()) {
$categories[$db->f("idcat")]["name"] = $db->f("name");
$categories[$db->f("idcat")]["idcat"] = $db->f("idcat");
if ($perm->have_perm_area_action($tmp_area, "str_newcat") || $perm->have_perm_area_action_item($tmp_area, "str_newcat", $db->f("idcat"))) {
$categories[$db->f("idcat")]["perm"] = 1;
} else {
$categories[$db->f("idcat")]["perm"] = 0;
}
$categories[$db->f("idcat")]["level"] = $db->f("level");
}
$aCategoriesReversed = array_reverse($categories);
$iLevel = 0;
foreach ($aCategoriesReversed as $iKeyIdCat => $aValues) {
if ($aValues['level'] > $iLevel && $aValues['perm']) {
$iLevel = $aValues['level'];
} else if ($aValues['level'] < $iLevel) {
$iLevel = $aValues['level'];
} else {
if (!$aValues['perm']) {
unset($categories[$aValues["idcat"]]);
}
}
}
$j = 1;
foreach ($categories as $tmpidcat => $props) {
$spaces = "&nbsp;&nbsp;";
for ($i = 0; $i < $props["level"]; $i ++) {
$spaces .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
$sCategoryname = clHtmlSpecialChars($props["name"]);
$sCategoryname = capiStrTrimHard($sCategoryname, 30);
$oHtmlSelectOption = new cHTMLOptionElement($spaces . ">" . $sCategoryname, $tmpidcat, false, !$props["perm"]);
$oHtmlSelect->addOptionElement($j, $oHtmlSelectOption);
$j++;
}
return $oHtmlSelect->toHtml();
}
function getExpandCollapseButton($item, $catName) {
global $sess, $PHP_SELF, $frame, $area;
$selflink = "main.php";
$img = new cHTMLImage;
$img->updateAttributes(array("style" => "padding:4px;"));
if (count($item->subitems) > 0) {
if ($item->collapsed == true) {
$expandlink = $sess->url($selflink . "?area=$area&frame=$frame&expand=" . $item->id);
$img->setSrc($item->collapsed_icon);
$img->setAlt(i18n("Open category"));
return ('<a href="' . $expandlink . '">' . $img->render() . '</a>&nbsp;' . '<a href="' . $expandlink . '">' . $catName . '</a>');
} else {
$collapselink = $sess->url($selflink . "?area=$area&frame=$frame&collapse=" . $item->id);
$img->setSrc($item->expanded_icon);
$img->setAlt(i18n("Close category"));
return('<a href="' . $collapselink . '">' . $img->render() . '</a>&nbsp;' . '<a href="' . $collapselink . '">' . $catName . '</a>');
}
} else {
return '<img src="images/spacer.gif" style="padding:4px;" width="7" height="7">&nbsp;' . $catName;
}
}
function getTemplateSelect() {
global $client, $cfg, $db;
$oHtmlSelect = new cHTMLSelectElement('cat_template_select', "", "cat_template_select");
$oHtmlSelectOption = new cHTMLOptionElement('--- ' . i18n("none") . ' ---', 0, false);
$oHtmlSelect->addOptionElement(0, $oHtmlSelectOption);
$sql = "SELECT
idtpl,
name, defaulttemplate
FROM
" . $cfg['tab']['tpl'] . "
WHERE
idclient = '" . $client . "'
ORDER BY
name";
$i = 1;
if ($db->query($sql)) {
while ($db->next_record()) {
$bDefaultTemplate = $db->f('defaulttemplate');
$oHtmlSelectOption = new cHTMLOptionElement($db->f('name'), $db->f('idtpl'), $bDefaultTemplate);
$oHtmlSelect->addOptionElement($i, $oHtmlSelectOption);
$i++;
}
}
return $oHtmlSelect->toHtml();
}
getTemplateSelect();
$sess->register("remakeStrTable");
$sess->register("StrTableClient");
$sess->register("StrTableLang");
$cancel = $sess->url("main.php?area=$area&frame=$frame");
if (isset($force) && $force == 1) {
$remakeStrTable = true;
}
if ($StrTableClient != $client) {
unset($expandedList);
$remakeStrTable = true;
}
if ($StrTableLang != $lang) {
unset($expandedList);
$remakeStrTable = true;
}
$StrTableClient = $client;
$StrTableLang = $lang;
if (!isset($idcat))
$idcat = 0;
if (!isset($action))
$action = 0;
function buildTree(&$rootItem, $itemsIterator) {
global $nextItem, $perm, $tmp_area;
while ($itemsIterator->valid()) {
$key = $itemsIterator->key();
$item = $itemsIterator->current();
$itemsIterator->next();
unset($newItem);
$bCheck = false;
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_newtree');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_newcat');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_makevisible');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_makepublic');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_deletecat');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_moveupcat');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_movedowncat');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_movesubtree');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, 'str_renamecat');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action('str_tplcfg', 'str_tplcfg');
}
if (!$bCheck) {
$bCheck = $perm->have_perm_item($tmp_area, $item['idcat']);
}
if ($bCheck) {
$newItem = new TreeItem($item['name'], $item['idcat'], true);
} else {
$newItem = new TreeItem($item['name'], $item['idcat'], false);
}
$newItem->setCollapsedIcon('images/open_all.gif');
$newItem->setExpandedIcon('images/close_all.gif');
$newItem->setCustom('idtree', $item['idtree']);
$newItem->setCustom('level', $item['level']);
$newItem->setCustom('idcat', $item['idcat']);
$newItem->setCustom('idtree', $item['idtree']);
$newItem->setCustom('parentid', $item['parentid']);
$newItem->setCustom('alias', $item['alias']);
$newItem->setCustom('preid', $item['preid']);
$newItem->setCustom('postid', $item['postid']);
$newItem->setCustom('visible', $item['visible']);
$newItem->setCustom('idtplcfg', $item['idtplcfg']);
$newItem->setCustom('public', $item['public']);
if ($perm->have_perm_item('str', $item['idcat'])) {
$newItem->setCustom('forcedisplay', 1);
}
if ($itemsIterator->offsetExists($key + 1)) {
$nextItem = $itemsIterator->offsetGet($key + 1);
} else {
$nextItem = 0;
}
$rootItem->addItem($newItem);
if ($nextItem['level'] > $item['level']) {
$oldRoot = $rootItem;
buildTree($newItem, $itemsIterator);
$rootItem = $oldRoot;
}
if ($nextItem['level'] < $item['level']) {
return;
}
}
}
if ($perm->have_perm_area_action($area)) {
$sql = "SELECT
idtree, A.idcat, level, name, parentid, preid, postid, visible, public, idtplcfg, C.urlname as alias
FROM
" . $cfg["tab"]["cat_tree"] . " AS A,
" . $cfg["tab"]["cat"] . " AS B,
" . $cfg["tab"]["cat_lang"] . " AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
C.idlang = '" . Contenido_Security::toInteger($lang) . "' AND
B.idclient = '" . Contenido_Security::toInteger($client) . "'
ORDER BY
idtree";
# Debug info
if ($debug) {
echo "<pre>";
echo $sql;
echo "</pre>";
}
$db->query($sql);
$bIgnore = false;
$iIgnoreLevel = 0;
$items = array();
while ($db->next_record()) {
$bSkip = false;
if ($bIgnore == true && $iIgnoreLevel >= $db->f("level")) {
$bIgnore = false;
}
if ($db->f("idcat") == $movesubtreeidcat) {
$bIgnore = true;
$iIgnoreLevel = $db->f("level");
$sMoveSubtreeCatName = $db->f("name");
}
if ($iCurLevel == $db->f("level")) {
if ($iCurParent != $db->f("parentid")) {
$bSkip = true;
}
} else {
$iCurLevel = $db->f("level");
$iCurParent = $db->f("parentid");
}
if ($bIgnore == false && $bSkip == false) {
$entry = array();
$entry['idtree'] = $db->f("idtree");
$entry['idcat'] = $db->f("idcat");
$entry['level'] = $db->f("level");
$entry['name'] = htmldecode($db->f("name"));
$entry['alias'] = htmldecode($db->f("alias"));
$entry['parentid'] = $db->f("parentid");
$entry['preid'] = $db->f("preid");
$entry['postid'] = $db->f("postid");
$entry['visible'] = $db->f("visible");
$entry['public'] = $db->f("public");
$entry['idtplcfg'] = $db->f("idtplcfg");
array_push($items, $entry);
}
}
$rootStrItem = new TreeItem("root", -1);
$rootStrItem->collapsed_icon = 'images/open_all.gif';
$rootStrItem->expanded_icon = 'images/close_all.gif';
$arrayObj = new ArrayObject($items);
buildTree($rootStrItem, $arrayObj->getIterator());
$expandedList = unserialize($currentuser->getUserProperty("system", "cat_expandstate"));
if (is_array($expandedList)) {
$rootStrItem->markExpanded($expandedList);
}
if (isset($collapse) && is_numeric($collapse)) {
$rootStrItem->markCollapsed($collapse);
}
if (isset($expand) && is_numeric($expand)) {
$rootStrItem->markExpanded($expand);
}
if (isset($expand) && $expand == "all") {
$rootStrItem->expandAll(-1);
}
if (isset($collapse) && $collapse == "all") {
$rootStrItem->collapseAll(-1);
}
if ($action === "str_newcat") {
$rootStrItem->markExpanded($idcat);
}
$expandedList = Array();
$objects = array();
$rootStrItem->traverse($objects);
$rootStrItem->getExpandedList($expandedList);
$currentuser->setUserProperty("system", "cat_expandstate", serialize($expandedList));
# Reset Template
$tpl->reset();
$tpl->set('s', 'SID', $sess->id);
$tpl->set('s', 'AREA', $area);
$tpl->set('s', 'FRAME', $frame);
$_cecIterator = $_cecRegistry->getIterator("Contenido.CategoryList.Columns");
$listColumns = array();
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$tmplistColumns = $chainEntry->execute(array());
if (is_array($tmplistColumns)) {
$listColumns = array_merge($listColumns, $tmplistColumns);
}
}
foreach ($listColumns as $content) {
// Header for additional columns
$additionalheaders[] = '<td class="header" nowrap="nowrap">' . $content . '</td>';
}
$additionalheader = implode("", $additionalheaders);
} else {
$additionalheader = "";
}
$tpl->set('s', 'ADDITIONALHEADERS', $additionalheader);
// We don't want to show our root
unset($objects[0]);
$selflink = "main.php";
$expandlink = $sess->url($selflink . "?area=$area&frame=$frame&expand=all&syncoptions=$syncoptions");
$collapselink = $sess->url($selflink . "?area=$area&frame=$frame&collapse=all&syncoptions=$syncoptions");
$collapseimg = '<a class="black" href="' .
$collapselink .
'" alt="' . i18n("Close all categories") .
'" title="' . i18n("Close all categories") . '">
<img src="images/close_all.gif">&nbsp;' . i18n("Close all categories") .
'</a>';
$expandimg = '<a class="black" href="' .
$expandlink .
'" alt="' . i18n("Open all categories") .
'" title="' . i18n("Open all categories") . '">
<img src="images/open_all.gif">&nbsp;' . i18n("Open all categories") .
'</a>';
$tpl->set('s', 'COLLAPSE_ALL', $collapseimg);
$tpl->set('s', 'EXPAND_ALL', $expandimg);
$sMouseover = 'onmouseover="str.over(this)" onmouseout="str.out(this)" onclick="str.click(this)"';
//Fill inline edit table row
$tpl->set('s', 'SUM_COLUMNS_EDIT', 14 + count($listColumns));
$tpl->set('s', 'ACTION_EDIT_URL', $sess->url("main.php?frame=$frame"));
$tpl->set('s', 'SRC_CANCEL', $cfg["path"]["contenido_fullhtml"] . $cfg["path"]["images"] . 'but_cancel.gif');
$tpl->set('s', 'SRC_OK', $cfg["path"]["contenido_fullhtml"] . $cfg["path"]["images"] . 'but_ok.gif');
$tpl->set('s', 'HREF_CANCEL', "javascript:handleInlineEdit(0)");
$tpl->set('s', 'LABEL_ALIAS_NAME', i18n('Alias'));
$tpl->set('s', 'TEMPLATE_URL', $sess->url("main.php?area=str_tplcfg&frame=$frame"));
$message = addslashes(i18n("Do you really want to duplicate the following category:<br><br><b>%s</b><br><br>Notice: The duplicate process can take up to several minutes, depending on how many subitems and articles you've got."));
$tpl->set('s', 'DUPLICATE_MESSAGE', $message);
$tpl->set('s', 'DELETE_MESSAGE', i18n("Do you really want to delete the following category:<br><br><b>%s</b>"));
$bAreaAddNewCategory = false;
$aInlineEditData = array();
$sql = "SELECT
idtplcfg, idtpl
FROM
" . $cfg["tab"]["tpl_conf"];
$db->query($sql);
$aTplconfigs = array();
while ($db->next_record()) {
$aTplconfigs[$db->f('idtplcfg')] = $db->f('idtpl');
}
$sql = "SELECT
name, description, idtpl
FROM
" . $cfg["tab"]["tpl"];
$db->query($sql);
$aTemplates = array();
while ($db->next_record()) {
$aTemplates[$db->f('idtpl')] = array(
'name' => $db->f('name'),
'description' => $db->f('description')
);
}
foreach ($objects as $key => $value) {
// check if there area any permission for this $idcat in the mainarea 6 (=str) and there subareas
$bCheck = false;
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_newtree");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_newcat");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_makevisible");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_makepublic");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_deletecat");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_moveupcat");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_movedowncat");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_movesubtree");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action($tmp_area, "str_renamecat");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_area_action("str_tplcfg", "str_tplcfg");
}
if (!$bCheck) {
$bCheck = $perm->have_perm_item($tmp_area, $value->id);
}
if (!$bCheck) {
$bCheck = $value->isCustomAttributeSet("forcedisplay");
}
if ($bCheck) {
//Insert empty row
if ($value->custom['level'] == 0 && $value->custom['preid'] != 0) {
$tpl->set('d', 'BGCOLOR', '#FFFFFF');
$tpl->set('d', 'BGCOLOR_EDIT', '#F1F1F1');
$tpl->set('d', 'ALIAS', '&nbsp;');
$tpl->set('d', 'INDENT', '3px');
$tpl->set('d', 'RENAMEBUTTON', '&nbsp;');
$tpl->set('d', 'NEWCATEGORYBUTTON', '&nbsp;');
$tpl->set('d', 'VISIBLEBUTTON', '&nbsp;');
$tpl->set('d', 'PUBLICBUTTON', '&nbsp;');
$tpl->set('d', 'DELETEBUTTON', '&nbsp;');
$tpl->set('d', 'UPBUTTON', '&nbsp;');
$tpl->set('d', 'COLLAPSE_CATEGORY_NAME', '&nbsp;');
$tpl->set('d', 'TPLNAME', '&nbsp;');
$tpl->set('d', 'MOVEBUTTON', '&nbsp;');
$tpl->set('d', 'DOWNBUTTON', '&nbsp;');
$tpl->set('d', 'SHOW_MOUSEOVER', '');
$tpl->set('d', 'SHOW_MOUSEOVER_ALIAS', '');
$tpl->set('d', 'SHOW_MOUSEOVER_CATEGORY', '');
$tpl->set('d', 'TPLDESC', '');
$tpl->set('d', 'DUPLICATEBUTTON', '&nbsp;');
$tpl->set('d', 'TEMPLATEBUTTON', '&nbsp;');
$tpl->set('d', 'MOUSEOVER', '');
$tpl->set('d', 'SUM_COLUMNS_EDIT', 14 + count($listColumns));
$tpl->set('d', 'CATID', '');
$tpl->set('d', 'ACTION_EDIT_URL', '');
$tpl->set('d', 'INPUT_CATEGORY', '');
$tpl->set('d', 'LABEL_ALIAS_NAME', '');
$tpl->set('d', 'HREF_CANCEL', '');
$tpl->set('d', 'SRC_CANCEL', '');
$tpl->set('d', 'DIRECTION', '');
$tpl->set('d', 'SRC_OK', '');
$tpl->set('d', 'VALUE_ALIAS_NAME', '');
$tpl->set('d', 'HEIGTH', 'height:5px;');
$tpl->set('d', 'BORDER_CLASS', 'str-style-b');
$additionalColumns = array();
foreach ($listColumns as $content) {
// Content rows
$additionalColumns[] = '<td style="border: 0px; border-bottom:1px; border-right: 1px; border-color: #B3B3B3; border-style: solid;" nowrap="nowrap">&nbsp;</td>';
}
$tpl->set('d', 'ADDITIONALCOLUMNS', implode("", $additionalColumns));
$tpl->next();
}
$bgcolor = ( is_int($tpl->dyn_cnt / 2) ) ? $cfg["color"]["table_light"] : $cfg["color"]["table_dark"];
$tpl->set('d', 'BGCOLOR', $bgcolor);
$tpl->set('d', 'BGCOLOR_EDIT', '#F1F1F1');
$tpl->set('d', 'HEIGTH', 'height:25px');
$tpl->set('d', 'BORDER_CLASS', 'str-style-c');
$spaces = "";
$tpl->set('d', 'INDENT', ($value->custom['level'] * 16) . "px");
$sCategoryname = $value->name;
if (strlen($value->name) > 30) {
$sCategoryname = capiStrTrimHard($sCategoryname, 30);
}
//$tpl->set('d', 'CATEGORY', $sCategoryname);
if (strlen($value->name) > 30) {
$tpl->set('d', 'SHOW_MOUSEOVER_CATEGORY', 'onmouseover="Tip(\'' . $value->name . '\', BALLOON, true, ABOVE, true);"');
} else {
$tpl->set('d', 'SHOW_MOUSEOVER_CATEGORY', '');
}
$tpl->set('d', 'COLLAPSE_CATEGORY_NAME', getExpandCollapseButton($value, $sCategoryname));
if ($value->custom['alias']) {
$sCategoryalias = $value->custom['alias'];
if (strlen($value->custom['alias']) > 30) {
$sCategoryalias = capiStrTrimHard($sCategoryalias, 30);
}
$tpl->set('d', 'ALIAS', $sCategoryalias);
if (strlen($value->custom['alias']) > 30) {
$tpl->set('d', 'SHOW_MOUSEOVER_ALIAS', 'onmouseover="Tip(\'' . $value->custom['alias'] . '\', BALLOON, true, ABOVE, true);"');
} else {
$tpl->set('d', 'SHOW_MOUSEOVER_ALIAS', '');
}
} else {
$tpl->set('d', 'SHOW_MOUSEOVER_ALIAS', '');
$tpl->set('d', 'ALIAS', '&nbsp;');
}
$template = $aTemplates[$aTplconfigs[$value->custom['idtplcfg']]]['name'];
$templateDescription = $aTemplates[$aTplconfigs[$value->custom['idtplcfg']]]['description'];
$descString = '';
if ($template == "") {
$template = '--- ' . i18n("none") . ' ---';
}
// Description for hover effect
$descString = '<b>' . $template . '</b>';
if (strlen($templateDescription) > 0) {
$descString .= '<br>' . $templateDescription;
}
$sTemplatename = $template;
if (strlen($template) > 20) {
$sTemplatename = capiStrTrimHard($sTemplatename, 20);
}
$tpl->set('d', 'TPLNAME', $sTemplatename);
$tpl->set('d', 'TPLDESC', $descString);
if ($perm->have_perm_area_action($tmp_area, "str_renamecat") || $perm->have_perm_area_action_item($tmp_area, "str_renamecat", $value->id)) {
$bPermRename = 1;
} else {
$bPermRename = 0;
}
if ($perm->have_perm_area_action("str_tplcfg", "str_tplcfg") || $perm->have_perm_area_action_item("str_tplcfg", "str_tplcfg", $value->id)) {
$bPermTplcfg = 1;
} else {
$bPermTplcfg = 0;
}
$aRecord = array();
$sCatName = $value->name;
$aRecord['catn'] = str_replace('\'', '\\\'', $sCatName);
$sAlias = $value->custom['alias'];
$aRecord['alias'] = str_replace('\'', '\\\'', $sAlias);
$aRecord['idtplcfg'] = $value->custom['idtplcfg'];
$aRecord['pName'] = $bPermRename;
$aRecord['pTplcfg'] = $bPermTplcfg;
$aInlineEditData[$value->id] = $aRecord;
$tpl->set('d', 'RENAMEBUTTON', "<a class=\"action\" href=\"javascript:handleInlineEdit(" . $value->id . ");\"><img src=\"" . $cfg["path"]["images"] . "but_todo.gif\" id=\"cat_" . $value->id . "_image\"></a>");
$tpl->set('d', 'CATID', $value->id);
if (strlen($template) > 20) {
$tpl->set('d', 'SHOW_MOUSEOVER', 'onmouseover="Tip(\'' . $descString . '\', BALLOON, true, ABOVE, true);"');
} else {
$tpl->set('d', 'SHOW_MOUSEOVER', '');
}
$tpl->set('d', 'MOUSEOVER', $sMouseover);
if ($perm->have_perm_area_action($tmp_area, "str_newcat") || $perm->have_perm_area_action_item($tmp_area, "str_newcat", $value->id)) {
$bAreaAddNewCategory = true;
}
if ($perm->have_perm_area_action($tmp_area, "str_makevisible") || $perm->have_perm_area_action_item($tmp_area, "str_makevisible", $value->id)) {
if ($value->custom['visible'] == 1) {
$tpl->set('d', 'VISIBLEBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_makevisible&frame=$frame&idcat=" . $value->id . "&visible=" . $value->custom['visible']) . "#clickedhere\"><img src=\"images/online.gif\"></a>");
} else {
$tpl->set('d', 'VISIBLEBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_makevisible&frame=$frame&idcat=" . $value->id . "&visible=" . $value->custom['visible']) . "#clickedhere\"><img src=\"images/offline.gif\"></a>");
}
} else {
$tpl->set('d', 'VISIBLEBUTTON', '&nbsp;');
}
if ($perm->have_perm_area_action($tmp_area, "str_makepublic") || $perm->have_perm_area_action_item($tmp_area, "str_makepublic", $value->id)) {
if ($value->custom['public'] == 1) {
$tpl->set('d', 'PUBLICBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_makepublic&frame=$frame&idcat=" . $value->id . "&public=" . $value->custom['public']) . "#clickedhere\"><img src=\"images/folder_delock.gif\"></a>");
} else {
$tpl->set('d', 'PUBLICBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_makepublic&frame=$frame&idcat=" . $value->id . "&public=" . $value->custom['public']) . "#clickedhere\"><img src=\"images/folder_lock.gif\"></a>");
}
} else {
$tpl->set('d', 'PUBLICBUTTON', '&nbsp;');
}
$hasChildren = strNextDeeper($value->id);
$hasArticles = strHasArticles($value->id);
if (($hasChildren == 0) && ($hasArticles == false) && ($perm->have_perm_area_action($tmp_area, "str_deletecat") || $perm->have_perm_area_action_item($tmp_area, "str_deletecat", $value->id))) {
$delete = '<a href="javascript://" onclick="confDel(' . $value->id . ',' . $value->custom['parentid'] . ', \'' . clHtmlSpecialChars($value->name) . '\')">' . "<img src=\"" . $cfg["path"]["images"] . "delete.gif\"></a>";
$tpl->set('d', 'DELETEBUTTON', $delete);
} else {
$message = i18n("No permission");
if ($hasChildren) {
$button = 'delete_inact_h.gif';
}
if ($hasArticles) {
$button = 'delete_inact_g.gif';
}
if ($hasChildren && $hasArticles) {
$button = 'delete_inact.gif';
}
$tpl->set('d', 'DELETEBUTTON', '<img src="' . $cfg["path"]["images"] . $button . '">');
}
if ($perm->have_perm_area_action($tmp_area, "str_moveupcat") || $perm->have_perm_area_action_item($tmp_area, "str_moveupcat", $value->id)) {
$rand = rand();
if ($value->custom['parentid'] == 0 && $value->custom['preid'] == 0) {
$tpl->set('d', 'UPBUTTON', "<img src=\"images/folder_moveup_inact.gif\">");
} else {
if ($value->custom['preid'] != 0) {
$tpl->set('d', 'UPBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_moveupcat&frame=$frame&idcat=" . $value->id . "&rand=$rand") . "#clickedhere\"><img src=\"images/folder_moveup.gif\"></a>");
} else {
$tpl->set('d', 'UPBUTTON', "<img src=\"images/folder_moveup_inact.gif\">");
}
}
} else {
$tpl->set('d', 'UPBUTTON', "<img src=\"images/folder_moveup_inact.gif\">");
}
if ($perm->have_perm_area_action($tmp_area, "str_movedowncat") || $perm->have_perm_area_action_item($tmp_area, "str_movedowncat", $value->id)) {
$rand = rand();
if ($value->custom['postid'] == 0) {
$tpl->set('d', 'DOWNBUTTON', "<img src=\"images/folder_movedown_inact.gif\">");
} else {
$tpl->set('d', 'DOWNBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_movedowncat&frame=$frame&idcat=" . $value->id . "&rand=$rand") . "#clickedhere\"><img src=\"images/folder_movedown.gif\"></a>");
}
} else {
$tpl->set('d', 'DOWNBUTTON', "<img src=\"images/folder_movedown_inact.gif\">");
}
if (($action === "str_movesubtree") && (!isset($parentid_new))) {
if ($perm->have_perm_area_action($tmp_area, "str_movesubtree") || $perm->have_perm_area_action_item($tmp_area, "str_movesubtree", $value->id)) {
if ($value->id == $idcat) {
$tpl->set('d', 'MOVEBUTTON', "<a name=#movesubtreehere><a href=\"" . $sess->url("main.php?area=$area&action=str_movesubtree&frame=$frame&idcat=$idcat&parentid_new=0") . "\"><img src=\"" . $cfg["path"]["images"] . "but_move_subtree_main.gif\"></a>");
} else {
$allowed = strMoveCatTargetallowed($value->id, $idcat);
if ($allowed == 1) {
$tpl->set('d', 'MOVEBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_movesubtree&frame=$frame&idcat=$idcat&parentid_new=" . $value->id) . "\"><img src=\"" . $cfg["path"]["images"] . "but_move_subtree_target.gif\"></a>");
} else {
$tpl->set('d', 'MOVEBUTTON', '&nbsp;');
}
}
} else {
$tpl->set('d', 'MOVEBUTTON', '&nbsp;');
}
} else {
if ($perm->have_perm_area_action($tmp_area, "str_movesubtree") || $perm->have_perm_area_action_item($tmp_area, "str_movesubtree", $value->id)) {
$tpl->set('d', 'MOVEBUTTON', "<a href=\"" . $sess->url("main.php?area=$area&action=str_movesubtree&frame=$frame&idcat=" . $value->id) . "#movesubtreehere\"><img src=\"" . $cfg["path"]["images"] . "but_move_subtree.gif\"></a>");
} else {
$tpl->set('d', 'MOVEBUTTON', '&nbsp;');
}
}
if ($perm->have_perm_area_action("str", "str_duplicate") || $perm->have_perm_area_action_item("str", "str_duplicate", $value->id)) {
$duplicate = '<a href="javascript://" onclick="confDupl(' . $value->id . ',' . $value->custom['parentid'] . ', \'' . clHtmlSpecialChars($value->name) . '\')">' . "<img src=\"" . $cfg["path"]["images"] . "folder_duplicate.gif\"></a>";
$tpl->set('d', 'DUPLICATEBUTTON', $duplicate);
} else {
$tpl->set('d', 'DUPLICATEBUTTON', '&nbsp;');
}
// DIRECTION
cInclude('includes', 'functions.lang.php');
$tpl->set('d', 'DIRECTION', 'dir="' . langGetTextDirection($lang, $oDirectionDb) . '"');
$columns = array();
foreach ($listColumns as $key => $content) {
$columnInfo = array();
$_cecIterator = $_cecRegistry->getIterator("Contenido.CategoryList.RenderColumn");
$columnContents = array();
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$columnContents[] = $chainEntry->execute($value->id, $key);
}
} else {
$columnContents[] = '';
}
$columns[] = '<td class="str-style-c">' . implode("", $columnContents) . '</td>';
}
$tpl->set('d', 'ADDITIONALCOLUMNS', implode("", $columns));
$tpl->next();
}//end if -> perm
}
$jsDataArray = "";
foreach ($aInlineEditData as $iIdCat => $aData) {
$aTmp = array();
foreach ($aData as $aKey => $aValue) {
array_push($aTmp, $aKey . "':'" . $aValue);
}
$jsDataArray .= "tmpObject = new Object();
tmpObject = {'" . implode("', '", $aTmp) . "'};
dataArray[$iIdCat] = tmpObject;
";
}
$tpl->set('s', 'JS_DATA', $jsDataArray);
$string = markSubMenuItem(0, true);
//Set DHTML generic Values
$sImagepath = $cfg["path"]["images"];
$tpl->set('s', 'SUM_COLUMNS', 14 + count($listColumns));
$tpl->set('s', 'HREF_ACTION', $sess->url("main.php?frame=$frame"));
$tpl->set('s', 'CON_IMAGES', $cfg["path"]["contenido_fullhtml"] . $cfg["path"]["images"]);
//Generate input fields for category new layer and category edit layer
$oSession = new cHTMLHiddenField($sess->name, $sess->id);
$oActionEdit = new cHTMLHiddenField('action', 'str_renamecat');
$oIdcat = new cHTMLHiddenField('idcat');
$tpl->set('s', 'INPUT_SESSION', $oSession->render());
$tpl->set('s', 'INPUT_ACTION_EDIT', $oActionEdit->render());
$tpl->set('s', 'INPUT_IDCAT', $oIdcat->render());
$oVisible = new cHTMLHiddenField('visible', 0, 'visible_input');
$oPublic = new cHTMLHiddenField('public', 1, 'public_input');
$oTemplate = new cHTMLHiddenField('idtplcfg', 0, 'idtplcfg_input');
$tpl->set('s', 'INPUT_VISIBLE', $oVisible->render());
$tpl->set('s', 'INPUT_PUBLIC', $oPublic->render());
$tpl->set('s', 'INPUT_TEMPLATE', $oTemplate->render());
$oCatName = new cHTMLTextbox('categoryname', '', '', '', 'cat_categoryname');
$oCatName->setStyle('width:150px; vertical-align:middle;');
$tpl->set('s', 'INPUT_CATNAME_NEW', $oCatName->render());
$oAlias = new cHTMLTextbox('categoryalias');
$oAlias->setStyle('width:150px; vertical-align:middle;');
$tpl->set('s', 'INPUT_ALIAS_NEW', $oAlias->render());
$oNewCatName = new cHTMLTextbox('newcategoryname');
$oNewCatName->setStyle('width:150px; vertical-align:middle;');
$tpl->set('s', 'INPUT_CATNAME_EDIT', $oNewCatName->render());
$oNewAlias = new cHTMLTextbox('newcategoryalias');
$oNewAlias->setStyle('width:150px; vertical-align:middle;');
$tpl->set('s', 'INPUT_ALIAS_EDIT', $oNewAlias->render());
$sCategorySelect = buildCategorySelectRights('idcat', '');
# Show Layerbutton for adding new Cateogries and set options according to Permisssions
if (($perm->have_perm_area_action($tmp_area, "str_newtree") ||
$perm->have_perm_area_action($tmp_area, "str_newcat") ||
$bAreaAddNewCategory) && (int) $client > 0 && (int) $lang > 0) {
$tpl->set('s', 'NEWCAT', $string . "<a class=\"black\" id=\"new_tree_button\" href=\"javascript:showNewForm();\"><img src=\"images/folder_new.gif\">&nbsp;" . i18n('Create new category') . "</a>");
if ($perm->have_perm_area_action($tmp_area, "str_newtree")) {
if ($perm->have_perm_area_action($tmp_area, "str_newcat") || $bAreaAddNewCategory) {
$tpl->set('s', 'PERMISSION_NEWTREE', '');
$oActionNew = new cHTMLHiddenField('action', 'str_newcat', 'cat_new_action');
} else {
$tpl->set('s', 'PERMISSION_NEWTREE', 'disabled checked');
$oActionNew = new cHTMLHiddenField('action', 'str_newcat', 'str_newtree');
}
$tpl->set('s', 'INPUT_ACTION_NEW', $oActionNew->render());
$tpl->set('s', 'PERMISSION_NEWTREE_DISPLAY', 'block');
} else {
$oActionNew = new cHTMLHiddenField('action', 'str_newcat', 'cat_new_action');
$tpl->set('s', 'PERMISSION_NEWTREE', 'disabled');
$tpl->set('s', 'PERMISSION_NEWTREE_DISPLAY', 'none');
$tpl->set('s', 'NEW_ACTION', 'str_newcat');
$tpl->set('s', 'INPUT_ACTION_NEW', $oActionNew->render());
}
if ($perm->have_perm_area_action($tmp_area, "str_newcat") || $bAreaAddNewCategory) {
$tpl->set('s', 'CATEGORY_SELECT', $sCategorySelect);
$tpl->set('s', 'PERMISSION_NEWCAT_DISPLAY', 'block');
} else {
$tpl->set('s', 'CATEGORY_SELECT', '');
$tpl->set('s', 'PERMISSION_NEWCAT_DISPLAY', 'none');
}
if ($perm->have_perm_area_action("str_tplcfg", "str_tplcfg")) {
$tpl->set('s', 'TEMPLATE_BUTTON_NEW', '<a href="javascript:showTemplateSelect();"><img src="' . $sImagepath . 'template_properties.gif" id="cat_category_select_button" title="' . i18n('Configure category') . '" alt="' . i18n('Configure category') . '"></a>');
$tpl->set('s', 'SELECT_TEMPLATE', getTemplateSelect());
} else {
$tpl->set('s', 'TEMPLATE_BUTTON_NEW', '<img src="' . $sImagepath . 'template_properties_off.gif" id="cat_category_select_button" title="' . i18n('Configure category') . '" alt="' . i18n('Configure category') . '">');
$tpl->set('s', 'SELECT_TEMPLATE', '');
}
if ($perm->have_perm_area_action($tmp_area, "str_makevisible")) {
$tpl->set('s', 'MAKEVISIBLE_BUTTON_NEW', '<a href="javascript:changeVisible();"><img src="' . $sImagepath . 'offline.gif" id="visible_image" title="' . i18n('Make online') . '" alt="' . i18n('Make online') . '"></a>');
} else {
$tpl->set('s', 'MAKEVISIBLE_BUTTON_NEW', '<img src="' . $sImagepath . 'offline_off.gif" id="visible_image" title="' . i18n('Make online') . '" alt="' . i18n('Make online') . '">');
}
if ($perm->have_perm_area_action($tmp_area, "str_makepublic")) {
$tpl->set('s', 'MAKEPUBLIC_BUTTON_NEW', '<a href="javascript:changePublic();"><img src="' . $sImagepath . 'folder_delock.gif" id="public_image" title="' . i18n('Protect category') . '" alt="' . i18n('Protect category') . '"></a>');
} else {
$tpl->set('s', 'MAKEPUBLIC_BUTTON_NEW', '<img src="' . $sImagepath . 'folder_delocked.gif" id="public_image" title="' . i18n('Protect category') . '" alt="' . i18n('Protect category') . '">');
}
} else {
$tpl->set('s', 'NEWCAT', $string);
$tpl->set('s', 'PERMISSION_NEWTREE', 'disabled');
$tpl->set('s', 'PERMISSION_NEWTREE_DISPLAY', 'none');
$tpl->set('s', 'CATEGORY_SELECT', '');
$tpl->set('s', 'PERMISSION_NEWCAT_DISPLAY', 'none');
$tpl->set('s', 'TEMPLATE_BUTTON_NEW', '');
$tpl->set('s', 'MAKEVISIBLE_BUTTON_NEW', '');
$tpl->set('s', 'MAKEPUBLIC_BUTTON_NEW', '');
$tpl->set('s', 'NEW_ACTION', 'str_newcat');
$tpl->set('s', 'SELECT_TEMPLATE', '');
}
# Generate template
$clang = new cApiLanguage($lang);
if ($movesubtreeidcat != 0) {
if (strlen($sMoveSubtreeCatName) > 30) {
$sLimiter = "...";
} else {
$sLimiter = "";
}
$sButtonDesc = sprintf(i18n('Cancel moving %s'), '"' . substr($sMoveSubtreeCatName, 0, 30) . $sLimiter . '"');
$tpl->set('s', 'CANCEL_MOVE_TREE', '<a class="black" id="cancel_move_tree_button" href="javascript:cancelMoveTree(\'' . $movesubtreeidcat . '\');"><img src="images/but_cancel.gif" alt="' . $sButtonDesc . '" />&nbsp;' . $sButtonDesc . '</a>');
} else {
$tpl->set('s', 'CANCEL_MOVE_TREE', '');
}
$tpl->setEncoding($clang->get("encoding"));
$tpl->generate($cfg['path']['templates'] . $cfg['templates']['str_overview']);
}
?>