2016-10-06 15:57:01 +00:00
< ? php
/**
* Project :
* Contenido Content Management System
*
* Description :
* Page widgets
*
* Requirements :
* @ con_php_req 5.0
*
*
* @ package Contenido Backend classes
* @ version 1.24
* @ author Bjoern Behrens
* @ copyright four for business AG < www . 4 fb . de >
* @ license http :// www . contenido . org / license / LIZENZ . txt
* @ link http :// www . 4 fb . de
* @ link http :// www . contenido . org
*
* { @ internal
* created 2007 - 01 - 30
*
* $Id : class . widgets . page . php 338 2015 - 07 - 24 09 : 51 : 47 Z oldperl $
* }}
*
*/
if ( ! defined ( 'CON_FRAMEWORK' )) {
die ( 'Illegal call' );
}
/**
* Regular page
*
* @ author Timo A . Hummel < timo . hummel @ 4 fb . de >
*/
class cPage extends cHTML {
/**
* Storage of scripts to be used on the page
* @ var array
* @ access private
*/
var $_scripts ;
/**
* Storage of the page ' s content
* @ var string
* @ access private
*/
var $_content ;
/**
* Storage of the margin
* @ var int
* @ access private
*/
var $_margin ;
/**
* Storage of the desired encoding
* @ var string
* @ access private
*/
var $_encoding ;
/**
* Storage of the sub navigation
* @ var string
* @ access private
*/
var $_subnav ;
/**
* Storage of the extra data ( see template )
* @ var string
* @ access private
*/
var $extra ;
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
/**
* Switch if HTML5
* @ var boolean
*/
protected $_isHtml5 = false ;
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
/**
* CSS files to add
* @ var array
*/
protected $_css ;
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
/**
* JS files to add
* @ var array
*/
protected $_js ;
/**
* Constructor
*
* @ global obj $auth
* @ global string $lang
* @ param obj $object
*/
public function __construct ( $object = false ) {
global $auth , $lang ;
$this -> _margin = 10 ;
$this -> _object = $object ;
/* Check for global register parameters */
if ( array_key_exists ( " u_register " , $_GET )) {
$user = new cApiUser ( $auth -> auth [ " uid " ]);
if ( is_array ( $_GET [ " u_register " ])) {
foreach ( $_GET [ " u_register " ] as $type => $values ) {
foreach ( $values as $name => $value ) {
$user -> setProperty ( $type , $name , $value );
}
}
}
}
/* Try to extract the current conlite language */
$clang = new cApiLanguage ( $lang );
if ( ! $clang -> virgin ) {
$this -> setEncoding ( $clang -> get ( " encoding " ));
}
}
/**
* use HTML5 for page output
*/
public function setHtml5 () {
$this -> _isHtml5 = true ;
}
/**
* set the margin width ( pixels )
*
* @ param $margin int Margin width
*/
function setMargin ( $margin ) {
$this -> _margin = $margin ;
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
/**
*
* @ param string $sFile path to file
*/
public function addCssFile ( $sFile ) {
2018-12-10 12:13:27 +00:00
if ( ! is_array ( $this -> _css )) {
2016-10-06 15:57:01 +00:00
$this -> _css = array ();
}
$this -> _css [] = $sFile ;
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
public function addJsFile ( $sFile ) {
2018-12-10 12:13:27 +00:00
if ( ! is_array ( $this -> _css )) {
2016-10-06 15:57:01 +00:00
$this -> _js = array ();
}
$this -> _js [] = $sFile ;
}
/**
* sets a specific JavaScript for the header
* Important : The passed script needs to define < script ></ script > tags .
*
* @ param $name string Script identifier
* @ param $script string Script code
*/
public function addScript ( $name , $script ) {
$this -> _scripts [ $name ] = $script ;
}
/**
* sets the link to the subnavigation . Should be set on the first page only .
*
* @ param $append URL to append
*/
function setSubnav ( $append , $marea = false ) {
if ( $marea === false ) {
global $area ;
$marea = $area ;
}
$this -> _subnavArea = $marea ;
$this -> _subnav = $append ;
}
/**
* adds the default script to reload the left pane ( frame 2 )
*
* @ param none
*/
function setReload ( $location = false ) {
if ( $location != false ) {
$this -> _scripts [ " __reload " ] = '<script type="text/javascript">' .
" if (parent.parent.frames['left'].frames['left_bottom'].get_registered_parameters) { " .
" parent.parent.frames['left'].frames['left_bottom'].location.href = ' $location ' + parent.parent.frames['left'].frames['left_bottom'].get_registered_parameters(); " .
" } else { " .
" parent.parent.frames['left'].frames['left_bottom'].location.href = ' $location '; " .
" } "
. " </script> " ;
} else {
$this -> _scripts [ " __reload " ] = '<script type="text/javascript">' .
" if (parent.parent.frames['left'].frames['left_bottom'].get_registered_parameters) { " .
" parent.parent.frames['left'].frames['left_bottom'].location.href = parent.parent.frames['left'].frames['left_bottom'].location.href + parent.parent.frames['left'].frames['left_bottom'].get_registered_parameters(); " .
" } else { " .
" parent.parent.frames['left'].frames['left_bottom'].location.href = parent.parent.frames['left'].frames['left_bottom'].location.href;} " .
" </script> " ;
}
}
/**
* Sets the content for the page
*
* @ param $content mixed Object with a render method or a string containing the content
*/
function setContent ( $content ) {
/* Is it an array? */
if ( is_array ( $content )) {
foreach ( $content as $item ) {
if ( is_object ( $item )) {
if ( method_exists ( $item , " render " )) {
$this -> _content .= $item -> render ();
}
} else {
$this -> _content .= $item ;
}
}
} else {
if ( is_object ( $content )) {
if ( method_exists ( $content , " render " )) {
$this -> _content = $content -> render ();
return ;
}
} else {
$this -> _content = $content ;
}
}
}
function setExtra ( $extra ) {
$this -> extra = $extra ;
}
/**
* adds the default script for a messagebox
*
* @ param none
*/
function setMessageBox () {
global $sess ;
$this -> _scripts [ " __msgbox " ] = '<script type="text/javascript" src="scripts/messageBox.js.php?contenido=' . $sess -> id . '"></script>' .
' < script type = " text/javascript " >
/* Session-ID */
var sid = " ' . $sess->id . ' " ;
/* Create messageBox
instance */
box = new messageBox ( " " , " " , " " , 0 , 0 );
</ script > ' ;
}
function setMarkScript ( $item ) {
$this -> _scripts [ " __markscript " ] = markSubMenuItem ( $item , true );
}
function setEncoding ( $encoding ) {
$this -> _encoding = $encoding ;
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
public function sendNoCacheHeaders () {
header ( " Cache-Control: no-cache, no-store, must-revalidate " ); // HTTP 1.1.
header ( " Pragma: no-cache " ); // HTTP 1.0.
header ( " Expires: 0 " ); // Proxies.
}
/**
* render the page
*
* @ param none
*/
function render ( $print = true ) {
global $sess , $cfg ;
$tpl = new Template ();
$scripts = " " ;
if ( is_array ( $this -> _scripts )) {
foreach ( $this -> _scripts as $key => $value ) {
$scripts .= $value ;
}
}
if ( $this -> _object !== false && method_exists ( $this -> _object , " render " ) && is_array ( $this -> _requiredScripts )) {
foreach ( $this -> _requiredScripts as $key => $value ) {
2018-12-10 12:13:27 +00:00
$scripts .= '<script type="text/javascript" src="scripts/' . $value . '"></script>' . " \n " ;
2016-10-06 15:57:01 +00:00
}
}
2018-12-10 12:13:27 +00:00
if ( is_array ( $this -> _js ) && count ( $this -> _js ) > 0 ) {
foreach ( $this -> _js as $sFilename ) {
$scripts .= '<script type="text/javascript" src="' . $sFilename . '"></script>' . " \n " ;
2016-10-06 15:57:01 +00:00
}
}
if ( $this -> _subnav != " " ) {
$scripts .= '<script type="text/javascript">' ;
$scripts .= 'parent.frames["right_top"].location.href = "' . $sess -> url ( " main.php?area= " . $this -> _subnavArea . " &frame=3& " . $this -> _subnav ) . '";' ;
$scripts .= '</script>' ;
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
$css = " " ;
2018-12-10 12:13:27 +00:00
if ( is_array ( $this -> _css )) {
foreach ( $this -> _css as $sFilename ) {
$css .= '<link rel="stylesheet" type="text/css" href="' . $sFilename . '" />' . " \n " ;
2016-10-06 15:57:01 +00:00
}
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
$meta = '' ;
if ( $this -> _encoding != " " && ! $this -> _isHtml5 ) {
$meta .= '<meta http-equiv="Content-type" content="text/html;charset=' . $this -> _encoding . '">' . " \n " ;
}
if ( $this -> _object !== false && method_exists ( $this -> _object , " render " )) {
$this -> _content = $this -> _object -> render ();
}
if ( $this -> _isHtml5 ) {
$this -> _content .= " \n " . '<script type="text/javascript" src="scripts/jquery/jquery.js"></script>' ;
$this -> _content .= " \n " . '<script type="text/javascript" src="scripts/jquery/jquery-ui.js"></script>' ;
}
2018-12-10 12:13:27 +00:00
2016-10-06 15:57:01 +00:00
$tpl -> set ( 's' , 'META' , $meta );
$tpl -> set ( 's' , 'SCRIPTS' , $scripts );
$tpl -> set ( 's' , 'CSS' , $css );
$tpl -> set ( 's' , 'CONTENT' , $this -> _content );
$tpl -> set ( 's' , 'MARGIN' , $this -> _margin );
2018-12-10 12:13:27 +00:00
$tpl -> set ( 's' , 'EXTRA' , $this -> extra );
2016-10-06 15:57:01 +00:00
$tpl -> set ( 's' , 'SESSION_ID' , $sess -> id );
if ( $print == true ) {
$tplRender = false ;
} else {
$tplRender = true ;
}
if ( $this -> _isHtml5 ) {
$rendered = $tpl -> generate ( $cfg [ 'path' ][ 'contenido' ] . $cfg [ 'path' ][ 'templates' ] . " html5/ " . $cfg [ 'templates' ][ 'generic_page' ], $tplRender , false );
} else {
$rendered = $tpl -> generate ( $cfg [ 'path' ][ 'contenido' ] . $cfg [ 'path' ][ 'templates' ] . $cfg [ 'templates' ][ 'generic_page' ], $tplRender , false );
}
if ( $print == true ) {
echo $rendered ;
} else {
return $rendered ;
}
}
}
/**
* Predefined page for use in frame 1
*
* @ author Timo A . Hummel < timo . hummel @ 4 fb . de >
*/
class cPageLeftTop extends cPage {
/**
* Constructor Function
*
* @ param $showCloser boolean True if the closer should be shown ( default )
*/
2018-12-10 12:13:27 +00:00
function __construct ( $showCloser = true ) {
2016-10-06 15:57:01 +00:00
$this -> showCloser ( $showCloser );
}
/**
* set wether the closer should be shown .
*
* @ param $show boolean True if the closer should be shown ( default )
*/
function showCloser ( $show ) {
$this -> _showCloser = $show ;
}
function render ( $print = true ) {
global $cfg ;
2018-12-10 12:13:27 +00:00
$tpl = new Template ();
2016-10-06 15:57:01 +00:00
$tpl -> set ( 's' , 'CONTENT' , $content );
$this -> setContent ( $tpl -> generate ( $cfg [ 'path' ][ 'contenido' ] . $cfg [ 'path' ][ 'templates' ] . $cfg [ 'templates' ][ 'widgets' ][ 'left_top' ], true ));
2018-12-10 12:13:27 +00:00
parent :: render ( $print );
2016-10-06 15:57:01 +00:00
}
}
/**
* Predefined page for use in frame 1 with a multipane
*
* @ author Timo A . Hummel < timo . hummel @ 4 fb . de >
*/
class cPageLeftTopMultiPane extends cPageLeftTop {
/**
* Storage of the items
* @ var array
* @ access private
*/
var $_items ;
/**
* Constructor Function
*
* The passed array needs to be a multi - array in the following format :
*
* $items = array (
* array ( " image " , " description " , " link " ),
* array ( " image " , " description " , " link " )
* );
*
* Each sub - array needs to define an image , a description and a link .
* Note that the images are relative to the current directory , so you
* should include $cfg [ " path " ][ " images " ] to retrieve the correct path .
*
* @ param $items array All items passed as multi array ( see constructor description )
*/
2018-12-10 12:13:27 +00:00
function __construct ( $items ) {
2016-10-06 15:57:01 +00:00
$this -> _items = $items ;
2018-12-10 12:13:27 +00:00
parent :: __construct ();
2016-10-06 15:57:01 +00:00
}
/**
* set wether the closer should be shown .
*
* @ param $show boolean True if the closer should be shown ( default )
*/
function showCloser ( $show ) {
$this -> _showCloser = $show ;
}
/**
* render
*
*/
function render ( $print = true ) {
global $cfg ;
$infodiv = new cHTMLDiv ;
if ( count ( $this -> _items ) > 0 ) {
foreach ( $this -> _items as $item ) {
if ( count ( $item ) != 3 ) {
echo " Error: the passed multi-array for cPageLeftTopMultiPane should contain 3 entries for each sub-item (see documentation for cPageLeftTopMultiPane) " ;
} else {
$button = new cWidgetMultiToggleButton ( $item [ 0 ], $item [ 1 ], $item [ 2 ]);
$button -> setBorder ( 1 );
$button -> setHint ( $infodiv -> getID (), $item [ 1 ]);
$button -> _link -> setTargetFrame ( " left_bottom " );
$linkedids [] = $button -> _img -> getID ();
$buttons [] = $button ;
}
}
$buttons [ 0 ] -> setDefault ();
$infodiv -> setContent ( $buttons [ 0 ] -> _hinttext );
foreach ( $buttons as $button ) {
foreach ( $linkedids as $value ) {
$button -> addLinkedItem ( $value );
}
$button -> setStyle ( " margin-right: 2px; " );
$content .= $button -> render ();
}
$content .= $infodiv -> render ();
$wrapdiv = new cHTMLDiv ;
$wrapdiv -> setStyle ( " padding: 10px; " );
$wrapdiv -> setContent ( $content );
$this -> setContent ( $wrapdiv );
}
$content = $this -> _content ;
$tpl = new Template ;
$tpl -> set ( 's' , 'CONTENT' , $content );
$this -> setContent ( $tpl -> generate ( $cfg [ 'path' ][ 'templates' ] . $cfg [ 'templates' ][ 'widgets' ][ 'left_top' ], true ));
2018-12-10 12:13:27 +00:00
parent :: render ();
2016-10-06 15:57:01 +00:00
}
}
class cNewPageLeftTopMultiPane extends cPageLeftTopMultiPane {
2018-12-10 12:13:27 +00:00
function __construct ( $items ) {
parent :: __construct ( $items );
2016-10-06 15:57:01 +00:00
}
function render ( $print = true ) {
global $cfg ;
2018-12-10 12:13:27 +00:00
$infodiv = new cHTMLDiv ();
2016-10-06 15:57:01 +00:00
if ( count ( $this -> _items ) > 0 ) {
foreach ( $this -> _items as $item ) {
if ( count ( $item ) != 3 ) {
echo " Error: the passed multi-array for cPageLeftTopMultiPane should contain 3 entries for each sub-item (see documentation for cPageLeftTopMultiPane) " ;
} else {
$button = new cWidgetMultiToggleButton ( $item [ 0 ], $item [ 1 ], $item [ 2 ]);
$button -> setBorder ( 1 );
$button -> setHint ( $infodiv -> getID (), $item [ 1 ]);
$button -> _link -> setTargetFrame ( " left_bottom " );
$linkedids [] = $button -> _img -> getID ();
$buttons [] = $button ;
}
}
$buttons [ 0 ] -> setDefault ();
$infodiv -> setContent ( $buttons [ 0 ] -> _hinttext );
foreach ( $buttons as $button ) {
foreach ( $linkedids as $value ) {
$button -> addLinkedItem ( $value );
}
$button -> setStyle ( " margin-right: 2px; " );
$content .= $button -> render ();
}
$content .= $infodiv -> render ();
$wrapdiv = new cHTMLDiv ;
$wrapdiv -> setStyle ( " padding: 10px; " );
$wrapdiv -> setContent ( $content );
$this -> setContent ( $wrapdiv );
}
return $content ;
}
}