RomanL 8 лет назад
Родитель
Сommit
2977342f04

+ 5 - 0
modules/base/profile/classes/BxBaseModProfileGridAdministration.php

@@ -124,6 +124,11 @@ class BxBaseModProfileGridAdministration extends BxBaseModGeneralGridAdministrat
     	if(!empty($this->_sFilter1Value))
         	$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`status`=?", $this->_sFilter1Value);
 
+        return $this->_getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
+    }
+    
+    protected function _getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
+    {
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
 

+ 1 - 0
modules/boonex/persons/classes/BxPersonsConfig.php

@@ -183,6 +183,7 @@ class BxPersonsConfig extends BxBaseModProfileConfig
             	'filter_item_pending' => '_bx_persons_grid_filter_item_title_adm_pending',
             	'filter_item_suspended' => '_bx_persons_grid_filter_item_title_adm_suspended',
             	'filter_item_select_one_filter1' => '_bx_persons_grid_filter_item_title_adm_select_one_filter1',
+                'filter_item_select_one_filter2' => '_bx_persons_grid_filter_item_title_adm_select_one_filter2',
             	'menu_item_manage_my' => '_bx_persons_menu_item_title_manage_my',
             	'menu_item_manage_all' => '_bx_persons_menu_item_title_manage_all',
             	'txt_browse_favorites' => '_bx_persons_page_title_browse_favorites',

+ 40 - 0
modules/boonex/persons/classes/BxPersonsGridAdministration.php

@@ -11,11 +11,51 @@
 
 class BxPersonsGridAdministration extends BxBaseModProfileGridAdministration
 {
+    protected $_sFilter2Name;
+	protected $_sFilter2Value;
+	protected $_aFilter2Values;
+    
     public function __construct ($aOptions, $oTemplate = false)
     {
     	$this->MODULE = 'bx_persons';
         parent::__construct ($aOptions, $oTemplate);
+        
+        $CNF = &$this->_oModule->_oConfig->CNF;
+        $this->_sFilter2Name = 'filter2';
+        $aTmp = array();
+        BxDolAclQuery::getInstance()->getLevels(array('type' => 'all_active_pair'), $aTmp);
+        foreach ($aTmp as $sKey => $sValue) {
+            $this->_aFilter2Values["level" . $sKey] = $sValue;
+        }
+        
+        $sFilter2 = bx_get($this->_sFilter2Name);
+        if(!empty($sFilter2)) {
+            $this->_sFilter2Value = bx_process_input($sFilter2);
+            $this->_aQueryAppend[$this->_sFilter2Name] = $this->_sFilter2Value;
+        }
     }
+    
+    protected function _getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
+    {
+        if(strpos($sFilter, $this->_sParamsDivider) !== false)
+            list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = explode($this->_sParamsDivider, $sFilter);
+
+    	if(!empty($this->_sFilter1Value))
+        	$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`status`=?", $this->_sFilter1Value);
+        
+        if(!empty($this->_sFilter2Value))
+        	$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`id` IN (SELECT `IDMember` FROM `sys_acl_levels_members` WHERE IDLevel = ?) ", str_replace("level", "", $this->_sFilter2Value));
+
+        return parent::_getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
+    }
+    
+    protected function _getFilterControls()
+    {
+        parent::_getFilterControls();
+
+        return  $this->_getFilterSelectOne($this->_sFilter1Name, $this->_sFilter1Value, $this->_aFilter1Values) . $this->_getFilterSelectOne($this->_sFilter2Name, $this->_sFilter2Value, $this->_aFilter2Values) . $this->_getSearchInput();
+    }
+    
 }
 
 /** @} */

+ 2 - 1
modules/boonex/persons/install/langs/en.xml

@@ -233,10 +233,11 @@
 	<string name="_bx_persons_menu_item_title_entries_online"><![CDATA[Online]]></string>
 
 	<string name="_bx_persons_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+  <string name="_bx_persons_grid_filter_item_title_adm_select_one_filter2"><![CDATA[All]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
-	<string name="_bx_persons_grid_column_title_adm_active"><![CDATA[Active]]></string>
+  <string name="_bx_persons_grid_column_title_adm_active"><![CDATA[Active]]></string>
     <string name="_bx_persons_grid_column_title_adm_fullname"><![CDATA[Name]]></string>
     <string name="_bx_persons_grid_column_title_adm_last_online"><![CDATA[Last Online]]></string>
     <string name="_bx_persons_grid_column_title_adm_account"><![CDATA[Account]]></string>

+ 5 - 2
modules/boonex/persons/js/manage_tools.js

@@ -27,14 +27,17 @@ BxPersonsManageTools.prototype.onChangeFilter = function(oFilter) {
 	var oFilter1 = $('#bx-grid-filter1-' + this._sObjNameGrid);
 	var sValueFilter1 = oFilter1.length > 0 ? oFilter1.val() : '';
 
+	var oFilter2 = $('#bx-grid-filter2-' + this._sObjNameGrid);
+	var sValueFilter2 = oFilter2.length > 0 ? oFilter2.val() : '';
+
 	var oSearch = $('#bx-grid-search-' + this._sObjNameGrid);
 	var sValueSearch = oSearch.length > 0 ? oSearch.val() : '';
 	if(sValueSearch == _t('_sys_grid_search'))
 		sValueSearch = '';
 
 	clearTimeout($this._iSearchTimeoutId);
-    $this._iSearchTimeoutId = setTimeout(function () {
-        glGrids[$this._sObjNameGrid].setFilter(sValueFilter1 + $this._sParamsDivider + sValueSearch, true);
+	$this._iSearchTimeoutId = setTimeout(function () {
+	    glGrids[$this._sObjNameGrid].setFilter(sValueFilter1 + $this._sParamsDivider + sValueFilter2 + $this._sParamsDivider + sValueSearch, true);//TODO ANT
     }, 500);
 };
 

+ 1 - 0
modules/boonex/russian/data/langs/bx_persons/ru.xml

@@ -235,6 +235,7 @@
 	<string name="_bx_persons_menu_item_title_entries_online"><![CDATA[Онлайн]]></string>
 
 	<string name="_bx_persons_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
+  <string name="_bx_persons_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Все]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
 	<string name="_bx_persons_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>