From 953113bdb226ec47f15b2588507a189c727b8dab Mon Sep 17 00:00:00 2001
From: Henri Queneau <henri.queneau@maarch.org>
Date: Thu, 16 Apr 2015 12:29:09 +0000
Subject: [PATCH] FEAT #2120 keep the filter and the pagination in the list
 result

---
 maarch_entreprise/trunk/class/class_lists.php | 57 ++++++++++++++---
 .../trunk/documents_list_with_attachments.php | 17 ++++++
 .../trunk/indexing_searching/details.php      |  4 ++
 maarch_entreprise/trunk/js/functions.js       | 61 +++++++++++++++++++
 4 files changed, 132 insertions(+), 7 deletions(-)

diff --git a/maarch_entreprise/trunk/class/class_lists.php b/maarch_entreprise/trunk/class/class_lists.php
index 071c79e25d2..48f7c75a6ef 100644
--- a/maarch_entreprise/trunk/class/class_lists.php
+++ b/maarch_entreprise/trunk/class/class_lists.php
@@ -594,11 +594,31 @@ class lists extends dbquery
     }
     
     private function _resetFilter() {
-    
-        foreach ($_SESSION['filters'] as $key => $val) {
-            $_SESSION['filters'][$key]['VALUE'] = '';
-            $_SESSION['filters'][$key]['CLAUSE'] = '';
-        }
+
+        if($_SESSION['basket_used'] != $_SESSION['current_basket']['id']){
+
+            foreach ($_SESSION['filters'] as $key => $val) {
+                $_SESSION['filters'][$key]['VALUE'] = '';
+                $_SESSION['filters'][$key]['CLAUSE'] = '';
+                }
+        }/*elseif($_SESSION['basket_used'] == $_GET['baskets']){
+            foreach ($_SESSION['filters'] as $key => $val) {
+                $_SESSION['filters'][$key]['VALUE'] = '';
+                $_SESSION['filters'][$key]['CLAUSE'] = '';
+                }
+
+        }*/
+
+        
+    }
+
+    private function _resetFilter2() {
+
+            foreach ($_SESSION['filters'] as $key => $val) {
+                $_SESSION['filters'][$key]['VALUE'] = '';
+                $_SESSION['filters'][$key]['CLAUSE'] = '';
+                }
+           
     }
     
     private function _manageFilters() {
@@ -606,7 +626,7 @@ class lists extends dbquery
         //Reset all filters
         if ($_REQUEST['filter'] == 'reset'){
         
-           $this->_resetFilter();
+           $this->_resetFilter2();
            
         } else { //Init filter value and clause
             if(isset($_REQUEST['value']) && !empty($_REQUEST['value'])) {
@@ -2544,7 +2564,7 @@ class lists extends dbquery
                 $filters .= $filtersControl;
                 //Clear icon
                 $filters .='&nbsp;&nbsp;<a href="javascript://"  title="'._CLEAR_SEARCH.'" onfocus="this.blur()" '
-                            .'onclick="javascript:loadList(\''.$this->link
+                            .'onclick="javascript:loadList2(\''.$this->link
                             .'&filter=reset\', \''.$this->divListId.'\', '
                             .$this->modeReturn.');">'
                             .'<i class="fa fa-refresh fa-2x" title="' . _CLEAR_SEARCH . '"></i></a>';
@@ -3331,6 +3351,29 @@ class lists extends dbquery
         
         return $list;
         
+    }
+    public function loadList2($target, $showLoading=true, $divListId='divList', $returnMode = 'true', $init='true') {
+        $list = "\n";
+        $loading ='';
+        //Reset filters
+        $this->_resetFilter2();
+        
+        //Reset html template list url
+        $this->_resetUrlTemplates();
+        
+        //Create javascript load list function
+        $list .= '<script type="text/javascript">loadList2(\''.$target.'&display=true\', \''.$divListId.'\', '.$returnMode.', '.$init.');</script>';
+        
+        //Show loading image?
+        if ($showLoading === true) {
+            $loading = '<i class="fa fa-spinner fa-2x"></i>';
+        }
+        
+        //Content div
+        $list .= '<div id="'.$divListId.'" name="'.$divListId.'">'.$loading.'</div>';
+        
+        return $list;
+        
     }
     
     public function debug($viewAll=true) {
diff --git a/maarch_entreprise/trunk/documents_list_with_attachments.php b/maarch_entreprise/trunk/documents_list_with_attachments.php
index c07e0dd0f8a..0bb338c4b39 100644
--- a/maarch_entreprise/trunk/documents_list_with_attachments.php
+++ b/maarch_entreprise/trunk/documents_list_with_attachments.php
@@ -44,6 +44,23 @@ $list       = new lists();
 //Include definition fields
 include_once('apps/' . $_SESSION['config']['app_id'] . '/definition_mail_categories.php');
 
+//Order
+    $order = $order_field = '';
+    $order = $list->getOrder();
+    $order_field = $list->getOrderField();
+    $_SESSION['save_list']['order'] = $order;
+    $_SESSION['save_list']['order_field'] = $order_field;
+ //URL extra Parameters  
+    $parameters = '';
+    $start = $list->getStart();
+    if (!empty($order_field) && !empty($order)) $parameters .= '&order='.$order.'&order_field='.$order_field;
+    if (!empty($what)) $parameters .= '&what='.$what;
+    if (!empty($selectedTemplate)) $parameters .= '&template='.$selectedTemplate;
+    if (!empty($start)) $parameters .= '&start='.$start;
+    $_SESSION['save_list']['start'] = $start; 
+
+
+
 //Keep some parameters
 $parameters = '';
 if (isset($_REQUEST['order']) && !empty($_REQUEST['order'])) {
diff --git a/maarch_entreprise/trunk/indexing_searching/details.php b/maarch_entreprise/trunk/indexing_searching/details.php
index e4d5b8871b3..89387c78ce6 100644
--- a/maarch_entreprise/trunk/indexing_searching/details.php
+++ b/maarch_entreprise/trunk/indexing_searching/details.php
@@ -45,6 +45,8 @@ require_once 'core/class/LinkController.php';
 require_once 'apps/' . $_SESSION['config']['app_id'] . '/class/class_indexing_searching_app.php';
 require_once 'apps/' . $_SESSION['config']['app_id'] . '/class/class_types.php';
 
+$_SESSION['basket_used'] = $_SESSION['current_basket']['id'];
+
 if (file_exists(
     $_SESSION['config']['corepath'] . 'custom/apps/' . $_SESSION['config']['app_id']
     . '/definition_mail_categories.php'
@@ -1660,6 +1662,8 @@ $_SESSION['doc_convert'] = array();
 $_SESSION['doc_convert']['details_result'] = $detailsExport;
 $core = new core_tools();
 
+
+
 /*if ($printDetails) {
     $Fnm = $_SESSION['config']['tmppath']. '/export_details_'
         . $_SESSION['user']['UserId'] . '_export.html';
diff --git a/maarch_entreprise/trunk/js/functions.js b/maarch_entreprise/trunk/js/functions.js
index ad662fbbdc7..80ff9a01585 100644
--- a/maarch_entreprise/trunk/js/functions.js
+++ b/maarch_entreprise/trunk/js/functions.js
@@ -2406,6 +2406,26 @@ function stockCheckbox(url,value){
 
 }
 
+function cleanSessionBasket(url,value){
+    //fait appel à l'ajax cleanSessionBasket du module basket pour vider la $_SESSION['basket_used']
+    if(value != ''){
+        new Ajax.Request(url,
+    
+    {
+        method:'post',
+        parameters: { courrier_purpose : value},
+        onSuccess: function(answer){
+            eval("response = "+answer.responseText);
+            //monTableauJS =  JSON.parse(answer.responseText);
+
+
+        }
+    })
+    };
+
+}
+
+
 function loadRepList(id)
 {
     new Effect.toggle('repList_'+id, 'appear' , {delay:0.2});
@@ -2679,7 +2699,48 @@ function loadList(path, inDiv, modeReturn, init) {
         }
     });
 }
+function loadList2(path, inDiv, modeReturn, init) {
 
+ //alert (modeReturn);
+    if(typeof(inDiv)==='undefined'){
+        var div = 'divList';
+    } else {
+        var div = inDiv;
+    }
+    if(typeof(modeReturn)==='undefined'){
+        var modeReturn = false;
+    }
+    if(typeof(init)==='undefined'){
+        window.top.$('main_error').innerHTML = '';
+        window.top.$('main_info').innerHTML = '';
+    }
+    path = path.replace('#', '%23');
+    new Ajax.Request(path,
+    {
+        method:'post',
+        parameters: { url : path
+                    },   
+       /* onLoading: function(answer) {
+                //show loading image in toolbar
+                $('loading').style.display='block';
+        },*/                        
+        onSuccess: function(answer){
+                if (modeReturn !== false) {
+                    eval("response = "+answer.responseText);
+                    if(response.status == 0){                      
+                        $(div).innerHTML = convertToHTMLVisibleNewline(response.content);
+                        evalMyScripts(div);
+                    } else {
+                        window.top.$('main_error').innerHTML = response.error;
+                    }
+                } else {
+                    $(div).innerHTML = answer.responseText;
+                    evalMyScripts(div);
+                }
+               // $('loading').style.display='none';
+        }
+    });
+}
 function loadValueInDiv(theId, url) {
     
     new Effect.toggle('subList_' + theId, 'appear' , {delay:0.2});
-- 
GitLab