RomanL 5 anni fa
parent
commit
30c1d025cc
3 ha cambiato i file con 52 aggiunte e 56 eliminazioni
  1. 10 5
      inc/classes/BxDolGrid.php
  2. 0 2
      inc/js/classes/BxDolGrid.js
  3. 42 49
      template/scripts/BxBaseGrid.php

+ 10 - 5
inc/classes/BxDolGrid.php

@@ -414,19 +414,24 @@ class BxDolGrid extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
         $sOrderByFilter = '';
         $sQuery .= $this->_getDataSqlWhereClause($sFilter, $sOrderByFilter);
 
-        // add order
-        $sQuery .= $this->_getDataSqlOrderClause ($sOrderByFilter, $sOrderField, $sOrderDir);
-
         // calculate total records count
         if ($this->_aOptions['show_total_count'] == 1){
-            $sQueryCount = "SELECT COUNT(*) " . substr($sQuery, strpos($sQuery, " FROM" ));
-            $this->_iTotalCount =  $oDb->getOne($sQueryCount);
+             $this->_iTotalCount = $this->_getDataSqCounter($sQuery, $sFilter);
         }
         
+        // add order
+        $sQuery .= $this->_getDataSqlOrderClause ($sOrderByFilter, $sOrderField, $sOrderDir);
+        
         $sQuery = $sQuery . $oDb->prepareAsString(' LIMIT ?, ?', $iStart, $iPerPage);
         return $oDb->getAll($sQuery);
     }
 
+    protected function _getDataSqCounter($sQuery, $sFilter)
+    {
+        $oDb = BxDolDb::getInstance();
+        return $oDb->getOne("SELECT COUNT(*) " . substr($sQuery, strpos($sQuery, " FROM" )));
+    }
+   
     protected function _getDataSqlWhereClause($sFilter, &$sOrderByFilter)
     {
         if(!$sFilter || (empty($this->_aOptions['filter_fields']) && empty($this->_aOptions['filter_fields_translatable']))) 

+ 0 - 2
inc/js/classes/BxDolGrid.js

@@ -34,8 +34,6 @@ function BxDolGrid (sObject, oOptions) {
 
     if (this._sOrderField.length)
         this.setSorting (this._sOrderField, this._sOrderDir, true);
-
-    this.reload(0);
 }
 
 BxDolGrid.prototype.resetSorting = function (sField, sDir) {

+ 42 - 49
template/scripts/BxBaseGrid.php

@@ -119,66 +119,59 @@ class BxBaseGrid extends BxDolGrid
         $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']);
-            else
-                $iStart = 0;
+        if ($this->_aOptions['paginate_get_start'])
+            $iStart = (int)bx_get($this->_aOptions['paginate_get_start']);
+        else
+            $iStart = 0;
 
-            if ($this->_aOptions['paginate_get_per_page'] && (int)bx_get($this->_aOptions['paginate_get_per_page']) > 0)
-                $iPerPage = (int)bx_get($this->_aOptions['paginate_get_per_page']);
-            elseif ($this->_aOptions['paginate_per_page'])
-                $iPerPage = (int)$this->_aOptions['paginate_per_page'];
-            else
-                $iPerPage = 10;
+        if ($this->_aOptions['paginate_get_per_page'] && (int)bx_get($this->_aOptions['paginate_get_per_page']) > 0)
+            $iPerPage = (int)bx_get($this->_aOptions['paginate_get_per_page']);
+        elseif ($this->_aOptions['paginate_per_page'])
+            $iPerPage = (int)$this->_aOptions['paginate_per_page'];
+        else
+            $iPerPage = 10;
             
-        if (!$isDisplayHeader){
-            if ($this->_aOptions['paginate_get_start']) {
-
-                $aData = $this->_getData ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage + 1);
-
-                $sPageUrl = false;
-                if (!empty($this->_aOptions['paginate_url'])) {
-
-                    $sPageUrl = $this->_aOptions['paginate_url'];
-
-                    $aParamsAppend = array();
-                    if ($sFilter) {
-                        $aParamsAppend['filter'] = bx_process_input(bx_get($this->_aOptions['filter_get']));
-                    }
-                    if ($sOrderField) {
-                        $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);
-                }
 
-                $aPaginateParams = array(
-                    'start' => $iStart,
-                    'per_page' => $iPerPage,
-                    'page_url' =>  $sPageUrl ? $sPageUrl : "javascript:glGrids." . $this->_sObject . ".reload('{start}'); void(0);",
-                );
-
-                $oPaginate = new BxTemplPaginate($aPaginateParams, $this->_oTemplate);
-                $oPaginate->setNumFromDataArray($aData);
+        if ($this->_aOptions['paginate_get_start']) {
 
-                if (isset($this->_aOptions['paginate_simple']) && false !== $this->_aOptions['paginate_simple'])
-                    $sPaginate = $oPaginate->getSimplePaginate($this->_aOptions['paginate_simple']);
-                else
-                    $sPaginate = $oPaginate->getPaginate();
+            $aData = $this->_getData ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage + 1);
 
-            } else {
+            $sPageUrl = false;
+            if (!empty($this->_aOptions['paginate_url'])) {
 
-                $aData = $this->_getData ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
+                $sPageUrl = $this->_aOptions['paginate_url'];
 
+                $aParamsAppend = array();
+                if ($sFilter) {
+                    $aParamsAppend['filter'] = bx_process_input(bx_get($this->_aOptions['filter_get']));
+                }
+                if ($sOrderField) {
+                    $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);
             }
-        
 
-        if((empty($aData) || !is_array($aData)) && isset($this->_aBrowseParams['empty_message']) && !(bool)$this->_aBrowseParams['empty_message'])
-            return '';
+            $aPaginateParams = array(
+                'start' => $iStart,
+                'per_page' => $iPerPage,
+                'page_url' =>  $sPageUrl ? $sPageUrl : "javascript:glGrids." . $this->_sObject . ".reload('{start}'); void(0);",
+            );
+
+            $oPaginate = new BxTemplPaginate($aPaginateParams, $this->_oTemplate);
+            $oPaginate->setNumFromDataArray($aData);
 
+            if (isset($this->_aOptions['paginate_simple']) && false !== $this->_aOptions['paginate_simple'])
+                $sPaginate = $oPaginate->getSimplePaginate($this->_aOptions['paginate_simple']);
+            else
+                $sPaginate = $oPaginate->getPaginate();
+        } else {
+            $aData = $this->_getData ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
         }
+
+        if((empty($aData) || !is_array($aData)) && isset($this->_aBrowseParams['empty_message']) && !(bool)$this->_aBrowseParams['empty_message'])
+            return '';
         
         $sPopupOptions = '{}';
         if (!empty($this->_aPopupOptions) && is_array($this->_aPopupOptions))