support filter for NIS net groups
This commit is contained in:
		
							parent
							
								
									0807a1b741
								
							
						
					
					
						commit
						e0d291378e
					
				| 
						 | 
				
			
			@ -418,6 +418,8 @@ class htmlInputField extends htmlElement {
 | 
			
		|||
	protected $fieldMaxLength = 255;
 | 
			
		||||
	/** on keypress event */
 | 
			
		||||
	protected $onKeyPress = null;
 | 
			
		||||
	/** on keyupp event */
 | 
			
		||||
	protected $onKeyUp = null;
 | 
			
		||||
	/** password field */
 | 
			
		||||
	protected $isPassword = false;
 | 
			
		||||
	/** check password strength */
 | 
			
		||||
| 
						 | 
				
			
			@ -535,11 +537,15 @@ class htmlInputField extends htmlElement {
 | 
			
		|||
		if ($this->onKeyPress != null) {
 | 
			
		||||
			$onKeyPress = ' onkeypress="' . $this->onKeyPress . '"';
 | 
			
		||||
		}
 | 
			
		||||
		$onKeyUp = '';
 | 
			
		||||
		if ($this->onKeyUp != null) {
 | 
			
		||||
			$onKeyUp = ' onkeyup="' . $this->onKeyUp . '"';
 | 
			
		||||
		}
 | 
			
		||||
		$title = '';
 | 
			
		||||
		if (!empty($this->title)) {
 | 
			
		||||
			$title = ' title="' . $this->title . '"';
 | 
			
		||||
		}
 | 
			
		||||
		echo '<input type="' . $inputType . '"' . $class . $name . $id . $value . $maxLength . $size . $fieldTabIndex . $onKeyPress . $title . $disabled . '>';
 | 
			
		||||
		echo '<input type="' . $inputType . '"' . $class . $name . $id . $value . $maxLength . $size . $fieldTabIndex . $onKeyPress . $onKeyUp . $title . $disabled . '>';
 | 
			
		||||
		// autocompletion
 | 
			
		||||
		if ($this->autocomplete) {
 | 
			
		||||
			echo "<script type=\"text/javascript\">\n";
 | 
			
		||||
| 
						 | 
				
			
			@ -723,6 +729,15 @@ class htmlInputField extends htmlElement {
 | 
			
		|||
		$this->onKeyPress = $onKeyPress;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Sets the JavaScript for the onKeyUp event.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param String $onKeyUp JavaScript code
 | 
			
		||||
	 */
 | 
			
		||||
	public function setOnKeyUp($onKeyUp) {
 | 
			
		||||
		$this->onKeyUp = $onKeyUp;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Shows a calendar when the field is selected.
 | 
			
		||||
	 * 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -192,6 +192,15 @@ class nisNetGroupUser extends baseModule {
 | 
			
		|||
			$addButton = new htmlButton('addGroup', 'add.png', true);
 | 
			
		||||
			$addButton->setTitle(_('Add'));
 | 
			
		||||
			$return->addElement($addButton, true);
 | 
			
		||||
 | 
			
		||||
			$filterGroup = new htmlGroup();
 | 
			
		||||
			$filterGroup->alignment = htmlElement::ALIGN_RIGHT;
 | 
			
		||||
			$filterGroup->addElement(new htmlOutputText(_('Filter') . ' '));
 | 
			
		||||
			$filter = new htmlInputField('group_filter');
 | 
			
		||||
			$filter->setFieldSize('5em');
 | 
			
		||||
			$filter->setOnKeyUp('filterSelect(\'group_filter\', \'group_add\', event);');
 | 
			
		||||
			$filterGroup->addElement($filter);
 | 
			
		||||
			$return->addElement($filterGroup, true);
 | 
			
		||||
		}
 | 
			
		||||
		return $return;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -615,3 +615,33 @@ function updateModulePositions(id, oldPos, newPos) {
 | 
			
		|||
	}
 | 
			
		||||
	jQuery('#' + id).val(positions.join(','));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Filters a select box by the value of the filter input field.
 | 
			
		||||
 * 
 | 
			
		||||
 * @param filterInput ID of input field for filter
 | 
			
		||||
 * @param select ID of select box to filter
 | 
			
		||||
 * @param event key event
 | 
			
		||||
 */
 | 
			
		||||
function filterSelect(filterInput, select, event) {
 | 
			
		||||
	// if values were not yet saved, save them
 | 
			
		||||
	if (!jQuery('#' + select).data('options')) {
 | 
			
		||||
		var options = [];
 | 
			
		||||
		jQuery('#' + select).find('option').each(function() {
 | 
			
		||||
			options.push({value: $(this).val(), text: $(this).text()});
 | 
			
		||||
		});
 | 
			
		||||
		jQuery('#' + select).data('options', options);
 | 
			
		||||
	}
 | 
			
		||||
	// get matching values
 | 
			
		||||
	var list = jQuery('#' + select).empty().scrollTop(0).data('options');
 | 
			
		||||
	var search = jQuery.trim(jQuery('#' + filterInput).val());
 | 
			
		||||
	var regex = new RegExp(search,'gi');
 | 
			
		||||
	jQuery.each(list, function(i) {
 | 
			
		||||
		var option = list[i];
 | 
			
		||||
		if(option.text.match(regex) !== null) {
 | 
			
		||||
			jQuery('#' + select).append(
 | 
			
		||||
					jQuery('<option>').text(option.text).val(option.value)
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue