/** * Dieses JavaScript stellt die Logik zur Verfügung, um die Kategorien korrekt darzustellen. * Die Werte, die der Funktion übergeben werden müssen, müssen in 3 zweidimensionalen Arrays * angeordnet sein - jeweils eins für die Kategorien, Kategoriebezeichnungen und die Kategorie der * übergeordneten Listbox. Beim Aufruf wird unterschieden zwischen Erstellungsbildschirm(create) * und Veränderungsbildschirm(edit). Der entsprechende Wert wird in der Variable updatetype * übergeben. Im Edit-Mode(Werte schon vorhanden) werden dem Script die bisherigen Kategoriewerte * in einem Array catinit(KAtegorie1, Kategorie2,..) übergeben. */ function getBox(theBox){ /** * Diese Funktion gibt ein SELECTBOX-Objekt des aktuellen Formulars zurück. Eingangswerte * können 1-5 sein, worauf Objekt category1 bis category5 zurückgeliefert werden. */ var obj = document.forms[0].elements[0]; switch(theBox){ case 1: return(obj.form.elements['category1']); break; case 2: return(obj.form.elements['category2']); break; case 3: return(obj.form.elements['category3']); break; case 4: return(obj.form.elements['category4']); break; case 5: return(obj.form.elements['category5']); break; } } function fillSelect(theValue, theBox) { /** * Diese Funktion füllt eine bestimmte SELECTBOX, welche über die Variable theBox spezifiziert * ist, in Abhängigkeit von den dem ausgewählten Wert der SELECTBOX des in der Hierarchie * höherstehenden SELECTBOX. */ var obj = document.forms[0].elements[0]; //SELECTBOX ermitteln var theField = getBox(theBox) var theOptionCounter = 0; //SELECTBOX entleeren emptySelField(theField); //neue Werte in die SELECTBOX schreiben for (var i = 0; i < cat[theBox].length; i++) { if (catparent[theBox][i] == (theValue)){ var NewOption = new Option(catname[theBox][i], cat[theBox][i]) theField.options[theOptionCounter]=NewOption theOptionCounter++; } } //ersten Eintrag der SELECTBOX selektieren if (theOptionCounter > 0){ theField.options[0].selected = true; } //die hierarchisch unterstellten SELECTBOXEN aktualisieren if (theBox < 2){ fillSelect(theField.value, theBox + 1); } } function emptySelField(theField) { /** * Diese Funktion löscht alle eingetragenen Optionen eine bestimmte SELECTBOX. */ for (var i = theField.options.length; i >= 0 ; i--) { theField.options[i]=null } } function initBoxes() { /** * Diese Funktion wird nach dem Laden in den Browser automatisch ausgeführt. * Im Fall, dass der updatemode "create" ist, werden die Selectboxen auf die Neueingabe der * Kategorien vorbereitet. Im Fall von "edit" werden die bisherigen Kategoriewerte des Assets * in den Selectboxen eingestellt. */ var max_level=2; if (updatetype == "edit") { //SELECTBOX category1 füllen fillSelect("", 1); var theField; //Für alle Kategorien ... for (var j=1; j <= max_level ; j++) { theField = getBox(j); //durchsuchen der Listbox nach dem voreinzustellen den Wert und diesen selektieren for (var i = (theField.options.length - 1); i >= 0 ; i--) { if (theField.options[i].value == catinit[j-1]) { theField.options[i].selected = true; } } //untergeordneten Selectbox aktualisieren if (catinit[j-1] != "" && j < max_level) { fillSelect(catinit[j-1] , j + 1); } } } if (updatetype == "create") { //SELECTBOX category1 füllen fillSelect("", 1); } }