Browse Source

#1060 Grid: 'GET' params for sorting and filter

Alex Trofimov 8 years ago
parent
commit
a254580323
4 changed files with 19 additions and 10 deletions
  1. 3 3
      inc/js/classes/BxDolGrid.js
  2. 3 0
      install/sql/system.sql
  3. 3 0
      template/grid.html
  4. 10 7
      template/scripts/BxBaseGrid.php

+ 3 - 3
inc/js/classes/BxDolGrid.js

@@ -202,11 +202,11 @@ BxDolGrid.prototype.action = function (sAction, oData, sData, isDisableLoading,
         if (typeof(sData) != 'undefined')
             sUrl += '&' + sData;
         if ($this._sFilter.length)
-            sUrl += '&filter=' + encodeURIComponent ($this._sFilter);
+            sUrl += '&' + $this._oOptions.filter_get + '=' + encodeURIComponent ($this._sFilter);
         if ($this._sOrderField.length)
-            sUrl += '&order_field=' + encodeURIComponent ($this._sOrderField);
+            sUrl += '&' + $this._oOptions.order_get_field + '=' + encodeURIComponent ($this._sOrderField);
         if ($this._sOrderDir.length)
-            sUrl += '&order_dir=' + encodeURIComponent ($this._sOrderDir);
+            sUrl += '&' + $this._oOptions.order_get_dir + '=' + encodeURIComponent ($this._sOrderDir);
         sUrl += '&_r=' + Math.random();
 
         if (typeof(isDisableLoading) == 'undefined' || !isDisableLoading)

+ 3 - 0
install/sql/system.sql

@@ -3460,6 +3460,8 @@ CREATE TABLE IF NOT EXISTS `sys_objects_grid` (
   `field_id` varchar(255) NOT NULL,
   `field_order` varchar(255) NOT NULL,
   `field_active` varchar(255) NOT NULL,
+  `order_get_field` varchar(255) NOT NULL DEFAULT 'order_field',
+  `order_get_dir` varchar(255) NOT NULL DEFAULT 'order_dir',
   `paginate_url` varchar(255) NOT NULL,
   `paginate_per_page` int(11) NOT NULL DEFAULT '10',
   `paginate_simple` varchar(255) DEFAULT NULL,
@@ -3468,6 +3470,7 @@ CREATE TABLE IF NOT EXISTS `sys_objects_grid` (
   `filter_fields` text NOT NULL,
   `filter_fields_translatable` text NOT NULL,
   `filter_mode` enum('like','fulltext','auto') NOT NULL DEFAULT 'auto',
+  `filter_get` varchar(255) NOT NULL DEFAULT 'filter',
   `sorting_fields` text NOT NULL,
   `sorting_fields_translatable` text NOT NULL,
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',

+ 3 - 0
template/grid.html

@@ -74,8 +74,11 @@
                 start: __start__,
                 per_page: __per_page__,
                 filter: '__filter__',
+                filter_get: '__filter_get__',
                 order_field: '__order_field__',
                 order_dir: '__order_dir__',
+                order_get_field: '__order_get_field__',
+                order_get_dir: '__order_get_dir__',
                 text_search_input: '<bx_text_js:_sys_grid_search />',
                 popup_options: __popup_options__,
                 query_append: __query_append__,

+ 10 - 7
template/scripts/BxBaseGrid.php

@@ -30,7 +30,7 @@ class BxBaseGrid extends BxDolGrid
         else
             $this->_oTemplate = BxDolTemplate::getInstance();
 
-        $this->_aQueryReset = array('filter', 'order_field', 'order_dir', $this->_aOptions['paginate_get_start'], $this->_aOptions['paginate_get_per_page']);
+        $this->_aQueryReset = array($this->_aOptions['filter_get'], $this->_aOptions['order_get_field'], $this->_aOptions['order_get_dir'], $this->_aOptions['paginate_get_start'], $this->_aOptions['paginate_get_per_page']);
     }
 
     public function performActionDisplay()
@@ -109,9 +109,9 @@ class BxBaseGrid extends BxDolGrid
         $sIdContainer = 'bx-grid-cont-' . $this->_sObject;
         $sIdTable = 'bx-grid-table-' . $this->_sObject;
 
-        $sFilter = bx_unicode_urldecode(bx_process_input(bx_get('filter')));
-        $sOrderField = bx_unicode_urldecode(bx_process_input(bx_get('order_field')));
-        $sOrderDir = 0 === strcasecmp('desc', bx_get('order_dir')) ? 'DESC' : 'ASC';
+        $sFilter = bx_unicode_urldecode(bx_process_input(bx_get($this->_aOptions['filter_get'])));
+        $sOrderField = bx_unicode_urldecode(bx_process_input(bx_get($this->_aOptions['order_get_field'])));
+        $sOrderDir = 0 === strcasecmp('desc', bx_get($this->_aOptions['order_get_dir'])) ? 'DESC' : 'ASC';
 
         if ($this->_aOptions['paginate_get_start'])
             $iStart = (int)bx_get($this->_aOptions['paginate_get_start']);
@@ -136,11 +136,11 @@ class BxBaseGrid extends BxDolGrid
 
                 $aParamsAppend = array();
                 if ($sFilter) {
-                    $aParamsAppend['filter'] = bx_process_input(bx_get('filter'));
+                    $aParamsAppend['filter'] = bx_process_input(bx_get($this->_aOptions['filter_get']));
                 }
                 if ($sOrderField) {
-                    $aParamsAppend['order_field'] = bx_process_input(bx_get('order_field'));
-                    $aParamsAppend['order_dir'] = bx_process_input(bx_get('order_dir'));
+                    $aParamsAppend['order_field'] = bx_process_input(bx_get($this->_aOptions['order_get_field']));
+                    $aParamsAppend['order_dir'] = bx_process_input(bx_get($this->_aOptions['order_get_dir']));
                 }
                 if ($aParamsAppend)
                     $sPageUrl = bx_append_url_params($sPageUrl, $aParamsAppend);
@@ -207,8 +207,11 @@ class BxBaseGrid extends BxDolGrid
             'start' => $iStart,
             'per_page' => $iPerPage,
             'filter' => bx_js_string($sFilter, BX_ESCAPE_STR_APOS),
+            'filter_get' => bx_js_string($this->_aOptions['filter_get']),
             'order_field' => bx_js_string($sOrderField, BX_ESCAPE_STR_APOS),
             'order_dir' => bx_js_string($sOrderDir, BX_ESCAPE_STR_APOS),
+            'order_get_field' => bx_js_string($this->_aOptions['order_get_field']),
+            'order_get_dir' => bx_js_string($this->_aOptions['order_get_dir']),
             'popup_options' => $sPopupOptions,
             'query_append' => $sQueryAppend,
             'confirm_messages' => $sConfirmMessages,