ConLite/conlite/includes/include.con_str_overview.php

773 Zeilen
27 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Displays the structure in the left frame
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend includes
* @version 1.1.0
* @author Jan Lengowski
* @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 2002-03-02
* modified 2007-04-24, Holger Librenz
* modified 2008-02-13, Andreas Lindner
* modified 2008-06-27, Frederic Schneider, add security fix
* modified 2008-09-08, Ingo van Peeren, optimized HTML, added AJAX an javascript to prevent
* reloading of navigation tree, small sql performance
* improvement
* modified 2009-12-18, Murat Purc, fixed usage of wrong db instance, see [#CON-282]
* modified 2010-01-30, Ingo van Peeren, optimized amount of db queries, removed unused variables
*
* $Id$:
* }}
*
*/
if (!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
cInclude("includes", "functions.str.php");
cInclude("includes", "functions.tpl.php");
cInclude('includes', 'functions.lang.php');
function showTree($iIdcat, &$aWholelist) {
global $check_global_rights, $sess, $cfg, $perm, $db, $db2, $db3, $area, $client, $lang, $navigationTree;
$tpl = new Template;
$tpl->reset();
$iIdcat = (int) $iIdcat;
foreach ($navigationTree[$iIdcat] as $sKey => $aValue) {
$cfgdata = '';
$aCssClasses = array();
#Check rights per cat
if (!$check_global_rights) {
$check_rights = false;
} else {
$check_rights = true;
}
if (!$check_rights) {
$check_rights = ($aValue['forcedisplay'] == 1) ? true : false;
}
$idcat = (int) $aValue['idcat'];
$level = $aValue['level'] - 1;
$name = $aValue['name'];
if ($check_rights) {
$idtpl = ( $aValue['idtpl'] != '' ) ? $aValue['idtpl'] : 0;
if (($aValue["idlang"] != $lang) || ($aValue['articles'] == true)) {
#$aCssClasses[] = 'con_sync';
}
$check_rights = $perm->have_perm_area_action_item("con", "con_changetemplate", $aValue['idcat']);
if (!$check_rights) {
$check_rights = $perm->have_perm_area_action("con", "con_changetemplate");
}
if ($check_rights) {
$changetemplate = 1;
} else {
$changetemplate = 0;
}
$check_rights = $perm->have_perm_area_action_item("con", "con_makecatonline", $aValue['idcat']);
if (!$check_rights) {
$check_rights = $perm->have_perm_area_action("con", "con_makecatonline");
}
if ($check_rights) {
$onoffline = 1;
} else {
$onoffline = 0;
}
$check_rights = $perm->have_perm_area_action_item("con", "con_makepublic", $aValue['idcat']);
if (!$check_rights) {
$check_rights = $perm->have_perm_area_action("con", "con_makepublic");
}
if ($check_rights) {
$makepublic = 1;
} else {
$makepublic = 0;
}
$check_rights = $perm->have_perm_area_action_item("con", "con_tplcfg_edit", $aValue['idcat']);
if (!$check_rights) {
$check_rights = $perm->have_perm_area_action("con", "con_tplcfg_edit");
}
if ($check_rights) {
$templateconfig = 1;
} else {
$templateconfig = 0;
}
if ($aValue["idlang"] == $lang) {
# Build cfgdata string
$cfgdata = $idcat . "-" . $idtpl . "-" . $aValue['online'] . "-" . $aValue['public'] . "-" .
$changetemplate . "-" .
$onoffline . "-" .
$makepublic . "-" . $templateconfig;
} else {
$cfgdata = "";
}
# Select the appropriate folder-
# image depending on the structure
# properties
if ($aValue['online'] == 1) {
# Category is online
if ($aValue['public'] == 0) {
# Category is locked
if ($aValue['no_start'] || $aValue['no_online']) {
# Error found
$aAnchorClass = 'on_error_locked';
} else {
# No error found
$aAnchorClass = 'on_locked';
}
} else {
# Category is public
if ($aValue['no_start'] || $aValue['no_online']) {
# Error found
$aAnchorClass = 'on_error';
} else {
# No error found
$aAnchorClass = 'on';
}
}
} else {
# Category is offline
if ($aValue['public'] == 0) {
# Category is locked
if ($aValue['no_start'] || $aValue['no_online']) {
# Error found
$aAnchorClass = 'off_error_locked';
} else {
# No error found
$aAnchorClass = 'off_locked';
}
} else {
# Category is public
if ($aValue['no_start'] || $aValue['no_online']) {
# Error found
$aAnchorClass = 'off_error';
} else {
# No error found
$aAnchorClass = 'off';
}
}
}
if ($aValue['islast'] == 1) {
$aCssClasses[] = 'last';
}
if ($aValue['collapsed'] == 1 && isset($navigationTree[$idcat]) && is_array($navigationTree[$idcat])) {
$aCssClasses[] = 'collapsed';
}
if ($aValue['active']) {
$aCssClasses[] = 'active';
}
$bIsSyncable = false;
if ($aValue["idlang"] != $lang) {
# Fetch parent id and check if it is syncronized
$sql = "SELECT parentid FROM %s WHERE idcat = '%s'";
$db->query(sprintf($sql, $cfg["tab"]["cat"], $idcat));
if ($db->next_record()) {
if ($db->f("parentid") != 0) {
$parentid = $db->f("parentid");
$sql = "SELECT idcatlang FROM %s WHERE idcat = '%s' AND idlang = '%s'";
$db->query(sprintf($sql, $cfg["tab"]["cat_lang"], Contenido_Security::toInteger($parentid), Contenido_Security::toInteger($lang)));
if ($db->next_record()) {
$aCssClasses[] = 'con_sync';
$bIsSyncable = true;
}
} else {
$aCssClasses[] = 'con_sync';
$bIsSyncable = true;
}
}
}
//Last param defines if cat is syncable or not, all other rights are disabled at this point
if ($bIsSyncable) {
if ($cfgdata != '') {
$cfgdata .= '-1';
} else {
$cfgdata = $idcat . "-" . $idtpl . "-" . $aValue['online'] . "-" . $aValue['public'] .
"-0-0-0-0-1";
}
} else {
if ($cfgdata != '') {
$cfgdata .= '-0';
} else {
$cfgdata = $idcat . "-" . $idtpl . "-" . $aValue['online'] . "-" . $aValue['public'] .
"-0-0-0-0-0";
}
}
if(isset($aValue['lang_fallback_name']) && !empty($aValue['lang_fallback_name'])) {
$titel = $aValue['lang_fallback_name']."\nidcat".'&#58; '. $idcat;
} else {
$title = "idcat".'&#58; '. $idcat;
}
$mstr = '<a class="' . $aAnchorClass . '" href="#" title="'.$title.'">' . $name . '</a>';
# Build Tree
$tpl->set('d', 'CFGDATA', $cfgdata);
if (isset($navigationTree[$idcat]) && is_array($navigationTree[$idcat])) {
$tpl->set('d', 'SUBCATS', showTree($idcat, $aWholelist));
$tpl->set('d', 'COLLAPSE', '<a href="#"> </a>');
$aWholelist[] = $idcat;
} else {
$tpl->set('d', 'SUBCATS', '');
$tpl->set('d', 'COLLAPSE', '<span> </span>');
}
$tpl->set('d', 'CAT', $mstr);
$tpl->set('d', 'CSS_CLASS', ' class="' . implode(' ', $aCssClasses) . '"');
$tpl->next();
} // end if have_perm
else {
if (is_array($navigationTree[(int) $aValue['idcat']])) {
$sTpl = showTree((int) $aValue['idcat'], $aWholelist);
if (!preg_match('/^<ul>\s*<\/ul>$/', $sTpl)) {
$tpl->set('d', 'CFGDATA', '0-0-0-0-0-0-0-0-0');
$tpl->set('d', 'SUBCATS', $sTpl);
$tpl->set('d', 'COLLAPSE', '<a href="#"></a>');
$tpl->set('d', 'CAT', '<a class="off_disabled" href="#">' . $name . '</a>');
$tpl->set('d', 'CSS_CLASS', ' class="active"');
$tpl->next();
}
$aWholelist[] = $aValue['idcat'];
}
}
}
return $tpl->generate($cfg['path']['templates'] . 'template.con_str_overview.list.html', 1);
}
$db2 = new DB_ConLite;
$db3 = new DB_ConLite;
//Refresh or reset right frames, when a synclang is changed or a category is synchronized
$tpl->reset();
if ($action == "con_synccat" || isset($_GET['refresh_syncoptions']) && $_GET['refresh_syncoptions'] == 'true') {
$tpl->set('s', 'RELOAD_RIGHT', 'reloadRightFrame();');
} else {
$tpl->set('s', 'RELOAD_RIGHT', '');
}
if ($action == "con_synccat") {
strSyncCategory($syncidcat, $syncfromlang, $lang, $multiple);
$remakeStrTable = true;
}
if (!is_object($db2))
$db2 = new DB_ConLite;
if (!isset($remakeStrTable)) {
$remakeStrTable = false;
}
if (!isset($remakeCatTable)) {
$remakeCatTable = false;
}
$sess->register("remakeCatTable");
$sess->register("CatTableClient");
$sess->register("CatTableLang");
$sess->register("remakeStrTable");
if (isset($syncoptions)) {
$syncfrom = $syncoptions;
$remakeCatTable = true;
}
if (!isset($syncfrom)) {
$syncfrom = 0;
}
$sess->register("syncfrom");
$syncoptions = $syncfrom;
if (!isset($CatTableClient)) {
$CatTableClient = 0;
}
if ($CatTableClient != $client) {
$remakeCatTable = true;
}
if (!isset($CatTableLang)) {
$CatTableLang = 0;
}
if ($CatTableLang != $lang) {
$remakeCatTable = true;
}
$CatTableClient = $client;
$CatTableLang = $lang;
if ($syncoptions == -1) {
$sql = "SELECT
a.preid AS preid,
a.postid AS postid,
a.parentid AS parentid,
c.idcat AS idcat,
c.level AS level,
b.name AS name,
b.public AS public,
b.visible AS online,
d.idtpl AS idtpl,
b.idlang AS idlang
FROM
(" . $cfg["tab"]["cat"] . " AS a,
" . $cfg["tab"]["cat_lang"] . " AS b,
" . $cfg["tab"]["cat_tree"] . " AS c)
LEFT JOIN
" . $cfg["tab"]["tpl_conf"] . " AS d
ON d.idtplcfg = b.idtplcfg
WHERE
a.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idlang = '" . Contenido_Security::toInteger($lang) . "' AND
c.idcat = b.idcat AND
b.idcat = a.idcat
ORDER BY
c.idtree ASC";
} else {
$sql = "SELECT
a.preid AS preid,
a.postid AS postid,
a.parentid AS parentid,
c.idcat AS idcat,
c.level AS level,
b.name AS name,
b.public AS public,
b.visible AS online,
d.idtpl AS idtpl,
b.idlang AS idlang
FROM
(" . $cfg["tab"]["cat"] . " AS a,
" . $cfg["tab"]["cat_lang"] . " AS b,
" . $cfg["tab"]["cat_tree"] . " AS c)
LEFT JOIN
" . $cfg["tab"]["tpl_conf"] . " AS d
ON d.idtplcfg = b.idtplcfg
WHERE
a.idclient = '" . Contenido_Security::toInteger($client) . "' AND
(b.idlang = '" . Contenido_Security::toInteger($lang) . "' OR
b.idlang = '" . Contenido_Security::toInteger($syncoptions) . "') AND
c.idcat = b.idcat AND
b.idcat = a.idcat
ORDER BY
c.idtree ASC";
}
$db->query($sql);
if (isset($syncoptions)) {
$remakeCatTable = true;
}
if (isset($online)) {
$remakeCatTable = true;
}
if (isset($public)) {
$remakeCatTable = true;
}
if (isset($idtpl)) {
$remakeCatTable = true;
}
if (isset($force)) {
$remakeCatTable = true;
}
$arrIn = array();
while ($db->next_record()) {
$arrIn[] = $db->f('idcat');
}
$arrArtCache = array();
if (count($arrIn) > 0) {
$sIn = implode(',', $arrIn);
$sql2 = "SELECT b.idcat, a.idart, idlang FROM " . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["cat_art"] . " AS b
WHERE b.idcat IN (" . Contenido_Security::escapeDB($sIn, $db) . ") AND (a.idlang = '" . Contenido_Security::toInteger($syncoptions) . "' OR a.idlang = '" . Contenido_Security::toInteger($lang) . "')
AND b.idart = a.idart";
$db->query($sql2);
while ($db->next_record()) {
$arrArtCache[$db->f('idcat')][$db->f('idart')][$db->f('idlang')] = 'x';
}
}
$db->query($sql);
while ($db->next_record()) {
$entry = array();
$entry['articles'] = false;
if ($db->f("idlang") == $lang) {
$arts = Array();
if (isset($arrArtCache[$db->f("idcat")])) {
foreach ($arrArtCache[$db->f("idcat")] as $key => $value) {
foreach ($value as $key2 => $value2) {
$arts[$key][$key2] = 1;
}
}
}
foreach ($arts as $idart => $entry) {
if (is_array($entry)) {
if (!array_key_exists($lang, $entry)) {
//$entry['articles'] = true;
$aIsArticles[$db->f("idcat")] = true;
break;
}
}
}
}
}
if ($syncoptions == -1) {
if ($cfg["is_start_compatible"] == true) {
$sql2 = "SELECT
c.idcat AS idcat,
SUM(c.is_start) AS is_start,
SUM(a.online) AS online
FROM
" . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["art"] . " AS b,
" . $cfg["tab"]["cat_art"] . " AS c
WHERE
a.idlang = " . Contenido_Security::toInteger($lang) . " AND
a.idart = b.idart AND
b.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idart = c.idart
GROUP BY c.idcat
";
} else {
$sql2 = "SELECT
c.idcat AS idcat,
SUM(a.online) AS online,
d.startidartlang
FROM
" . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["art"] . " AS b,
" . $cfg["tab"]["cat_art"] . " AS c,
" . $cfg["tab"]["cat_lang"] . " AS d
WHERE
a.idlang = " . Contenido_Security::toInteger($lang) . " AND
a.idart = b.idart AND
b.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idart = c.idart AND
c.idcat = d.idcat
GROUP BY c.idcat,
d.startidartlang
";
}
} else {
if ($cfg["is_start_compatible"] == true) {
$sql2 = "SELECT
c.idcat AS idcat,
SUM(c.is_start) AS is_start,
SUM(a.online) AS online
FROM
" . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["art"] . " AS b,
" . $cfg["tab"]["cat_art"] . " AS c
WHERE
a.idart = b.idart AND
b.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idart = c.idart
GROUP BY c.idcat";
} else {
$sql2 = "SELECT
c.idcat AS idcat,
SUM(a.online) AS online,
d.startidartlang
FROM
" . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["art"] . " AS b,
" . $cfg["tab"]["cat_art"] . " AS c,
" . $cfg["tab"]["cat_lang"] . " AS d
WHERE
a.idart = b.idart AND
b.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idart = c.idart AND
c.idcat = d.idcat
GROUP BY c.idcat,
d.startidartlang";
}
}
$db->query($sql2);
$aStartOnlineArticles = array();
while ($db->next_record()) {
if ($cfg["is_start_compatible"] == true) {
if ($db->f('is_start') > 0) {
$aStartOnlineArticles[$db->f('idcat')]['is_start'] = true;
} else {
$aStartOnlineArticles[$db->f('idcat')]['is_start'] = false;
}
} else {
if ($db->f('startidartlang') > 0) {
$aStartOnlineArticles[$db->f('idcat')]['is_start'] = true;
} else {
$aStartOnlineArticles[$db->f('idcat')]['is_start'] = false;
}
}
if ($db->f('online') > 0) {
$aStartOnlineArticles[$db->f('idcat')]['is_online'] = true;
} else {
$aStartOnlineArticles[$db->f('idcat')]['is_online'] = false;
}
}
$_cecIterator = $_cecRegistry->getIterator("Contenido.ArticleCategoryList.ListItems");
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$listItem = $chainEntry->execute();
if (is_array($listItem)) {
if (!array_key_exists("expandcollapseimage", $listItem) || $listItem["expandcollapseimage"] == "") {
$collapseImage = '<img src="images/spacer.gif" width="11" height="11">';
} else {
$collapseImage = $listItem["expandcollapseimage"];
}
if (!array_key_exists("image", $listItem) || $listItem["image"] == "") {
$image = '<img src="images/spacer.gif">';
} else {
$image = $listItem["image"];
}
if (!array_key_exists("id", $listItem) || $listItem["id"] == "") {
$id = rand();
} else {
$id = $listItem["id"];
}
if (array_key_exists("markable", $listItem)) {
if ($listItem["markable"] == true) {
$mmark = $markscript;
} else {
$mmark = "";
}
} else {
$mmark = "";
}
}
}
}
$languages = getLanguageNamesByClient($client);
/* * *************************** */
/* Expand all / Collapse all */
/* * *************************** */
$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 href="' . $collapselink . '" alt="' . i18n("Close all categories") . '" title="' . i18n("Close all categories") . '"><img src="images/but_minus.gif" border="0"></a>';
$expandimg = '<a href="' . $expandlink . '" alt="' . i18n("Open all categories") . '" title="' . i18n("Open all categories") . '"><img src="images/but_plus.gif" border="0"></a>';
$allLinks = $expandimg . '<img src="images/spacer.gif" width="3">' . $collapseimg;
$text_direction = langGetTextDirection($lang);
#Check global rights
$check_global_rights = $perm->have_perm_area_action("con", "con_makestart");
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con_editart", "con_edit");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con_editart", "con_saveart");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con_editcontent", "con_editart");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con_editart", "con_newart");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con", "con_deleteart");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con", "con_makeonline");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con", "con_tplcfg_edit");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con", "con_makecatonline");
}
if (!$check_global_rights) {
$check_global_rights = $perm->have_perm_area_action("con", "con_changetemplate");
}
if ($lang > $syncoptions) {
$sOrder = 'DESC';
} else {
$sOrder = 'ASC';
}
// alternate lang fallback, shows translation for cat with defined fallback lang
// wish by rethus for con49, see con forum http://forum.contenido.org/viewtopic.php?f=92&t=35247
$fallbackLang = getEffectiveSetting('system', 'cat_fallback_language', 0);
$bUseLangFallback = FALSE;
if($fallbackLang > 0) {
$bUseLangFallback = TRUE;
$sql_fallback_lang_field = "b1.name as lang_fallback_name, ";
$sql_fallback_lang_join = "LEFT JOIN {$cfg['tab']['cat_lang']} AS b1 ON( b1.idcat=a.idcat AND b1.idlang=$fallbackLang ) ";
} else {
$sql_fallback_lang_field = "";
$sql_fallback_lang_join = "";
}
$client = (int) $client;
$sql = "SELECT DISTINCT " .
"a.idcat, " .
"a.parentid, " .
"a.preid, " .
"a.postid, " .
"a.parentid, " .
"b.name, " .
"b.idlang, " .
"b.visible, " .
"b.public, " .
"c.level, " .
"c.idtree, " .
"d.idtpl " .
$sql_fallback_lang_field.
"FROM {$cfg['tab']['cat']} AS a " .
"LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat " .
$sql_fallback_lang_join.
"LEFT JOIN {$cfg['tab']['cat_tree']} AS c ON (a.idcat = c.idcat AND b.idcat = c.idcat) " .
"LEFT JOIN {$cfg["tab"]["tpl_conf"]} AS d ON b.idtplcfg = d.idtplcfg " .
"WHERE " .
" a.idclient = {$client} " .
"ORDER BY b.idlang {$sOrder}, c.idtree ASC ";
$db->query($sql);
if ($client == 0) {
$client = '';
}
$navigationTree = array();
$aWholelist = array();
$conexpandedList = array();
$sExpandList = $currentuser->getUserProperty("system", "con_cat_expandstate");
if ($sExpandList != '') {
$conexpandedList = unserialize($currentuser->getUserProperty("system", "con_cat_expandstate"));
}
while ($db->next_record()) {
if (!isset($navigationTree[$db->f('parentid')][$db->f('idcat')]) && ($db->f('idlang') == $lang || $db->f('idlang') == $syncoptions)) {
if (in_array($db->f('idcat'), $conexpandedList)) {
$collapsed = false;
} else {
$collapsed = true;
}
if ($perm->have_perm_item("con", $db->f('idcat'))) {
$forcedisplay = 1;
} else {
$forcedisplay = 0;
}
if ($idcat == $db->f('idcat')) {
$active = true;
} else {
$active = false;
}
$navigationTree[$db->f('parentid')][$db->f('idcat')] = array(
'idcat' => $db->f('idcat'),
'preid' => $db->f('preid'),
'postid' => $db->f('postid'),
'visible' => $db->f('visible'),
'online' => $db->f('visible'),
'public' => $db->f('public'),
'name' => $db->f('name'),
'lang_fallback_name' => (($bUseLangFallback)?$db->f('lang_fallback_name'):''),
'idlang' => $db->f('idlang'),
'idtpl' => $db->f('idtpl'),
'collapsed' => $collapsed,
'forcedisplay' => $forcedisplay,
'active' => $active,
'islast' => false,
'articles' => ((isset($aIsArticles)) ? $aIsArticles[$db->f("idcat")] : ''),
'level' => $db->f('level')
);
if (isset($aStartOnlineArticles[$db->f('idcat')]['is_start']) && $aStartOnlineArticles[$db->f('idcat')]['is_start'] == true) {
$navigationTree[$db->f('parentid')][$db->f('idcat')]['no_start'] = false;
} else {
$navigationTree[$db->f('parentid')][$db->f('idcat')]['no_start'] = true;
}
if (isset($aStartOnlineArticles[$db->f('idcat')]['is_online']) && $aStartOnlineArticles[$db->f('idcat')]['is_online'] == true) {
$navigationTree[$db->f('parentid')][$db->f('idcat')]['no_online'] = false;
} else {
$navigationTree[$db->f('parentid')][$db->f('idcat')]['no_online'] = true;
}
}
}
if (isset($bDebug) && $bDebug === true) {
echo '<pre>';
var_dump($navigationTree);
echo '</pre>';
}
if (is_array($navigationTree[0]) && count($navigationTree[0])) {
$sCategories = showTree(0, $aWholelist);
}
$tpl->set('s', 'SID', $sess->id);
$tpl->set('s', 'CATS', $sCategories);
$tpl->set('s', 'AREA', $area);
$tpl->set('s', 'SESSION', $contenido);
$tpl->set('s', 'DIRECTION', 'dir="' . langGetTextDirection($lang) . '"');
$tpl->set('s', 'SYNCOPTIONS', $syncoptions);
$tpl->set('s', 'AJAXURL', $cfg['path']['contenido_fullhtml'] . 'ajaxmain.php');
$tpl->set('s', 'WHOLELIST', implode(', ', $aWholelist));
$tpl->set('s', 'EXPANDEDLIST', implode(', ', $conexpandedList));
$tpl->generate($cfg['path']['templates'] . $cfg['templates']['con_str_overview']);
?>