From: jamiesensei Date: Wed, 22 Nov 2006 08:53:35 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=d01a38cb06b4f375f4bae20c693eddeb1abbd338;p=moodle.git *** empty log message *** --- diff --git a/lib/formslib.php b/lib/formslib.php index 4a882c9826..8a20466b1b 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -793,8 +793,8 @@ function validate_' . $this->_attributes['id'] . '(frm) { } } } - function getLockOptionStartScript(){ + function getLockOptionEndScript(){ $js = ''."\n"; return $js; } - function getLockOptionEndScript(){ - $js = ''."\n"; - return $js; + + function _getElNamesRecursive(&$element, $group=null){ + if ($group==null){ + $el=$this->getElement($element); + } else { + $el=&$element; + } + if (is_a($el, 'HTML_QuickForm_group')){ + $group=$el; + $elsInGroup=$group->getElements(); + $elNames=array(); + foreach ($elsInGroup as $elInGroup){ + $elNames = array_merge($elNames, $this->_getElNamesRecursive($elInGroup, $group)); + } + }else{ + if ($group==null){ + $elNames=array($el->getName()); + } else { + $elNames=array($group->getElementName($el->getName())); + } + } + return $elNames; + } /** * Adds a dependency for $elementName which will be disabled if $condition is met. @@ -831,23 +850,11 @@ function validate_' . $this->_attributes['id'] . '(frm) { * @param string $condition the condition to check */ function addDependency($elementName, $dependentOn, $condition='notchecked'){ - $el=$this->getElement($elementName); - if (is_a($el, 'HTML_QuickForm_group')){ - $group=$el; - $els=$group->getElements(); - foreach (array_keys($els) as $elkey){ - $dependentNames[]=array('dependent'=>$group->getElementName($elkey), - 'condition'=>$condition); - } - }else{ - $dependentNames=array(array('dependent'=>$el->getName(), - 'condition'=>$condition)); - } - foreach ($dependentNames as $dependentName){ - $dependentOnEl=$this->getElement($dependentOn); - $name=$dependentOnEl->getName(); - $dependentOnEl->updateAttributes(array('onClick'=>"return lockoptionsall('".$this->getAttribute('id')."');\n")); - $this->_dependencies[$name][]=$dependentName; + $dependents=$this->_getElNamesRecursive($elementName); + foreach ($dependents as $dependent){ + + $this->_dependencies[$dependentOn][]=array('dependent'=>$dependent, + 'condition'=>$condition); } } } @@ -975,10 +982,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ } function finishForm(&$form){ parent::finishForm($form); - // add a validation script - if ('' != ($script = $form->getLockOptionStartScript())) { - $this->_html = $script . "\n" . $this->_html; - } + // add a lockoptions script if ('' != ($script = $form->getLockOptionEndScript())) { $this->_html = $this->_html . "\n" . $script; } diff --git a/lib/javascript-static.js b/lib/javascript-static.js index 2f8ed11951..ee9843819d 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -88,6 +88,20 @@ function lockoptionsall(formid) { return(true); } +function lockoptionsallsetup(formid) { + var items=eval(formid+'items'); + var form=document.forms[formid]; + for (var master in items){ + form.elements[master].oldonclick = ((form.elements[master].onclick) ? form.elements[master].onclick : function () {}); + form.elements[master].oldonblur = ((form.elements[master].onblur) ? form.elements[master].onblur : function () {}); + form.elements[master].oldonchange = ((form.elements[master].onchange) ? form.elements[master].onchange : function () {}); + form.elements[master].oldonkeypress = ((form.elements[master].onkeypress) ? form.elements[master].onkeypress : function () {}); + form.elements[master].onclick = function(){this.oldonclick(); return lockoptionsall(this.form.id);}; + form.elements[master].onblur = function(){this.oldonblur(); return lockoptionsall(this.form.id);}; + form.elements[master].onchange = function(){this.oldonchange(); return lockoptionsall(this.form.id);}; + } + return lockoptionsall(formid); +} function lockoption(form,item) { eval("document."+form+"."+item+".disabled=true");/* IE thing */