index 959ae306775a8f651b15b2394f9a5690e15a9272..3ec96e99538c13fc62179b7a0e776ea28d2db68d 100644 (file)
*/
class ObjectListViewport {
+ /* Internal variable for color alternation */
+ protected $colorAlternator= 0;
+
/* Dummy here ----> */
private $headline;
private $footer;
private $entryFormat;
private $attributes= array('cn', '_icon', '_actions', 'dn');
-
+
/* <---- Dummy here */
+ private $displayHeaderFlag= TRUE;
+ private $displayFooterFlag= TRUE;
+ private $numberOfCols= 0;
/*!
\brief Container for objects
*/
private $multiselect;
-
+ /*! \brief ID used to identify objects of same list */
+ private $id = "";
+
/*! \brief ObjectListViewport constructor
The ObjectListViewport class renders/handles the ObjectList defined by $config.
/* Dummy here */
$cr= Registry::getInstance("ConfigManager");
$cr->setSection($config);
- $this->headline= $this->parseHeadline($cr->getValue("headline"));
+ $this->parseHeadline($cr->getValue("headline"));
$this->footer= $cr->getValue("footer");
$this->entryFormat= $cr->getValue("entryFormat");
/* Load and instanciate classes, extract filter, icons, view hooks, etc. */
$this->objects= new ObjectList($config);
+
+ /* generate an unique id */
+ $this->id = preg_replace("/[^0-9]/","",microtime());
}
/*! \brief Handles _POST / _GET events
\return HTML rendered headline
*/
private function renderHeadline(){
- $buffer ="<table class='ObjectListViewport_Headline_Table'>\n";
- $buffer.="<tr>\n";
+ $tpl =" <tr>
+ <td class='ObjectListViewport_TD_Header' id='ObjectListViewport_TD_Header".$this->id."'>
+ <table class='ObjectListViewport_Header_Table' id='ObjectListViewport_Header_Table".$this->id."'>
+ <tr>
+ {content}
+ </tr>
+ </table>
+ </td>
+ </tr>";
+ $buffer ="";
foreach($this->headline as $key => $value){
- $buffer .= "<td class='ObjectListViewport_Headline_Cell' style='".$value['style']."'>".$value['name']."</td>\n";
+ $buffer .= "<td class='ObjectListViewport_Header_Cell' style='".$value['style']."'>".$value['name']."</td>\n";
}
- $buffer.="<td style='width:12px;'> </td>";
- $buffer.="</tr>\n";
- $buffer.="</table>\n";
- return $buffer;
+ return(preg_replace("/\{content\}/", $buffer,$tpl));
}
\return HTML rendered footer
*/
private function renderFooter(){
- $buffer ="<table class='ObjectListViewport_Footer_Table'>\n";
- $buffer.="<tr>\n";
- $buffer.= "<td class='ObjectListViewport_Footer_Cell' colspan='".count($this->headline)."'>".$this->footer."</td>\n";
- $buffer.="</tr>\n";
- $buffer.="</table>\n";
+ $buffer ="<tr>
+ <td class='ObjectListViewport_TD_Footer' id='ObjectListViewport_TD_Footer".$this->id."'>
+ <table class='ObjectListViewport_Footer_Table'>
+ <tr>
+ <td class='ObjectListViewport_Footer_Cell' colspan='".count($this->headline)."'>".$this->footer."</td>
+ </tr>
+ </table>
+ </td>
+ </tr>";
return $buffer;
}
}
#TODO: Make $buffer a proper HTML table output
-
$tmp = split("\|",trim($buffer,"|"));
-
- $buffer="<tr>\n";
- foreach($tmp as $key => $value){
-
- if(empty($this->headline[$key]['width']) || preg_match("/\%/",$this->headline[$key]['width'])){
- $buffer .= "<td nowrap class='ObjectListViewport_Entry_Cell' style='".$this->headline[$key]['style']."'>".
- "<div style='overflow:hidden;width:100%;'>".
- $value.
- "</div>".
- "</td>\n";
+ /* define entry template */
+ $tpl = "<td class='ObjectListViewport_Entry_Cell' style='{style_1}'>
+ <div style='{style_2}'>
+ {content}
+ </div>
+ </td>
+ ";
+ /* Template vriables to replace */
+ $attrs = array("/\{style_1\}/","/\{style_2\}/","/\{content\}/");
+
+ /* Append template for each given col */
+ $buffer ="";
+ for($i= 0; $i < $this->numberOfCols; $i++){
+
+ /* If current entry is the last to appen, then skip adding styles */
+ if($i == ($this->numberOfCols-1)){
+ $buffer.= preg_replace( $attrs,
+ array($this->headline[$i]['style'],"width:100%;overflow:hidden;",$tmp[$i]),$tpl);
}else{
- $buffer .= "<td class='ObjectListViewport_Entry_Cell' style='".$this->headline[$key]['style']."'>".
- $value.
- "</td>\n";
+ $buffer.= preg_replace( $attrs,
+ array($this->headline[$i]['style'],"width:100%;overflow:hidden;".$this->headline[$i]['style'],$tmp[$i]),$tpl);
}
}
- $buffer.="</tr>\n";
- return $buffer."\n";
+ /* Add class depending on given id, to alternate background colors */
+ if($this->colorAlternator++ & 1){
+ $a = "class='ObjectListViewport_Entry_Row1'";
+ }else{
+ $a = "class='ObjectListViewport_Entry_Row2'";
+ }
+
+ return "<tr ".$a.">\n".$buffer."</tr>\n";
}
*/
public function render() {
- /* Generate fixed headline */
- $buffer= $this->renderHeadline();
+ $header = $footer = "";
+ if($this->displayHeaderFlag){
+ $header = $this->renderHeadline();
+ }
+ if($this->displayFooterFlag){
+ $footer = $this->renderFooter();
+ }
/* Apply current filter */
+ $entries = "";
$objects= new ObjectListFilterIterator($this->objects->getIterator());
-
- $buffer.="<div style='overflow:auto' id='ObjectListViewport_Entry_Cover'>";
- $buffer.="<table class='ObjectListViewport_Entry_Table'>\n";
foreach ($objects as $value){
- $buffer.= $this->renderEntry($value);
+ $entries .= $this->renderEntry($value);
}
- $buffer.="</table>\n";
- $buffer.="</div>";
- /* Generate footer */
- $buffer.= $this->renderFooter();
+ /* Generate fixed headline */
+ $buffer = "
+ <table class='ObjectListViewport' id='ObjectListViewport".$this->id."' cellspacing=0 cellpadding=0>
+ <tr>
+ <td>
+ <table class='ObjectListViewport_Table' id='ObjectListViewport_Table".$this->id."' cellpadding=0 cellspacing=0 >
+ ".$header."
+ <tr>
+ <td class='ObjectListViewport_TD_Entries' id='ObjectListViewport_TD_Entries".$this->id."'>
+ <div class='ObjectListViewport_Entry_Cover' id='ObjectListViewport_Entry_Cover".$this->id."'>
+ <table class='ObjectListViewport_Entry_Table' id='ObjectListViewport_Entry_Table".$this->id."'>
+ ".$entries."
+ </table>
+ </div>
+ </td>
+ </tr>
+ ".$footer."
+ </table>
+
+ </td>
+ </tr>
+ </table>
+";
return ($buffer);
}
/* Each cell definition is seperated by |
* split by and go through each definition
*/
- $tmp = split("\|",trim($data,"|"));
- $cell_formats = array();
- foreach($tmp as $key => $data){
-
- $s_width = "";
- $s_alignment= "";
- $s_name = preg_replace("/\{[^\}]*+\}/","",$data);
- $s_style = "";
+ $this->headline= array();
+ $this->numberOfCols= 0;
+ $tmp= split("\|", trim($data, "|"));
+ $cell_formats= array();
+
+ foreach($tmp as $key => $dta){
+
+ $width= "";
+ $alignment= "";
+ $name= preg_replace("/\{[^\}]*+\}/", "", $dta);
+ $style= "";
/* Parse format string and detect width & alignment */
- if(preg_match("/\{.*\}/",$data)){
- $s_format= preg_replace("/^[^\{]*+\{([^\}]*).*$/","\\1",$data);
+ if(preg_match("/\{.*\}/", $dta)){
+ $format= preg_replace("/^[^\{]*+\{([^\}]*).*$/", "\\1", $dta);
/* Get aligment */
- if(preg_match("/:/",$s_format)){
- $s_al = preg_replace("/^[^:]*+:([a-z]*).*$/i","\\1",$s_format);
+ if(preg_match("/:/",$format)){
+ $al= preg_replace("/^[^:]*+:([a-z]*).*$/i", "\\1", $format);
- if(preg_match("/T/i",$s_al)){
- $s_alignment.= "top-" ;
- $s_style.= "vertical-align: top;";
+ if(preg_match("/T/i", $al)){
+ $alignment.= "top-";
+ $style.= "vertical-align: top;";
}
- if(preg_match("/B/i",$s_al)){
- $s_alignment.= "bottom-" ;
- $s_style.= "vertical-align: bottom;";
+ if(preg_match("/B/i", $al)){
+ $alignment.= "bottom-";
+ $style.= "vertical-align: bottom;";
}
- if(preg_match("/R/i",$s_al)){
- $s_alignment.= "right" ;
- $s_style.= "text-align: right;";
- }elseif(preg_match("/L/i",$s_al)){
- $s_alignment.= "left" ;
- $s_style.= "text-align: left;";
- }elseif(preg_match("/C/i",$s_al) || preg_match("/M/i",$s_al) ){
- $s_alignment.= "center" ;
- $s_style.= "text-align: center;";
+ if(preg_match("/R/i", $al)){
+ $alignment.= "right";
+ $style.= "text-align: right;";
+ }elseif(preg_match("/L/i", $al)){
+ $alignment.= "left";
+ $style.= "text-align: left;";
+ }elseif(preg_match("/C/i", $al) || preg_match("/M/i", $al) ){
+ $alignment.= "center";
+ $style.= "text-align: center;";
}
}
/* Get width */
- $s_width = preg_replace("/^([^:]*).*$/","\\1",$s_format);
- if(!empty($s_width)){
- $s_style = "width: ".$s_width.";";
+ $width = preg_replace("/^([^:]*).*$/","\\1", $format);
+ if(!empty($width)){
+ $style.= "width: ".$width.";";
}
-
- $cell_formats[$key] = array("name" => $s_name, "width" => $s_width, "alignment" => $s_alignment,"style" => $s_style);
}
+
+ $cell_formats[$key]= array("name" => $name, "width" => $width, "alignment" => $alignment, "style" => $style);
+ $this->numberOfCols++;
}
- return($cell_formats);
+ $this->headline= $cell_formats;
}
+ public function enableFooter($bool= TRUE){
+ $this->displayFooterFlag= $bool;
+ }
+
+
+ public function enableHeader($bool= TRUE){
+ $this->displayHeaderFlag= $bool;
+ }
}