Diff for /rat/client/parameter.html between versions 1.57 and 1.74

version 1.57, 2010/02/28 23:48:10 version 1.74, 2016/05/21 20:08:35
Line 39  Parameter Input Window Line 39  Parameter Input Window
   
 var ptype='';  var ptype='';
 var pvalue='';  var pvalue='';
   var pmodval='';
   var pextraval='';
   var pextravaltwo='';
 var preturn='';  var preturn='';
 var pcode='';  var pcode='';
 var pscat='';  var pscat='';
 var pmarker='';  var pmarker='';
   var pmodal='';
 var pname='';  var pname='';
   
 var defhour=0;  var defhour=0;
Line 70  function selwrite(text) { Line 74  function selwrite(text) {
 }  }
   
 function choicestart() {  function choicestart() {
   this.window.choices.document.clear();    this.window.choices.document.open();
   choicewrite('<html><body>');    choicewrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
     choicewrite('<html xmlns="http://www.w3.org/1999/xhtml">');
   choicewrite('<head>');    choicewrite('<head>');
     choicewrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
     choicewrite('<title>LON-CAPA</title>');
   choicewrite('<style type="text/css">');    choicewrite('<style type="text/css">');
   choicewrite('<!--');    choicewrite('<!--');
   choicewrite('body {');    choicewrite('body {');
Line 86  function choicestart() { Line 93  function choicestart() {
   choicewrite('-->');    choicewrite('-->');
   choicewrite('</style>');    choicewrite('</style>');
   choicewrite('</head>');    choicewrite('</head>');
     choicewrite('<body>');
 }  }
   
 function choiceend() {  function choiceend() {
Line 236  function month() { Line 244  function month() {
 function intminute() {  function intminute() {
    var thisminutes=cmins;     var thisminutes=cmins;
     var i;      var i;
     choicewrite('<select name="minutes" onchange="parent.intcalc();">');      var result = '';
       result += '<select name="minutes" onchange="parent.intcalc();">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value="'+i+'"');          result += '<option value="'+i+'"';
         if (i==thisminutes) {          if (i==thisminutes) {
             choicewrite(' selected="selected"');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }   } 
   
 function inthour() {  function inthour() {
    var thishours=chours;     var thishours=chours;
     var i;      var i;
     choicewrite('<select name="hours" onchange="parent.intcalc();">');      var result = '';
       result += '<select name="hours" onchange="parent.intcalc();">';
     for (i=0;i<=23;i++) {      for (i=0;i<=23;i++) {
         choicewrite('<option value="'+i+'"');          result += '<option value="'+i+'"';
         if (i==thishours) {          if (i==thishours) {
             choicewrite(' selected="selected"');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
 }       return result;
   }
   
 function intsecond() {  function intsecond() {
    var thisseconds=csecs;      var thisseconds=csecs;
     var i;      var i;
     choicewrite('<select name="seconds" onchange="parent.intcalc();">');      var result = '';
       result += '<select name="seconds" onchange="parent.intcalc();">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value="'+i+'"');          result += '<option value="'+i+'"';
         if (i==thisseconds) {          if (i==thisseconds) {
             choicewrite(' selected="selected"');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }   } 
   
   
 function intday() {  function intday() {
    var thisdate=cdays;     var thisdate=cdays;
     var i;      var i;
     choicewrite('<select name="date" onchange="parent.intcalc();">');      var result ='';
       result += '<select name="date" onchange="parent.intcalc();">';
     for (i=0;i<=31;i++) {      for (i=0;i<=31;i++) {
         choicewrite('<option value="'+i+'"');          result += '<option value="'+i+'"';
         if (i==thisdate) {          if (i==thisdate) {
             choicewrite(' selected="selected"');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }  }
   
 function intcalc() {  function intcalc() {
Line 296  function intcalc() { Line 312  function intcalc() {
              sform.hours.options[sform.hours.selectedIndex].value*1)*60+               sform.hours.options[sform.hours.selectedIndex].value*1)*60+
              sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+               sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
              sform.seconds.options[sform.seconds.selectedIndex].value*1;               sform.seconds.options[sform.seconds.selectedIndex].value*1;
     draw();      if ((ptype=='date') && (pscat=='interval')) {
           var newpmodval = '';
           var newpextraval = '';
           var newpextravaltwo = 'Done';
           if (sform.donebutton.length) {
               for (var i=0; i<sform.donebutton.length; i++) {
                   if (sform.donebutton[i].checked) {
                       if (sform.donebutton[i].value == '_done') {
                           newpmodval = sform.donebutton[i].value;
                           newpextravaltwo = sform.donebutton_text.value;
                       } else {
                           if (sform.donebutton[i].value == '_done_proctor') { 
                               newpmodval = sform.donebutton[i].value;
                               newpextraval = sform.donebutton_proctorkey.value;
                               newpextravaltwo = sform.donebutton_text.value;
                               newpextravaltwo = newpextravaltwo.replace(/:/g,'');
                           }
                       }
                   }
               }
           }
           pmodval = newpmodval;
           pextraval = newpextraval;
           pextravaltwo = newpextravaltwo;
           draw();
           if (pmodval) {
               var doneRegExp = /^(_done)(|_proctor)$/;
               var donevals = pmodval.match(doneRegExp);
               if (donevals.length == 3) {
                   svalue += donevals[1];
               }
               if (newpextravaltwo) {
                   if (newpextravaltwo != 'Done') { 
                       svalue += ':'+newpextravaltwo+':';
                   }
               }
               if (donevals[2] != '') {
                   svalue += donevals[2];
                   if (pextraval != '') {
                       svalue += '_'+pextraval;
                   }
               }
           }
       } else {
           draw();
       }
   }
   
   function toggleSecret() {
       var sform=choices.document.forms.sch;
       if (sform.donebutton.length) {
           for (var i=0; i<sform.donebutton.length; i++) {
               if (sform.donebutton[i].checked) {
                   if (sform.donebutton[i].value == '') {
                       if (document.getElementById('donebuttontextdiv')) {
                           document.getElementById('donebuttontextdiv').style.display='none';
                       }
                   } else {
                       if (document.getElementById('donebuttontextdiv')) {
                           document.getElementById('donebuttontextdiv').style.display='block';
                       }
                   }
                   if (sform.donebutton[i].value == '_done_proctor') {
                       if (document.getElementById('done_proctorkey')) {
                           document.getElementById('done_proctorkey').type='text';
                       }
                   } else {
                       if (document.getElementById('done_proctorkey')) {
                           document.getElementById('done_proctorkey').type='hidden';
                           document.getElementById('done_proctorkey').value='';
                       }
                   }
               }
           }
       }
   }
   
   function validateInterval() {
       var sform=choices.document.forms.sch;
       if (sform.donebutton.length) {
           for (var i=0; i<sform.donebutton.length; i++) {
               if (sform.donebutton[i].checked) {
                   if (sform.donebutton[i].value == '_done_proctor') {
                       if ((sform.donebutton_proctorkey.value == '') || 
                           (sform.donebutton_proctorkey.value == null)) {
                           alert('Please provide a key for a proctor to enter when a student uses the "Done" button.');
                           return;
                       }
                   }
               }
           }
       }
       intcalc();
       assemble();
 }  }
   
 function integereval() {  function integereval() {
Line 331  function stringeval() { Line 440  function stringeval() {
    draw();     draw();
 }  }
   
   function ipstringeval() {
       var patternIp = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
       var acctypes = new Array;
       acctypes = ['allow','deny'];
       svalue = '';
       for (var i=0; i<acctypes.length; i++) {
           var items = choices.document.getElementsByName('setip'+acctypes[i]);
           if (items.length > 0) { 
               for (var j=0; j<items.length; j++) {
                   if (items[j].type == "text") {
                       var possip = items[j].value
                       possip = possip.replace(/^\s+|\s+$/g,'');
                       if (patternIp.test(possip)) {
                           if (acctypes[i] == 'deny') {
                               possip = '!'+possip;
                           }
                           if (svalue == '') {
                               svalue = possip;
                           } else {
                               svalue += ','+possip;
                           }
                       }
                   }
               }
           }
       }
   }
   
   function addIpRule(iptype) {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
           var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
           var count = innerDiv.childNodes.length 
           var ipDiv = frame.document.createElement('div');
           ipDiv.innerHTML = '<input type="text" size="10" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+
                             '<a href="#" onclick="parent.removeIpRule(\''+iptype+'\',\''+count+'\')">Remove</a>';
           frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv);
       }
       return false;
   }
   
   function removeIpRule(iptype,num) {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
           var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
           for (var i=0; i<innerDiv.childNodes.length; i++) {
               if (i==num) {
                   innerDiv.removeChild(innerDiv.childNodes[i]);
                   ipstringeval();
                   break;
               }
           }
       }
   }
   
 function radiostringeval(newval) {  function radiostringeval(newval) {
    svalue=newval;     svalue=newval;
    draw();     draw();
 }  }
   
 function callradiostringeval(newval) {  function callradiostringeval(newval) {
    return 'onchange="parent.radiostringeval(\''      return 'onclick="parent.radiostringeval(\''+newval+'\')"';
           +newval+'\')" onclick="parent.radiostringeval(\''  }
           +newval+'\')"';  
   function lenienteval(newval) {
       if (newval == 'weighted') {
           if (document.getElementById('lenientweighteddiv')) {
               document.getElementById('lenientweighteddiv').style.display='block';
           }
           var patternRelWeight = /^\-?[\d.]+$/;
           var sform=choices.document.forms.sch; 
           if ((sform.lenientrelwt.length != 'undefined')  && (sform.lenientrelwt.length) != 'null') {
               for (var i=0; i<sform.lenientrelwt.length; i++) {
                   var relweight = sform.lenientrelwt[i].value;
                   relweight = relweight.replace(/^\s+|\s+$/g,'');
                   if (!patternRelWeight.test(relweight)) {
                       if (i<2) {
                           relweight = '1.0';
                       } else {
                           relweight = '0.0';
                       }
                   }
                   sform.lenientrelwt[i].value = relweight;
                   if (i==0) {
                       svalue = relweight;
                   } else {
                       svalue += ','+relweight;
                   }
               }
           }
       } else {
           if (document.getElementById('lenientweighteddiv')) {
               document.getElementById('lenientweighteddiv').style.display='none';
           }
           svalue=newval;
       }
       draw();
   }
   
   function calllenientradioeval(newval) {
       return 'onclick="parent.lenienteval(\''+newval+'\')"';
 }  }
   
   function callintervalpmodval() {
       return 'onclick="parent.intcalc();parent.toggleSecret()"';
   } 
   
 function intervaldis() {  function intervaldis() {
     csecs=svalue;      csecs=svalue;
     cdays=Math.floor(csecs/86400);      cdays=Math.floor(csecs/86400);
Line 350  function intervaldis() { Line 555  function intervaldis() {
     csecs-=chours*3600;      csecs-=chours*3600;
     cmins=Math.floor(csecs/60);      cmins=Math.floor(csecs/60);
     csecs-=cmins*60;      csecs-=cmins*60;
     choicewrite(cdays+' days '+chours+' hours '      return cdays+' days '+chours+' hours '+cmins+' mins '+csecs+' secs';
                +cmins+' mins '+csecs+' secs');  
 }  }
   
 function pickcolor(picked) {  function pickcolor(picked) {
Line 380  function draw() { Line 584  function draw() {
       choicewrite(' action="javascript:floateval();"');        choicewrite(' action="javascript:floateval();"');
    }     }
    if (ptype=='string') {     if (ptype=='string') {
       choicewrite(' action="javascript:stringeval();"');        if (pscat == 'ip') {
             choicewrite(' action="javascript:ipstringeval();"');
         } else {
             choicewrite(' action="javascript:stringeval();"');
         }
      }
      if (ptype != 'int' && ptype != 'float' && ptype != 'string') {
          choicewrite(' action=""');
    }     }
    choicewrite('>');     choicewrite('>');
    if (ptype=='tolerance') {     if (ptype=='tolerance') {
Line 464  function draw() { Line 675  function draw() {
          tablestart('Date and time');           tablestart('Date and time');
       }        }
       if (pscat=='interval') {        if (pscat=='interval') {
            var proctorkeytype = 'hidden'; 
            var donebuttontext = 'none';
            if (pmodval == '_done_proctor') {
                proctorkeytype = 'text';
                donebuttontext = 'block';
            }
            if (pmodval == '_done') {
                donebuttontext = 'block';
            }
          tablestart('Time interval');           tablestart('Time interval');
          choicewrite('<tr><td colspan="3">');           choicewrite( [
          intervaldis();              '<tr><td colspan="3">'+intervaldis()+'</td></tr>',
          choicewrite('</td></tr><tr><td>Time:'              '<tr><td>Time:</td><td colspan="2">',
          +'</td><td colspan="2">');                  '<span style="white-space:nowrap">'+intday()+' days </span>',
          intday();choicewrite('days ');                  '<span style="white-space:nowrap">'+inthour()+' hours</span>',
          inthour();choicewrite('hours ');                  '<span style="white-space:nowrap">'+intminute()+' mins</span>',
          intminute(); choicewrite('mins '); intsecond();                  '<span style="white-space:nowrap">'+intsecond()+' secs</span>',
          choicewrite('secs</td></tr></table>');                       '</td></tr>',
       } else {               '</table>',
               '<br />',
               ].join("\n"));
            tablestart('Provide a "Done" button to students?');
            choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="donebutton" value=""'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '') { choicewrite(' checked="checked"'); }
            choicewrite(' /> No</label><br />');
            choicewrite('<label><input name="donebutton" value="_done"'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '_done') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Yes</label><br />');
            choicewrite('<span style="white-space:nowrap">'+
                        '<label><input name="donebutton" value="_done_proctor"'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '_done_proctor') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Yes, with proctor key</label>');
            choicewrite('&nbsp;<input name="donebutton_proctorkey" value='+
                        '"'+escapeHTML(pextraval)+'" type="'+proctorkeytype+
                        '" id="done_proctorkey" size="10"'+
                        ' onblur="parent.intcalc();" /></span><br />'+
                        '<div id="donebuttontextdiv" style="display:'+donebuttontext+'">'+
                        '<br /><span style="white-space:nowrap">'+
                        'Button text:'+
                        '<input name="donebutton_text" value='+
                        '"'+escapeHTML(pextravaltwo)+'" type="text" '+
                        'size="10" onblur="parent.intcalc();" /></span></div>');
            choicewrite('</td></tr></table>');
         } else {
          choicewrite('<tr><td colspan="3">'           choicewrite('<tr><td colspan="3">'
          +cdate.toString()+           +cdate.toString()+
          '</td></tr><tr><td>Date:</td><td colspan="2">');           '</td></tr><tr><td>Date:</td><td colspan="2">');
Line 623  function draw() { Line 872  function draw() {
            choicewrite('<label><input name="stringval" value="exam"'+             choicewrite('<label><input name="stringval" value="exam"'+
                   ' type="radio" '+callradiostringeval('exam'));                    ' type="radio" '+callradiostringeval('exam'));
            if (svalue=='exam') { choicewrite(' checked="checked"'); }             if (svalue=='exam') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Exam</label><br />');             choicewrite(' /> Bubblesheet Exam</label><br />');
 //         choicewrite('<label><input name="stringval" value="assess"'+  //         choicewrite('<label><input name="stringval" value="assess"'+
 //              ' type="radio" '+callradiostringeval('assess'));  //              ' type="radio" '+callradiostringeval('assess'));
 //         if (svalue=='assess') { choicewrite(' checked="checked"'); }  //         if (svalue=='assess') { choicewrite(' checked="checked"'); }
Line 648  function draw() { Line 897  function draw() {
                 ' type="radio" '+callradiostringeval('anonsurveycred'));                  ' type="radio" '+callradiostringeval('anonsurveycred'));
            if (svalue=='anonsurveycred') { choicewrite(' checked="checked"'); }             if (svalue=='anonsurveycred') { choicewrite(' checked="checked"'); }
            choicewrite('> Anonymous Survey (credit for submission)</label><br />');             choicewrite('> Anonymous Survey (credit for submission)</label><br />');
              choicewrite('<label><input name="stringval" value="randomizetry"'+
                   ' type="radio" '+callradiostringeval('randomizetry'));
              if (svalue=='randomizetry') { choicewrite(' checked="checked"'); }
              choicewrite('> New Randomization Each N Tries (default N=1)</label><br />');
            choicewrite('<label><input name="stringval" value="library"'+             choicewrite('<label><input name="stringval" value="library"'+
                ' type="radio" '+callradiostringeval('library'));                 ' type="radio" '+callradiostringeval('library'));
            if (svalue=='library') { choicewrite(' checked="checked"'); }             if (svalue=='library') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Library</label><br />');             choicewrite(' /> Library</label><br />');
         }          }
           if (pscat=='lenient') {
              var patternLenientStd = /^(yes|no|default)$/;
              var patternLenientRel = /^([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)$/;
              var lenientweighted = 'none';
              var relatives = new Array;
              tablestart('Lenient Grading (Partial Credit)');
              choicewrite('<tr><td>Value:</td><td colspan="2">');
              choicewrite('<label><input name="stringval" value="yes"'+
                     ' type="radio" '+calllenientradioeval('yes'));
              if (svalue=='yes') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="no"'+
                     ' type="radio" '+calllenientradioeval('no'));
              if (svalue=='no') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No</label><br />');
              choicewrite('<label><input name="stringval" value="default"'+
                  ' type="radio" '+calllenientradioeval('default'));
              if (svalue=='default') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Default (only bubblesheet grading is lenient)</label><br />');
              choicewrite('<label><input name="stringval" value="weighted"'+
                  ' type="radio" '+calllenientradioeval('weighted'));
              if (!patternLenientStd.test(svalue) && svalue != '') {
                 choicewrite(' checked="checked"');
                 lenientweighted='block';
                 var relatives = svalue.match(patternLenientRel);
              }
              choicewrite(' />Yes, weighted (optionresponse in checkbox mode)</label><br /><br />'+
                          '<div id="lenientweighteddiv" style="display:'+lenientweighted+'">'+
                          '<table class="LC_parmsel_table"><tr bgcolor="#C5DB99">'+
                          '<th colspan="2">Foil submission status</th><th>Points</th></tr>');
              var lenienttypes = ['Correct (checked)','Correct (unchecked)','Incorrect (checked)','Incorrect (unchecked)'];
              for (var i=0; i<lenienttypes.length; i++) {
                  var j = i+1;
                  if (relatives[j] == '') {
                      if (i < 2) {
                          relatives[j] = '1.0';
                      } else {
                          relatives[j] = '0.0';
                      }
                  }
                  choicewrite('<tr><td colspan="2">'+lenienttypes[i]+'</td>'+
                              '<td><input type="text" name="lenientrelwt" value="'+relatives[j]+'"'+
                              ' size="3" onblur="parent.lenienteval(\'weighted\')" /></td></tr>');
              }
              choicewrite('</table></div>');
           }
           if (pscat=='discussvote') {
              tablestart('Discussion Voting');
              choicewrite('<tr><td>Value:</td><td colspan="2">');
              choicewrite('<label><input name="stringval" value="yes"'+
                     ' type="radio" '+callradiostringeval('yes'));
              if (svalue=='yes') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="notended"'+
                     ' type="radio" '+callradiostringeval('notended'));
              if (svalue=='notended') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes, unless discussion ended</label><br />');
              choicewrite('<label><input name="stringval" value="no"'+
                     ' type="radio" '+callradiostringeval('no'));
              if (svalue=='no') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No</label><br />');
           }
         if (pscat=='ip') {          if (pscat=='ip') {
            tablestart('IP Number/Name');              var currallow = new Array; 
    choicewrite('<tr><td>Value:</td><td colspan="2">');              var currdeny = new Array;
            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+              if ((svalue != '') && (svalue != null)) {
                     '" onchange="parent.stringeval()" />');                  var patternComma = /,/;
                   var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
                   var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/;
                   var current = new Array;
                   if (patternComma.test(svalue)) {  
                       current = svalue.split(',');
                   } else {
                       current = (svalue);
                   }
                   for (var i=0; i<current.length; i++) {
                       if (patternDeny.test(current[i])) {
                           var denied = current[i].replace(/^!/,'');
                           currdeny.push(denied);
                       } else {
                           if (patternAllow.test(current[i])) {
                               currallow.push(current[i]);
                           } 
                       }
                   }
               }
               if (currdeny.length == 0) {
                   currdeny = ('');
               }
               if (currallow.length == 0) {
                   currallow = ('');
               }
               var curripaccess = [currallow,currdeny];
               tablestart('IP Number/Name');
               choicewrite('<tr><th>Allow from</th><th>Deny from</th></tr><tr>');
               var acctypes = ['allow','deny'];
               for (var i=0; i<acctypes.length; i++) {
                   choicewrite('<td valign="top">'+
                               '<div class="LC_string_ipacc_wrap" id="LC_string_ipacc_'+acctypes[i]+'">'+
                               '<div class="LC_string_ipacc_inner" id="LC_string_ipacc_inner_'+acctypes[i]+'">');
                   var num=0;
                   for (var j=0; j<curripaccess[i].length; j++) {
                       choicewrite('<div><input type="text" size="10" name="setip'+acctypes[i]+'" value="'+curripaccess[i][j]+'" onblur="parent.ipstringeval();" />');
                       choicewrite('<a href="#" onclick="parent.removeIpRule(\''+acctypes[i]+'\',\''+j+'\')">Remove</a>');
                       choicewrite('</div>');
                       num ++;
                   }
                   choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');">Add item</button>');
               }
               choicewrite('</div></td></tr></table>');
         }          }
         if (pscat=='fileext') {          if (pscat=='fileext') {
             tablestart('Allowed File Extensions');              tablestart('Allowed File Extensions');
Line 671  function draw() { Line 1028  function draw() {
                ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));                 ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
            if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }             if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Picture File</label><br />');             choicewrite(' /> Picture File</label><br />');
            choicewrite('<label><input name="radstringval" value="doc,xls,ppt"'+             choicewrite('<label><input name="radstringval" value="doc,docx,xls,xlsx,ppt,pptx"'+
                ' type="radio" '+callradiostringeval('doc,xls,ppt'));                 ' type="radio" '+callradiostringeval('doc,docx,xls,xlsx,ppt,pptx'));
              if (svalue=='doc,docx,xls,xlsx,ppt,pptx') { choicewrite(' checked="checked"'); }
            if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }             if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Office Document</label><br />');             choicewrite(' /> Office Document</label><br />');
            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+             choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
Line 788  function assemble() { Line 1146  function assemble() {
 function init() {  function init() {
   var i;    var i;
   var subs=new Array();    var subs=new Array();
     var doneRegExp = /_done(|\:[^\:]+\:)/;
     var doneproctorRegExp = /_done(|\:[^\:]+\:)_proctor/;
     var proctorkeyRegExp = /^(\d+)_(.+)$/;
     var donetextRegExp = /\:([^\:]+)\:/;
   var namevalue=this.window.location.search.split('&');    var namevalue=this.window.location.search.split('&');
   namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);    namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
   
Line 809  function init() { Line 1171  function init() {
      if (pair[0]=='call') { pcode=pair[1]; }       if (pair[0]=='call') { pcode=pair[1]; }
      if (pair[0]=='marker') { pmarker=pair[1]; }       if (pair[0]=='marker') { pmarker=pair[1]; }
      if (pair[0]=='name') { pname=pair[1]; }       if (pair[0]=='name') { pname=pair[1]; }
        if (pair[0]=='modal') { pmodal=pair[1]; }
      if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {       if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
          defhour=pair[1];           defhour=pair[1];
      }       }
Line 816  function init() { Line 1179  function init() {
      if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }       if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
   }    }
   
     if (ptype=='date' && pscat == 'interval') {
         if (doneproctorRegExp.test(pvalue)) {
             var current = pvalue.match(doneproctorRegExp);
             if (current.length == 2) {
                 var textstr = current[1];
                 if (textstr != '') {
                     var textvals = textstr.match(donetextRegExp);
                     if (textvals.length == 2) {
                         pextravaltwo = textvals[1];
                     }
                 }
             }
             var intervalwithkey = pvalue.replace(doneproctorRegExp,'');
             if (proctorkeyRegExp.test(intervalwithkey)) {
                 var currvals = intervalwithkey.match(proctorkeyRegExp);
                 if (currvals.length == 3) {
                     pvalue = currvals[1];
                     pextraval = currvals[2];
                     pmodval = '_done_proctor';
                 } else {
                     pmodval = '';
                 }
             }
         } else {
             if (doneRegExp.test(pvalue)) {
                 var current = pvalue.match(doneRegExp); 
                 if (current.length == 2) {
                     var textstr = current[1];
                     if (textstr != '') {
                         var textvals = textstr.match(donetextRegExp);
                         if (textvals.length == 2) {
                             pextravaltwo = textvals[1];
                         }
                     }
                 }
                 var pnumval = pvalue.replace(doneRegExp,'');
                 pmodval = '_done';
                 pvalue = pnumval;
             }
         }
     }
   svalue=pvalue;    svalue=pvalue;
   if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&    if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
       (pscat=='default') &&         (pscat=='default') && 
Line 836  function init() { Line 1240  function init() {
      }       }
   }    }
   
   this.window.selector.document.clear();    this.window.selector.document.open();
   selwrite('<html><body>');    selwrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
     selwrite('<html xmlns="http://www.w3.org/1999/xhtml">');
   selwrite('<head>');    selwrite('<head>');
     selwrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
     selwrite('<title>LON-CAPA</title>');
   selwrite('<style type="text/css">');    selwrite('<style type="text/css">');
   selwrite('<!--');    selwrite('<!--');
   selwrite('body {');    selwrite('body {');
Line 850  function init() { Line 1257  function init() {
   selwrite('-->');    selwrite('-->');
   selwrite('</style>');    selwrite('</style>');
   selwrite('</head>');    selwrite('</head>');
   selwrite('<form name="fsel"><b>'+pname+'</b><br />');    selwrite('<body>');
   selwrite('<select name="fcat" onchange="parent.catchange();">');    selwrite('<form name="fsel" action=""><b>'+pname+'</b><br />');
     selwrite('Format of Value(s): <select name="fcat" onchange="parent.catchange();">');
   
   if (ptype=='tolerance') {    if (ptype=='tolerance') {
      sopt('default','Default');       sopt('default','Default');
Line 915  function init() { Line 1323  function init() {
      else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }       else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }
      else if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }       else if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }
      else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }       else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
        else if (pscat == 'lenient')      { sopt('lenient','Lenient Grading (Partial Credit)'); }
        else if (pscat == 'discussvote')  { sopt('discussvote','Discussion Voting'); }
      else if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }       else if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }
      else if (pscat == 'fileext')      { sopt('fileext','File Extension'); }       else if (pscat == 'fileext')      { sopt('fileext','File Extension'); }
      else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }       else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
Line 928  function init() { Line 1338  function init() {
   }    }
   
   selwrite('</select></form>');    selwrite('</select></form>');
     var targ='parent.opener';
   selwrite('<a href="javascript:parent.assemble();');    if (pmodal==1) {
        targ='parent.parent';
     }
     if ((ptype=='date') && (pscat=='interval')) {
         selwrite('<a href="javascript:parent.validateInterval();');
     } else {
         selwrite('<a href="javascript:parent.assemble();');
     }
   if (preturn!='') {    if (preturn!='') {
      selwrite(       selwrite(targ+'.document.'+preturn+'_value.value=parent.window.svalue;');
       'parent.opener.document.'+preturn+'_value.value=parent.window.svalue;');       selwrite(targ+'.document.'+preturn+'_type.value=parent.window.stype;');
      selwrite(  
       'parent.opener.document.'+preturn+'_type.value=parent.window.stype;');  
   }    }
   if (pmarker!='') {    if (pmarker!='') {
      selwrite(       selwrite(targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');  
   }    }
   if (pcode!='') {    if (pcode!='') {
      selwrite('parent.opener.'+pcode+'();');       selwrite(targ+'.'+pcode+'();');
   }    }
   selwrite('">Save</a>&nbsp;&nbsp;');    selwrite('">Save</a>&nbsp;&nbsp;');
   
   selwrite('<a href="javascript:');    selwrite('<a href="javascript:');
      selwrite(    selwrite(targ+'.document.'+preturn+'_value.value='+"'';");
       'parent.opener.document.'+preturn+'_value.value='+"'';");  
   if (pmarker!='') {    if (pmarker!='') {
      selwrite(       selwrite(
      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');       targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
   }    }
   if (pcode!='') {    if (pcode!='') {
      selwrite('parent.opener.'+pcode+'();');       selwrite(targ+'.'+pcode+'();');
   }    }
   selwrite('">Delete</a>&nbsp;&nbsp;');    selwrite('">Delete</a>&nbsp;&nbsp;');
     
   selwrite('<a href="javascript:');  
 // Old code :  
 //----------------------------------------------------------------------  
 //  if (preturn!='') {  
 //     selwrite('parent.opener.document.'+preturn+'_value.value='+"'';");  
 //     selwrite('parent.opener.document.'+preturn+'_type.value='+"'';");  
 // }  
 //  if (pmarker!='') {  
 //     selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';");  
 //  }  
 //  if (pcode!='') {  
 //     selwrite('parent.opener.'+pcode+'();');  
 //  }  
 //----------------------------------------------------------------------  
 // Just close the window to 'cancel' the operation.  There are javascript  
 // errors in the above commented out code that I have not been able to   
 // track down.  I think they reside in 'parent.opener.'+pcode+'();'  
 //  
   selwrite('this.parent.close();');  
   selwrite('">Cancel</a>');   
    
   selwrite('</body></html>');    selwrite('</body></html>');
   this.window.selector.document.close();    this.window.selector.document.close();
   draw();    draw();

Removed from v.1.57  
changed lines
  Added in v.1.74


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