### Eclipse Workspace Patch 1.0
#P moodle
Index: lib/formslib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/formslib.php,v
retrieving revision 1.85
diff -u -r1.85 formslib.php
--- lib/formslib.php	12 Jan 2007 08:36:24 -0000	1.85
+++ lib/formslib.php	12 Jan 2007 09:09:22 -0000
@@ -1170,34 +1170,39 @@
     }
 
     function getLockOptionEndScript(){
+
+        $iname = $this->getAttribute('id').'items';
         $js = '<script type="text/javascript">'."\n";
         $js .= '//<![CDATA['."\n";
-        $js .= "var ".$this->getAttribute('id')."items= {";
-        foreach ($this->_dependencies as $dependentOn => $elements){
-            $js .= "'$dependentOn'".' : {dependents :[';
-            foreach ($elements as $element){
-                $elementNames = $this->_getElNamesRecursive($element['dependent']);
-                foreach ($elementNames as $dependent){
-                    if ($dependent !=  $dependentOn) {
-                        $js.="'".$dependent."', ";
+        $js .= "var $iname = Array();\n";
+
+        foreach ($this->_dependencies as $dependentOn => $conditions){
+            $js .= "{$iname}['$dependentOn'] = Array();\n";
+            foreach ($conditions as $condition=>$values) {
+                $js .= "{$iname}['$dependentOn']['$condition'] = Array();\n";
+                foreach ($values as $value=>$dependents) {
+                    $js .= "{$iname}['$dependentOn']['$condition']['$value'] = Array();\n";
+                    $i = 0;
+                    foreach ($dependents as $dependent) {
+                        $elements = $this->_getElNamesRecursive($dependent);
+                        foreach($elements as $element) {
+                            if ($element == $dependentOn) {
+                                continue;
+                            }
+                            $js .= "{$iname}['$dependentOn']['$condition']['$value'][$i]='$element';\n";
+                            $i++;
+                        }
                     }
                 }
             }
-            $js=rtrim($js, ', ');
-            $js .= "],\n";
-            $js .= "condition : '{$element['condition']}',\n";
-            $js .= "value : '{$element['value']}'},\n";
-
-        };
-        $js=rtrim($js, ",\n");
-        $js .= '};'."\n";
+        }
         $js .="lockoptionsallsetup('".$this->getAttribute('id')."');\n";
         $js .='//]]>'."\n";
         $js .='</script>'."\n";
         return $js;
     }
 
-    function _getElNamesRecursive(&$element, $group=null){
+    function _getElNamesRecursive($element, $group=null){
         if ($group==null){
             $el = $this->getElement($element);
         } else {
@@ -1237,16 +1242,27 @@
      * @param string $condition the condition to check
      * @param mixed $value used in conjunction with condition.
      */
-    function disabledIf($elementName, $dependentOn, $condition = 'notchecked', $value=null){
-        $this->_dependencies[$dependentOn][] = array('dependent'=>$elementName,
-                                    'condition'=>$condition, 'value'=>$value);
+    function disabledIf($elementName, $dependentOn, $condition = 'notchecked', $value='1'){
+        if (!array_key_exists($dependentOn, $this->_dependencies)) {
+            $this->_dependencies[$dependentOn] = array();
+        }
+        if (!array_key_exists($condition, $this->_dependencies[$dependentOn])) {
+            $this->_dependencies[$dependentOn][$condition] = array();
+        }
+        if (!array_key_exists($value, $this->_dependencies[$dependentOn][$condition])) {
+            $this->_dependencies[$dependentOn][$condition][$value] = array();
+        }
+        $this->_dependencies[$dependentOn][$condition][$value][] = $elementName;
     }
+
     function registerNoSubmitButton($buttonname){
         $this->_noSubmitButtons[]=$buttonname;
     }
+
     function isNoSubmitButton($buttonname){
         return (array_search($buttonname, $this->_noSubmitButtons)!==FALSE);
     }
+
     function _registerCancelButton($addfieldsname){
         $this->_cancelButtons[]=$addfieldsname;
     }
Index: lib/javascript-static.js
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/javascript-static.js,v
retrieving revision 1.24
diff -u -r1.24 javascript-static.js
--- lib/javascript-static.js	7 Jan 2007 12:46:49 -0000	1.24
+++ lib/javascript-static.js	12 Jan 2007 09:09:22 -0000
@@ -81,65 +81,56 @@
     eval("form.h"+item+".value=0");
   }
 }
+
+
 function lockoptionsall(formid) {
-  var lock = new Object();
-  var items = eval(formid+'items');
-  var form = document.forms[formid];
-  for (var master in items){
-      var subitems=items[master].dependents;
-      var thislock;
-      if (items[master].condition=='notchecked'){
-          thislock=!form.elements[master].checked;
-      } else if (items[master].condition=='checked'){
-          thislock=form.elements[master].checked;
-      } else if  (items[master].condition=='noitemselected'){
-          thislock=(form.elements[master].selectedIndex==-1);
-      } else if  (items[master].condition=='eq'){
-          thislock=(form.elements[master].value==items[master].value);
-      } else {
-          thislock=(form.elements[master].value!=items[master].value);
-
-      }
-
-      for (var i=0; i<subitems.length; i++) {
-        if (lock[subitems[i]]!=null){
-          lock[subitems[i]] = thislock || lock[subitems[i]];
-        }else{
-          lock[subitems[i]] = thislock;
-        }
-      }
-
-      for (var item in lock) {
-          form.elements[item].disabled=lock[item];
-      }
-  }
-  return(true);
+    var form = document.forms[formid];
+    var dependons = eval(formid+'items');
+    for (var dependon in dependons) {
+        var master = form[dependon];
+        for (var condition in dependons[dependon]) {
+            for (var value in dependons[dependon][condition]) {
+                var lock;
+                switch (condition) {
+                  case 'notchecked':
+                      lock = !master.checked; break;
+                  case 'checked':
+                      lock = master.checked; break;
+                  case 'noitemselected':
+                      lock = master.selectedIndex==-1; break;
+                  case 'eq':
+                      lock = master.value==value; break;
+                  default:
+                      lock = master.value!=value; break;
+                }
+                for (var ei in dependons[dependon][condition][value]) {
+                    var formelement = form[dependons[dependon][condition][value][ei]];
+                    formelement.disabled = lock;
+                }
+            }
+        }
+    }
+    return true;
 }
 
 function lockoptionsallsetup(formid) {
-  var varname = formid.replace(/\-/g, '_');
-  var items=eval(varname+'items');
-  var form=document.forms[formid];
-  for (var i = 0; i < form.elements.length; i++){
-      var found=false;
-      var formelement = form.elements[i];
-      if (formelement.type=='reset'){
-          formelement.onclick = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
-          formelement.onblur = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
-          formelement.onchange = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
-      } else {
-          for (var master in items){
-              if (master==formelement.name){
-                  formelement.onclick = function(){return lockoptionsall(this.form.getAttribute('id'));};
-                  formelement.onblur = function(){return lockoptionsall(this.form.getAttribute('id'));};
-                  formelement.onchange = function(){return lockoptionsall(this.form.getAttribute('id'));};
-                  break;
-              }
-          }
-      }
-  }
-
-  return lockoptionsall(formid);
+    var form = document.forms[formid];
+    var dependons = eval(formid+'items');
+    for (var dependon in dependons) {
+        var master = form[dependon];
+        master.onclick  = function() {return lockoptionsall(this.form.getAttribute('id'));};
+        master.onblur   = function() {return lockoptionsall(this.form.getAttribute('id'));};
+        master.onchange = function() {return lockoptionsall(this.form.getAttribute('id'));};
+    }
+    for (var i = 0; i < form.elements.length; i++){
+        var formelement = form.elements[i];
+        if (formelement.type=='reset') {
+            formelement.onclick  = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
+            formelement.onblur   = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
+            formelement.onchange = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
+        }
+    }
+    return lockoptionsall(formid);
 }
 
 
Index: mod/resource/type/html/resource.class.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/resource/type/html/resource.class.php,v
retrieving revision 1.30
diff -u -r1.30 resource.class.php
--- mod/resource/type/html/resource.class.php	11 Jan 2007 19:47:11 -0000	1.30
+++ mod/resource/type/html/resource.class.php	12 Jan 2007 09:09:22 -0000
@@ -158,17 +158,17 @@
 
     $mform->addElement('checkbox', 'blockdisplay', get_string('showcourseblocks', 'resource'));
     $mform->setDefault('blockdisplay', 0);
-//    $mform->disabledIf('blockdisplay', 'windowpopup', '', 0);
+    $mform->disabledIf('blockdisplay', 'windowpopup', 'eq', '0');
 
     foreach ($RESOURCE_WINDOW_OPTIONS as $option) {
         if ($option == 'height' or $option == 'width') {
             $mform->addElement('text', $option, get_string('new'.$option, 'resource'), array('size'=>'4'));
             $mform->setDefault($option, $CFG->{'resource_popup'.$option});
-//            $mform->disabledIf($option, 'windowpopup', '', 1);
+            $mform->disabledIf($option, 'windowpopup', 'eq', '1');
         } else {
             $mform->addElement('checkbox', $option, get_string('new'.$option, 'resource'));
             $mform->setDefault($option, $CFG->{'resource_popup'.$option});
-//            $mform->disabledIf($option, 'windowpopup', '', 1);
+            $mform->disabledIf($option, 'windowpopup', 'eq', '1');
         }
     }
 }
