diff --git a/workflow/engine/classes/class.propelTable.php b/workflow/engine/classes/class.propelTable.php
index c04251513..db491b6ed 100755
--- a/workflow/engine/classes/class.propelTable.php
+++ b/workflow/engine/classes/class.propelTable.php
@@ -1,6 +1,7 @@
.
+ * along with this program. If not, see .
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
- G::LoadClass('filterForm');
- G::LoadClass('xmlMenu');
- G::LoadClass("BasePeer" );
- G::LoadClass("ArrayPeer" );
+G::LoadClass( 'filterForm' );
+G::LoadClass( 'xmlMenu' );
+G::LoadClass( "BasePeer" );
+G::LoadClass( "ArrayPeer" );
/**
* Class pagedTable
- * @author David S. Callizaya S. *
+ *
+ * @author David S. Callizaya S. *
* @access public
* @package workflow.gulliver.system
- * dependencies TemplatePower Form XmlForm
+ * dependencies TemplatePower Form XmlForm
*/
class propelTable
{
- var $xmlFormFile;
- var $currentPage;
- var $orderBy = '';
- var $filter = array();
- var $filterType = array();
- var $searchBy = '';
- var $fastSearch='';
- var $order = '';
- var $template='templates/paged-table.html';
- var $tpl;
- var $style = array();
- var $rowsPerPage=25;
- var $ownerPage;
- var $popupPage;
- var $popupSubmit;
- var $popupWidth=450;
- var $popupHeight=200;
- var $ajaxServer;
- var $fields;
- var $query;
- var $totPages;
- var $totRows;
+ var $xmlFormFile;
+ var $currentPage;
+ var $orderBy = '';
+ var $filter = array ();
+ var $filterType = array ();
+ var $searchBy = '';
+ var $fastSearch = '';
+ var $order = '';
+ var $template = 'templates/paged-table.html';
+ var $tpl;
+ var $style = array ();
+ var $rowsPerPage = 25;
+ var $ownerPage;
+ var $popupPage;
+ var $popupSubmit;
+ var $popupWidth = 450;
+ var $popupHeight = 200;
+ var $ajaxServer;
+ var $fields;
+ var $query;
+ var $totPages;
+ var $totRows;
- //SQL QUERIES
- var $criteria;
- var $sql='';
- var $sqlWhere='';
- var $sqlGroupBy='';
- var $sqlSelect='SELECT 1';
- var $sqlDelete='';
- var $sqlInsert='';
- var $sqlUpdate='';
- var $fieldDataList='';
+ //SQL QUERIES
+ var $criteria;
+ var $sql = '';
+ var $sqlWhere = '';
+ var $sqlGroupBy = '';
+ var $sqlSelect = 'SELECT 1';
+ var $sqlDelete = '';
+ var $sqlInsert = '';
+ var $sqlUpdate = '';
+ var $fieldDataList = '';
- //Configuration
- var $xmlPopup='';
- var $addRow=false;
- var $deleteRow=false;
- var $editRow=false;
- var $notFields=' title button linknew begingrid2 endgrid2 '; // These are not considered to build the sql queries (update,insert,delete)
+ //Configuration
+ var $xmlPopup = '';
+ var $addRow = false;
+ var $deleteRow = false;
+ var $editRow = false;
+ var $notFields = ' title button linknew begingrid2 endgrid2 '; // These are not considered to build the sql queries (update,insert,delete)
- //JavaScript Object attributes
- var $onUpdateField="";
- var $onDeleteField="";
- var $afterDeleteField="";
- var $onInsertField="";
- //New gulliver
- var $xmlForm;
- var $menu='';
- var $filterForm='';
- var $filterForm_Id='';
- var $name='pagedTable';
- var $id='A1';
- var $disableFooter = false;
+ //JavaScript Object attributes
+ var $onUpdateField = "";
+ var $onDeleteField = "";
+ var $afterDeleteField = "";
+ var $onInsertField = "";
+
+ //New gulliver
+ var $xmlForm;
+ var $menu = '';
+ var $filterForm = '';
+ var $filterForm_Id = '';
+ var $name = 'pagedTable';
+ var $id = 'A1';
+ var $disableFooter = false;
//This attribute is used to set STYLES to groups of TD, using the field type "cellMark" (see XmlForm_Field_cellMark)
- var $tdStyle='';
- var $tdClass='';
- //Config Save definition
- var $__Configuration='orderBy,filter,fastSearch,style/*/showInTable';//order,rowsPerPage,disableFooter';
+ var $tdStyle = '';
+ var $tdClass = '';
+ //Config Save definition
+ var $__Configuration = 'orderBy,filter,fastSearch,style/*/showInTable'; //order,rowsPerPage,disableFooter';
- //Variable for MasterDetail feature
- var $masterdetail='';
- var $title;
- /**
- * Function prepareQuery
- * @author David S. Callizaya S.
- * @access public
- * @param string $limitPage
- * @return string
- */
- function prepareQuery( $limitPage = false )
- {
- // process the QuickSearch string and add the fields and expression needed to run the search
- if ( $this->searchBy !== '' ) {
- $aSB = explode('|', $this->searchBy); //fields are separated by pipes
- //subfilter
- $subFilter='';
- foreach($aSB as $sBy) {
- $subFilter .= ($subFilter !== '') ? ' OR ' : '';
- //TODO: Get DATABASE type from Criteria, I think sql delimeter is needed too
- $subFilter .= $sBy . ' LIKE "%'.
- G::sqlEscape($this->fastSearch ).'%"';
- }
- if ($subFilter !=='' ) {
- //Get the first defined table in Criteria.
- $aCurrentTables = $this->criteria->getTables();
- if ( isset($aCurrentTables[0])) {
- $this->criteria->add ( $aCurrentTables[0] . ".*", '('. $subFilter. ')' , Criteria::CUSTOM );
+ //Variable for MasterDetail feature
+ var $masterdetail = '';
+ var $title;
+
+ /**
+ * Function prepareQuery
+ *
+ * @author David S. Callizaya S.
+ * @access public
+ * @param string $limitPage
+ * @return string
+ */
+ function prepareQuery ($limitPage = false)
+ {
+ // process the QuickSearch string and add the fields and expression needed to run the search
+ if ($this->searchBy !== '') {
+ $aSB = explode( '|', $this->searchBy ); //fields are separated by pipes
+ //subfilter
+ $subFilter = '';
+ foreach ($aSB as $sBy) {
+ $subFilter .= ($subFilter !== '') ? ' OR ' : '';
+ //TODO: Get DATABASE type from Criteria, I think sql delimeter is needed too
+ $subFilter .= $sBy . ' LIKE "%' . G::sqlEscape( $this->fastSearch ) . '%"';
+ }
+ if ($subFilter !== '') {
+ //Get the first defined table in Criteria.
+ $aCurrentTables = $this->criteria->getTables();
+ if (isset( $aCurrentTables[0] )) {
+ $this->criteria->add( $aCurrentTables[0] . ".*", '(' . $subFilter . ')', Criteria::CUSTOM );
+ }
+ }
}
- }
+
+ //Merge sort array defined by USER with the array defined by SQL
+ parse_str( $this->order, $orderFields );
+ parse_str( $this->orderBy, $orderFields2 );
+ //User sort is more important (first in merge).
+ $orderFields3 = array_merge( $orderFields2, $orderFields );
+ //User sort is overwrites XMLs definition.
+ $orderFields = array_merge( $orderFields3, $orderFields2 );
+ //Order (BY SQL DEFINITION AND USER'S DEFINITION)
+ $this->aOrder = array ();
+ $order = '';
+ foreach ($orderFields as $field => $fieldOrder) {
+ $field = G::getUIDName( $field, '' );
+ $fieldOrder = strtoupper( $fieldOrder );
+ if ($fieldOrder === 'A')
+ $fieldOrder = 'ASC';
+ if ($fieldOrder === 'D')
+ $fieldOrder = 'DESC';
+ switch ($fieldOrder) {
+ case 'ASC':
+ case 'DESC':
+ if ($order !== '')
+ $order .= ', ';
+ $order .= $field . ' ' . $fieldOrder;
+ $this->aOrder[$field] = $fieldOrder;
+ }
+ }
+ //master detail :O
+ if (count( $this->masterdetail ) > 0) {
+ $this->criteria->clearOrderByColumns();
+ foreach ($this->masterdetail as $idMasterDetail => $fieldMasterDetail) {
+ $this->criteria->addAscendingOrderByColumn( $fieldMasterDetail );
+ }
+ }
+ if (! empty( $this->aOrder )) {
+ if (count( $this->masterdetail ) <= 0) {
+ $this->criteria->clearOrderByColumns();
+ }
+ foreach ($this->aOrder as $field => $ascending) {
+ if ($ascending == 'ASC')
+ $this->criteria->addAscendingOrderByColumn( $field );
+ else
+ $this->criteria->addDescendingOrderByColumn( $field );
+ }
+ }
+ /**
+ * Add limits
+ */
+ $this->criteria->setLimit( 0 );
+ $this->criteria->setOffset( 0 );
+ if ($this->criteria->getDbName() == 'dbarray') {
+ $this->totRows = ArrayBasePeer::doCount( $this->criteria );
+ } else {
+ $this->totRows = GulliverBasePeer::doCount( $this->criteria );
+ }
+ $this->totPages = ceil( $this->totRows / $this->rowsPerPage );
+ if ($limitPage) {
+ $this->criteria->setLimit( $this->rowsPerPage );
+ $this->criteria->setOffset( ($this->currentPage - 1) * $this->rowsPerPage );
+ }
+ return;
}
- //Merge sort array defined by USER with the array defined by SQL
- parse_str($this->order, $orderFields);
- parse_str($this->orderBy, $orderFields2);
- //User sort is more important (first in merge).
- $orderFields3 = array_merge($orderFields2, $orderFields);
- //User sort is overwrites XMLs definition.
- $orderFields = array_merge($orderFields3, $orderFields2);
- //Order (BY SQL DEFINITION AND USER'S DEFINITION)
- $this->aOrder = array();
- $order='';
- foreach ($orderFields as $field => $fieldOrder) {
- $field = G::getUIDName($field,'');
- $fieldOrder = strtoupper($fieldOrder);
- if ($fieldOrder==='A')
- $fieldOrder = 'ASC';
- if ($fieldOrder==='D')
- $fieldOrder = 'DESC';
- switch ( $fieldOrder ) {
- case 'ASC':
- case 'DESC':
- if ( $order !== '' )
- $order.=', ';
- $order .= $field . ' '. $fieldOrder;
- $this->aOrder[$field] = $fieldOrder;
- }
- }
- //master detail :O
- if(count($this->masterdetail) > 0){
- $this->criteria->clearOrderByColumns();
- foreach($this->masterdetail as $idMasterDetail => $fieldMasterDetail){
- $this->criteria->addAscendingOrderByColumn( $fieldMasterDetail );
- }
- }
- if (!empty($this->aOrder)) {
- if(count($this->masterdetail) <= 0) {
- $this->criteria->clearOrderByColumns();
- }
- foreach ($this->aOrder as $field => $ascending ) {
- if ( $ascending == 'ASC' )
- $this->criteria->addAscendingOrderByColumn ( $field );
+ /**
+ * Function setupFromXmlform
+ *
+ * @author David S. Callizaya S.
+ * editedby Hugo Loza
+ * @access public
+ * @param eter string xmlForm
+ * @return string
+ */
+ function setupFromXmlform ($xmlForm)
+ {
+ $this->xmlForm = $xmlForm;
+ //Config
+ $this->name = $xmlForm->name;
+ $this->id = $xmlForm->id;
+ //$this->sqlConnection=((isset($this->xmlForm->sqlConnection))?$this->xmlForm->sqlConnection:'');
+ if (isset( $_GET['page'] ))
+ $this->currentPage = $_GET['page'];
else
- $this->criteria->addDescendingOrderByColumn( $field );
- }
- }
- /** Add limits */
- $this->criteria->setLimit( 0 );
- $this->criteria->setOffset( 0 );
- if ( $this->criteria->getDbName() == 'dbarray' ) {
- $this->totRows = ArrayBasePeer::doCount( $this->criteria );
- }
- else {
- $this->totRows = GulliverBasePeer::doCount( $this->criteria );
- }
- $this->totPages = ceil( $this->totRows / $this->rowsPerPage);
- if ( $limitPage ) {
- $this->criteria->setLimit ( $this->rowsPerPage );
- $this->criteria->setOffset( ($this->currentPage-1) * $this->rowsPerPage );
- }
- return;
- }
-
- /**
- * Function setupFromXmlform
- *
- * @author David S. Callizaya S.
- * editedby Hugo Loza
- * @access public
- * @parameter string xmlForm
- * @return string
- */
- function setupFromXmlform($xmlForm)
- {
- $this->xmlForm = $xmlForm;
- //Config
- $this->name = $xmlForm->name;
- $this->id = $xmlForm->id;
- //$this->sqlConnection=((isset($this->xmlForm->sqlConnection))?$this->xmlForm->sqlConnection:'');
- if ( isset($_GET['page']))
- $this->currentPage = $_GET['page']; else $this->currentPage = 1;
- if ( isset($_GET['order']))
- $this->orderBy = urldecode($_GET['order']); else $this->orderBy = "";
- if ( isset($_GET['filter']))
- $this->filter = urldecode($_GET['filter']); else $this->filter = "";
- if ($xmlForm->ajaxServer != '') {
- $this->ajaxServer = G::encryptLink( $xmlForm->ajaxServer );
- }
- else {
- $this->ajaxServer = G::encryptLink( '../gulliver/propelTableAjax' );
- }
- $this->ownerPage = G::encryptLink( SYS_CURRENT_URI );
- // Config attributes from XMLFORM file
- $myAttributes = get_class_vars(get_class($this));
- foreach ($this->xmlForm->xmlform->tree->attribute as $atrib => $value)
- if (array_key_exists( $atrib, $myAttributes)) {
- eval('settype($value, gettype($this->' . $atrib.'));');
- if ($value !== '')
- eval( '$this->' . $atrib . '=$value;');
- }
- if($this->masterdetail!=""){
- $this->masterdetail=explode(",",$this->masterdetail);
- foreach($this->masterdetail as $keyMasterDetail => $valueMasterDetail){
- $this->masterdetail[$keyMasterDetail]=trim($valueMasterDetail);
- }
- }
- else{
- $this->masterdetail=array();
- }
- //Prepare the fields
- $this->style=array();$this->gridWidth="";$this->gridFields="";
- $this->fieldsType=array();
- foreach ($this->xmlForm->fields as $f => $v) {
- $r=$f;
- $this->fields[$r]['Name'] =$this->xmlForm->fields[$f]->name;
- $this->fields[$r]['Type'] =$this->xmlForm->fields[$f]->type;
- if (isset($this->xmlForm->fields[$f]->size))
- $this->fields[$r]['Size'] = $this->xmlForm->fields[$f]->size;
- $this->fields[$r]['Label']=$this->xmlForm->fields[$f]->label;
- }
- //Set the default settings
- $this->defaultStyle();
- //continue with the setup
- $this->gridWidth=''; $this->gridFields='';
- foreach($this->xmlForm->fields as $f => $v){
- $r=$f;
- //Parse the column properties
- foreach ($this->xmlForm->fields[$f] as $attribute => $value){
- if (!is_object($value)) {
- $this->style[$r][$attribute] = $value;
+ $this->currentPage = 1;
+ if (isset( $_GET['order'] ))
+ $this->orderBy = urldecode( $_GET['order'] );
+ else
+ $this->orderBy = "";
+ if (isset( $_GET['filter'] ))
+ $this->filter = urldecode( $_GET['filter'] );
+ else
+ $this->filter = "";
+ if ($xmlForm->ajaxServer != '') {
+ $this->ajaxServer = G::encryptLink( $xmlForm->ajaxServer );
+ } else {
+ $this->ajaxServer = G::encryptLink( '../gulliver/propelTableAjax' );
}
- }
- //Needed for javascript
- //only the visible columns's width and name are stored
- if ($this->style[$r]['showInTable']!='0'){
- $this->gridWidth.=','.$this->style[$r]['colWidth'];
- $this->gridFields.=',"form['.$this->fields[$r]['Name'].']"';
- }
+ $this->ownerPage = G::encryptLink( SYS_CURRENT_URI );
+ // Config attributes from XMLFORM file
+ $myAttributes = get_class_vars( get_class( $this ) );
+ foreach ($this->xmlForm->xmlform->tree->attribute as $atrib => $value)
+ if (array_key_exists( $atrib, $myAttributes )) {
+ eval( 'settype($value, gettype($this->' . $atrib . '));' );
+ if ($value !== '')
+ eval( '$this->' . $atrib . '=$value;' );
+ }
+ if ($this->masterdetail != "") {
+ $this->masterdetail = explode( ",", $this->masterdetail );
+ foreach ($this->masterdetail as $keyMasterDetail => $valueMasterDetail) {
+ $this->masterdetail[$keyMasterDetail] = trim( $valueMasterDetail );
+ }
+ } else {
+ $this->masterdetail = array ();
+ }
+ //Prepare the fields
+ $this->style = array ();
+ $this->gridWidth = "";
+ $this->gridFields = "";
+ $this->fieldsType = array ();
+ foreach ($this->xmlForm->fields as $f => $v) {
+ $r = $f;
+ $this->fields[$r]['Name'] = $this->xmlForm->fields[$f]->name;
+ $this->fields[$r]['Type'] = $this->xmlForm->fields[$f]->type;
+ if (isset( $this->xmlForm->fields[$f]->size ))
+ $this->fields[$r]['Size'] = $this->xmlForm->fields[$f]->size;
+ $this->fields[$r]['Label'] = $this->xmlForm->fields[$f]->label;
+ }
+ //Set the default settings
+ $this->defaultStyle();
+ //continue with the setup
+ $this->gridWidth = '';
+ $this->gridFields = '';
+ foreach ($this->xmlForm->fields as $f => $v) {
+ $r = $f;
+ //Parse the column properties
+ foreach ($this->xmlForm->fields[$f] as $attribute => $value) {
+ if (! is_object( $value )) {
+ $this->style[$r][$attribute] = $value;
+ }
+ }
+ //Needed for javascript
+ //only the visible columns's width and name are stored
+ if ($this->style[$r]['showInTable'] != '0') {
+ $this->gridWidth .= ',' . $this->style[$r]['colWidth'];
+ $this->gridFields .= ',"form[' . $this->fields[$r]['Name'] . ']"';
+ }
+ }
+ $totalWidth = 0;
+ foreach ($this->fields as $r => $rval)
+ if ($this->style[$r]['showInTable'] != '0')
+ $totalWidth += $this->style[$r]['colWidth'];
+ $this->totalWidth = $totalWidth;
}
- $totalWidth=0;
- foreach($this->fields as $r => $rval)
- if ($this->style[$r]['showInTable']!='0')
- $totalWidth += $this->style[$r]['colWidth'];
- $this->totalWidth = $totalWidth;
- }
-
- /**
- * Function count
- * @author David S. Callizaya S.
- * @access public
- * @return string
- */
- function count()
- {
- $this->prepareQuery();
- return $this->totRows;
- }
-
- /**
- * Function renderTitle
- * @author David S. Callizaya S.
- * @access public
- * @return string
- */
- function renderTitle()
- {
- //fix the bug about showing hidden fields in propel table.
- foreach($this->fields as $r => $rval) {
- if ( $this->style[$r]['type'] == 'hidden') $this->style[$r]['showInTable'] = '0';
+
+ /**
+ * Function count
+ *
+ * @author David S. Callizaya S.
+ * @access public
+ * @return string
+ */
+ function count ()
+ {
+ $this->prepareQuery();
+ return $this->totRows;
}
- //Render headers
- $this->colCount=0;
- $this->shownFields='[';
- foreach($this->fields as $r => $rval)
- if (($this->style[$r]['showInTable'] != '0' )&&(!(in_array($this->fields[$r]['Name'],$this->masterdetail)))){
- //if (($this->style[$r]['showInTable'] != '0' ))
- $this->tpl->newBlock( "headers" );
- $sortOrder = (((isset($this->aOrder[$this->fields[$r]['Name']])) && ($this->aOrder[$this->fields[$r]['Name']]==='ASC'))?'DESC':'ASC');
- $sortOrder = (((isset($this->aOrder[$this->fields[$r]['Name']])) && ($this->aOrder[$this->fields[$r]['Name']]==='DESC'))?'':$sortOrder);
- $this->style[$r]['href'] = $this->ownerPage . '?order=' .
- ( $sortOrder !=='' ? ( G::createUID('',$this->fields[$r]['Name'] ) . '=' . $sortOrder):'')
- . '&page=' . $this->currentPage;
- $this->style[$r]['onsort'] = $this->id . '.doSort("'.G::createUID('',$this->fields[$r]['Name']).'" , "' . $sortOrder.'");return false;';
- if (isset($this->style[$r]['href']))
- $this->tpl->assign( "href" , $this->style[$r]['href']);
- if (isset($this->style[$r]['onsort']))
- $this->tpl->assign( "onsort" , htmlentities( $this->style[$r]['onsort'] , ENT_QUOTES, 'UTF-8' ) );
-
- /* BUG 8080 - erik: don't setup onclick on page table header, doesn't have sense and causing problems
- if (isset($this->style[$r]['onclick']))
+
+ /**
+ * Function renderTitle
+ *
+ * @author David S. Callizaya S.
+ * @access public
+ * @return string
+ */
+ function renderTitle ()
+ {
+ //fix the bug about showing hidden fields in propel table.
+ foreach ($this->fields as $r => $rval) {
+ if ($this->style[$r]['type'] == 'hidden')
+ $this->style[$r]['showInTable'] = '0';
+ }
+ //Render headers
+ $this->colCount = 0;
+ $this->shownFields = '[';
+ foreach ($this->fields as $r => $rval)
+ if (($this->style[$r]['showInTable'] != '0') && (! (in_array( $this->fields[$r]['Name'], $this->masterdetail )))) {
+ //if (($this->style[$r]['showInTable'] != '0' ))
+ $this->tpl->newBlock( "headers" );
+ $sortOrder = (((isset( $this->aOrder[$this->fields[$r]['Name']] )) && ($this->aOrder[$this->fields[$r]['Name']] === 'ASC')) ? 'DESC' : 'ASC');
+ $sortOrder = (((isset( $this->aOrder[$this->fields[$r]['Name']] )) && ($this->aOrder[$this->fields[$r]['Name']] === 'DESC')) ? '' : $sortOrder);
+ $this->style[$r]['href'] = $this->ownerPage . '?order=' . ($sortOrder !== '' ? (G::createUID( '', $this->fields[$r]['Name'] ) . '=' . $sortOrder) : '') . '&page=' . $this->currentPage;
+ $this->style[$r]['onsort'] = $this->id . '.doSort("' . G::createUID( '', $this->fields[$r]['Name'] ) . '" , "' . $sortOrder . '");return false;';
+ if (isset( $this->style[$r]['href'] ))
+ $this->tpl->assign( "href", $this->style[$r]['href'] );
+ if (isset( $this->style[$r]['onsort'] ))
+ $this->tpl->assign( "onsort", htmlentities( $this->style[$r]['onsort'], ENT_QUOTES, 'UTF-8' ) );
+
+ /* BUG 8080 - erik: don't setup onclick on page table header, doesn't have sense and causing problems
+ if (isset($this->style[$r]['onclick']))
$this->tpl->assign( "onclick" , htmlentities( $this->style[$r]['onclick'] , ENT_QUOTES, 'UTF-8' ) );
*/
-
- if (isset($this->style[$r]['colWidth']))
- $this->tpl->assign( "width" , $this->style[$r]['colWidth'] );
- if (isset($this->style[$r]['colWidth']))
- $this->tpl->assign( "widthPercent" , ($this->style[$r]['colWidth']*100 / $this->totalWidth) . "%" );
- //Hook for special skin with RTL languajes
- if( defined('SYS_LANG_DIRECTION') && SYS_LANG_DIRECTION == 'R') {
- $this->style[$r]['titleAlign'] = 'right';
- }
- if (isset($this->style[$r]['titleAlign']))
- $this->tpl->assign( "align" , 'text-align:'.$this->style[$r]['titleAlign'].';');
- if ($this->style[$r]['titleVisibility']!='0') {
- $sortOrder = (((isset($this->aOrder[$this->fields[$r]['Name']])) && ($this->aOrder[$this->fields[$r]['Name']]==='ASC'))?'
':'');
- $sortOrder = (((isset($this->aOrder[$this->fields[$r]['Name']])) && ($this->aOrder[$this->fields[$r]['Name']]==='DESC'))?'
':$sortOrder);
- $this->tpl->assign( "header" , $this->fields[$r]['Label'] . $sortOrder );
- $this->tpl->assign('displaySeparator',
- (($this->colCount==0)||(!isset($this->fields[$r]['Label']))||($this->fields[$r]['Label']===''))?'display:none;':'');
- } else {
- $this->tpl->assign('displaySeparator','display:none;');
- }
- $this->colCount+=2;
- $this->shownFields.=($this->shownFields!=='[')?',':'';
- $this->shownFields.='"'.$r.'"';
- }
- $this->shownFields.=']';
- }
- /**
- * Function renderField
- * @author David S. Callizaya S.
- * @access public
- * @parameter string row
- * @parameter string r
- * @parameter string result
- * @return string
- */
- function renderField( $row, $r, $result)
- {
- global $G_DATE_FORMAT;
- //to do: special content??
- //$result['row__'] = $row; //Special content:
- $styleData = $this->style[$r];
- $fielDataName = $styleData['data'];
- $fieldClassName = isset( $styleData['colClassName']) && ($styleData['colClassName']) ? $styleData['colClassName'] : $this->tdClass;
- if ( $fielDataName != '' )
- $value = ((isset($result[ $fielDataName ])) ? $result[ $fielDataName ] : '' );
- else
- $value = $this->fields[$r]['Label'];
- $this->tpl->newBlock( "field" );
- $this->tpl->assign('width', $this->style[$r]['colWidth']);
- $classAttr = ( trim($fieldClassName) != '' ) ? " class=\"$fieldClassName\"" : '';
- $this->tpl->assign('classAttr', $classAttr );
- //to do: style is needed or not?
- //$this->tpl->assign('style', $this->tdStyle);
- $alignAttr = ( isset($this->style[$r]['align']) && strlen($this->style[$r]['align']>0) ) ? " align=\"" . $this->style[$r]['align'] . "\"" : '';
- $this->tpl->assign( "alignAttr" , $alignAttr);
- $fieldName = $this->fields[$r]['Name'];
- $fieldClass = get_class( $this->xmlForm->fields[ $fieldName ] );
- /*** BEGIN : Reeplace of @@, @%,... in field's attributes like onclick, link, */
- if (isset($this->xmlForm->fields[ $this->fields[$r]['Name'] ]->link)) {
- $this->xmlForm->fields[ $this->fields[$r]['Name'] ]->link
- = G::replaceDataField($this->style[$r]['link'],$result);
- }
- if (isset($this->xmlForm->fields[ $fieldName ]->value)) {
- $this->xmlForm->fields[ $fieldName ]->value = G::replaceDataField($styleData['value'],$result);
- }
- /*** END : Reeplace of @@, @%,... */
- /*** Rendering of the field */
- $this->xmlForm->fields[ $fieldName ]->mode = 'view';
- $this->xmlForm->setDefaultValues();
- $this->xmlForm->setValues( $result );
- //var_dump($fieldName, $fieldClass );echo '
';
- if ( array_search( 'renderTable', get_class_methods( $fieldClass ) )!== FALSE ) {
- $htmlField = $this->xmlForm->fields[ $fieldName ]->renderTable( $value, $this->xmlForm, true );
- if(is_object($value)){
- $value = '';
- }
- // checking if the value variable is a html field, a html tag content can't contain as white spaces
- $testValue = preg_match( "/(.*)<\/a>/i", $htmlField, $value);
- $this->tpl->assign( "value" , $htmlField );
- if ($testValue>0 && (isset($value[1]) && strlen(trim($value[1])) == 0 )) {
- if ((trim($value[0])) == '')
- $this->tpl->assign( "value" , " " );
- // $this->tpl->assign( "value" , (preg_match('^[[:space:]]^', $value) && (substr($fieldName,0,3)!="PRO"))? str_ireplace(" "," ",$htmlField):$htmlField );
- } else {
- $this->tpl->assign( "value" , $htmlField );
- }
-
- /* $testValue = preg_match( "/<\/?\w+((\s+(\w|\w[\w-]*\w)(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)\/?>/i", $value, $matches ); */
-// if (empty($matches)){
-// $this->tpl->assign( "value" , (preg_match('^[[:space:]]^', $value) && (substr($fieldName,0,3)!="PRO"))? str_ireplace(" "," ",$htmlField):$htmlField );
-// } else {
-// $this->tpl->assign( "value" , $htmlField );
-// }
- }
- return $this->fields[$r]['Type'];
- }
-
- /**
- * Function defaultStyle
- * @author David S. Callizaya S.
- * @access public
- * @return string
- */
- function defaultStyle()
- {
- foreach($this->fields as $r => $rval) {
- $this->style[$r]=array( 'showInTable' => '1',
- 'titleVisibility' => '1',
- 'colWidth' => '150',
- 'onclick' => '',
- 'event' => '' );
- //Some widths
- if (!(strpos(' date linknew ', ' ' . $this->fields[$r]['Type']. ' ')===FALSE))
- $this->style[$r]['colWidth']='70';
- //Data source:
- if (!(strpos(' title button linknew image-text jslink ', ' ' . $this->fields[$r]['Type']. ' ')===FALSE))
- $this->style[$r]['data']=''; //If the control is a link it shows the label
- else
- $this->style[$r]['data']=$this->fields[$r]['Name']; //ELSE: The data value for that field
- //Hidden fields
- if (!isset($this->style[$r]['showInTable'])) {
- if (!(strpos(' title button endgrid2 submit password ', ' ' . $this->fields[$r]['Type']. ' ')===FALSE)){
- $this->style[$r]['showInTable']='0';
- }
- else{
- $this->style[$r]['showInTable']='1';
- }
- }
- //Hidden titles
- if (!(strpos(' linknew button endgrid2 ', ' ' . $this->fields[$r]['Type']. ' ')===FALSE)) {
- $this->style[$r]['titleVisibility']='0';
- }
- //Align titles
- $this->style[$r]['titleAlign']='center';
- //Align fields
- if (defined('SYS_LANG_DIRECTION') && SYS_LANG_DIRECTION == 'R')
- $this->style[$r]['align']='right';
- else
- $this->style[$r]['align']='left';
- if (!(strpos(' linknew date ', ' ' . $this->fields[$r]['Type']. ' ')===FALSE)) {
- $this->style[$r]['align']='center';
- }
- }
- // Adjust the columns width to prevent overflow the page width
- //Render headers
- $totalWidth=0;
- foreach($this->fields as $r => $rval)
- if ($this->style[$r]['showInTable']!='0')
- $totalWidth += $this->style[$r]['colWidth'];
- $this->totalWidth = $totalWidth;
- $maxWidth=1800;
- $proportion=$totalWidth/$maxWidth;
- if ($proportion>1)
- $this->totalWidth = 1800;
- if ($proportion>1)
- foreach($this->fields as $r => $rval)
- if ($this->style[$r]['showInTable']!='0')
- $this->style[$r]['colWidth']=$this->style[$r]['colWidth']/$proportion;
- }
-
- /**
- * Function renderTable
- * @author David S. Callizaya S.
- * @parameter $block : = 'content'(Prints contentBlock only)
- * @access public
- * @return string
- */
- function renderTable( $block = '', $fields = '' )
- {
- //Render Title
- $thereisnotitle=true;
- foreach($this->fields as $r => $rval)
- if ($this->fields[$r]['Type']==='title'){
- $this->title = $this->fields[$r]['Label'];
- unset($this->fields[$r]);
- $thereisnotitle=false;
- }
- if ($thereisnotitle){
- $this->title = '';
- }
- $oHeadPublisher =& headPublisher::getSingleton();
- $oHeadPublisher->addInstanceModule('leimnud', 'panel');
- $time_start = microtime(true);
- $this->prepareQuery( true );
- $time_end = microtime(true); $time = $time_end - $time_start;
- // verify if there are templates folders registered, template and method folders are the same
- $folderTemplate = explode ( '/',$this->template );
- $oPluginRegistry =& PMPluginRegistry::getSingleton();
- if ( $oPluginRegistry->isRegisteredFolder( $folderTemplate[0] ) )
- $templateFile = PATH_PLUGINS . $this->template. '.html';
- else
- $templateFile = PATH_TPL . $this->template. '.html';
- // Prepare the template
- $this->tpl = new TemplatePower( $templateFile );
- $this->tpl->prepare();
- if(is_array($fields)) {
- foreach ( $fields as $key =>$val ) {
- $this->tpl->assignGlobal( $key , $val ); //Changed to Global by JHL on Dec 14,2009.. then thes fields are available for all Blocks
- }
- }
- /********** HEAD BLOCK ***************/
- if (($block ==='') || ($block==='head')) {
- $this->tpl->newBlock('headBlock');
- $this->tpl->assign( 'pagedTable_Id' , $this->id );
- $this->tpl->assign( 'pagedTable_Name' , $this->name );
- $this->tpl->assign( 'pagedTable_Height' , $this->xmlForm->height );
- $this->tpl->assign( "title", $this->title);
- if (file_exists($this->xmlForm->home . $this->filterForm . '.xml')) {
- $filterForm = new filterForm( $this->filterForm , $this->xmlForm->home );
- if ($this->menu==='')
- $this->menu= 'gulliver/pagedTable_Options';
- }
- if (file_exists($this->xmlForm->home . $this->menu . '.xml')) {
- $menu = new xmlMenu( $this->menu , $this->xmlForm->home );
- $this->tpl->newBlock('headerBlock');
- $template = PATH_CORE . 'templates' . PATH_SEP . $menu->type . '.html';
- $menu->setValues($this->xmlForm->values);
- $menu->setValues(array( 'PAGED_TABLE_ID' => $this->id ));
- if (isset($filterForm->name)) {
- $menu->setValues(array('SEARCH_FILTER_FORM' => $filterForm->name));
- }
- $this->tpl->assign( 'content' , $menu->render( $template , $scriptCode ) );
- $oHeadPublisher->addScriptFile( $menu->scriptURL );
- $oHeadPublisher->addScriptCode( $scriptCode );
- }
- if (file_exists($this->xmlForm->home . $this->filterForm . '.xml')) {
- $this->tpl->newBlock('headerBlock');
- $this->filterForm_Id = $filterForm->id;
- $filterForm->type = 'filterform';
- $filterForm->ajaxServer = '../gulliver/defaultAjax';
- $template = PATH_CORE . 'templates/' . $filterForm->type . '.html';
- $filterForm->setValues($this->xmlForm->values);
- $filterForm->setValues(array('PAGED_TABLE_ID' => $this->id ));
- $filterForm->setValues(array( 'PAGED_TABLE_FAST_SEARCH' => $this->fastSearch ));
- $this->tpl->assign( 'content' , $filterForm->render( $template , $scriptCode ) );
- $oHeadPublisher->addScriptFile( $filterForm->scriptURL );
- $oHeadPublisher->addScriptCode( $scriptCode );
- if (isset($_SESSION))
- $_SESSION[$filterForm->id]=$filterForm->values;
- }
-
+ if (isset( $this->style[$r]['colWidth'] ))
+ $this->tpl->assign( "width", $this->style[$r]['colWidth'] );
+ if (isset( $this->style[$r]['colWidth'] ))
+ $this->tpl->assign( "widthPercent", ($this->style[$r]['colWidth'] * 100 / $this->totalWidth) . "%" );
+ //Hook for special skin with RTL languajes
+ if (defined( 'SYS_LANG_DIRECTION' ) && SYS_LANG_DIRECTION == 'R') {
+ $this->style[$r]['titleAlign'] = 'right';
+ }
+ if (isset( $this->style[$r]['titleAlign'] ))
+ $this->tpl->assign( "align", 'text-align:' . $this->style[$r]['titleAlign'] . ';' );
+ if ($this->style[$r]['titleVisibility'] != '0') {
+ $sortOrder = (((isset( $this->aOrder[$this->fields[$r]['Name']] )) && ($this->aOrder[$this->fields[$r]['Name']] === 'ASC')) ? '
' : '');
+ $sortOrder = (((isset( $this->aOrder[$this->fields[$r]['Name']] )) && ($this->aOrder[$this->fields[$r]['Name']] === 'DESC')) ? '
' : $sortOrder);
+ $this->tpl->assign( "header", $this->fields[$r]['Label'] . $sortOrder );
+ $this->tpl->assign( 'displaySeparator', (($this->colCount == 0) || (! isset( $this->fields[$r]['Label'] )) || ($this->fields[$r]['Label'] === '')) ? 'display:none;' : '' );
+ } else {
+ $this->tpl->assign( 'displaySeparator', 'display:none;' );
+ }
+ $this->colCount += 2;
+ $this->shownFields .= ($this->shownFields !== '[') ? ',' : '';
+ $this->shownFields .= '"' . $r . '"';
+ }
+ $this->shownFields .= ']';
}
- /********** CONTENT BLOCK ***************/
- if (($block ==='') || ($block==='content')) {
- $this->tpl->newBlock('contentBlock');
- $this->tpl->assign('gridWidth','=['. substr($this->gridWidth,1) .']');
- $this->tpl->assign('fieldNames','=['. substr($this->gridFields,1) .']');
- $this->tpl->assign('ajaxUri','="'. addslashes($this->ajaxServer) . '"');
- $this->tpl->assign('currentUri','="'. addslashes($this->ownerPage) . '"');
- $this->tpl->assign('currentOrder','="'. addslashes($this->orderBy) . '"');
- $this->tpl->assign('currentPage','='. $this->currentPage );
- $this->tpl->assign('currentFilter','="' . '"');
- $this->tpl->assign('totalRows','=' . $this->totRows );
- $this->tpl->assign('rowsPerPage','='.$this->rowsPerPage);
- $this->tpl->assign('popupPage','="'. addslashes($this->popupPage) . '"');
- $this->tpl->assign('popupWidth','='.$this->popupWidth);
- $this->tpl->assign('popupHeight','='.$this->popupHeight);
- $this->tpl->assign('pagedTable_Id', $this->id );
- $this->tpl->assign('pagedTable_Name', $this->name );
- $this->tpl->assign("pagedTable_JS" , "{$this->id}.element=document.getElementById('pagedtable[{$this->id}]');");
- $this->renderTitle();
- //Render rows
- if ( $this->criteria->getDbName() == 'dbarray' ) {
- $rs = ArrayBasePeer::doSelectRs ( $this->criteria);
- }
- else {
- $rs = GulliverBasePeer::doSelectRs ( $this->criteria);
- }
- $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
- /*
+ /**
+ * Function renderField
+ *
+ * @author David S. Callizaya S.
+ * @access public
+ * @param eter string row
+ * @param eter string r
+ * @param eter string result
+ * @return string
+ */
+ function renderField ($row, $r, $result)
+ {
+ global $G_DATE_FORMAT;
+ //to do: special content??
+ //$result['row__'] = $row; //Special content:
+ $styleData = $this->style[$r];
+ $fielDataName = $styleData['data'];
+ $fieldClassName = isset( $styleData['colClassName'] ) && ($styleData['colClassName']) ? $styleData['colClassName'] : $this->tdClass;
+ if ($fielDataName != '')
+ $value = ((isset( $result[$fielDataName] )) ? $result[$fielDataName] : '');
+ else
+ $value = $this->fields[$r]['Label'];
+ $this->tpl->newBlock( "field" );
+ $this->tpl->assign( 'width', $this->style[$r]['colWidth'] );
+ $classAttr = (trim( $fieldClassName ) != '') ? " class=\"$fieldClassName\"" : '';
+ $this->tpl->assign( 'classAttr', $classAttr );
+ //to do: style is needed or not?
+ //$this->tpl->assign('style', $this->tdStyle);
+ $alignAttr = (isset( $this->style[$r]['align'] ) && strlen( $this->style[$r]['align'] > 0 )) ? " align=\"" . $this->style[$r]['align'] . "\"" : '';
+ $this->tpl->assign( "alignAttr", $alignAttr );
+ $fieldName = $this->fields[$r]['Name'];
+ $fieldClass = get_class( $this->xmlForm->fields[$fieldName] );
+ /**
+ * * BEGIN : Reeplace of @@, @%,...
+ * in field's attributes like onclick, link,
+ */
+ if (isset( $this->xmlForm->fields[$this->fields[$r]['Name']]->link )) {
+ $this->xmlForm->fields[$this->fields[$r]['Name']]->link = G::replaceDataField( $this->style[$r]['link'], $result );
+ }
+ if (isset( $this->xmlForm->fields[$fieldName]->value )) {
+ $this->xmlForm->fields[$fieldName]->value = G::replaceDataField( $styleData['value'], $result );
+ }
+ /**
+ * * END : Reeplace of @@, @%,...
+ */
+ /**
+ * * Rendering of the field
+ */
+ $this->xmlForm->fields[$fieldName]->mode = 'view';
+ $this->xmlForm->setDefaultValues();
+ $this->xmlForm->setValues( $result );
+ //var_dump($fieldName, $fieldClass );echo '
';
+ if (array_search( 'renderTable', get_class_methods( $fieldClass ) ) !== FALSE) {
+ $htmlField = $this->xmlForm->fields[$fieldName]->renderTable( $value, $this->xmlForm, true );
+ if (is_object( $value )) {
+ $value = '';
+ }
+ // checking if the value variable is a html field, a html tag content can't contain as white spaces
+ $testValue = preg_match( "/(.*)<\/a>/i", $htmlField, $value );
+ $this->tpl->assign( "value", $htmlField );
+ if ($testValue > 0 && (isset( $value[1] ) && strlen( trim( $value[1] ) ) == 0)) {
+ if ((trim( $value[0] )) == '')
+ $this->tpl->assign( "value", " " );
+ // $this->tpl->assign( "value" , (preg_match('^[[:space:]]^', $value) && (substr($fieldName,0,3)!="PRO"))? str_ireplace(" "," ",$htmlField):$htmlField );
+ } else {
+ $this->tpl->assign( "value", $htmlField );
+ }
+
+ /* $testValue = preg_match( "/<\/?\w+((\s+(\w|\w[\w-]*\w)(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)\/?>/i", $value, $matches ); */
+ // if (empty($matches)){
+ // $this->tpl->assign( "value" , (preg_match('^[[:space:]]^', $value) && (substr($fieldName,0,3)!="PRO"))? str_ireplace(" "," ",$htmlField):$htmlField );
+ // } else {
+ // $this->tpl->assign( "value" , $htmlField );
+ // }
+ }
+ return $this->fields[$r]['Type'];
+ }
+
+ /**
+ * Function defaultStyle
+ *
+ * @author David S. Callizaya S.
+ * @access public
+ * @return string
+ */
+ function defaultStyle ()
+ {
+ foreach ($this->fields as $r => $rval) {
+ $this->style[$r] = array ('showInTable' => '1','titleVisibility' => '1','colWidth' => '150','onclick' => '','event' => ''
+ );
+ //Some widths
+ if (! (strpos( ' date linknew ', ' ' . $this->fields[$r]['Type'] . ' ' ) === FALSE))
+ $this->style[$r]['colWidth'] = '70';
+ //Data source:
+ if (! (strpos( ' title button linknew image-text jslink ', ' ' . $this->fields[$r]['Type'] . ' ' ) === FALSE))
+ $this->style[$r]['data'] = ''; //If the control is a link it shows the label
+ else
+ $this->style[$r]['data'] = $this->fields[$r]['Name']; //ELSE: The data value for that field
+ //Hidden fields
+ if (! isset( $this->style[$r]['showInTable'] )) {
+ if (! (strpos( ' title button endgrid2 submit password ', ' ' . $this->fields[$r]['Type'] . ' ' ) === FALSE)) {
+ $this->style[$r]['showInTable'] = '0';
+ } else {
+ $this->style[$r]['showInTable'] = '1';
+ }
+ }
+ //Hidden titles
+ if (! (strpos( ' linknew button endgrid2 ', ' ' . $this->fields[$r]['Type'] . ' ' ) === FALSE)) {
+ $this->style[$r]['titleVisibility'] = '0';
+ }
+ //Align titles
+ $this->style[$r]['titleAlign'] = 'center';
+ //Align fields
+ if (defined( 'SYS_LANG_DIRECTION' ) && SYS_LANG_DIRECTION == 'R')
+ $this->style[$r]['align'] = 'right';
+ else
+ $this->style[$r]['align'] = 'left';
+ if (! (strpos( ' linknew date ', ' ' . $this->fields[$r]['Type'] . ' ' ) === FALSE)) {
+ $this->style[$r]['align'] = 'center';
+ }
+ }
+ // Adjust the columns width to prevent overflow the page width
+ //Render headers
+ $totalWidth = 0;
+ foreach ($this->fields as $r => $rval)
+ if ($this->style[$r]['showInTable'] != '0')
+ $totalWidth += $this->style[$r]['colWidth'];
+ $this->totalWidth = $totalWidth;
+ $maxWidth = 1800;
+ $proportion = $totalWidth / $maxWidth;
+ if ($proportion > 1)
+ $this->totalWidth = 1800;
+ if ($proportion > 1)
+ foreach ($this->fields as $r => $rval)
+ if ($this->style[$r]['showInTable'] != '0')
+ $this->style[$r]['colWidth'] = $this->style[$r]['colWidth'] / $proportion;
+ }
+
+ /**
+ * Function renderTable
+ *
+ * @author David S. Callizaya S.
+ * @param eter $block : = 'content'(Prints contentBlock only)
+ * @access public
+ * @return string
+ */
+ function renderTable ($block = '', $fields = '')
+ {
+ //Render Title
+ $thereisnotitle = true;
+ foreach ($this->fields as $r => $rval)
+ if ($this->fields[$r]['Type'] === 'title') {
+ $this->title = $this->fields[$r]['Label'];
+ unset( $this->fields[$r] );
+ $thereisnotitle = false;
+ }
+ if ($thereisnotitle) {
+ $this->title = '';
+ }
+ $oHeadPublisher = & headPublisher::getSingleton();
+ $oHeadPublisher->addInstanceModule( 'leimnud', 'panel' );
+ $time_start = microtime( true );
+ $this->prepareQuery( true );
+ $time_end = microtime( true );
+ $time = $time_end - $time_start;
+ // verify if there are templates folders registered, template and method folders are the same
+ $folderTemplate = explode( '/', $this->template );
+ $oPluginRegistry = & PMPluginRegistry::getSingleton();
+ if ($oPluginRegistry->isRegisteredFolder( $folderTemplate[0] ))
+ $templateFile = PATH_PLUGINS . $this->template . '.html';
+ else
+ $templateFile = PATH_TPL . $this->template . '.html';
+ // Prepare the template
+ $this->tpl = new TemplatePower( $templateFile );
+ $this->tpl->prepare();
+ if (is_array( $fields )) {
+ foreach ($fields as $key => $val) {
+ $this->tpl->assignGlobal( $key, $val ); //Changed to Global by JHL on Dec 14,2009.. then thes fields are available for all Blocks
+ }
+ }
+ /**
+ * ******** HEAD BLOCK **************
+ */
+ if (($block === '') || ($block === 'head')) {
+ $this->tpl->newBlock( 'headBlock' );
+ $this->tpl->assign( 'pagedTable_Id', $this->id );
+ $this->tpl->assign( 'pagedTable_Name', $this->name );
+ $this->tpl->assign( 'pagedTable_Height', $this->xmlForm->height );
+ $this->tpl->assign( "title", $this->title );
+ if (file_exists( $this->xmlForm->home . $this->filterForm . '.xml' )) {
+ $filterForm = new filterForm( $this->filterForm, $this->xmlForm->home );
+ if ($this->menu === '')
+ $this->menu = 'gulliver/pagedTable_Options';
+ }
+ if (file_exists( $this->xmlForm->home . $this->menu . '.xml' )) {
+ $menu = new xmlMenu( $this->menu, $this->xmlForm->home );
+ $this->tpl->newBlock( 'headerBlock' );
+ $template = PATH_CORE . 'templates' . PATH_SEP . $menu->type . '.html';
+ $menu->setValues( $this->xmlForm->values );
+ $menu->setValues( array ('PAGED_TABLE_ID' => $this->id
+ ) );
+ if (isset( $filterForm->name )) {
+ $menu->setValues( array ('SEARCH_FILTER_FORM' => $filterForm->name
+ ) );
+ }
+ $this->tpl->assign( 'content', $menu->render( $template, $scriptCode ) );
+ $oHeadPublisher->addScriptFile( $menu->scriptURL );
+ $oHeadPublisher->addScriptCode( $scriptCode );
+ }
+ if (file_exists( $this->xmlForm->home . $this->filterForm . '.xml' )) {
+ $this->tpl->newBlock( 'headerBlock' );
+ $this->filterForm_Id = $filterForm->id;
+ $filterForm->type = 'filterform';
+ $filterForm->ajaxServer = '../gulliver/defaultAjax';
+ $template = PATH_CORE . 'templates/' . $filterForm->type . '.html';
+ $filterForm->setValues( $this->xmlForm->values );
+ $filterForm->setValues( array ('PAGED_TABLE_ID' => $this->id
+ ) );
+ $filterForm->setValues( array ('PAGED_TABLE_FAST_SEARCH' => $this->fastSearch
+ ) );
+ $this->tpl->assign( 'content', $filterForm->render( $template, $scriptCode ) );
+ $oHeadPublisher->addScriptFile( $filterForm->scriptURL );
+ $oHeadPublisher->addScriptCode( $scriptCode );
+ if (isset( $_SESSION ))
+ $_SESSION[$filterForm->id] = $filterForm->values;
+ }
+
+ }
+
+ /**
+ * ******** CONTENT BLOCK **************
+ */
+ if (($block === '') || ($block === 'content')) {
+ $this->tpl->newBlock( 'contentBlock' );
+ $this->tpl->assign( 'gridWidth', '=[' . substr( $this->gridWidth, 1 ) . ']' );
+ $this->tpl->assign( 'fieldNames', '=[' . substr( $this->gridFields, 1 ) . ']' );
+ $this->tpl->assign( 'ajaxUri', '="' . addslashes( $this->ajaxServer ) . '"' );
+ $this->tpl->assign( 'currentUri', '="' . addslashes( $this->ownerPage ) . '"' );
+ $this->tpl->assign( 'currentOrder', '="' . addslashes( $this->orderBy ) . '"' );
+ $this->tpl->assign( 'currentPage', '=' . $this->currentPage );
+ $this->tpl->assign( 'currentFilter', '="' . '"' );
+ $this->tpl->assign( 'totalRows', '=' . $this->totRows );
+ $this->tpl->assign( 'rowsPerPage', '=' . $this->rowsPerPage );
+ $this->tpl->assign( 'popupPage', '="' . addslashes( $this->popupPage ) . '"' );
+ $this->tpl->assign( 'popupWidth', '=' . $this->popupWidth );
+ $this->tpl->assign( 'popupHeight', '=' . $this->popupHeight );
+ $this->tpl->assign( 'pagedTable_Id', $this->id );
+ $this->tpl->assign( 'pagedTable_Name', $this->name );
+ $this->tpl->assign( "pagedTable_JS", "{$this->id}.element=document.getElementById('pagedtable[{$this->id}]');" );
+ $this->renderTitle();
+ //Render rows
+ if ($this->criteria->getDbName() == 'dbarray') {
+ $rs = ArrayBasePeer::doSelectRs( $this->criteria );
+ } else {
+ $rs = GulliverBasePeer::doSelectRs( $this->criteria );
+ }
+ $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ /*
print "";
$rs->next();
$row = $rs->getRow();
@@ -606,154 +631,153 @@ class propelTable
$row = $rs->getRow();
}
print "
"; die;*/
- $gridRows=0;
- $rs->next();
- //Initialize the array of breakFields for Master Detail View
- foreach($this->masterdetail as $keyMasterDetail => $fieldMasterDetail){
- $breakField[$fieldMasterDetail]="novaluehere";
- }
- $breakFieldKeys=array_flip($this->masterdetail);
- for($j=0;$j< $rs->getRecordCount() ;$j++) {
- $result = $rs->getRow();
- $rs->next();
- $gridRows++;
- $this->tpl->newBlock( "row" );
- $this->tpl->assign( "class" , "Row".(($j%2)+1));
- $this->tdStyle='';
- $this->tdClass='';
- //Start Master Detail: This enable the MasterDEtail view. By JHL November 2008
- if(count($this->masterdetail)>0){
- //TODO: Validate if there is a Field that doesn't exist
- //TODO: Style
- //TODO: Improve Collapse function....
- foreach($this->masterdetail as $keyMasterDetail => $fieldMasterDetail){
- if($breakField[$fieldMasterDetail]!=$result[$fieldMasterDetail]){
- $this->tpl->newBlock( "rowMaster" );
- $this->tpl->newBlock( "fieldMaster" );
- $this->tpl->assign( "alignAttr" , " colspan=".(count($this->fields)*2));
- $this->tpl->assign( "value" ,$this->fields[$fieldMasterDetail]['Label']==""?"": $this->fields[$fieldMasterDetail]['Label'].": ".$this->xmlForm->fields[ $fieldMasterDetail ]->renderTable( $result[$fieldMasterDetail], $this->xmlForm, true ));
- $breakField[$fieldMasterDetail]=$result[$fieldMasterDetail];
- for($i=$breakFieldKeys[$fieldMasterDetail]+1;$imasterdetail[$i]]="novaluehere";
- }
- $rowName=array();
- foreach($breakField as $key => $value){
- if($value!="novaluehere"){
- $rowName[$key]=$key."_".$value;
- }
- }
- $this->tpl->assign( "masterRowName" , implode(",",$rowName));
- $this->tpl->assign( 'pagedTable_Name' , $this->name );
- $many="";
- $this->tpl->assign( "value1" ,str_pad($many, count($rowName)-1 , "-") );
- $this->tpl->gotoblock("rowMaster");
- $this->tpl->assign( "masterRowName" , "_MD_".implode(",",$rowName));
- $this->tpl->assign( "masterRowClass" , $keyMasterDetail==0?"masterDetailMain":"masterDetailOther");
+ $gridRows = 0;
+ $rs->next();
+ //Initialize the array of breakFields for Master Detail View
+ foreach ($this->masterdetail as $keyMasterDetail => $fieldMasterDetail) {
+ $breakField[$fieldMasterDetail] = "novaluehere";
}
- }
- $this->tpl->gotoblock("row");
- if ( !isset($rowName) ) $rowName = array();
- $this->tpl->assign( "rowName" , implode(",",$rowName));
- }
- //End Master Detail: This enable the MasterDEtail view
- //Merge $result with $xmlForm values (for default valuesSettings)
- if ( is_array ( $this->xmlForm->values ) )
- $result = array_merge($this->xmlForm->values, $result);
- foreach($this->fields as $r => $rval){
- if (strcasecmp($this->fields[$r]['Type'],'cellMark')==0){
- $result1 = $result;
- $result1['row__'] = $j+1;
- $result1 = array_merge($this->xmlForm->values, $result1);
- $this->xmlForm->setDefaultValues();
- $this->xmlForm->setValues( $result1 );
- $this->tdStyle = $this->xmlForm->fields[ $this->fields[$r]['Name'] ]->tdStyle( $result1 , $this->xmlForm );
- $this->tdClass = $this->xmlForm->fields[ $this->fields[$r]['Name'] ]->tdClass( $result1 , $this->xmlForm );
- }
- elseif ($this->style[$r]['showInTable'] != '0' ){
- if (($this->style[$r]['showInTable'] != '0' )&&(!(in_array($this->fields[$r]['Name'],$this->masterdetail))))
- $this->renderField($j+1,$r,$result);
- }
- }
- }
- $this->tpl->assign('_ROOT.gridRows','='. $gridRows); //number of rows in the current page
- $this->tpl->newBlock('rowTag');
- $this->tpl->assign('rowId','insertAtLast');
- if( $this->currentPage > 1 ) {
- $firstUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=1';
- $firstAjax = $this->id . ".doGoToPage(1);return false;";
- $prevpage = $this->currentPage - 1;
- $prevUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $prevpage;
- $prevAjax = $this->id . ".doGoToPage(".$prevpage.");return false;";
- $first = " ";
- $prev = " ";
- }
- else{
- $first = " ";
- $prev = " ";
- }
- if( $this->currentPage < $this->totPages ) {
- $lastUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $this->totPages;
- $lastAjax = $this->id . ".doGoToPage(" .$this->totPages.");return false;";
- $nextpage = $this->currentPage + 1;
- $nextUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $nextpage;
- $nextAjax = $this->id . ".doGoToPage(" .$nextpage.");return false;";
- $next = " ";
- $last = " ";
- }
- else{
- $next = " ";
- $last = " ";
- }
- $pagesEnum='';
- for ($r=1;$r<=$this->totPages;$r++)
- if (($r>=($this->currentPage-5))&&($r<=($this->currentPage+5))){
- $pageAjax = $this->id . ".doGoToPage(" .$r.");return false;";
- if ($r!=$this->currentPage)
- $pagesEnum.=" ownerPage . '?order=' . $this->orderBy . '&page=' . $r , ENT_QUOTES , 'utf-8' ) . "\" onclick=\"".$pageAjax."\">".$r."";
- else
- $pagesEnum.=" ".$r."";
- }
- if ($this->totRows === 0) {
- $this->tpl->newBlock( 'norecords' );
- $this->tpl->assign( "columnCount", $this->colCount);
- $noRecordsFound='ID_NO_RECORDS_FOUND';
- if (G::LoadTranslation($noRecordsFound)) $noRecordsFound = G::LoadTranslation($noRecordsFound);
- $this->tpl->assign( "noRecordsFound", $noRecordsFound);
- }
- if (!$this->disableFooter) {
- $this->tpl->newBlock( "bottomFooter" );
- $this->tpl->assign( "columnCount", $this->colCount);
- $this->tpl->assign( "pagedTableId" , $this->id );
- if (($this->totRows !== 0)) {
- if ($this->totPages>1){
- $this->tpl->assign( "first" , $first );
- $this->tpl->assign( "prev" , $prev );
- $this->tpl->assign( "next" , $next );
- $this->tpl->assign( "last" , $last );
- }
- $this->tpl->assign( "currentPage" , $this->currentPage );
- $this->tpl->assign( "totalPages" , $this->totPages );
- $firstRow = ($this->currentPage-1) * $this->rowsPerPage+1;
- $lastRow = $firstRow+$rs->getRecordCount()-1;
- $this->tpl->assign( "firstRow" , $firstRow );
- $this->tpl->assign( "lastRow" , $lastRow );
- $this->tpl->assign( "totalRows" , $this->totRows );
- } else {
- $this->tpl->assign( "indexStyle", 'visibility:hidden;');
- }
- if ($this->searchBy) {
- $this->tpl->assign( "fastSearchValue" , $this->fastSearch );
- } else {
- $this->tpl->assign( "fastSearchStyle" , 'visibility:hidden;' );
- }
- if ($this->addRow)
- if($this->sqlInsert!='')
- $this->tpl->assign( "insert" , ''./*G::LoadXml('labels','ID_ADD_NEW')*/ 'ID_ADD_NEW' .'' );
- $this->tpl->assign("pagesEnum", $pagesEnum);
- }
-?>
+ $breakFieldKeys = array_flip( $this->masterdetail );
+ for ($j = 0; $j < $rs->getRecordCount(); $j ++) {
+ $result = $rs->getRow();
+ $rs->next();
+ $gridRows ++;
+ $this->tpl->newBlock( "row" );
+ $this->tpl->assign( "class", "Row" . (($j % 2) + 1) );
+ $this->tdStyle = '';
+ $this->tdClass = '';
+ //Start Master Detail: This enable the MasterDEtail view. By JHL November 2008
+ if (count( $this->masterdetail ) > 0) {
+ //TODO: Validate if there is a Field that doesn't exist
+ //TODO: Style
+ //TODO: Improve Collapse function....
+ foreach ($this->masterdetail as $keyMasterDetail => $fieldMasterDetail) {
+ if ($breakField[$fieldMasterDetail] != $result[$fieldMasterDetail]) {
+ $this->tpl->newBlock( "rowMaster" );
+ $this->tpl->newBlock( "fieldMaster" );
+ $this->tpl->assign( "alignAttr", " colspan=" . (count( $this->fields ) * 2) );
+ $this->tpl->assign( "value", $this->fields[$fieldMasterDetail]['Label'] == "" ? "" : $this->fields[$fieldMasterDetail]['Label'] . ": " . $this->xmlForm->fields[$fieldMasterDetail]->renderTable( $result[$fieldMasterDetail], $this->xmlForm, true ) );
+ $breakField[$fieldMasterDetail] = $result[$fieldMasterDetail];
+ for ($i = $breakFieldKeys[$fieldMasterDetail] + 1; $i < count( $breakField ); $i ++) {
+ $breakField[$this->masterdetail[$i]] = "novaluehere";
+ }
+ $rowName = array ();
+ foreach ($breakField as $key => $value) {
+ if ($value != "novaluehere") {
+ $rowName[$key] = $key . "_" . $value;
+ }
+ }
+ $this->tpl->assign( "masterRowName", implode( ",", $rowName ) );
+ $this->tpl->assign( 'pagedTable_Name', $this->name );
+ $many = "";
+ $this->tpl->assign( "value1", str_pad( $many, count( $rowName ) - 1, "-" ) );
+ $this->tpl->gotoblock( "rowMaster" );
+ $this->tpl->assign( "masterRowName", "_MD_" . implode( ",", $rowName ) );
+ $this->tpl->assign( "masterRowClass", $keyMasterDetail == 0 ? "masterDetailMain" : "masterDetailOther" );
+ }
+ }
+ $this->tpl->gotoblock( "row" );
+ if (! isset( $rowName ))
+ $rowName = array ();
+ $this->tpl->assign( "rowName", implode( ",", $rowName ) );
+ }
+ //End Master Detail: This enable the MasterDEtail view
+ //Merge $result with $xmlForm values (for default valuesSettings)
+ if (is_array( $this->xmlForm->values ))
+ $result = array_merge( $this->xmlForm->values, $result );
+ foreach ($this->fields as $r => $rval) {
+ if (strcasecmp( $this->fields[$r]['Type'], 'cellMark' ) == 0) {
+ $result1 = $result;
+ $result1['row__'] = $j + 1;
+ $result1 = array_merge( $this->xmlForm->values, $result1 );
+ $this->xmlForm->setDefaultValues();
+ $this->xmlForm->setValues( $result1 );
+ $this->tdStyle = $this->xmlForm->fields[$this->fields[$r]['Name']]->tdStyle( $result1, $this->xmlForm );
+ $this->tdClass = $this->xmlForm->fields[$this->fields[$r]['Name']]->tdClass( $result1, $this->xmlForm );
+ } elseif ($this->style[$r]['showInTable'] != '0') {
+ if (($this->style[$r]['showInTable'] != '0') && (! (in_array( $this->fields[$r]['Name'], $this->masterdetail ))))
+ $this->renderField( $j + 1, $r, $result );
+ }
+ }
+ }
+ $this->tpl->assign( '_ROOT.gridRows', '=' . $gridRows ); //number of rows in the current page
+ $this->tpl->newBlock( 'rowTag' );
+ $this->tpl->assign( 'rowId', 'insertAtLast' );
+ if ($this->currentPage > 1) {
+ $firstUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=1';
+ $firstAjax = $this->id . ".doGoToPage(1);return false;";
+ $prevpage = $this->currentPage - 1;
+ $prevUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $prevpage;
+ $prevAjax = $this->id . ".doGoToPage(" . $prevpage . ");return false;";
+ $first = " ";
+ $prev = " ";
+ } else {
+ $first = " ";
+ $prev = " ";
+ }
+ if ($this->currentPage < $this->totPages) {
+ $lastUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $this->totPages;
+ $lastAjax = $this->id . ".doGoToPage(" . $this->totPages . ");return false;";
+ $nextpage = $this->currentPage + 1;
+ $nextUrl = $this->ownerPage . '?order=' . $this->orderBy . '&page=' . $nextpage;
+ $nextAjax = $this->id . ".doGoToPage(" . $nextpage . ");return false;";
+ $next = " ";
+ $last = " ";
+ } else {
+ $next = " ";
+ $last = " ";
+ }
+ $pagesEnum = '';
+ for ($r = 1; $r <= $this->totPages; $r ++)
+ if (($r >= ($this->currentPage - 5)) && ($r <= ($this->currentPage + 5))) {
+ $pageAjax = $this->id . ".doGoToPage(" . $r . ");return false;";
+ if ($r != $this->currentPage)
+ $pagesEnum .= " ownerPage . '?order=' . $this->orderBy . '&page=' . $r, ENT_QUOTES, 'utf-8' ) . "\" onclick=\"" . $pageAjax . "\">" . $r . "";
+ else
+ $pagesEnum .= " " . $r . "";
+ }
+ if ($this->totRows === 0) {
+ $this->tpl->newBlock( 'norecords' );
+ $this->tpl->assign( "columnCount", $this->colCount );
+ $noRecordsFound = 'ID_NO_RECORDS_FOUND';
+ if (G::LoadTranslation( $noRecordsFound ))
+ $noRecordsFound = G::LoadTranslation( $noRecordsFound );
+ $this->tpl->assign( "noRecordsFound", $noRecordsFound );
+ }
+ if (! $this->disableFooter) {
+ $this->tpl->newBlock( "bottomFooter" );
+ $this->tpl->assign( "columnCount", $this->colCount );
+ $this->tpl->assign( "pagedTableId", $this->id );
+ if (($this->totRows !== 0)) {
+ if ($this->totPages > 1) {
+ $this->tpl->assign( "first", $first );
+ $this->tpl->assign( "prev", $prev );
+ $this->tpl->assign( "next", $next );
+ $this->tpl->assign( "last", $last );
+ }
+ $this->tpl->assign( "currentPage", $this->currentPage );
+ $this->tpl->assign( "totalPages", $this->totPages );
+ $firstRow = ($this->currentPage - 1) * $this->rowsPerPage + 1;
+ $lastRow = $firstRow + $rs->getRecordCount() - 1;
+ $this->tpl->assign( "firstRow", $firstRow );
+ $this->tpl->assign( "lastRow", $lastRow );
+ $this->tpl->assign( "totalRows", $this->totRows );
+ } else {
+ $this->tpl->assign( "indexStyle", 'visibility:hidden;' );
+ }
+ if ($this->searchBy) {
+ $this->tpl->assign( "fastSearchValue", $this->fastSearch );
+ } else {
+ $this->tpl->assign( "fastSearchStyle", 'visibility:hidden;' );
+ }
+ if ($this->addRow)
+ if ($this->sqlInsert != '')
+ $this->tpl->assign( "insert", ''./*G::LoadXml('labels','ID_ADD_NEW')*/ 'ID_ADD_NEW' . '' );
+ $this->tpl->assign( "pagesEnum", $pagesEnum );
+ }
+ ?>
-
tpl->newBlock( "closeBlock" );
+ }
+ //By JHL
+ //Put the content of the table in a variable to be used for other puposes
+ //Like rendering as PDF
+ global $_TABLE_CONTENT_;
+ $_TABLE_CONTENT_ = $this->tpl->getOutputContent();
+ $this->tpl->printToScreen();
+ unset( $this->tpl );
+ //unset($this->dbc);
+ //unset($this->ses);
+ $_SESSION['pagedTable[' . $this->id . ']'] = serialize( $this );
+ $this->fastSearch = '';
+ return;
}
- /********** CLOSE BLOCK ***************/
- if (($block ==='') || ($block==='close')) {
- $this->tpl->newBlock( "closeBlock" );
+
+ /**
+ * Function printForm
+ *
+ * @param string $filename
+ * @param array $data
+ * @return void
+ */
+ function printForm ($filename, $data = array())
+ {
+ global $G_PUBLISH;
+ $G_PUBLISH = new Publisher();
+ $G_PUBLISH->AddContent( 'xmlform', 'xmlform', $filename, '', $data, $this->popupSubmit );
+ G::RenderPage( "publish", "blank" );
}
- //By JHL
- //Put the content of the table in a variable to be used for other puposes
- //Like rendering as PDF
- global $_TABLE_CONTENT_;
- $_TABLE_CONTENT_=$this->tpl->getOutputContent();
- $this->tpl->printToScreen();
- unset($this->tpl);
- //unset($this->dbc);
- //unset($this->ses);
- $_SESSION['pagedTable['.$this->id.']']= serialize($this);
- $this->fastSearch = '';
- return;
- }
- /**
- * Function printForm
- * @param string $filename
- * @param array $data
- * @return void
- */
- function printForm($filename,$data=array())
- { global $G_PUBLISH;
- $G_PUBLISH = new Publisher();
- $G_PUBLISH->AddContent('xmlform', 'xmlform', $filename, '', $data , $this->popupSubmit);
- G::RenderPage( "publish" , "blank" );
- }
}
\ No newline at end of file