From 2dbd6409323a023123e70f5abe1b987aec8c0373 Mon Sep 17 00:00:00 2001
From: jamiesensei <jamiesensei>
Date: Tue, 28 Nov 2006 08:04:00 +0000
Subject: [PATCH] some fixes for disabledIf and using disabledIf in
 course/edit_form.php

---
 course/edit_form.php     | 30 ++++++++++--------------------
 lib/form/submit.php      |  2 +-
 lib/formslib.php         |  2 ++
 lib/javascript-static.js |  7 +++----
 4 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/course/edit_form.php b/course/edit_form.php
index 9817d46e9ec..464bcea17c2 100644
--- a/course/edit_form.php
+++ b/course/edit_form.php
@@ -214,9 +214,10 @@ class course_edit_form extends moodleform {
         $enroldatestartgrp = array();
         $enroldatestartgrp[] = &MoodleQuickForm::createElement('date_selector', 'enrolstartdate');
         $enroldatestartgrp[] = &MoodleQuickForm::createElement('checkbox', 'enrolstartdisabled', null, get_string('disable'));
-        $mform->addGroup($enroldatestartgrp, '', get_string('enrolstartdate'), ' ', false);
+        $mform->addGroup($enroldatestartgrp, 'enrolstartdategrp', get_string('enrolstartdate'), ' ', false);
         $mform->setDefault('enrolstartdate', 0);
         $mform->setDefault('enrolstartdisabled', 1);
+        $mform->disabledIf('enrolstartdategrp', 'enrolstartdisabled', 'checked');
 
         $enroldateendgrp = array();
         $enroldateendgrp[] = &MoodleQuickForm::createElement('date_selector', 'enrolenddate');
@@ -224,6 +225,7 @@ class course_edit_form extends moodleform {
         $mform->addGroup($enroldateendgrp, 'enroldateendgrp', get_string('enrolenddate'), ' ', false);
         $mform->setDefault('enrolenddate', 0);
         $mform->setDefault('enrolenddisabled', 1);
+        $mform->disabledIf('enroldateendgrp', 'enrolenddisabled', 'checked');
 
         $periodmenu=array();
         $periodmenu[0] = get_string('unlimited');
@@ -331,16 +333,15 @@ class course_edit_form extends moodleform {
             $options = array();
             $options['0'] = get_string('no');
             $options['1'] = get_string('yes');
-            $mform->addElement('select', 'restrictmodules', get_string('restrictmodules'), $options,
-                    array('onChange'=>"document.getElementById('id_allowedmods').disabled=".
-                                "((this.selectedIndex==0)?true:false);"));
+            $mform->addElement('select', 'restrictmodules', get_string('restrictmodules'), $options);
             $mods = array(0=>get_string('allownone'));
             $mods += get_records_menu('modules', '','','','id, name');
 
 
-            $mform->addElement('select', 'allowedmods', get_string('to'),$mods,
-                            array('multiple'=>'multiple', 'size'=>'10', 'id'=>'allowedmods'));
-        }else {
+            $mform->addElement('select', 'allowedmods', get_string('to'), $mods,
+                            array('multiple'=>'multiple', 'size'=>'10'));
+            $mform->disabledIf('allowedmods', 'restrictmodules', 'eq', 0);
+        } else {
             $mform->addElement('hidden', 'restrictmodules', null);
         }
         if ($CFG->restrictmodulesfor == 'all') {
@@ -352,8 +353,7 @@ class course_edit_form extends moodleform {
         $mform->setType('restrictmodules', PARAM_INT);
 
 //--------------------------------------------------------------------------------
-        $mform->addElement('submit', 'submit', get_string('savechanges'));
-
+        $mform->addElement('submit', 'submitbutton', get_string('savechanges'));
 //--------------------------------------------------------------------------------
         $mform->addElement('hidden', 'id', null);
         $mform->setType('id', PARAM_INT);
@@ -377,17 +377,7 @@ class course_edit_form extends moodleform {
 
 
     }
-    function definition_after_data(){
-       $mform=&$this->_form;
-       if ($mform->elementExists('allowedmods')){
-           if ($mform->exportValue('restrictmodules')!=1){
-               $allowedmods=&$mform->getElement('allowedmods');
-               $allowedmods->
-                       updateAttributes(array('disabled'
-                        => 'disabled')) ;
-           }
-       }
-   }
+
 
 /// perform some extra moodle validation
     function validation($data){
diff --git a/lib/form/submit.php b/lib/form/submit.php
index 05669f26236..fe23a83309c 100644
--- a/lib/form/submit.php
+++ b/lib/form/submit.php
@@ -27,7 +27,7 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit
         HTML_QuickForm_submit::HTML_QuickForm_submit($elementName, $value, $attributes);
         if ('cancel'==$elementName){
             //bypass form validation js :
-            $this->updateAttributes(array('onclick'=>'this.form.submit();'));
+            $this->updateAttributes(array('onclick'=>'return this.form.submit();'));
         }
     } //end constructor
 
diff --git a/lib/formslib.php b/lib/formslib.php
index fa8b072df02..def85ae584c 100644
--- a/lib/formslib.php
+++ b/lib/formslib.php
@@ -850,6 +850,8 @@ function validate_' . $this->_attributes['id'] . '(frm) {
                 $elNames = array($group->getElementName($el->getName()));
             } elseif (is_a($el, 'HTML_QuickForm_header')) {
                 return null;
+            } elseif (method_exists($el, 'getPrivateName')) {
+                return array($el->getPrivateName());
             } else {
                 $elNames = array($el->getName());
             }
diff --git a/lib/javascript-static.js b/lib/javascript-static.js
index d0ede00718d..2e5f03db7bd 100644
--- a/lib/javascript-static.js
+++ b/lib/javascript-static.js
@@ -98,10 +98,9 @@ function lockoptionsallsetup(formid) {
       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);};
+      form.elements[master].onclick = function(){this.oldonclick(); return lockoptionsall(this.form.getAttribute('id'));};
+      form.elements[master].onblur = function(){this.oldonblur(); return lockoptionsall(this.form.getAttribute('id'));};
+      form.elements[master].onchange = function(){this.oldonchange(); return lockoptionsall(this.form.getAttribute('id'));};
   }
   return lockoptionsall(formid);
 }