Просмотр исходного кода

Ticket #5304 - Developer: Filters are reset after form submission in builders.

AntonLV 10 месяцев назад
Родитель
Сommit
5d0032400f

+ 12 - 2
modules/boonex/developer/classes/BxDevFormsForms.php

@@ -35,7 +35,12 @@ class BxDevFormsForms extends BxTemplStudioFormsForms
         $sFormDisplay = $this->oModule->_oConfig->getObject('form_display_forms_form_add');
         $sFormDisplay = $this->oModule->_oConfig->getObject('form_display_forms_form_add');
 
 
         $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
         $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
-        $oForm->aFormAttrs['action'] = BX_DOL_URL_ROOT . 'grid.php?o=' . $this->_sObject . '&a=' . $sAction;
+        $oForm->setId($sFormDisplay);
+        $oForm->setAction(BX_DOL_URL_ROOT . bx_append_url_params('grid.php', [
+            'o' => $this->_sObject, 
+            'a' => $sAction,
+            $this->_aOptions['filter_get'] => $this->_sFilter
+        ]));
         $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
         $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
 
 
         $oForm->initChecker();
         $oForm->initChecker();
@@ -88,7 +93,12 @@ class BxDevFormsForms extends BxTemplStudioFormsForms
         }
         }
 
 
         $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
         $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
-        $oForm->aFormAttrs['action'] = BX_DOL_URL_ROOT . 'grid.php?o=' . $this->_sObject . '&a=' . $sAction;
+        $oForm->setId($sFormDisplay);
+        $oForm->setAction(BX_DOL_URL_ROOT . bx_append_url_params('grid.php', [
+            'o' => $this->_sObject, 
+            'a' => $sAction,
+            $this->_aOptions['filter_get'] => $this->_sFilter
+        ]));
         $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
         $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
         $oForm->aInputs['controls'][0]['value'] = _t('_bx_dev_frm_btn_forms_save');
         $oForm->aInputs['controls'][0]['value'] = _t('_bx_dev_frm_btn_forms_save');
 
 

+ 6 - 35
studio/template/scripts/BxBaseStudioFormsForms.php

@@ -188,43 +188,14 @@ class BxBaseStudioFormsForms extends BxDolStudioFormsForms
     {
     {
         parent::_getFilterControls();
         parent::_getFilterControls();
 
 
-        $sContent = "";
+        $aCounter = [];
+        $this->oDb->getForms(['type' => 'counter_by_modules'], $aCounter, false);
 
 
-        $sJsObject = $this->getJsObject();
-        $oForm = new BxTemplStudioFormView(array());
-
-        $aInputModules = array(
-            'type' => 'select',
-            'name' => 'module',
-            'attrs' => array(
-                'id' => 'bx-grid-module-' . $this->_sObject,
-                'onChange' => 'javascript:' . $this->getJsObject() . '.onChangeFilter()'
-            ),
-            'value' => '',
-            'values' => $this->getModules(false)
-        );
-
-        $aCounter = array();
-        $this->oDb->getForms(array('type' => 'counter_by_modules'), $aCounter, false);
-        foreach($aInputModules['values'] as $sKey => $sValue)
-            $aInputModules['values'][$sKey] = $aInputModules['values'][$sKey] . " (" . (isset($aCounter[$sKey]) ? $aCounter[$sKey] : "0") . ")";
-
-        $aInputModules['values'] = array_merge(array('' => _t('_adm_form_txt_all_modules')), $aInputModules['values']);
-
-        $sContent .= $oForm->genRow($aInputModules);
-
-        $aInputSearch = array(
-            'type' => 'text',
-            'name' => 'keyword',
-            'attrs' => array(
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $sJsObject . '.onChangeFilter()',
-            	'onBlur' => 'javascript:' . $sJsObject . '.onChangeFilter()',
-            )
-        );
-        $sContent .= $oForm->genRow($aInputSearch);
+        $aModules = $this->getModules(false);
+        foreach($aModules as $sKey => $sValue)
+            $aModules[$sKey] = $aModules[$sKey] . " (" . ($aCounter[$sKey] ?? 0) . ")";
 
 
-        return  $sContent;
+        return parent::_getFilterSelectOne('module', '', $aModules, '_adm_form_txt_all_modules') . $this->getSearchInput();
     }
     }
 }
 }
 
 

+ 10 - 0
studio/template/scripts/BxBaseStudioGrid.php

@@ -52,6 +52,16 @@ class BxBaseStudioGrid extends BxDolStudioGrid
         return $oForm->genRow($aInputModules);
         return $oForm->genRow($aInputModules);
     }
     }
 
 
+    public function getSearchInput()
+    {
+        return parent::_getSearchInput();
+    }
+
+    protected function _getFilterOnChange()
+    {
+        return $this->getJsObject() . '.onChangeFilter()';
+    }
+
     protected function _getItem($sDbMethod = '')
     protected function _getItem($sDbMethod = '')
     {
     {
         $aIds = bx_get('ids');
         $aIds = bx_get('ids');

+ 0 - 15
studio/template/scripts/BxBaseStudioGridNavigation.php

@@ -50,21 +50,6 @@ class BxBaseStudioGridNavigation extends BxTemplStudioGrid
 
 
         return $oForm->genRow($aInputModules);
         return $oForm->genRow($aInputModules);
     }
     }
-
-    public function getSearchInput()
-    {
-        $oForm = new BxTemplStudioFormView(array());
-
-        $aInputSearch = array(
-            'type' => 'text',
-            'name' => 'keyword',
-            'attrs' => array(
-                'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup\'); ' . $this->getJsObject() . '.onChangeFilter()'
-            )
-        );
-        return $oForm->genRow($aInputSearch);
-    }
 }
 }
 
 
 /** @} */
 /** @} */