From 97fdbd347eb57f57338747a0a47d7d8ef9c67ed9 Mon Sep 17 00:00:00 2001 From: avl Date: Wed, 1 Apr 2009 13:18:08 +0300 Subject: [PATCH] admin search ability --- ipf/admin/model.php | 26 +++++++++++++++++++++++++- ipf/admin/templates/admin/items.html | 17 +++++++++++++++++ ipf/admin/views.php | 3 ++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/ipf/admin/model.php b/ipf/admin/model.php index 33dce50..f4d3bd1 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -440,6 +440,25 @@ class IPF_Admin_Model{ } } + protected function _isSearch(){ + if (method_exists($this,'_searchFields')) + return true; + return false; + } + + protected function _ListSearchQuery($request){ + if (!$this->_isSearch()) + return; + $fields = $this->_searchFields(); + $this->search_value = @$request->GET['q']; + if ($this->search_value!=''){ + foreach ($fields as $f){ + $this->q->where($f.' like ?',array('%'.$this->search_value.'%')); + } + } + } + + protected function _GetFilters($request){ $this->filters = array(); $rels = $this->model->getTable()->getRelations(); @@ -481,9 +500,10 @@ class IPF_Admin_Model{ return method_exists($this, 'list_order'); } - public function ListItems($request){ + public function ListItems($request, $lapp, $lmodel){ $this->ListItemsQuery(); $this->_GetFilters($request); + $this->_ListSearchQuery($request); $this->_ListFilterQuery($request); $this->ListItemsHeader(); @@ -523,6 +543,10 @@ class IPF_Admin_Model{ 'perms'=>$this->getPerms($request), 'filters'=>$this->filters, 'admin_title' => IPF::get('admin_title'), + 'is_search' => $this->_isSearch(), + 'search_value' => $this->search_value, + 'lapp'=>$lapp, + 'lmodel'=>$lmodel, ); return IPF_Shortcuts::RenderToResponse('admin/items.html', $context, $request); } diff --git a/ipf/admin/templates/admin/items.html b/ipf/admin/templates/admin/items.html index c5b546e..fed2336 100644 --- a/ipf/admin/templates/admin/items.html +++ b/ipf/admin/templates/admin/items.html @@ -35,6 +35,23 @@ $(document).ready(function()
+ {if $is_search} +
+ +
+ {/if} + {if $filters}

Filter

diff --git a/ipf/admin/views.php b/ipf/admin/views.php index 615eb6c..b49b461 100644 --- a/ipf/admin/views.php +++ b/ipf/admin/views.php @@ -62,6 +62,7 @@ function IPF_Admin_Views_ListItems($request, $match){ $ca = IPF_Admin_App::checkAdminAuth($request); if ($ca!==true) return $ca; + $lapp = $match[1]; $lmodel = $match[2]; foreach (IPF_Project::getInstance()->appList() as $app){ foreach($app->modelList() as $m){ @@ -69,7 +70,7 @@ function IPF_Admin_Views_ListItems($request, $match){ $ma = IPF_Admin_Model::getModelAdmin($m); if ($ma===null) return new IPF_HTTP_Response_NotFound(); - return $ma->ListItems($request); + return $ma->ListItems($request, $lapp, $lmodel); } } } -- 2.49.0