From: Janusz Dobrowolski Date: Sun, 16 Nov 2008 19:39:34 +0000 (+0000) Subject: Added optional dbpager header and footer X-Git-Tag: v2.4.2~19^2~1745 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=a52f867bce2f8c73315f7b4a217aa43d5212416a;p=fa-stable.git Added optional dbpager header and footer --- diff --git a/includes/db_pager.inc b/includes/db_pager.inc index c407675d..90f61ec3 100644 --- a/includes/db_pager.inc +++ b/includes/db_pager.inc @@ -16,7 +16,10 @@ class db_pager { var $marker_txt; var $marker_class; var $notice_class; - + var $header_fun; // additional row between title and body + var $header_class; + var $footer_fun; + var $footer_class; var $data = array(); var $curr_page, @@ -35,7 +38,8 @@ class db_pager { $group; var $extra_where; - var $ready = false; + var $ready = false; // this var is false after change in sql before first + // and before first query. // db_pager constructor // accepts $sql like 'SELECT .... FROM .... [WHERE ...] [GROUP ...]' @@ -237,7 +241,7 @@ class db_pager { $group = $this->group; if(count($this->extra_where)) { - $wherw .= ($where=='' ? '' : ' AND ') + $where .= ($where=='' ? '' : ' AND ') .implode( $this->extra_where, ' AND '); } if ($where) $where = " WHERE($where)"; @@ -321,6 +325,24 @@ class db_pager { $this->marker_class = $markercl; $this->notice_class = $msgclass; } + // + // Set handler to display additional row between titles and pager body. + // Return array of column contents. + // + function set_header($func, $headercl='inquirybg') + { + $this->header_fun = $func; + $this->header_class = $headercl; + } + // + // Set handler to display additional row between pager body and navibar. + // Return array of column contents. + // + function set_footer($func, $footercl='inquirybg') + { + $this->footer_fun = $func; + $this->footer_class = $footercl; + } }; //----------------------------------------------------------------------------- // Creates new db_pager $_SESSION object on first page call. @@ -350,17 +372,15 @@ class db_pager { function &new_db_pager($name, $sql, $coldef, $page_len = 0) { - if (isset($name) && isset($_SESSION[$name])) { - // kill old pager if any on first page call - if ($_SERVER['REQUEST_METHOD'] == 'GET') - unset($_SESSION[$name]); - else - return $_SESSION[$name]; - } - $ret =& new db_pager($sql, $name, $page_len); - $ret->set_columns($coldef); + if ($_SERVER['REQUEST_METHOD'] == 'GET') + unset($_SESSION[$name]); // kill old pager if any exists on first page call - if (isset($name)) $_SESSION[$name] = &$ret; + if (!isset($_SESSION[$name])) + $_SESSION[$name] =& new db_pager($sql, $name, $page_len); + + $ret = &$_SESSION[$name]; + $ret->set_sql($sql); + $ret->set_columns($coldef); return $ret; } diff --git a/includes/ui/db_pager_view.inc b/includes/ui/db_pager_view.inc index e9990815..67b3ea47 100644 --- a/includes/ui/db_pager_view.inc +++ b/includes/ui/db_pager_view.inc @@ -50,6 +50,22 @@ function display_db_pager(&$pager) { start_table("$table_style width=95%"); table_header($headers); + if($pager->header_fun) { // if set header handler + start_row("class='{$pager->header_class}'"); + $fun = $pager->header_fun; + if (method_exists($pager, $fun)) { + $h = $pager->$fun($pager); + } elseif (function_exists($fun)) { + $h = $fun($pager); + } + + foreach($h as $c) { // draw header columns + $pars = isset($c[1]) ? $c[1] : ''; + label_cell($c[0], $pars); + } + end_row(); + } + $cc = 0; //row colour counter foreach($pager->data as $line_no => $row) { @@ -83,7 +99,10 @@ function display_db_pager(&$pager) { case 'percent': percent_cell($cell); break; case 'amount': - amount_cell($cell, false); break; + if ($cell=='') + label_cell(''); + else + amount_cell($cell, false); break; case 'qty': qty_cell($cell); break; case 'rate': @@ -100,6 +119,23 @@ function display_db_pager(&$pager) { end_row(); } //end of while loop + + if($pager->footer_fun) { // if set footer handler + start_row("class='{$pager->footer_class}'"); + $fun = $pager->footer_fun; + if (method_exists($pager, $fun)) { + $h = $pager->$fun($pager); + } elseif (function_exists($fun)) { + $h = $fun($pager); + } + + foreach($h as $c) { // draw footer columns + $pars = isset($c[1]) ? $c[1] : ''; + label_cell($c[0], $pars); + } + end_row(); + } + end_table(); start_table("$table_style align='center' class='navibar' width=95%"); start_row();