version 1.58, 2010/05/17 22:31:29
|
version 1.77, 2017/07/15 02:19:00
|
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 precursive=''; |
|
var pnonreccol=''; |
|
var pmarkerst=''; |
|
var pparm=''; |
|
|
var defhour=0; |
var defhour=0; |
var defmin=0; |
var defmin=0; |
Line 70 function selwrite(text) {
|
Line 78 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 97 function choicestart() {
|
choicewrite('-->'); |
choicewrite('-->'); |
choicewrite('</style>'); |
choicewrite('</style>'); |
choicewrite('</head>'); |
choicewrite('</head>'); |
|
choicewrite('<body>'); |
} |
} |
|
|
function choiceend() { |
function choiceend() { |
Line 236 function month() {
|
Line 248 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 316 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 444 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 559 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 588 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 679 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(' <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 876 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 901 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]+'">'); |
|
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>'); |
|
} |
|
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 739 function catchange() {
|
Line 1098 function catchange() {
|
draw(); |
draw(); |
} |
} |
|
|
|
function recursechange() { |
|
var rform=selector.document.forms.frec; |
|
var count = rform.recurse.length; |
|
if (count > 0) { |
|
for (var i=0; i<count; i++) { |
|
if (rform.recurse[i].checked) { |
|
var colnum = pnonreccol; |
|
if (rform.recurse[i].value == 1) { |
|
colnum++; |
|
} |
|
pmarker = pmarkerst+'_'+pparm+'&'+colnum; |
|
} |
|
} |
|
} |
|
} |
|
|
function assemble() { |
function assemble() { |
if ((ptype=='date') && (pscat!='interval')) { |
if ((ptype=='date') && (pscat!='interval')) { |
svalue=Math.floor(cdate.getTime()/1000); |
svalue=Math.floor(cdate.getTime()/1000); |
Line 789 function assemble() {
|
Line 1164 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 markerRegExp = /^(.+)_([A-Za-z0-9]+)\&(\d+)$/; |
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 810 function init() {
|
Line 1190 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 817 function init() {
|
Line 1198 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]; } |
} |
} |
|
|
|
var tablecol = ''; |
|
var ismap = ''; |
|
if (markerRegExp.test(pmarker)) { |
|
var markerinfo = pmarker.match(markerRegExp); |
|
if (markerinfo.length == 4) { |
|
pmarkerst = markerinfo[1]; |
|
pparm = markerinfo[2]; |
|
tablecol = markerinfo[3]; |
|
if (tablecol == 17 || tablecol == 16) { |
|
ismap = 1; |
|
if (tablecol == 17) { |
|
precursive = 1; |
|
} |
|
pnonreccol = 16; |
|
} else if (tablecol == 11 || tablecol == 10) { |
|
ismap = 1; |
|
if (tablecol == 11) { |
|
precursive = 1; |
|
} |
|
pnonreccol = 10; |
|
} else if (tablecol == 7 || tablecol == 6) { |
|
ismap = 1; |
|
if (tablecol == 7) { |
|
precursive = 1; |
|
} |
|
pnonreccol = 6; |
|
} else if (tablecol == 3 || tablecol == 2) { |
|
ismap = 1; |
|
if (tablecol == 3) { |
|
precursive = 1; |
|
} |
|
pnonreccol = 2; |
|
} |
|
} |
|
} |
|
|
|
|
|
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 837 function init() {
|
Line 1296 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 851 function init() {
|
Line 1313 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 916 function init() {
|
Line 1379 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 929 function init() {
|
Line 1394 function init() {
|
} |
} |
|
|
selwrite('</select></form>'); |
selwrite('</select></form>'); |
|
if (ismap == 1) { |
selwrite('<a href="javascript:parent.assemble();'); |
if ((pparm != 'hiddenresource') && (pparm != 'encrypturl')) { |
|
selwrite('<form name="frec" action="">'); |
|
selwrite('Recursive: <label><input type="radio" name="recurse" value="1" '); |
|
if (precursive == 1) { |
|
selwrite('checked="checked" '); |
|
} |
|
selwrite('onclick="parent.recursechange();" />Yes</label> '); |
|
selwrite('<label><input type="radio" name="recurse" value="0" '); |
|
if (precursive != 1) { |
|
selwrite('checked="checked" '); |
|
} |
|
selwrite('onclick="parent.recursechange();" />No</label>'); |
|
selwrite('</form><br />'); |
|
} |
|
} |
|
var targ='parent.opener'; |
|
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> '); |
selwrite('">Save</a> '); |
|
|
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> '); |
selwrite('">Delete</a> '); |
|
|
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(); |
Line 989 function init() {
|
Line 1452 function init() {
|
</script> |
</script> |
</head> |
</head> |
|
|
<frameset rows="120,*" onload="init();"> |
<frameset rows="125,*" onload="init();"> |
<frame name="selector" src="empty.html" /> |
<frame name="selector" src="empty.html" /> |
<frame name="choices" src="empty.html" /> |
<frame name="choices" src="empty.html" /> |
</frameset> |
</frameset> |