Ver Fonte

Ticket #5273 - Get rid of duplicates in code.

AntonLV há 11 meses atrás
pai
commit
7a0c46c76a

+ 1 - 1
inc/classes/BxDolCmtsGridAdministration.php

@@ -27,7 +27,7 @@ class BxDolCmtsGridAdministration extends BxTemplGrid
         $this->_bShowModule = false;
 
         $this->_sFilter1Name = 'filter1';
-        $this->_aFilter1Values = ['' => _t('_adm_txt_select_module')];
+        $this->_aFilter1Values = [];
 
         $aModules = BxDolModuleQuery::getInstance()->getModulesBy(array('type' => 'modules', 'active' => 1));
         foreach($aModules as $aModule) {

+ 4 - 49
modules/base/general/classes/BxBaseModGeneralGrid.php

@@ -29,59 +29,14 @@ class BxBaseModGeneralGrid extends BxTemplGrid
         $this->_sParamsDivider = '#-#';
     }
 
-    protected function _getFilterOnChange()
+    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $mixedAddSelectOne = true, $bAsArray = false)
     {
-        return '';
-    }
-
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne = true)
-    {
-        if(empty($sFilterName))
-            return '';
-
         $CNF = &$this->_oModule->_oConfig->CNF;
 
-        $aInputValues = [];
-        if($bAddSelectOne)
-            $aInputValues[''] = _t($CNF['T']['filter_item_select_one_' . $sFilterName] ?? '_Select_one');
-
-        foreach($aFilterValues as $mixedKey => $mixedValue)
-            if(is_array($mixedValue) && isset($mixedValue['key'], $mixedValue['value']))
-                $aInputValues[$mixedValue['key']] = _t($mixedValue['value']);
-            else
-                $aInputValues[$mixedKey] = _t($mixedValue);
-
-        $aInputModules = [
-            'type' => 'select',
-            'name' => $sFilterName,
-            'attrs' => [
-                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-                'onChange' => 'javascript:' . $this->_getFilterOnChange()
-            ],
-            'value' => $sFilterValue,
-            'values' => $aInputValues
-        ];
-
-        $oForm = new BxTemplFormView([]);
-        return $oForm->genRow($aInputModules);
-    }
-
-    protected function _getSearchInput()
-    {
-        $sOnChange = $this->_getFilterOnChange();
-
-        $aInputSearch = [
-            'type' => 'text',
-            'name' => 'search',
-            'attrs' => [
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $sOnChange,
-                'onBlur' => 'javascript:' . $sOnChange,
-            ]
-        ];
+        if($mixedAddSelectOne === true && ($sKey = $CNF['T']['filter_item_select_one_' . $sFilterName] ?? ''))
+            $mixedAddSelectOne = $sKey;
 
-        $oForm = new BxTemplFormView([]);
-        return $oForm->genRow($aInputSearch);
+        return parent::_getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $mixedAddSelectOne, $bAsArray);
     }
 }
 

+ 2 - 45
modules/base/groups/classes/BxBaseModGroupsGridConnections.php

@@ -520,52 +520,9 @@ class BxBaseModGroupsGridConnections extends BxDolGridConnections
         return $sResult;
     }
 
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne = true)
+    protected function _getFilterOnChange()
     {
-        if(empty($sFilterName) || empty($aFilterValues))
-            return '';
-
-        $CNF = &$this->_oModule->_oConfig->CNF;
-        $sJsObject = $this->_oModule->_oConfig->getJsObject('main');
-
-        $aInputValues = [];
-        if($bAddSelectOne && ($sLangKey = 'filter_item_select_one_' . $sFilterName))
-            $aInputValues[''] = _t(!empty($CNF['T'][$sLangKey]) ? $CNF['T'][$sLangKey] : '_Select_one');
-
-        foreach($aFilterValues as $aFilterValue)
-            $aInputValues[$aFilterValue['key']] = _t($aFilterValue['value']);
-
-        $aInputModules = [
-            'type' => 'select',
-            'name' => $sFilterName,
-            'attrs' => [
-                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-                'onChange' => 'javascript:' . $sJsObject . '.onChangeMembersFilter(this)'
-            ],
-            'value' => $sFilterValue,
-            'values' => $aInputValues
-        ];
-
-        $oForm = new BxTemplFormView([]);
-        return $oForm->genRow($aInputModules);
-    }
-
-    protected function _getSearchInput()
-    {
-        $sJsObject = $this->_oModule->_oConfig->getJsObject('main');
-
-        $aInputSearch = [
-            'type' => 'text',
-            'name' => 'search',
-            'attrs' => [
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $sJsObject . '.onChangeMembersFilter(this)',
-                'onBlur' => 'javascript:' . $sJsObject . '.onChangeMembersFilter(this)',
-            ]
-        ];
-
-        $oForm = new BxTemplFormView([]);
-        return $oForm->genRow($aInputSearch);
+        return $this->_oModule->_oConfig->getJsObject('main') . '.onChangeMembersFilter(this)';
     }
 
     protected function _addJsCss()

+ 2 - 2
modules/boonex/forum/classes/BxForumGrid.php

@@ -648,9 +648,9 @@ class BxForumGrid extends BxBaseModGeneralGrid
         return $this->_oModule->_oConfig->getJsObject('main') . '.onChangeFilter(this)';
     }
 
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne = false)
+    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne = false, $bAsArray = false)
     {
-        return parent::_getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne);
+        return parent::_getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $bAddSelectOne, $bAsArray);
     }
 }
 

+ 20 - 46
template/scripts/BxBaseAuditGrid.php

@@ -150,29 +150,6 @@ class BxBaseAuditGrid extends BxDolAuditGrid
             $this->_getFilterButton();
     }
     
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues)
-    {
-        if(empty($sFilterName) || empty($aFilterValues))
-            return '';
-
-		foreach($aFilterValues as $sKey => $sValue)
-			$aFilterValues[$sKey] = _t($sValue);
-
-        $aInputModules = array(
-            'type' => 'select',
-            'name' => $sFilterName,
-            'attrs' => array(
-                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-               // 'onChange' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)'
-            ),
-            'value' => $sFilterValue,
-            'values' => $aFilterValues
-        );
-
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputModules);
-    }
-    
     protected function _getFilterLabel($sFilterValue)
     {
         $aInputModules = array(
@@ -189,38 +166,35 @@ class BxBaseAuditGrid extends BxDolAuditGrid
     {
         if(empty($sFilterName))
             return '';
-        
-        $aInputModules = array(
+
+        $aInputModules = [
             'type' => 'datepicker',
             'name' => $sFilterName,
-            'attrs' => array(
+            'attrs' => [
                 'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-            ),
-            'tr_attrs' => array('class' => 'bx-grid-controls-filter-datepicker'),
+            ],
+            'tr_attrs' => ['class' => 'bx-grid-controls-filter-datepicker'],
             'value' => $sFilterValue,
-        );
+        ];
 
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputModules, true);
+        $oForm = new BxTemplFormView([]);
+        return $oForm->genRow($aInputModules);
     }
-    
-    protected function _getFilterButton()
+
+    protected function _getFilterButton($bAsArray = false)
     {
-        $aInputModules = array(
-            'type' => 'button',
-            'name' => 'button',
-            'attrs' => array(
-                'id' => 'bx-grid-button-' . $this->_sObject,
-                'onClick' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)',
-            ),
-            'tr_attrs' => array('class' => 'bx-grid-controls-filter-button'),
-            'value' => _t('_Search'),
-        );
+        $aInputButton = parent::_getFilterButton(true);
 
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputModules, true);
+        $aInputButton['tr_attrs'] ??= [];
+        $aInputButton['tr_attrs']['class'] = 'bx-grid-controls-filter-button';
+        
+        $aInputButton['attrs'] ??= [];
+        $aInputButton['attrs']['onClick'] = 'javascript:' . $this->sJsObject . '.onChangeFilter(this)';
+
+        $oForm = new BxTemplFormView([]);
+        return $oForm->genRow($aInputButton);
     }
-    
+
     public function performActionShowStat()
     {
 		$aTmp2 = bx_get('ids');

+ 5 - 33
template/scripts/BxBaseCmtsGridAdministration.php

@@ -69,43 +69,15 @@ class BxBaseCmtsGridAdministration extends BxDolCmtsGridAdministration
 
         return  $this->_getFilterSelectOne($this->_sFilter1Name, $this->_sFilter1Value, $this->_aFilter1Values) . $this->_getSearchInput();
     }
-    
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues)
-    {
-        if(empty($sFilterName) || empty($aFilterValues))
-            return '';
 
-        foreach($aFilterValues as $sKey => $sValue)
-            $aFilterValues[$sKey] = _t($sValue);
-
-        $aInputModules = array(
-            'type' => 'select',
-            'name' => $sFilterName,
-            'attrs' => array(
-                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-                'onChange' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)'
-            ),
-            'value' => $sFilterValue,
-            'values' => $aFilterValues
-        );
-
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputModules);
+    protected function _getFilterOnChange()
+    {
+        return $this->sJsObject . '.onChangeFilter(this)';
     }
 
-    protected function _getSearchInput()
+    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $mixedAddSelectOne = true, $bAsArray = false)
     {
-        $aInputSearch = array(
-            'type' => 'text',
-            'name' => 'search',
-            'attrs' => array(
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $this->sJsObject . '.onChangeFilter(this)',
-                'onBlur' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)',
-            )
-        );
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputSearch);
+        return parent::_getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, '_adm_txt_select_module', $bAsArray);
     }
 
     protected function _getCellHeaderCmtModule($sKey, $aField)

+ 81 - 1
template/scripts/BxBaseGrid.php

@@ -855,7 +855,7 @@ class BxBaseGrid extends BxDolGrid
 
     protected function _getFilterControls ()
     {
-        $oForm = new BxTemplFormView(array());
+        $oForm = new BxTemplFormView([]);
 
         $aInput = array(
             'type' => 'text',
@@ -877,6 +877,86 @@ class BxBaseGrid extends BxDolGrid
         return $aFilters;
     }
 
+    protected function _getFilterOnChange()
+    {
+        return '';
+    }
+
+    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $mixedAddSelectOne = true, $bAsArray = false)
+    {
+        if(empty($sFilterName))
+            return '';
+
+        $aInputValues = [];
+        if(($mixedAddSelectOne === true && ($sKey = '_Select_one')) || (is_string($mixedAddSelectOne) && ($sKey = $mixedAddSelectOne)))
+            $aInputValues[''] = _t($sKey);
+
+        foreach($aFilterValues as $mixedKey => $mixedValue)
+            if(is_array($mixedValue) && isset($mixedValue['key'], $mixedValue['value']))
+                $aInputValues[$mixedValue['key']] = _t($mixedValue['value']);
+            else
+                $aInputValues[$mixedKey] = _t($mixedValue);
+
+        $aInputSelect = [
+            'type' => 'select',
+            'name' => $sFilterName,
+            'attrs' => [
+                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
+                'onChange' => ($sOnChange = $this->_getFilterOnChange()) ? 'javascript:' . $sOnChange : '',
+            ],
+            'value' => $sFilterValue,
+            'values' => $aInputValues
+        ];
+
+        if($bAsArray)
+            return $aInputSelect;
+
+        $oForm = new BxTemplFormView([]);
+        return $oForm->genRow($aInputSelect);
+    }
+
+    protected function _getFilterButton($bAsArray = false)
+    {
+        $sOnChange = $this->_getFilterOnChange();
+
+        $aInputButton = [
+            'type' => 'button',
+            'name' => 'button',
+            'attrs' => [
+                'id' => 'bx-grid-button-' . $this->_sObject,
+                'onClick' => 'javascript:' . $sOnChange,
+            ],
+            'value' => _t('_Search'),
+        ];
+
+        if($bAsArray)
+            return $aInputButton;
+
+        $oForm = new BxTemplFormView([]);
+        return $oForm->genRow($aInputButton);
+    }
+
+    protected function _getSearchInput($bAsArray = false)
+    {
+        $sOnChange = $this->_getFilterOnChange();
+
+        $aInputSearch = [
+            'type' => 'text',
+            'name' => 'search',
+            'attrs' => [
+                'id' => 'bx-grid-search-' . $this->_sObject,
+                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $sOnChange,
+                'onBlur' => 'javascript:' . $sOnChange,
+            ]
+        ];
+
+        if($bAsArray)
+            return $aInputSearch;
+
+        $oForm = new BxTemplFormView([]);
+        return $oForm->genRow($aInputSearch);
+    }
+
     protected function _getCounter()
     {
         return _t('_sys_grid_total_count', $this->_iTotalCount);

+ 4 - 33
template/scripts/BxBaseReportsGrid.php

@@ -258,43 +258,14 @@ class BxBaseReportsGrid extends BxTemplGrid
         return  $this->_getFilterSelectOne($this->_sFilter1Name, $this->_sFilter1Value, $this->_aFilter1Values) . $this->_getSearchInput();
     }
 
-    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues)
+    protected function _getFilterOnChange()
     {
-        if(empty($sFilterName) || empty($aFilterValues))
-            return '';
-        
-        foreach($aFilterValues as $sKey => $sValue)
-            $aFilterValues[$sKey] = _t($sValue);
-
-        $aInputModules = array(
-            'type' => 'select',
-            'name' => $sFilterName,
-            'attrs' => array(
-                'id' => 'bx-grid-' . $sFilterName . '-' . $this->_sObject,
-                'onChange' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)'
-            ),
-            'value' => $sFilterValue,
-            'values' => array_merge(array('' => 'All'), $aFilterValues)
-        );
-
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputModules);
+        return $this->sJsObject . '.onChangeFilter(this)';
     }
 
-    protected function _getSearchInput()
+    protected function _getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, $mixedAddSelectOne = true, $bAsArray = false)
     {
-        $aInputSearch = array(
-            'type' => 'text',
-            'name' => 'search',
-            'attrs' => array(
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $this->sJsObject . '.onChangeFilter(this)',
-                'onBlur' => 'javascript:' . $this->sJsObject . '.onChangeFilter(this)',
-            )
-        );
-
-        $oForm = new BxTemplFormView(array());
-        return $oForm->genRow($aInputSearch);
+        return parent::_getFilterSelectOne($sFilterName, $sFilterValue, $aFilterValues, '_all', $bAsArray);
     }
 
     protected function _getDataSql ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)