ConLite/conlite/scripts/articleObject.js.php

475 Zeilen
16 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Moving article related logic to the front_end
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend sripts
* @version 1.0.3
* @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.8.7
*
* {@internal
* created 2003-05-23
* modified 2008-06-25, Frederic Schneider, add security fix
* modified 2008-07-02, Frederic Schneider, include_security class
* modified 2010-05-20, Murat Purc, standardized Contenido startup and security check invocations, see [#CON-307]
*
* $Id$:
* }}
*
*/
if (!defined("CON_FRAMEWORK")) {
define("CON_FRAMEWORK", true);
}
// Contenido startup process
include_once ('../includes/startup.php');
header("Content-Type: text/javascript");
page_open(array('sess' => 'Contenido_Session',
'auth' => 'Contenido_Challenge_Crypt_Auth',
'perm' => 'Contenido_Perm'));
i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang);
require($cfg["path"]["contenido"].'includes/functions.includePluginConf.php');
page_close();
/* Fetch chains */
$iterator = $_cecRegistry->getIterator("Contenido.Article.RegisterCustomTab");
echo "//itsameA";
$aTabs = array();
while ($chainEntry = $iterator->next())
{
$aTmpArray = $chainEntry->execute();
if (is_array($aTmpArray))
{
echo "//itsame";
$aTabs = array_merge($aTabs, $aTmpArray);
}
}
?>
/**
* Object of an article
*
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
function articleObject(actionFrameName, frameNumber)
{
/* Name of the Actionframe.
Defaults to 'right_bottom' */
this.actionFrameName = actionFrameName || 'right_bottom';
/* Reference to the Actionframe */
this.actionFrame = parent.parent.frames["right"].frames[this.actionFrameName];
/* Frame-number.
Defaults to '4' */
this.frame = frameNumber || 4;
/* Filename of the contenido
main file - defaults to 'main.php' */
this.filename = "main.php?"
/* Contenido session name -
defaults to 'contenido' */
this.sessionName = "contenido"
/* Current page selection (first shown article number) */
this.next = 0;
/* Global Vars */
this.sessid = 0;
this.client = 0;
this.lang = 0;
/* Article Properties*/
this.idart = 0;
this.idartlang = 0;
this.idcat = 0;
this.idcatlang = 0;
this.idcatart = 0;
this.idlang = 0;
/* Menu visible / invisible */
this.vis = 1;
this.customTabs = new Array();
/* Href of OverviewPage */
this.hrefOverview = null;
<?php
print("/*DUMP:<pre>"); var_Dump($aTabs ); print("</pre>*/");
foreach ($aTabs as $key => $sTab)
{
echo 'this.customTabs[\''.$sTab.'\'] = new Object();'."\n";
$iterator = $_cecRegistry->getIterator("Contenido.Article.GetCustomTabProperties");
$aTabs = array();
while ($chainEntry = $iterator->next())
{
$aTmpArray = $chainEntry->execute($sTab);
if (is_array($aTmpArray))
{
break;
}
}
echo 'this.customTabs[\''.$sTab.'\'][\'area\'] = "'.$aTmpArray[0].'";'."\n";
echo 'this.customTabs[\''.$sTab.'\'][\'action\'] = "'.$aTmpArray[1].'";'."\n";
echo 'this.customTabs[\''.$sTab.'\'][\'custom\'] = "'.$aTmpArray[2].'";'."\n";
}
?>
}
/**
* Define required global variables
*
* @return void
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.setGlobalVars = function(sessid, client, lang)
{
this.sessid = sessid;
this.client = client;
this.lang = lang;
}
/**
* Sets href to overview page, which was last visited
*
* @return void
* @author Timo Trautmann <timo.trautmann@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.setHrefOverview = function(href)
{
/*copy url - cut all actions*/
if (href.match(/backend_search.php$/g)) {
this.hrefOverview = 'javascript:top.content.left.left_top.document.getElementById(\'backend_search\').submit.click();';
} else if (href.match(/backend_search/g) || href.match(/area=con_workflow/g)) {
this.hrefOverview = href.replace(/action=([^&]*)&?/g, '');
} else {
this.hrefOverview = null;
}
}
/**
* Reset properties
*
* @return void
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.reset = function()
{
this.idart = 0;
this.idartlang = 0;
this.idcatlang = 0;
this.idcatart = 0;
this.idlang = 0;
}
/**
* Define required global variables
*
* @return string with attached frame & session parameters
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.sessUrl = function(str)
{
var tmp_str = str;
tmp_str += '&frame=' + this.frame;
tmp_str += '&'+this.sessionName+'='+this.sessid;
return tmp_str;
}
/**
* Execute an action
*
* @return bool Action executes Yes/No
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.doAction = function(str)
{
/* Flag if action will be executed. */
var doAction = false;
/* create messageBox instance */
var box = new messageBox("", "", "", 0, 0);
/* Notify Headline */
var headline = "<?php echo i18n("Error"); ?>";
/* Default error string */
var err_str = "<?php echo i18n("Error"); ?>";
switch (str)
{
/* Article overview mask */
case 'con':
/* Check if required parameters are set */
if (this.hrefOverview) {
url_str = this.hrefOverview;
doAction = true;
} else {
if ( 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=" + str + "&idcat=" + this.idcat + "&next=" + this.next);
doAction = true;
} else {
/* This ERROR should never happen, i.e. the property idcat will not
be reseted once set. */
err_str = "<?php echo i18n("Overview cannot be displayed"); ?>";
}
}
break;
/* Edit article properties */
case 'con_editart':
if (this.lang != 0 && this.idlang != 0 && this.lang != this.idlang)
{
err_str = "<?php echo i18n("Editor can't be displayed")."<br>".i18n("Can't edit articles in foreign languages."); ?>";
if (parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0"))
{
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
} else {
/* Check if required parameters are set */
if ( 0 != this.idart && 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=" + str + "&action=con_edit&idart=" + this.idart + "&idcat=" + this.idcat);
doAction = true;
} else {
/* There is no selected article,
we do not have the neccessary
data to display the Article-
properties mask */
err_str = "<?php echo i18n("Article can't be displayed")."<br>".i18n("No article was selected"); ?>";
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
}
}
break;
/* Template configuration */
case 'con_tplcfg':
/* Check if required parameters are set */
if (this.lang != 0 && this.idlang != 0 && this.lang != this.idlang)
{
err_str = "<?php echo i18n("Editor can't be displayed")."<br>".i18n("Can't edit articles in foreign languages."); ?>";
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
} else {
if ( 0 != this.idart && 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=" + str + "&action=tplcfg_edit&idart=" + this.idart + "&idcat=" + this.idcat);
doAction = true;
} else {
/* There is no selected article,
we do not have the neccessary
data to display the Template-
configuration mask */
err_str = "<?php echo i18n("Template configuration can't be displayed")."<br>".i18n("No article was selected"); ?>";
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
}
}
break;
/* Edit article */
case 'con_editcontent':
if (this.lang != 0 && this.idlang != 0 && this.lang != this.idlang)
{
err_str = "<?php echo i18n("Editor can't be displayed")."<br>".i18n("Can't edit articles in foreign languages."); ?>";
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
} else {
/* Check if required parameters are set */
if ( 0 != this.idart && 0 != this.idartlang && 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=" + str + "&action=con_editart&changeview=edit&idart=" + this.idart + "&idartlang=" + this.idartlang + "&idcat=" + this.idcat);
doAction = true;
} else {
/* There is no selected article,
we do not have the neccessary
data to display the Editor */
err_str = "<?php echo i18n("Editor can't be displayed")."<br>".i18n("No article was selected"); ?>";
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
}
}
break;
/* Preview article */
case 'con_preview':
/* Check if required parameters are set */
if ( 0 != this.idart && 0 != this.idartlang && 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=con_editcontent&action=con_editart&changeview=prev&idart=" + this.idart + "&idartlang=" + this.idartlang + "&idcat=" + this.idcat + "&tmpchangelang="+ this.idlang);
doAction = true;
} else {
/* There is no selected article,
we do not have the neccessary
data to display the Editor */
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
err_str = "<?php echo i18n("Preview can't be displayed")."<br>".i18n("No article was selected"); ?>";
}
break;
default:
if (this.customTabs[str])
{
var obj = this.customTabs[str];
if ( 0 != this.idart && 0 != this.idartlang && 0 != this.idcat ) {
url_str = this.sessUrl(this.filename + "area=" + obj["area"] + "&action=" + obj["action"] + "&idart=" + this.idart + "&idartlang=" + this.idartlang + "&idcat=" + this.idcat + "&tmpchangelang="+ this.idlang + "&" + obj["custom"]);
doAction = true;
} else {
/* There is no selected article,
we do not have the neccessary
data to display the Editor */
if ( parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0") ) {
menuItem = parent.parent.frames["right"].frames["right_top"].document.getElementById("c_0");
parent.parent.frames["right"].frames["right_top"].sub.click(menuItem);
}
err_str = "<?php echo i18n("Tab can't be displayed")."<br>".i18n("No article was selected"); ?>";
}
}
break;
}
if (doAction) {
this.actionFrame.location.href = url_str;
return true;
} else {
box.notify(headline, err_str);
}
return false;
}
/**
* Define article and category related properties
*
* @return void
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG <www.4fb.de>
*/
articleObject.prototype.setProperties = function()
{
this.idart = arguments[0];
this.idartlang = arguments[1];
this.idcat = arguments[2];
this.idcatlang = arguments[3];
this.idcatart = arguments[4];
this.idlang = arguments[5];
}
/**
* Disables the navigation
*
* @param none
* @return void
*/
articleObject.prototype.disable = function()
{
var oRef = [];
oRef[0] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_0" );
oRef[1] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_1" );
oRef[2] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_2" );
oRef[3] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_3" );
oRef[4] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_4" );
oRef[5] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_5" );
if (this.vis == 1)
{
for (i=1; i<oRef.length; i++)
{
links = oRef[i].getElementsByTagName("a");
links[0].style.visibility = "hidden";
}
parent.parent.frames["right"].frames["right_top"].sub.clicked(oRef[0].getElementsByTagName('a')[0]);
// This deselects the selected submenu item
// parent.parent.frames["right"].frames["right_top"].sub.click(oRef[0]);
// parent.parent.frames["right"].frames["right_top"].sub.markedRow.style.backgroundColor = "#C6C6D5";
}
this.vis = 0;
} // end function
/**
* Enables the navigation
*
* @param none
* @return void
*/
articleObject.prototype.enable = function()
{
var oRef = [];
oRef[0] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_0" );
oRef[1] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_1" );
oRef[2] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_2" );
oRef[3] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_3" );
oRef[4] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_4" );
oRef[5] = parent.parent.frames["right"].frames["right_top"].document.getElementById( "c_5" );
if ( this.vis == 0 )
{
for (i=0; i<oRef.length; i++)
{
links = oRef[i].getElementsByTagName("a");
links[0].style.visibility = "visible";
}
parent.parent.frames["right"].frames["right_top"].sub.clicked(oRef[0].getElementsByTagName('a')[0]);
}
this.vis = 1;
} // end function