mirror of
https://github.com/moodle/moodle.git
synced 2025-07-28 01:41:03 +02:00
javascript MDL-23850 Moved mforms specific JavaScript to a separate file
This commit is contained in:
@@ -675,223 +675,6 @@ function checknone() {
|
||||
}
|
||||
}
|
||||
|
||||
function lockoptions(formid, master, subitems) {
|
||||
// Subitems is an array of names of sub items.
|
||||
// Optionally, each item in subitems may have a
|
||||
// companion hidden item in the form with the
|
||||
// same name but prefixed by "h".
|
||||
var form = document.forms[formid];
|
||||
|
||||
if (eval("form."+master+".checked")) {
|
||||
for (i=0; i<subitems.length; i++) {
|
||||
unlockoption(form, subitems[i]);
|
||||
}
|
||||
} else {
|
||||
for (i=0; i<subitems.length; i++) {
|
||||
lockoption(form, subitems[i]);
|
||||
}
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
function lockoption(form,item) {
|
||||
eval("form."+item+".disabled=true");/* IE thing */
|
||||
if(form.elements['h'+item]) {
|
||||
eval("form.h"+item+".value=1");
|
||||
}
|
||||
}
|
||||
|
||||
function unlockoption(form,item) {
|
||||
eval("form."+item+".disabled=false");/* IE thing */
|
||||
if(form.elements['h'+item]) {
|
||||
eval("form.h"+item+".value=0");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of the 'virtual form element' with a particular name. That is,
|
||||
* abstracts away the difference between a normal form element, like a select
|
||||
* which is a single HTML element with a .value property, and a set of radio
|
||||
* buttons, which is several HTML elements.
|
||||
*
|
||||
* @param form a HTML form.
|
||||
* @param master the name of an element in that form.
|
||||
* @return the value of that element.
|
||||
*/
|
||||
function get_form_element_value(form, name) {
|
||||
var element = form[name];
|
||||
if (!element) {
|
||||
return null;
|
||||
}
|
||||
if (element.tagName) {
|
||||
// Ordinarly thing like a select box.
|
||||
return element.value;
|
||||
}
|
||||
// Array of things, like radio buttons.
|
||||
for (var j = 0; j < element.length; j++) {
|
||||
var el = element[j];
|
||||
if (el.checked) {
|
||||
return el.value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the disabled state of the 'virtual form element' with a particular name.
|
||||
* This abstracts away the difference between a normal form element, like a select
|
||||
* which is a single HTML element with a .value property, and a set of radio
|
||||
* buttons, which is several HTML elements.
|
||||
*
|
||||
* @param form a HTML form.
|
||||
* @param master the name of an element in that form.
|
||||
* @param disabled the disabled state to set.
|
||||
*/
|
||||
function set_form_element_disabled(form, name, disabled) {
|
||||
var element = form[name];
|
||||
if (!element) {
|
||||
return;
|
||||
}
|
||||
if (element.tagName) {
|
||||
// Ordinarly thing like a select box.
|
||||
element.disabled = disabled;
|
||||
}
|
||||
// Array of things, like radio buttons.
|
||||
for (var j = 0; j < element.length; j++) {
|
||||
var el = element[j];
|
||||
el.disabled = disabled;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the hidden state of the 'virtual form element' with a particular name.
|
||||
* This abstracts away the difference between a normal form element, like a select
|
||||
* which is a single HTML element with a .value property, and a set of radio
|
||||
* buttons, which is several HTML elements.
|
||||
*
|
||||
* @param form a HTML form.
|
||||
* @param master the name of an element in that form.
|
||||
* @param hidden the hidden state to set.
|
||||
*/
|
||||
function set_form_element_hidden(form, name, hidden) {
|
||||
var element = form[name];
|
||||
if (!element) {
|
||||
return;
|
||||
}
|
||||
if (element.tagName) {
|
||||
var el = findParentNode(element, 'DIV', 'fitem', false);
|
||||
if (el!=null) {
|
||||
el.style.display = hidden ? 'none' : '';
|
||||
el.style.visibility = hidden ? 'hidden' : '';
|
||||
}
|
||||
}
|
||||
// Array of things, like radio buttons.
|
||||
for (var j = 0; j < element.length; j++) {
|
||||
var el = findParentNode(element[j], 'DIV', 'fitem', false);
|
||||
if (el!=null) {
|
||||
el.style.display = hidden ? 'none' : '';
|
||||
el.style.visibility = hidden ? 'hidden' : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function lockoptionsall(formid) {
|
||||
var form = document.forms[formid];
|
||||
var dependons = eval(formid + 'items');
|
||||
var tolock = [];
|
||||
var tohide = [];
|
||||
for (var dependon in dependons) {
|
||||
// change for MooTools compatibility
|
||||
if (!dependons.propertyIsEnumerable(dependon)) {
|
||||
continue;
|
||||
}
|
||||
if (!form[dependon]) {
|
||||
continue;
|
||||
}
|
||||
for (var condition in dependons[dependon]) {
|
||||
for (var value in dependons[dependon][condition]) {
|
||||
var lock;
|
||||
var hide = false;
|
||||
switch (condition) {
|
||||
case 'notchecked':
|
||||
lock = !form[dependon].checked;break;
|
||||
case 'checked':
|
||||
lock = form[dependon].checked;break;
|
||||
case 'noitemselected':
|
||||
lock = form[dependon].selectedIndex == -1;break;
|
||||
case 'eq':
|
||||
lock = get_form_element_value(form, dependon) == value;break;
|
||||
case 'hide':
|
||||
// hide as well as disable
|
||||
hide = true;break;
|
||||
default:
|
||||
lock = get_form_element_value(form, dependon) != value;break;
|
||||
}
|
||||
for (var ei in dependons[dependon][condition][value]) {
|
||||
var eltolock = dependons[dependon][condition][value][ei];
|
||||
if (hide) {
|
||||
tohide[eltolock] = true;
|
||||
}
|
||||
if (tolock[eltolock] != null) {
|
||||
tolock[eltolock] = lock || tolock[eltolock];
|
||||
} else {
|
||||
tolock[eltolock] = lock;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var el in tolock) {
|
||||
// change for MooTools compatibility
|
||||
if (!tolock.propertyIsEnumerable(el)) {
|
||||
continue;
|
||||
}
|
||||
set_form_element_disabled(form, el, tolock[el]);
|
||||
if (tohide.propertyIsEnumerable(el)) {
|
||||
set_form_element_hidden(form, el, tolock[el]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function lockoptionsallsetup(formid) {
|
||||
var form = document.forms[formid];
|
||||
var dependons = eval(formid+'items');
|
||||
for (var dependon in dependons) {
|
||||
// change for MooTools compatibility
|
||||
if (!dependons.propertyIsEnumerable(dependon)) {
|
||||
continue;
|
||||
}
|
||||
var masters = form[dependon];
|
||||
if (!masters) {
|
||||
continue;
|
||||
}
|
||||
if (masters.tagName) {
|
||||
// If master is radio buttons, we get an array, otherwise we don't.
|
||||
// Convert both cases to an array for convinience.
|
||||
masters = [masters];
|
||||
}
|
||||
for (var j = 0; j < masters.length; j++) {
|
||||
master = masters[j];
|
||||
master.formid = formid;
|
||||
master.onclick = function() {return lockoptionsall(this.formid);};
|
||||
master.onblur = function() {return lockoptionsall(this.formid);};
|
||||
master.onchange = function() {return lockoptionsall(this.formid);};
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < form.elements.length; i++) {
|
||||
var formelement = form.elements[i];
|
||||
if (formelement.type=='reset') {
|
||||
formelement.formid = formid;
|
||||
formelement.onclick = function() {this.form.reset();return lockoptionsall(this.formid);};
|
||||
formelement.onblur = function() {this.form.reset();return lockoptionsall(this.formid);};
|
||||
formelement.onchange = function() {this.form.reset();return lockoptionsall(this.formid);};
|
||||
}
|
||||
}
|
||||
return lockoptionsall(formid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Either check, or uncheck, all checkboxes inside the element with id is
|
||||
* @param id the id of the container
|
||||
@@ -994,59 +777,6 @@ function findChildNodes(start, tagName, elementClass, elementID, elementName) {
|
||||
}
|
||||
return children;
|
||||
}
|
||||
/*
|
||||
elementSetHide (elements, hide)
|
||||
|
||||
Adds or removes the "hide" class for the specified elements depending on boolean hide.
|
||||
*/
|
||||
function elementShowAdvanced(elements, show) {
|
||||
for (var elementIndex in elements) {
|
||||
element = elements[elementIndex];
|
||||
element.className = element.className.replace(new RegExp(' ?hide'), '')
|
||||
if(!show) {
|
||||
element.className += ' hide';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function showAdvancedInit(addBefore, nameAttr, buttonLabel, hideText, showText) {
|
||||
var showHideButton = document.createElement("input");
|
||||
showHideButton.type = 'button';
|
||||
showHideButton.value = buttonLabel;
|
||||
showHideButton.name = nameAttr;
|
||||
showHideButton.moodle = {
|
||||
hideLabel: M.str.form.hideadvanced,
|
||||
showLabel: M.str.form.showadvanced
|
||||
};
|
||||
YAHOO.util.Event.addListener(showHideButton, 'click', showAdvancedOnClick);
|
||||
el = document.getElementById(addBefore);
|
||||
el.parentNode.insertBefore(showHideButton, el);
|
||||
}
|
||||
|
||||
function showAdvancedOnClick(e) {
|
||||
var button = e.target ? e.target : e.srcElement;
|
||||
|
||||
var toSet=findChildNodes(button.form, null, 'advanced');
|
||||
var buttontext = '';
|
||||
if (button.form.elements['mform_showadvanced_last'].value == '0' || button.form.elements['mform_showadvanced_last'].value == '' ) {
|
||||
elementShowAdvanced(toSet, true);
|
||||
buttontext = button.moodle.hideLabel;
|
||||
button.form.elements['mform_showadvanced_last'].value = '1';
|
||||
} else {
|
||||
elementShowAdvanced(toSet, false);
|
||||
buttontext = button.moodle.showLabel;
|
||||
button.form.elements['mform_showadvanced_last'].value = '0';
|
||||
}
|
||||
var formelements = button.form.elements;
|
||||
// Fixed MDL-10506
|
||||
for (var i = 0; i < formelements.length; i++) {
|
||||
if (formelements[i] && formelements[i].name && (formelements[i].name=='mform_showadvanced')) {
|
||||
formelements[i].value = buttontext;
|
||||
}
|
||||
}
|
||||
//never submit the form if js is enabled.
|
||||
return false;
|
||||
}
|
||||
|
||||
function unmaskPassword(id) {
|
||||
var pw = document.getElementById(id);
|
||||
@@ -1224,7 +954,11 @@ function getElementsByClassName(oElm, strTagName, name) {
|
||||
function openpopup(event, args) {
|
||||
|
||||
if (event) {
|
||||
YAHOO.util.Event.preventDefault(event);
|
||||
if (event.preventDefault) {
|
||||
event.preventDefault();
|
||||
} else {
|
||||
event.returnValue = false;
|
||||
}
|
||||
}
|
||||
|
||||
var fullurl = args.url;
|
||||
@@ -1277,7 +1011,11 @@ emoticons_help = {
|
||||
|
||||
/** Close the current browser window. */
|
||||
function close_window(e) {
|
||||
YAHOO.util.Event.preventDefault(e);
|
||||
if (e.preventDefault) {
|
||||
e.preventDefault();
|
||||
} else {
|
||||
e.returnValue = false;
|
||||
}
|
||||
self.close();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user