From bc1a92ec35233ccacdceef326694bcd2cb15dcaf Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 3 Feb 2010 02:10:04 +0100 Subject: [PATCH] LSsearch : added predefined filters parameters --- .../LSobjects/config.LSobjects.LSpeople.php | 6 ++- public_html/css/default/base.css | 11 ++++- public_html/includes/class/class.LSsearch.php | 40 ++++++++++++++++++- public_html/includes/js/LSview.js | 12 ++++++ public_html/templates/default/viewSearch.tpl | 17 ++++++-- public_html/view.php | 3 +- 6 files changed, 81 insertions(+), 8 deletions(-) diff --git a/public_html/conf/LSobjects/config.LSobjects.LSpeople.php b/public_html/conf/LSobjects/config.LSobjects.LSpeople.php index 7ec8f26f..b55c96c5 100644 --- a/public_html/conf/LSobjects/config.LSobjects.LSpeople.php +++ b/public_html/conf/LSobjects/config.LSobjects.LSpeople.php @@ -118,7 +118,11 @@ $GLOBALS['LSobjects']['LSpeople'] = array ( 'mail' ), 'params' => array ( - 'recursive' => true + 'recursive' => true, + ), + 'predefinedFilters' => array ( + 'personalTitle=Mr.' => 'Man', + 'personalTitle=Ms' => 'Woman' ) ), diff --git a/public_html/css/default/base.css b/public_html/css/default/base.css index c30c402f..522a2a8b 100644 --- a/public_html/css/default/base.css +++ b/public_html/css/default/base.css @@ -286,10 +286,10 @@ a.question { * LSview_search ********************* */ -form.LSview_search { +div.LSview_search { float: right; margin: 0; - margin-top: 0.5em; + margin-top: -0.5em; margin-right: 2em; } @@ -313,3 +313,10 @@ input[type='submit'].LSview_search { background-color: #0072b8; color: #fff; } + +#LSview_search_predefinedFilter { + float: left; + margin-top: -1.8em; + margin-bottom: 0; + margin-left: 1.2em; +} diff --git a/public_html/includes/class/class.LSsearch.php b/public_html/includes/class/class.LSsearch.php index adf7da27..44dd42eb 100644 --- a/public_html/includes/class/class.LSsearch.php +++ b/public_html/includes/class/class.LSsearch.php @@ -41,6 +41,7 @@ class LSsearch { // Search params 'filter' => NULL, 'pattern' => NULL, + 'predefinedFilter' => false, 'basedn' => NULL, 'subDn' => NULL, 'scope' => NULL, @@ -437,6 +438,28 @@ class LSsearch { $OK=false; } } + + // predefinedFilter + if (isset($params['predefinedFilter'])) { + if (is_string($params['predefinedFilter'])) { + if (empty($params['predefinedFilter'])) { + $this->params['predefinedFilter']=false; + } + elseif(is_array($this -> config['predefinedFilters'])) { + if(isset($this->config['predefinedFilters'][$params['predefinedFilter']])) { + $this -> params['predefinedFilter'] = $params['predefinedFilter']; + } + else { + LSerror :: addErrorCode('LSsearch_03','predefinedFilter'); + $OK=false; + } + } + } + else { + LSerror :: addErrorCode('LSsearch_03','predefinedFilter'); + $OK=false; + } + } // Display Format if (is_string($params['displayFormat'])) { @@ -648,6 +671,19 @@ class LSsearch { } } + // predefinedFilter + if (is_string($this -> params['predefinedFilter'])) { + if (!is_null($retval['filter'])) { + $filter=LSldap::combineFilters('and',array($this -> params['predefinedFilter'],$retval['filter'])); + if ($filter) { + $retval['filter']=$filter; + } + } + else { + $retval['filter']=$this -> params['predefinedFilter']; + } + } + // Filter $objFilter=LSldapObject::getObjectFilter($this -> LSobject); if ($objFilter) { @@ -662,7 +698,6 @@ class LSsearch { } } - // Recursive if (is_null($retval['basedn'])) { if (!is_null($this -> params['subDn'])) { @@ -925,6 +960,9 @@ class LSsearch { $this -> _canCopy = LSsession :: canCreate($this -> LSobject); return $this -> _canCopy; } + elseif ($key=='predefinedFilters') { + return ((is_array($this -> config['predefinedFilters']))?$this -> config['predefinedFilters']:array()); + } else { throw new Exception('Incorrect property !'); } diff --git a/public_html/includes/js/LSview.js b/public_html/includes/js/LSview.js index 6dc98eee..d8ff8b52 100644 --- a/public_html/includes/js/LSview.js +++ b/public_html/includes/js/LSview.js @@ -30,6 +30,18 @@ var LSview = new Class({ el.addEvent('click',this.onRemoveViewBtnClick.bindWithEvent(this,el)); } }, this); + + this.LSsearchForm = $('LSsearch_form'); + this.LSsearchPredefinedFilter = $('LSview_search_predefinedFilter'); + if($type(this.LSsearchPredefinedFilter) && $type('LSsearch_form')) { + this.LSsearchPredefinedFilter.addEvent('change',this.onLSsearchPredefinedFilterChange.bind(this)); + } + }, + + onLSsearchPredefinedFilterChange: function() { + if (this.LSsearchForm) { + this.LSsearchForm.submit(); + } }, onTdLSobjectListNamesClick: function(td) { diff --git a/public_html/templates/default/viewSearch.tpl b/public_html/templates/default/viewSearch.tpl index 467b3df7..499b4d71 100644 --- a/public_html/templates/default/viewSearch.tpl +++ b/public_html/templates/default/viewSearch.tpl @@ -1,6 +1,7 @@ {include file='top.tpl'} -

{$pagetitle} @@ -27,6 +28,16 @@ {/if} +{if ! empty($LSsearch)} + +{/if} + + + +
diff --git a/public_html/view.php b/public_html/view.php index 4de9eb4c..0d06d32d 100644 --- a/public_html/view.php +++ b/public_html/view.php @@ -111,7 +111,8 @@ if(LSsession :: startLSsession()) { 'names' => array ( 'submit' => 'LSsearch_submit' ), - 'hiddenFields' => $LSsearch -> getHiddenFieldForm() + 'hiddenFields' => $LSsearch -> getHiddenFieldForm(), + 'predefinedFilter' => $LSsearch->getParam('predefinedFilter') ); $GLOBALS['Smarty']->assign('searchForm',$searchForm);