From: avl Date: Sun, 21 Sep 2008 05:03:49 +0000 (+0300) Subject: Admin Pager X-Git-Tag: 0.5~481 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=4f50496570ca5dfebb286f4849e8bf8823f128ce;p=ipf.git Admin Pager --- diff --git a/ipf/admin/model.php b/ipf/admin/model.php index 015a3cc..c4c7db8 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -25,6 +25,7 @@ class IPF_Admin_Model{ var $modelName = null; var $model = null; var $inlineInstances = array(); + var $perPage = 50; public function __construct($modelName){ $this->modelName = $modelName; @@ -82,7 +83,7 @@ class IPF_Admin_Model{ if (method_exists($this,'list_display')) $this->names = $this->list_display(); else - $this->names = $this->qe->getTable()->getColumnNames(); + $this->names = $this->model->getTable()->getColumnNames(); foreach ($this->names as $name){ $this->header[$name] = new IPF_Template_ContextVars(array( @@ -141,7 +142,7 @@ class IPF_Admin_Model{ } protected function UrlForResult($o){ - return $o->__get($this->qe->getTable()->getIdentifier()).'/'; + return $o->__get($this->model->getTable()->getIdentifier()).'/'; } protected function _getForm($model_obj, $data, $extra){ @@ -253,13 +254,25 @@ class IPF_Admin_Model{ public function ListItems($request){ $this->ListItemsQuery(); - $this->qe = $this->q->execute(); $this->ListItemsHeader(); + + $currentPage = (int)$request->GET['page']; + + $pager = new IPF_ORM_Pager_LayoutArrows( + new IPF_ORM_Pager($this->q, $currentPage, $this->perPage), + new IPF_ORM_Pager_Range_Sliding(array('chunk' => 10)), + '?page={%page_number}' + ); + $pager->setTemplate('{%page} '); + $pager->setSelectedTemplate('{%page} '); + $objects = $pager->getPager()->execute(); + $context = array( 'page_title'=>$this->modelName.' List', 'header'=>$this->header, 'classname'=>$this->modelName, - 'objects'=>$this->qe, + 'objects'=>$objects, + 'pager'=>$pager, 'classname'=>$this->modelName, 'perms'=>$this->getPerms($request), ); diff --git a/ipf/admin/templates/admin/items.html b/ipf/admin/templates/admin/items.html index e42317d..e46722f 100644 --- a/ipf/admin/templates/admin/items.html +++ b/ipf/admin/templates/admin/items.html @@ -27,6 +27,9 @@ {/foreach} +

+ {$pager->display()|safe} {$pager->getPager()->getNumResults()} {$classname} +

diff --git a/ipf/orm/pager/layoutarrows.php b/ipf/orm/pager/layoutarrows.php new file mode 100644 index 0000000..0acfbc0 --- /dev/null +++ b/ipf/orm/pager/layoutarrows.php @@ -0,0 +1,39 @@ +getPager(); + $str = ''; + + // First page + $this->addMaskReplacement('page', '«', true); + $options['page_number'] = $pager->getFirstPage(); + $str .= $this->processPage($options); + + // Previous page + $this->addMaskReplacement('page', '‹', true); + $options['page_number'] = $pager->getPreviousPage(); + $str .= $this->processPage($options); + + // Pages listing + $this->removeMaskReplacement('page'); + $str .= parent::display($options, true); + + // Next page + $this->addMaskReplacement('page', '›', true); + $options['page_number'] = $pager->getNextPage(); + $str .= $this->processPage($options); + + // Last page + $this->addMaskReplacement('page', '»', true); + $options['page_number'] = $pager->getLastPage(); + $str .= $this->processPage($options); + + if ($return) + return $str; + + echo $str; + } +}