ConLite/conlite/includes/include.con_art_overview.php

915 Zeilen
39 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Displays all articles of a category
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend includes
* @version 1.0.1
* @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 2003-01-26
* modified 2005-06-23, Andreas Lindner
* modified 2008-06-27, Frederic Schneider, add security fix
*
* $Id$:
* }}
*
*/
if (!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
cInclude("includes", "functions.tpl.php");
cInclude("includes", "functions.str.php");
cInclude("includes", "functions.pathresolver.php");
$firstMark = false;
$db2 = new DB_ConLite;
$idcat = ( isset($_GET['idcat']) && is_numeric($_GET['idcat'])) ? $_GET['idcat'] : -1;
$next = ( isset($_GET['next']) && is_numeric($_GET['next']) && $_GET['next'] > 0) ? $_GET['next'] : 0;
$dateformat = getEffectiveSetting("backend", "timeformat_date", "Y-m-d");
$debug = false;
$templateDescription = '';
if (!isset($syncfrom)) {
$syncfrom = -1;
}
$syncoptions = $syncfrom;
if ($action == "con_duplicate") {
$newidartlang = conCopyArticle($duplicate, $idcat);
}
if ($action == "con_syncarticle") {
/* Verify that the category is available in this language */
$sql = "SELECT idcatlang FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat='" . Contenido_Security::toInteger($idcat) . "' AND idlang='" . Contenido_Security::toInteger($lang) . "'";
$db->query($sql);
if ($db->next_record()) {
conSyncArticle($syncarticle, $sourcelanguage, $lang);
} else {
strSyncCategory($idcat, $sourcelanguage, $lang);
conSyncArticle($syncarticle, $sourcelanguage, $lang);
}
}
/* Which columns to display? */
$listColumns = array("start" => i18n("Article"),
"title" => i18n("Title"),
"changeddate" => i18n("Changed"),
"publisheddate" => i18n("Published"),
"sortorder" => i18n("Sort order"),
"template" => i18n("Template"),
"actions" => i18n("Actions"));
/* Which actions to display? */
$actionList = array("online",
"duplicate",
"locked",
"todo",
"delete",
"usetime");
/* Call chains to process the columns and the action list */
$_cecIterator = $_cecRegistry->getIterator("Contenido.ArticleList.Columns");
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$newColumnList = $chainEntry->execute($listColumns);
if (is_array($newColumnList)) {
$listColumns = $newColumnList;
}
}
}
$_cecIterator = $_cecRegistry->getIterator("Contenido.ArticleList.Actions");
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$newActionList = $chainEntry->execute($actionList);
if (is_array($newActionList)) {
$actionList = $newActionList;
}
}
}
$cat_idtpl = 0;
if (is_numeric($idcat) && ($idcat >= 0)) {
// Saving sort and elements per page user settings (if specified)
// Should be changed to User->setProperty... someday
if (isset($sort)) {
$currentuser->setUserProperty("system", "sortorder-idlang-$lang-idcat-$idcat", $sort);
}
if (isset($elemperpage) && is_numeric($elemperpage)) {
$currentuser->setUserProperty("system", "elemperpage-idlang-$lang-idcat-$idcat", $elemperpage);
} else {
$elemperpage = $currentuser->getUserProperty("system", "elemperpage-idlang-$lang-idcat-$idcat");
if (!is_numeric($elemperpage)) {
$elemperpage = 25;
}
}
$col = new InUseCollection();
if ((( $idcat == 0 || $perm->have_perm_area_action("con")) && $perm->have_perm_item("str", $idcat)) || $perm->have_perm_area_action("con", "con_makestart") || $perm->have_perm_area_action("con", "con_makeonline") || $perm->have_perm_area_action("con", "con_deleteart") || $perm->have_perm_area_action("con", "con_tplcfg_edit") || $perm->have_perm_area_action("con", "con_lock") || $perm->have_perm_area_action("con", "con_makecatonline") || $perm->have_perm_area_action("con", "con_changetemplate") || $perm->have_perm_area_action("con_editcontent", "con_editart") || $perm->have_perm_area_action("con_editart", "con_edit") || $perm->have_perm_area_action("con_editart", "con_newart") || $perm->have_perm_area_action("con_editart", "con_saveart") || $perm->have_perm_area_action("con_tplcfg", "con_tplcfg_edit") || $perm->have_perm_area_action_item("con", "con_makestart", $idcat) || $perm->have_perm_area_action_item("con", "con_makeonline", $idcat) || $perm->have_perm_area_action_item("con", "con_deleteart", $idcat) || $perm->have_perm_area_action_item("con", "con_tplcfg_edit", $idcat) || $perm->have_perm_area_action_item("con", "con_lock", $idcat) || $perm->have_perm_area_action_item("con", "con_makecatonline", $idcat) || $perm->have_perm_area_action_item("con", "con_changetemplate", $idcat) || $perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat) || $perm->have_perm_area_action_item("con_editart", "con_edit", $idcat) || $perm->have_perm_area_action_item("con_editart", "con_newart", $idcat) || $perm->have_perm_area_action_item("con_tplcfg", "con_tplcfg_edit", $idcat) || $perm->have_perm_area_action_item("con_editart", "con_saveart", $idcat)) {
$sort = $currentuser->getUserProperty("system", "sortorder-idlang-$lang-idcat-$idcat");
$sql = "SELECT
a.idart AS idart,
a.idlang AS idlang,
a.idartlang AS idartlang,
a.title AS title,
c.idcat AS idcat,
{ISSTART}
c.idcatart AS idcatart,
a.idtplcfg AS idtplcfg,
a.published AS published,
a.online AS online,
a.created AS created,
a.lastmodified AS lastmodified,
a.timemgmt AS timemgmt,
a.datestart AS datestart,
a.dateend AS dateend,
a.artsort AS artsort,
a.redirect AS redirect,
a.locked AS locked
FROM
" . $cfg["tab"]["art_lang"] . " AS a,
" . $cfg["tab"]["art"] . " AS b,
" . $cfg["tab"]["cat_art"] . " AS c
WHERE
(a.idlang = '" . $lang . "' {SYNCOPTIONS}) AND
a.idart = b.idart AND
b.idclient = '" . $client . "' AND
b.idart = c.idart AND
c.idcat = '" . $idcat . "'";
// Simple SQL statement to get the number of articles
$sql_count = "SELECT
COUNT(*) AS article_count
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) . "' {SYNCOPTIONS}) AND
a.idart = b.idart AND
b.idclient = '" . Contenido_Security::toInteger($client) . "' AND
b.idart = c.idart AND
c.idcat = '" . Contenido_Security::toInteger($idcat) . "'";
if ($cfg["is_start_compatible"] == true) {
$sql = str_replace("{ISSTART}", "c.is_start AS is_start,", $sql);
} else {
$sql = str_replace("{ISSTART}", "", $sql);
}
if ($syncoptions == -1) {
$sql = str_replace("{SYNCOPTIONS}", "", $sql);
$sql_count = str_replace("{SYNCOPTIONS}", "", $sql_count);
} else {
$sql = str_replace("{SYNCOPTIONS}", "OR a.idlang = '" . $syncoptions . "'", $sql);
$sql_count = str_replace("{SYNCOPTIONS}", "OR a.idlang = '" . $syncoptions . "'", $sql_count);
}
# Article sort
switch ($sort) {
case 2:
$sql .= " ORDER BY a.lastmodified DESC";
break;
case 3:
$sql .= " ORDER BY a.published DESC, a.lastmodified DESC";
break;
case 4:
$sql .= " ORDER BY a.artsort ASC";
break;
default:
// Default sort order
$sql .= " ORDER BY a.title ASC";
$sort = 1;
}
# Getting article count, if necessary
if ($elemperpage > 0) {
$db->query($sql_count);
$db->next_record();
$iArticleCount = $db->f("article_count");
# If not beyond scope, limit
if ($iArticleCount == 0) {
$next = 0;
} else if ($next >= $iArticleCount) {
$next = (ceil($iArticleCount / $elemperpage) - 1) * $elemperpage;
}
$sql .= " LIMIT $next, $elemperpage";
} else {
$iArticleCount = 0; // Will be used to "hide" the browsing area
}
# Debug info
if ($debug) {
echo "<pre>";
echo $sql;
echo "</pre>";
}
# Getting data
$db->query($sql);
# Reset Template
$tpl->reset();
# No article
$no_article = true;
$aArticles = Array();
while ($db->next_record()) {
$sItem = "k" . $db->f("idart");
if ($db->f("idlang") == $lang || !array_key_exists($sItem, $aArticles)) {
$aArticles[$sItem]["idart"] = $db->f("idart");
$aArticles[$sItem]["idlang"] = $db->f("idlang");
$aArticles[$sItem]["idartlang"] = $db->f("idartlang");
$aArticles[$sItem]["title"] = $db->f("title");
if ($cfg["is_start_compatible"] == true) {
$aArticles[$sItem]["is_start"] = $db->f("is_start");
} else {
$aArticles[$sItem]["is_start"] = isStartArticle($db->f("idartlang"), $idcat, $lang);
}
$aArticles[$sItem]["idcatart"] = $db->f("idcatart");
$aArticles[$sItem]["idtplcfg"] = $db->f("idtplcfg");
$aArticles[$sItem]["published"] = $db->f("published");
$aArticles[$sItem]["online"] = $db->f("online");
$aArticles[$sItem]["created"] = $db->f("created");
$aArticles[$sItem]["idcat"] = $db->f("idcat");
$aArticles[$sItem]["lastmodified"] = $db->f("lastmodified");
$aArticles[$sItem]["timemgmt"] = $db->f("timemgmt");
$aArticles[$sItem]["datestart"] = $db->f("datestart");
$aArticles[$sItem]["dateend"] = $db->f("dateend");
$aArticles[$sItem]["artsort"] = $db->f("artsort");
$aArticles[$sItem]["locked"] = $db->f("locked");
$aArticles[$sItem]["redirect"] = $db->f("redirect");
}
}
$artlist = array();
$dyn_cnt = 0;
foreach ($aArticles as $sart) {
$dyn_cnt++;
$idart = $sart["idart"];
$idlang = $sart["idlang"];
$idtplcfg = $sart["idtplcfg"];
$idartlang = $sart["idartlang"];
$lidcat = $sart["idcat"];
$idcatlang = 0;
$idart = $sart["idart"];
$published = $sart["published"];
$online = $sart["online"];
$is_start = $sart["is_start"];
$idcatart = $sart["idcatart"];
$created = $sart["created"];
$modified = $sart["lastmodified"];
$title = clHtmlSpecialChars($sart["title"]);
$timemgmt = $sart["timemgmt"];
$datestart = $sart["datestart"];
$dateend = $sart["dateend"];
$sortkey = $sart["artsort"];
$locked = $sart["locked"];
$redirect = $sart["redirect"];
$published = (strtotime($published) > 0) ? date($dateformat, strtotime($published)) : i18n("not yet published");
$created = date($dateformat, strtotime($created));
$modified = date($dateformat, strtotime($modified));
$alttitle = "idart" . '&#58; ' . $idart . ' ' . "idcatart" . '&#58; ' . $idcatart . ' ' . "idartlang" . '&#58; ' . $idartlang;
if (($obj = $col->checkMark("article", $idartlang)) === false) {
$inUse = false;
} else {
$vuser = new User;
$vuser->loadUserByUserID($obj->get("userid"));
$inUseUser = $vuser->getField("username");
$inUseUserRealName = $vuser->getField("realname");
$inUse = true;
$title = $title . " (" . i18n("Article is in use") . ")";
$alttitle = sprintf(i18n("Article in use by %s (%s)"), $inUseUser, $inUseUserRealName) . " " . $alttitle;
}
$bgcolor = $cfg["color"]["table_light"];
if ($idlang != $lang) {
$bgcolor = ( is_int($dyn_cnt / 2) ) ? $cfg["color"]["table_light_sync"] : $cfg["color"]["table_dark_sync"];
}
/* Id of the row,
stores informations about
the article and category */
$tmp_rowid = $idart . "-" . $idartlang . "-" . $lidcat . "-" . $idcatlang . "-" . $idcatart . "-" . $idlang;
$tpl->set('d', 'ROWID', $tmp_rowid);
$colitem[$tmp_rowid] = $bgcolor;
# Backgroundcolor of the table row
$tpl->set('d', 'BGCOLOR', $bgcolor);
# Article Title
if ($perm->have_perm_area_action("con_editcontent", "con_editart") || $perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)) {
if ($idlang != $lang) {
$tmp_alink = $sess->url("main.php?area=con_editcontent&action=con_editart&changeview=prev&idartlang=$idartlang&idart=$idart&idcat=$idcat&frame=$frame&tmpchangelang=$idlang");
$titlelink = '<a href="' . $tmp_alink . '" title="' . $alttitle . '">' . $title . '</a>';
} else {
$tmp_alink = $sess->url("main.php?area=con_editcontent&action=con_editart&changeview=edit&idartlang=$idartlang&idart=$idart&idcat=$idcat&frame=$frame");
$titlelink = '<a href="' . $tmp_alink . '" title="' . $alttitle . '">' . $title . '</a>';
}
} else {
$tmp_alink = "";
$titlelink = $title;
}
if ($timemgmt == "1") {
$sql = "SELECT NOW() AS TIME";
$db3 = new DB_ConLite;
$db3->query($sql);
$db3->next_record();
$starttimestamp = strtotime($datestart);
$endtimestamp = strtotime($dateend);
$nowtimestamp = strtotime($db3->f("TIME"));
if (($nowtimestamp < $endtimestamp) && ($nowtimestamp > $starttimestamp)) {
$usetime = '<img src="images/but_time_2.gif" alt="Artikel mit Zeitsteuerung online" title="Artikel mit Zeitsteuerung online" style="margin-left:3px;">';
} else {
$usetime = '<img src="images/but_time_1.gif" alt="Artikel mit Zeitsteuerung offline" title="Artikel mit Zeitsteuerung offline" style="margin-left:3px;">';
}
} else {
$usetime = "";
}
# Article Title
if (($perm->have_perm_area_action("con", "con_lock") || $perm->have_perm_area_action_item("con", "con_lock", $idcat)) && $inUse == false) {
if ($locked == 1) {
$lockimg = 'images/article_locked.gif';
$lockalt = i18n("Unfreeze article");
} else {
$lockimg = 'images/article_unlocked.gif';
$lockalt = i18n("Freeze article");
}
$tmp_lock = '<a href="' . $sess->url("main.php?area=con&idcat=$idcat&action=con_lock&frame=4&idart=$idart&next=$next") . '" title="' . $lockalt . '"><img src="' . $lockimg . '" title="' . $lockalt . '" alt="' . $lockalt . '" border="0"></a>';
} else {
if ($locked == 1) {
$lockimg = 'images/article_locked.gif';
$lockalt = i18n("Article is frozen");
} else {
$lockimg = 'images/article_unlocked.gif';
$lockalt = i18n("Article is not frozen");
}
$tmp_lock = '<img src="' . $lockimg . '" title="' . $lockalt . '" alt="' . $lockalt . '" border="0">';
}
if ($idlang != $lang) {
$lockedlink = "";
} else {
$lockedlink = $tmp_lock;
}
if ($sortkey == "") {
$sortkey = "&nbsp;";
}
$tmp_articletitle = $titlelink;
# Article conf button
if ($perm->have_perm_area_action("con_editart", "con_edit") || $perm->have_perm_area_action_item("con_editart", "con_edit", $idcat)) {
$tmp_artconf = '<a href="' . $sess->url("main.php?area=con_editart&action=con_edit&frame=4&idart=$idart&idcat=$idcat") . '" title="' . i18n("Article properties") . '"><img src="' . $cfg["path"]["images"] . 'but_art_conf2.gif" alt="' . i18n("Article properties") . '" title="' . i18n("Article properties") . '" border="0"></a>';
} else {
$tmp_artconf = "";
}
$tmp_sync = '';
if ($idlang != $lang) {
$sql = "SELECT idcatlang FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat='" . Contenido_Security::toInteger($idcat) . "' AND idlang='" . Contenido_Security::toInteger($lang) . "'";
$db->query($sql);
if ($db->next_record()) {
$tmp_sync = '<a href="' . $sess->url("main.php?area=con&action=con_syncarticle&syncarticle=$idart&sourcelanguage=$idlang&frame=4&idcat=$idcat&next=$next") . '" title="' . i18n("Copy article to the current language") . '"><img src="' . $cfg["path"]["images"] . 'but_sync_art.gif" alt="' . i18n("Copy article to the current language") . '" title="' . i18n("Copy article to the current language") . '" border="0" style="margin-left:3px;"></a>';
} else {
$tmp_sync = "";
}
}
# Article Template
if (!is_object($db2)) {
$db2 = new DB_ConLite;
}
$sql2 = "SELECT
b.name AS tplname,
b.idtpl AS idtpl,
b.description AS description
FROM
" . $cfg["tab"]["tpl_conf"] . " AS a,
" . $cfg["tab"]["tpl"] . " AS b
WHERE
a.idtplcfg = '" . Contenido_Security::toInteger($idtplcfg) . "' AND
a.idtpl = b.idtpl";
$db2->query($sql2);
$db2->next_record();
$a_tplname = $db2->f("tplname");
$a_idtpl = $db2->f("idtpl");
$templateDescription = $db2->f("description");
# Uses Category Template
if (0 == $idtplcfg) {
$a_tplname = "--- " . i18n("None") . " ---";
}
# Make Startarticle button
$imgsrc = "isstart";
if ($is_start == false) {
$imgsrc .= '0';
} else {
$imgsrc .= '1';
}
if (isArtInMultipleUse($idart)) {
$imgsrc .= 'm';
}
if ((int) $redirect == 1) {
$imgsrc .= 'r';
}
$imgsrc .= '.gif';
$tmp_img = '';
if (($perm->have_perm_area_action("con", "con_makestart") || $perm->have_perm_area_action_item("con", "con_makestart", $idcat)) && $idcat != 0) {
if ($is_start == false) {
$tmp_link = '<a href="' . $sess->url("main.php?area=con&amp;idcat=$idcat&amp;action=con_makestart&amp;idcatart=$idcatart&amp;frame=4&is_start=1&amp;next=$next") . '" title="' . i18n("Flag as start article") . '"><img src="images/' . $imgsrc . '" border="0" title="' . i18n("Flag as start article") . '" alt="' . i18n("Flag as start article") . '" style="margin-left:3px;"></a>';
} else {
$tmp_link = '<a href="' . $sess->url("main.php?area=con&amp;idcat=$idcat&amp;action=con_makestart&amp;idcatart=$idcatart&amp;frame=4&amp;is_start=0&amp;next=$next") . '" title="' . i18n("Flag as normal article") . '"><img src="images/' . $imgsrc . '" border="0" title="' . i18n("Flag as normal article") . '" alt="' . i18n("Flag as normal article") . '" style="margin-left:3px;"></a>';
}
} else {
if ($is_start == true) {
$sTitle = i18n("Start article");
} else {
$sTitle = i18n("Normal article");
}
$tmp_img = '<img src="images/' . $imgsrc . '" border="0" title="' . $sTitle . '" alt="' . $sTitle . '" style="margin-left:3px;">';
$tmp_link = $tmp_img;
}
$tmp_start = $tmp_link;
# Make copy button
if (($perm->have_perm_area_action("con", "con_duplicate") || $perm->have_perm_area_action_item("con", "con_duplicate", $idcat)) && $idcat != 0) {
$imgsrc = "but_copy.gif";
$tmp_link = '<a href="' . $sess->url("main.php?area=con&idcat=$idcat&action=con_duplicate&duplicate=$idart&frame=4&next=$next") . '" title="' . i18n("Duplicate article") . '"><img src="images/' . $imgsrc . '" border="0" title="' . i18n("Duplicate article") . '" alt="' . i18n("Duplicate article") . '" style="margin-left:3px;"></a>';
} else {
$tmp_link = "";
}
if ($idlang != $lang) {
$duplicatelink = "";
} else {
$duplicatelink = $tmp_link;
}
$subject = urlencode(sprintf(i18n("Reminder for Article '%s'"), $title));
$mycatname = "";
conCreateLocationString($idcat, "&nbsp;/&nbsp;", $mycatname);
$message = urlencode(sprintf(i18n("Reminder for Article '%s'\nCategory: %s"), $title, $mycatname));
$todolink = new TODOLink("idart", $idart, $subject, $message);
# Make On-/Offline button
if ($online) {
if (($perm->have_perm_area_action("con", "con_makeonline") || $perm->have_perm_area_action_item("con", "con_makeonline", $idcat)) && ($idcat != 0)) {
$tmp_online = '<a href="' . $sess->url("main.php?area=con&idcat=$idcat&action=con_makeonline&frame=4&idart=$idart&next=$next") . '" title="' . i18n("Make offline") . '"><img src="images/online.gif" title="' . i18n("Make offline") . '" alt="' . i18n("Make offline") . '" border="0" style="margin-left:3px;"></a>';
} else {
$tmp_online = '<img src="images/online.gif" title="' . i18n("Article is online") . '" alt="' . i18n("Article is online") . '" border="0" style="margin-left:3px;">';
}
} else {
if (($perm->have_perm_area_action("con", "con_makeonline") || $perm->have_perm_area_action_item("con", "con_makeonline", $idcat)) && ($idcat != 0)) {
$tmp_online = '<a href="' . $sess->url("main.php?area=con&idcat=$idcat&action=con_makeonline&frame=4&idart=$idart&next=$next") . '" title="' . i18n("Make online") . '"><img src="images/offline.gif" title="' . i18n("Make online") . '" alt="' . i18n("Make online") . '" border="0" style="margin-left:3px;"></a>';
} else {
$tmp_online = '<img src="images/offline.gif" title="' . i18n("Article is offline") . '" alt="' . i18n("Article is offline") . '" border="0" style="margin-left:3px;">';
}
}
if ($idlang != $lang) {
$onlinelink = "";
} else {
$onlinelink = $tmp_online;
}
# Delete button
if (($perm->have_perm_area_action("con", "con_deleteart") || $perm->have_perm_area_action_item("con", "con_deleteart", $idcat)) && $inUse == false) {
$tmp_title = $title;
if (strlen($tmp_title) > 30) {
$tmp_title = substr($tmp_title, 0, 27) . "...";
}
$confirmString = sprintf(i18n("Are you sure to delete the following article:<br><br><b>%s</b>"), clHtmlSpecialChars($tmp_title));
$tmp_del = '<a href="javascript://" onclick="box.confirm(&quot;' . i18n("Delete article") . '&quot;, &quot;' . addslashes($confirmString) . '&quot;, &quot;deleteArticle(' . $idart . ',' . $idcat . ',' . $next . ')&quot;)" title="' . i18n("Delete article") . '"><img src="images/delete.gif" title="' . i18n("Delete article") . '" alt="' . i18n("Delete article") . '" border="0" style="margin-left:3px;"></a>';
} else {
$tmp_del = "";
}
if ($idlang != $lang) {
$deletelink = "";
} else {
$deletelink = $tmp_del;
}
// DIRECTION
cInclude('includes', 'functions.lang.php');
$tpl->set('d', 'DIRECTION', 'dir="' . langGetTextDirection($lang) . '"');
# Next iteration
# Articles found
$no_article = false;
foreach ($listColumns as $listColumn => $ctitle) {
switch ($listColumn) {
case "start":
$value = $tmp_start;
break;
case "title":
$value = $tmp_articletitle;
break;
case "changeddate":
$value = $modified;
break;
case "publisheddate":
$value = $published;
break;
case "sortorder":
$value = $sortkey;
break;
case "template":
$value = $a_tplname;
break;
case "actions":
$actions = array();
foreach ($actionList as $actionItem) {
switch ($actionItem) {
case "todo":
$actionValue = $todolink->render();
break;
case "artconf":
$actionValue = $tmp_artconf;
break;
case "online":
$actionValue = $onlinelink;
break;
case "locked":
$actionValue = $lockedlink;
break;
case "duplicate":
$actionValue = $duplicatelink;
break;
case "delete":
$actionValue = $deletelink;
break;
case "usetime":
$actionValue = $usetime;
break;
default:
/* Ask chain about the entry */
$_cecIterator = $_cecRegistry->getIterator("Contenido.ArticleList.RenderAction");
$contents = array();
if ($_cecIterator->count() > 0) {
while ($chainEntry = $_cecIterator->next()) {
$contents[] = $chainEntry->execute($idcat, $idart, $idartlang, $actionItem);
}
}
$actionValue = implode("", $contents);
break;
}
$actions[] = $actionValue;
}
if ($tmp_sync != '') {
$actions[] = $tmp_sync;
}
$value = implode("\n", $actions);
break;
default:
$contents = array();
/* Call chain to retrieve value */
$_cecIterator = $_cecRegistry->getIterator("Contenido.ArticleList.RenderColumn");
if ($_cecIterator->count() > 0) {
$contents = array();
while ($chainEntry = $_cecIterator->next()) {
$contents[] = $chainEntry->execute($idcat, $idart, $idartlang, $listColumn);
}
}
$value = implode("", $contents);
}
$artlist[$tmp_rowid][$listColumn] = $value;
$artlist[$tmp_rowid]['templateDescription'] = $templateDescription;
}
}
$headers = array();
foreach ($listColumns as $key => $listColumn) {
/* Dirty hack to force column widths */
if ($key == "title" || $listColumn == i18n("Title")) {
$headers[] = '<td width="100%" class="headerbordercell" nowrap="nowrap">' . $listColumn . '</td>';
} else {
$headers[] = '<td width="1%" class="headerbordercell" nowrap="nowrap">' . $listColumn . '</td>';
}
}
$tpl->set('s', 'HEADERS', implode("\n", $headers));
if ($elemperpage > 0 && $iArticleCount > 0) {
$sBrowseLinks = "";
for ($i = 1; $i <= ceil($iArticleCount / $elemperpage); $i++) {
$iNext = ($i - 1) * $elemperpage;
if ($sBrowseLinks !== "") {
$sBrowseLinks .= "&nbsp;";
}
if ($next == $iNext) {
$sBrowseLinks .= $i . "\n"; // I'm on the current page, no link
} else {
$tmp_alink = $sess->url("main.php?area=con&frame=$frame&idcat=$idcat&next=$iNext");
$sBrowseLinks .= '<a href="' . $tmp_alink . '">' . $i . '</a>' . "\n";
}
}
$tpl->set('s', 'NEXT', $next);
$tpl->set('s', 'BROWSE', sprintf(i18n("Go to page: %s"), $sBrowseLinks));
} else {
$tpl->set('s', 'NEXT', "0");
$tpl->set('s', 'BROWSE', sprintf(i18n("Go to page: %s"), "1"));
}
$tpl->set('s', 'CLICK_ROW_NOTIFICATION', i18n("with click select line for further treatment"));
if (count($artlist) > 0) {
foreach ($artlist as $key2 => $artitem) {
if ($firstMark == false) {
$script = 'function initTheOne() {
var theOne = document.getElementById("' . $key2 . '");
artRow.reset();
artRow.over( theOne );
artRow.click( theOne )
}
initTheOne()';
$firstMark = true;
$tpl->set('s', 'ROWMARKSCRIPT', $script);
}
$cells = array();
foreach ($listColumns as $key => $listColumn) {
// Description for hover effect
if ($key == 'template') {
$templateDescription = $artitem['templateDescription'];
$descString = '<b>' . $artitem[$key] . '</b>';
$sTemplatename = capiStrTrimHard($artitem[$key], 20);
if (strlen($artitem[$key]) > 20) {
$cells[] = '<td nowrap="nowrap" class="bordercell" onmouseover="Tip(\'' . $descString . '\', BALLOON, true, ABOVE, true);">' . $sTemplatename . '</td>';
} else {
$cells[] = '<td nowrap="nowrap" class="bordercell">' . $artitem[$key] . '</td>';
}
} else {
$cells[] = '<td nowrap="nowrap" class="bordercell">' . $artitem[$key] . '</td>';
}
}
$tpl->set('d', 'CELLS', implode("\n", $cells));
$tpl->set('d', 'BGCOLOR', $colitem[$key2]);
if ($colitem[$key2] == $cfg["color"]["table_dark_sync"] || $colitem[$key2] == $cfg["color"]["table_light_sync"]) {
$tpl->set('d', 'CSS_CLASS', 'class="con_sync"');
} else {
$tpl->set('d', 'CSS_CLASS', '');
}
$tpl->set('d', 'ROWID', $key2);
$tpl->next();
}
} else {
$emptyCell = '<td nowrap="nowrap" class="bordercell" colspan="' . count($listColumns) . '">' . i18n("No articles found") . '</td>';
$tpl->set('d', 'CELLS', $emptyCell);
$tpl->set('s', 'ROWMARKSCRIPT', '');
}
# Sortierungs select
$s_types = array(1 => i18n("Alphabetical"),
2 => i18n("Last change"),
3 => i18n("Published date"),
4 => i18n("Sort key"));
$tpl2 = new Template;
$tpl2->set('s', 'NAME', 'sort');
$tpl2->set('s', 'CLASS', 'text_medium');
$tpl2->set('s', 'OPTIONS', 'onchange="artSort(this)"');
foreach ($s_types as $key => $value) {
$selected = ( $sort == $key ) ? 'selected="selected"' : '';
$tpl2->set('d', 'VALUE', $key);
$tpl2->set('d', 'CAPTION', $value);
$tpl2->set('d', 'SELECTED', $selected);
$tpl2->next();
}
$select = (!$no_article ) ? $tpl2->generate($cfg["path"]["templates"] . $cfg['templates']['generic_select'], true) : '&nbsp;';
$caption = (!$no_article ) ? i18n("Sort articles:") : '&nbsp;';
$tpl->set('s', 'ARTSORTCAPTION', $caption);
$tpl->set('s', 'ARTSORT', $select);
# Elements per Page select
$aElemPerPage = array(0 => i18n("All"),
25 => "25",
50 => "50",
75 => "75",
100 => "100");
$tpl2 = new Template;
$tpl2->set('s', 'NAME', 'sort');
$tpl2->set('s', 'CLASS', 'text_medium');
$tpl2->set('s', 'OPTIONS', 'onchange="changeElemPerPage(this)"');
foreach ($aElemPerPage as $key => $value) {
$selected = ( $elemperpage == $key ) ? 'selected="selected"' : '';
$tpl2->set('d', 'VALUE', $key);
$tpl2->set('d', 'CAPTION', $value);
$tpl2->set('d', 'SELECTED', $selected);
$tpl2->next();
}
$select = (!$no_article ) ? $tpl2->generate($cfg["path"]["templates"] . $cfg['templates']['generic_select'], true) : '&nbsp;';
$caption = (!$no_article ) ? i18n("Items per page:") : '&nbsp;';
$tpl->set('s', 'ELEMPERPAGECAPTION', $caption);
$tpl->set('s', 'ELEMPERPAGE', $select);
# Extract Category and Catcfg
$sql = "SELECT
b.name AS name,
d.idtpl AS idtpl
FROM
(" . $cfg["tab"]["cat"] . " AS a,
" . $cfg["tab"]["cat_lang"] . " AS b,
" . $cfg["tab"]["tpl_conf"] . " AS c)
LEFT JOIN
" . $cfg["tab"]["tpl"] . " AS d
ON
d.idtpl = c.idtpl
WHERE
a.idclient = '" . Contenido_Security::toInteger($client) . "' AND
a.idcat = '" . Contenido_Security::toInteger($idcat) . "' AND
b.idlang = '" . Contenido_Security::toInteger($lang) . "' AND
b.idcat = a.idcat AND
c.idtplcfg = b.idtplcfg";
$db->query($sql);
if ($db->next_record()) {
//$foreignlang = false;
//conCreateLocationString($idcat, "&nbsp;/&nbsp;", $cat_name);
}
// Show path of selected category to user
prCreateURLNameLocationString($idcat, '/', $cat_name_tmp);
if ($cat_name_tmp != '') {
$cat_name = '<div class="categorypath">';
$cat_name .= $cat_name_tmp . '/';
$cat_name .= (isset($sFistArticleName)) ? clHtmlSpecialChars($sFistArticleName) : '';
$cat_name .= "</div>";
} else {
$cat_name = '';
}
$cat_idtpl = $db->f("idtpl");
# Hinweis wenn kein Artikel gefunden wurde
if ($no_article) {
$tpl->set("d", "START", "&nbsp;");
$tpl->set("d", "ARTICLE", i18n("No articles found"));
$tpl->set("d", "PUBLISHED", "&nbsp;");
$tpl->set("d", "LASTMODIFIED", "&nbsp;");
$tpl->set("d", "ARTCONF", "&nbsp;");
$tpl->set("d", "TPLNAME", "&nbsp;");
$tpl->set("d", "LOCKED", "&nbsp;");
$tpl->set("d", "DUPLICATE", "&nbsp;");
$tpl->set("d", "TPLCONF", "&nbsp;");
$tpl->set("d", "ONLINE", "&nbsp;");
$tpl->set("d", "DELETE", "&nbsp;");
$tpl->set("d", "USETIME", "&nbsp;");
$tpl->set("d", "TODO", "&nbsp;");
$tpl->set("d", "SORTKEY", "&nbsp;");
$tpl->next();
}
# Kategorie anzeigen und Konfigurieren button
/* JL 23.06.03 Check right from "Content" instead of "Category"
if ($perm->have_perm_area_action("str_tplcfg","str_tplcfg") ||
$perm->have_perm_area_action_item("str_tplcfg","str_tplcfg",$lidcat)) */
if (($perm->have_perm_area_action_item("con", "con_tplcfg_edit", $idcat)
|| $perm->have_perm_area_action("con", "con_tplcfg_edit"))) {
if (0 != $idcat) {
$tpl->set('s', 'CATEGORY', $cat_name);
$tpl->set('s', 'CATEGORY_CONF', (!empty($tmp_img))?$tmp_img:'');
$tpl->set('s', 'CATEGORY_LINK', (!empty($tmp_link))?$tmp_link:'');
} else {
$tpl->set('s', 'CATEGORY', $cat_name);
$tpl->set('s', 'CATEGORY_CONF', '&nbsp;');
$tpl->set('s', 'CATEGORY_LINK', '&nbsp;');
}
} else {
$tpl->set('s', 'CATEGORY', $cat_name);
$tpl->set('s', 'CATEGORY_CONF', '&nbsp;');
$tpl->set('s', 'CATEGORY_LINK', '&nbsp;');
}
# SELF_URL (Variable f<>r das javascript);
$tpl->set('s', 'SELF_URL', $sess->url("main.php?area=con&frame=4&idcat=$idcat"));
# New Article link
if (($perm->have_perm_area_action("con_editart", "con_newart") || $perm->have_perm_area_action_item("con_editart", "con_newart", $idcat))) {
if ($idcat != 0 && $cat_idtpl != 0) {
$tpl->set('s', 'NEWARTICLE_TEXT', '<a href="' . $sess->url("main.php?area=con_editart&frame=$frame&action=con_newart&idcat=$idcat") . '">' . i18n("Create new article") . '</a>');
$tpl->set('s', 'NEWARTICLE_IMG', '<a href="' . $sess->url("main.php?area=con_editart&frame=$frame&action=con_newart&idcat=$idcat") . '" title="' . i18n("Create new article") . '"><img src="images/but_art_new.gif" border="0" alt="' . i18n("Create new article") . '"></a>');
} else {
$tpl->set('s', 'NEWARTICLE_TEXT', '&nbsp;');
$tpl->set('s', 'NEWARTICLE_IMG', '&nbsp;');
}
} else {
$tpl->set('s', 'NEWARTICLE_TEXT', '&nbsp;');
$tpl->set('s', 'NEWARTICLE_IMG', '&nbsp;');
}
$str = "";
/* Session ID */
$tpl->set('s', 'SID', $sess->id);
$tpl->set('s', 'NOTIFICATION', $str);
# Generate template
$tpl->generate($cfg['path']['templates'] . $cfg['templates']['con_art_overview']);
} else {
$notification->displayNotification("error", i18n("Permission denied"));
}
} else {
$tpl->reset();
$tpl->set('s', 'CONTENTS', '');
$tpl->generate($cfg['path']['templates'] . $cfg['templates']['blank']);
}
?>