ConLite/conlite/scripts/group_association.js

144 Zeilen
4.4 KiB
JavaScript

/*****************************************
*
* $Id$
*
* File : $RCSfile: group_association.js,v $
* Project : Contenido
* Descr : File contains java script functions for filtering users in select areas, handling short keys and submitting form
* This functions are used in template template.grouprights_memberselect.html
*
* Author : $Author: timo.trautmann$
* Modified : $Date$
*
* © four for business AG, www.4fb.de
******************************************/
var keycode = 0; //last pressed key
var addAction = ''; //contenidoaction for adding user to group - (different fpr frontentgroups and backendgroups)
var deleteAction = ''; //contenidoaction for removing user from group - (different fpr frontentgroups and backendgroups)
/**
* Initialization of previous defined variables
*
* @param string add - adding user contenido action
* @param string del - removing user contenido action
*
*/
function init(add, del) {
addAction = add;
deleteAction = del;
}
/**
* Function submits form when users were added to group or removed from group
*
* @param string isAdded - contenido action string
*
*/
function setAction(isAdded) {
var selectId = null;
//case of adding new members
if (isAdded == addAction) {
selectId = 'newmember';
document.group_properties.action.value = addAction;
//case of removing existing members
} else {
selectId = 'user_in_group';
document.group_properties.action.value = deleteAction;
}
var sSelectBox = document.getElementById(selectId);
//only submit form, if a user is selected
if (sSelectBox.selectedIndex != -1) {
document.group_properties.submit();
}
}
/**
* Function filters entries in select box and shows only relevant users for selection
*
* @param string id - id of textbox, which contains the search string
*
*/
function filter (id) {
//get search string ans buid regular expression
var sFilterValue = document.getElementById(id).value;
var oReg = new RegExp(sFilterValue,"gi");
//build id of corresponding select box
var sSelectId = id.replace(/_filter_value/, '');
//get select box and corresponding options
var sSelectBox = document.getElementById(sSelectId);
var oOptions = sSelectBox.getElementsByTagName('option');
//remove all options
var iLen = oOptions.length;
for (var i=0; i <iLen; i++) {
sSelectBox.removeChild(oOptions[0]);
}
//get all options which where avariable in hidden select box
var sSelectBoxAll = document.getElementById('all_'+sSelectId);
var oOptionsAll = sSelectBoxAll.getElementsByTagName('option');
//iterate over all hidden options
var count = 0;
for (var i=0; i<oOptionsAll.length; i++) {
//get the label of the option
var label = oOptionsAll[i].firstChild.nodeValue;
//if option label matches to search string
if (label.match(oReg)) {
//generate new option element, fill it with the hidden values and append it to the select box which is viewable
var newOption = document.createElement('option');
newOption.value = oOptionsAll[i].value;
newOption.innerHTML = label;
newOption.disabled = false;
sSelectBox.appendChild(newOption);
count++;
}
}
//if there are no options, deactivate corresponding move button
if(count == 0) {
document.getElementById(sSelectId+'_button').disabled = true;
} else {
document.getElementById(sSelectId+'_button').disabled = false;
}
}
/**
* Function is callend when user types into the filter inputs
*
* @param string id - id of textbox, which contains the search string
*
*/
function keyHandler(id) {
//if user pressed enter key into filter input, js function filter is called
if (keycode == 13) {
filter(id);
}
}
/**
* Function is callend when user presses a key
*
* @param object event - event object
*
*/
function setKeyCode (event) {
if (!event)
event = window.event;
if (event.keyCode) {
//for ie: store keycode, which is pressed into global variable
keycode = event.keyCode;
} else if (event.which) {
//for mozilla: store keycode, which is pressed into global variable
keycode = event.which;
}
}
//Activate listener, which calls function setKeyCode when user presses a key on keyboard
document.onkeydown = setKeyCode;