]> git.andy128k.dev Git - ipf.git/commitdiff
admin search ability
authoravl <alex.litovchenko@gmail.com>
Wed, 1 Apr 2009 10:18:08 +0000 (13:18 +0300)
committeravl <alex.litovchenko@gmail.com>
Wed, 1 Apr 2009 10:18:08 +0000 (13:18 +0300)
ipf/admin/model.php
ipf/admin/templates/admin/items.html
ipf/admin/views.php

index 33dce5030b3e19bf3a8afa1d0d4088ec55d9f75e..f4d3bd1c6d4586e9fb66c0e859a4671f0e296da4 100644 (file)
@@ -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);
     }
index c5b546eb8c5e51b9bd82d47db1918eb3431bdfb0..fed23365530daa5f4882d072908129980d0a4964 100644 (file)
@@ -35,6 +35,23 @@ $(document).ready(function()
         <ul class="object-tools">{if array_search('add',$perms)!==false}<li><a href="add/" class="addlink">Add {$classname}</a></li>{/if}</ul>
         <div id="changelist" class="module {if $filters} filtered{/if}">
 
+            {if $is_search}
+            <div id="toolbar">
+                               <form id="changelist-search" method="get" action="">
+                               <div>
+                               <label for="searchbar">
+                               <img alt="Search" src="{$ADMIN_MEDIA_URL}img/icon_searchbox.png" />
+                               </label>
+                               <input id="searchbar" type="text" value="{$search_value}" name="q" size="40"/>
+                               <input type="submit" value="Go"/>
+                               {if $search_value}
+                                   <span class="small quiet">{$pager->getPager()->getNumResults()} results (<a href="{url 'IPF_Admin_Views_ListItems', array($lapp, $lmodel)}">reset</a>)</span>
+                               {/if}
+                               </div>
+                               </form>
+            </div>
+                       {/if}
+
                {if $filters}
                <div id="changelist-filter">
                <h2>Filter</h2>
index 615eb6c3ec21f10f115fb68969be58fae734930b..b49b461f234f74b1baded4c1e86c608661bafb7e 100644 (file)
@@ -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);
             }
         }
     }