Diff for /loncom/homework/task_grading.js between versions 1.1 and 1.2

version 1.1, 2006/03/28 18:33:24 version 1.2, 2006/04/19 20:36:19
Line 68  function getEventObject(e) { Line 68  function getEventObject(e) {
 }  }
   
 //Attach an onClick event handler to a node  //Attach an onClick event handler to a node
 function attachClickEvent(node, func) {  function attachEvent(node, eventName, func) {
  node.onclick = func; //Add event   node[eventName] = func; //Add event
   
  if (!isIE) {   if (!isIE) {
  //Allow me to raise events   //Allow me to raise events
  node.addEventListener("onclick", func, true); //false to get it in bubble not capture   node.addEventListener(eventName, func, true); //false to get it in bubble not capture
    }
    if (node.captureEvents) {
    var eventMap = new Object;
    eventMap["onclick"] = Event.CLICK;
    eventMap["onchange"] = Event.CHANGE;
    eventMap["onsubmit"] = Event.SUBMIT;
    if (! eventMap[eventName]) { return false; }
    node.captureEvents(eventMap[eventName]);
  }   }
  if (node.captureEvents) { node.captureEvents(Event.CLICK); }  
 }  }
   
   
 //Fire an event on a given node  //Fire an event on a given node
 function dispatchEvent(node, eventName) {  function dispatchEvent(node, eventName) {
  if (document.createEvent) {   if (document.createEvent) {
Line 111  function setupHandin() { Line 119  function setupHandin() {
  var a = document.createElement('a');   var a = document.createElement('a');
  var txt = document.createTextNode('Collapse');   var txt = document.createTextNode('Collapse');
  a.setAttribute('href', '#');   a.setAttribute('href', '#');
  attachClickEvent(a, onSlideDrawer);   attachEvent(a, "onchange", onSlideDrawer);
  a.appendChild(txt);   a.appendChild(txt);
  li.appendChild(a);   li.appendChild(a);
   
Line 149  function setupGrading() { Line 157  function setupGrading() {
  for (var i = 0; i < inputs.length; i++)  {   for (var i = 0; i < inputs.length; i++)  {
  if (inputs[i].type == "radio") {   if (inputs[i].type == "radio") {
  var val = inputs[i].value;   var val = inputs[i].value;
  if (val == "pass" || val == "fail" || val == "review") {   if (val == "pass" || val == "fail" || val == "review" || val == "ungraded") {
  attachClickEvent(inputs[i], onSetGrade); //Add event   attachEvent(inputs[i], "onchange", onSetGrade);
    attachEvent(inputs[i], "onclick", onSetGrade);
  }   }
  if (inputs[i].checked) {   if (inputs[i].checked) {
  dispatchEvent(inputs[i], 'onclick');   dispatchEvent(inputs[i], 'onclick');
Line 161  function setupGrading() { Line 170  function setupGrading() {
   
 //Adjust the Done/Stop/Fail All button set  //Adjust the Done/Stop/Fail All button set
 function setupButtons() {  function setupButtons() {
     //Create Fail All button   //Setup the onSubmit validation
  var btn = document.createElement('input');   var frms = document.getElementsByTagName('form');
  btn.setAttribute('type', 'button');   for(var i=0; i < frms.length; i++ ) {
  btn.setAttribute('value', 'Fail Rest');   if (frms[i].name == "lonhomework") {
  attachClickEvent(btn, onFailRest);   attachEvent(frms[i], "onsubmit", onValidate);
    }
     //Add the button in   }
  var div = myGetElementsByClass('div','LC_GRADING_maincontrols', 1);  
     if (div.length > 0) { div[0].appendChild(btn); }  
 }  }
   
 /*  /*
Line 188  function onSlideDrawer(e) { Line 195  function onSlideDrawer(e) {
 }  }
   
 //Fail all ungraded criteria  //Fail all ungraded criteria
 function onFailRest(e) {  function onFailRest() {
  var obj = getEventObject(e);  
  var inputs = document.getElementsByTagName('input');   var inputs = document.getElementsByTagName('input');
   
  var graded = false;   var graded = false;
Line 210  function onFailRest(e) { Line 216  function onFailRest(e) {
  }   }
 }  }
   
 //Set bacground for grade chosen  //Set background for grade chosen
 function onSetGrade( e ) {  function onSetGrade( e ) {
  var obj = getEventObject(e);   var obj = getEventObject(e);
  var grade;   var grade;
  var gradediv;   var gradediv;
   
  //Find the Radio button and get it's value  
  if (obj.tagName == 'INPUT') {  
  grade = obj.value;  
  } else {  
  rdo = obj.getElementsByTagName('INPUT');  
  if (rdo.length > 0) { grade = rdo[0].value; }  
  }  
   
  //Search for parent DIV   //Search for parent DIV
  gradediv = obj;   gradediv = obj;
  while (gradediv.tagName != 'DIV') {   while (gradediv.tagName != 'DIV') {
  gradediv = gradediv.parentNode;   gradediv = gradediv.parentNode;
  }   }
   
    rdo = gradediv.getElementsByTagName('INPUT');
    for(var i=0; i < rdo.length; i++) {
    if ( rdo[i].checked ) {
    grade = rdo[i].value;
    break;
    }
    }
   
  gradediv.className = "LC_GRADING_grade LC_GRADING_" + grade;   gradediv.className = "LC_GRADING_grade LC_GRADING_" + grade;
 }  }
   
   //Validate form before submit
   function onValidate(e) {
    var obj = getEventObject(e);
    var ok = true;
    var inputs = document.getElementsByTagName('input');
   
    var cnt = 0;
    for (var i = 0; i < inputs.length; i++)  {
    if (inputs[i].type == "radio") {
    var val = inputs[i].value;
    if (val == "ungraded" && inputs[i].checked) {
    cnt++;
    }
    }
    }
    if (cnt) {
    ok = confirm("You have " + cnt + " questions still ungraded.\nThis will return an ungraded task to the queue?");
    }
    return ok;
   }

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>