A QCodo powered CMS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

179 lines
5.9 KiB

<?php
if(!defined('QUINTACMS') ) die("No quinta.");
/**
* Class ContentItemController - provids display of a content item
* This class provides display of a ContentItem from the database - it is rendered
* by a ContentBlockController template, which must always exist as a parent. The content
* block view creates this with a reference to itself and a ContentItem ORM object drawn
* from the content_item table. Here we instantiate the panels that display the content item
* fields which are rendered in the template according to active flags. Title, Author, Description
* and the other fields are optionally rendered - this behaviour can be configured from the
* administrative interface.
*
*@author Erik Winn <sidewalksoftware@gmail.com>
*
*@version 0.3
*
* @package Quinta
* @subpackage Controllers
*/
class ContentItemController extends QPanel{
// Local instances of the ContentItemMetaControl, Parent object, child ContentItems and ContentItems
protected $objParentObject;
protected $objContentItem;
///NOTE: in future, i want to implement an edit mode to allow inline editing, hence the
/// meta control here ..
protected $mctContentItem;
// Panels for ContentItem's individual data fields
protected $pnlTitle;
protected $pnlDescription;
protected $pnlText;
protected $pnlCreator;
protected $pnlCreationDate;
protected $pnlLastModification;
// This blocks CSS - note that Cssclass has a lower case c to avoid conflict with QCodo core ..
protected $strCssId;
protected $strCssclass;
public function __construct($objParentObject, $objContentItem )
{
//Parent must always be a child of QForm or Qcontrol
$this->objParentObject = $objParentObject;
try {
parent::__construct($this->objParentObject, $this->strCssId);
} catch (QCallerException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
if( $objContentItem ){
$this->mctContentItem = new ContentItemMetaControl($this, $objContentItem);
$this->objContentItem = $objContentItem;
}else { ///@todo just in case, make _something_ ... todo, error out?
$this->mctContentItem = ContentItemMetaControl::Create($this);
$this->objContentItem = $this->mctContentItem->ContentItem;
}
$this->strCssId = preg_replace('/\s/', '',$objContentItem->Name);
$this->AddCssClass($objContentItem->Cssclass);
$this->pnlTitle = $this->mctContentItem->pnlTitle_Create($this->CssId );
$this->pnlTitle->CssClass = "ContentItemTitle";
$this->pnlDescription = $this->mctContentItem->pnlDescription_Create($this->CssId);
$this->pnlDescription->CssClass = "ContentItemDescription";
$this->pnlText = $this->mctContentItem->pnlText_Create($this->CssId );
$this->pnlText->CssClass = "ContentItemText";
$this->pnlCreator = $this->mctContentItem->pnlCreatorId_Create($this->CssId);
$this->pnlCreator->Name = "Written by:";
$this->pnlCreator->CssClass = "ContentItemCreator";
$this->pnlCreationDate = $this->mctContentItem->pnlCreationDate_Create($this->CssId);
$this->pnlCreationDate->Name = "Created On:";
$this->pnlCreationDate->CssClass = "ContentItemCreationDate";
$this->pnlLastModification = $this->mctContentItem->pnlLastModification_Create($this->CssId);
$this->pnlLastModification->Name = "Last Modification:";
$this->pnlLastModification->CssClass = "ContentItemLastModification";
// Setup the Template
$this->Template = __QUINTA_CORE_VIEWS__ . '/ContentItemView.tpl.php';
/* just thinking here ..
if(!$this->mctContentItem || !$this->objContentItem )
$this->Template = 'BasicContentItem.tpl.php';
else
switch( $this->objContentItem->Type )
{
case 'Menu':
$this->Template = 'MenuContentItem.tpl.php';
break;
case 'MenuItem':
$this->Template = 'MenuItemContentItem.tpl.php';
break;
case 'Header':
$this->Template = 'HeaderContentItem.tpl.php';
break;
case 'RightPanel':
$this->Template = 'RightPanelContentItem.tpl.php';
break;
case 'LeftPanel':
$this->Template = 'LeftPanelContentItem.tpl.php';
break;
case 'CenterPanel':
$this->Template = 'CenterPanelContentItem.tpl.php';
break;
case 'Footer':
$this->Template = 'FooterContentItem.tpl.php';
break;
case 'BlockHeader':
$this->Template = 'BlockHeaderContentItem.tpl.php';
break;
case 'BlockFooter':
$this->Template = 'BlockFooterContentItem.tpl.php';
break;
default:
$this->Template = 'BasicContentItem.tpl.php';
}*/
// $this->AutoRenderChildren = false;
}
///@todo provide defualt contstruction or errors for these
public function __get($strName){
switch ($strName){
case 'CssId':
return $this->strCssId ;
case 'Cssclass':
return $this->strCssclass ;
case 'Title':
return $this->pnlTitle ;
case 'Description':
return $this->pnlDescription ;
case 'Text':
return $this->pnlText ;
case 'Creator':
return $this->pnlCreator ;
case 'CreationDate':
return $this->pnlCreationDate ;
case 'LastModification':
return $this->pnlLastModification ;
case 'ContentItem':
return $this->objContentItem;
case 'ShowTitle':
return $this->objContentItem->ShowTitle ;
case 'ShowDescription':
return $this->objContentItem->ShowDescription ;
case 'ShowCreator':
return $this->objContentItem->ShowCreator ;
case 'ShowCreationDate':
return $this->objContentItem->ShowCreationDate ;
case 'ShowLastModification':
return $this->objContentItem->ShowLastModification ;
default:
try {
return parent::__get($strName);
} catch (QCallerException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
}
}
public function __set($strName, $mixValue){
switch ($strName){
default:
try {
return (parent::__set($strName, $mixValue));
} catch (QCallerException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
}
}
}
?>