version 1.86, 2021/08/04 19:59:12
|
version 1.94, 2025/06/26 01:28:48
|
Line 401 function validateInterval() {
|
Line 401 function validateInterval() {
|
for (var i=0; i<sform.donebutton.length; i++) { |
for (var i=0; i<sform.donebutton.length; i++) { |
if (sform.donebutton[i].checked) { |
if (sform.donebutton[i].checked) { |
if (sform.donebutton[i].value == '_done_proctor') { |
if (sform.donebutton[i].value == '_done_proctor') { |
if ((sform.donebutton_proctorkey.value == '') || |
var keyval = sform.donebutton_proctorkey.value; |
(sform.donebutton_proctorkey.value == null)) { |
if ((keyval == '') || (typeof(keyval) == 'undefined')) { |
alert('Please enter a key for a proctor to enter when a student uses the "Done" button.'); |
alert('Please enter a key for a proctor to enter when a student uses the "Done" button.'); |
return; |
return; |
} |
} |
Line 422 function validateDeepLink() {
|
Line 422 function validateDeepLink() {
|
svalue += sform.deeplinkacc.options[sform.deeplinkacc.selectedIndex].value+','; |
svalue += sform.deeplinkacc.options[sform.deeplinkacc.selectedIndex].value+','; |
var keyRegExp = /^[a-zA-Z\d_.!@#$%^&*()+=-]+$/; |
var keyRegExp = /^[a-zA-Z\d_.!@#$%^&*()+=-]+$/; |
var numRegExp = /^\d+$/; |
var numRegExp = /^\d+$/; |
|
var exitTextRegExp = /^[^'":;,]+$/; |
if (sform.deeplinkprotect.length) { |
if (sform.deeplinkprotect.length) { |
for (var i=0; i<sform.deeplinkprotect.length; i++) { |
for (var i=0; i<sform.deeplinkprotect.length; i++) { |
if (sform.deeplinkprotect[i].checked) { |
if (sform.deeplinkprotect[i].checked) { |
Line 476 function validateDeepLink() {
|
Line 477 function validateDeepLink() {
|
} |
} |
} |
} |
} |
} |
|
svalue += ','; |
|
svalue += sform.deeplinktarget.options[sform.deeplinktarget.selectedIndex].value; |
|
svalue += ','; |
|
if (sform.deeplinkexit.length) { |
|
for (var i=0; i<sform.deeplinkexit.length; i++) { |
|
if (sform.deeplinkexit[i].checked) { |
|
if (sform.deeplinkexit[i].value == 'no') { |
|
svalue += sform.deeplinkexit[i].value; |
|
} else { |
|
var exittext = sform.deeplinkexittext.value; |
|
exittext = exittext.replace(/^\s+|\s+$/g,''); |
|
if ((exittext.length) && (exitTextRegExp.test(exittext))) { |
|
svalue += sform.deeplinkexit[i].value; |
|
if (exittext !== 'Exit Tool') { |
|
svalue += ':'+exittext; |
|
} |
|
} else { |
|
alert('Please enter the button text. Disallowed characters are ;,":\'\n'+ |
|
'or check "not in use" option for "Exit Tool Link"'); |
|
return; |
|
} |
|
} |
|
break; |
|
} |
|
} |
|
} |
assemble(); |
assemble(); |
} |
} |
|
|
Line 525 function toggleDeepLink(caller) {
|
Line 552 function toggleDeepLink(caller) {
|
} |
} |
} |
} |
} |
} |
|
if ((caller == 'exit') && (sform.deeplinkexit.length)) { |
|
var frame = window.frames["choices"]; |
|
for (var i=0; i<sform.deeplinkexit.length; i++) { |
|
if (sform.deeplinkexit[i].checked) { |
|
if (frame.document.getElementById('deeplinkexitdiv')) { |
|
if (sform.deeplinkexit[i].value == 'no') { |
|
frame.document.getElementById('deeplinkexitdiv').style.display='none'; |
|
sform.deeplinkexittext.value = ''; |
|
} else { |
|
frame.document.getElementById('deeplinkexitdiv').style.display='inline-block'; |
|
if (sform.deeplinkexittext.value == '') { |
|
sform.deeplinkexittext.value = 'Exit Tool'; |
|
} |
|
frame.document.getElementById('deeplinkexitdiv').scrollIntoView(); |
|
} |
|
} |
|
break; |
|
} |
|
} |
|
} |
} |
} |
|
|
function calldeeplink(caller) { |
function calldeeplink(caller) { |
Line 595 function addIpRule(iptype) {
|
Line 642 function addIpRule(iptype) {
|
var frame = window.frames["choices"]; |
var frame = window.frames["choices"]; |
if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) { |
if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) { |
var innerDiv = 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'); |
var ipDiv = frame.document.createElement('div'); |
ipDiv.innerHTML = '<input type="text" size="10" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+ |
ipDiv.innerHTML = '<input type="text" size="10" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+ |
'<a href="#" onclick="parent.removeIpRule(\''+iptype+'\',\''+count+'\')">Remove</a>'; |
'<a href="#" onclick="parent.removeIpRule(this,\''+iptype+'\')">Remove</a>'; |
frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv); |
frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv); |
} |
} |
return false; |
return false; |
} |
} |
|
|
function removeIpRule(iptype,num) { |
function removeIpRule(caller,iptype) { |
var frame = window.frames["choices"]; |
var frame = window.frames["choices"]; |
if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) { |
if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) { |
var innerDiv = 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++) { |
var divToRemove = caller.closest('div'); |
if (i==num) { |
innerDiv.removeChild(divToRemove); |
innerDiv.removeChild(innerDiv.childNodes[i]); |
ipstringeval(); |
ipstringeval(); |
|
break; |
|
} |
|
} |
|
} |
} |
} |
} |
|
|
Line 634 function lenienteval(newval) {
|
Line 676 function lenienteval(newval) {
|
} |
} |
var patternRelWeight = /^\-?[\d.]+$/; |
var patternRelWeight = /^\-?[\d.]+$/; |
var sform=choices.document.forms.sch; |
var sform=choices.document.forms.sch; |
if ((sform.lenientrelwt.length != 'undefined') && (sform.lenientrelwt.length) != 'null') { |
var relwtlength = sform.lenientrelwt.length; |
|
if ((relwtlength != '') && (typeof(relwtlength) != 'undefined')) { |
for (var i=0; i<sform.lenientrelwt.length; i++) { |
for (var i=0; i<sform.lenientrelwt.length; i++) { |
var relweight = sform.lenientrelwt[i].value; |
var relweight = sform.lenientrelwt[i].value; |
relweight = relweight.replace(/^\s+|\s+$/g,''); |
relweight = relweight.replace(/^\s+|\s+$/g,''); |
Line 1090 function draw() {
|
Line 1133 function draw() {
|
if (svalue=='no') { choicewrite(' checked="checked"'); } |
if (svalue=='no') { choicewrite(' checked="checked"'); } |
choicewrite(' /> No</label><br />'); |
choicewrite(' /> No</label><br />'); |
} |
} |
|
if (pscat=='tex') { |
|
tablestart('TeX file display'); |
|
choicewrite('<tr><td>Value:</td><td colspan="2">'); |
|
choicewrite('<label><input name="stringval" value="tth"'+ |
|
' type="radio" '+callradiostringeval('tth')); |
|
if (svalue=='tth') { choicewrite(' checked="checked"'); } |
|
choicewrite(' /> tth (TeX to HTML)</label><br />'); |
|
choicewrite('<label><input name="stringval" value="mathjax"'+ |
|
' type="radio" '+callradiostringeval('mathjax')); |
|
if (svalue=='mathjax') { choicewrite(' checked="checked"'); } |
|
choicewrite(' /> MathJax</label><br />'); |
|
} |
if (pscat=='ip') { |
if (pscat=='ip') { |
var currallow = new Array; |
var currallow = new Array; |
var currdeny = new Array; |
var currdeny = new Array; |
if ((svalue != '') && (svalue != null)) { |
if ((svalue != '') && (typeof(svalue) != 'undefined')) { |
var patternComma = /,/; |
var patternComma = /,/; |
var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/; |
var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/; |
var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/; |
var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/; |
Line 1130 function draw() {
|
Line 1185 function draw() {
|
'<div class="LC_string_ipacc_inner" id="LC_string_ipacc_inner_'+acctypes[i]+'">'); |
'<div class="LC_string_ipacc_inner" id="LC_string_ipacc_inner_'+acctypes[i]+'">'); |
for (var j=0; j<curripaccess[i].length; j++) { |
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('<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('<a href="#" onclick="parent.removeIpRule(this,\''+acctypes[i]+'\')">Remove</a>'); |
choicewrite('</div>'); |
choicewrite('</div>'); |
} |
} |
choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');">Add item</button>'); |
choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');">Add item</button>'); |
Line 1180 function draw() {
|
Line 1235 function draw() {
|
if (pscat=='deeplink') { |
if (pscat=='deeplink') { |
var deeplinkvals = new Array(); |
var deeplinkvals = new Array(); |
var linkprotectparts = new Array(); |
var linkprotectparts = new Array(); |
var ltikeyRegExp = /^(ltic|ltid|key):(\w+)$/; |
var ltikeyRegExp = /^(ltic:\d+|ltid:\d+|key:[a-zA-Z\d_.!@#$%^&*()+=-]+)$/; |
|
var linkexitparts = new Array(); |
|
var dlinkexitRegExp = /^(yes|url|no)(|:[^:,;'"]+)$/; |
var dlinkkeysty = 'hidden'; |
var dlinkkeysty = 'hidden'; |
var dlinkkeyval = ''; |
var dlinkkeyval = ''; |
var dlinklticdivsty = 'none'; |
var dlinklticdivsty = 'none'; |
var dlinkltiddivsty = 'none'; |
var dlinkltiddivsty = 'none'; |
var dlinkmenusdivsty = 'none'; |
var dlinkmenusdivsty = 'none'; |
if ((svalue != '') && (svalue != null)) { |
var dlinkexitdivsty = 'none'; |
|
var dlinkexittextval = ''; |
|
if ((svalue != '') && (typeof(svalue) != 'undefined')) { |
deeplinkvals = svalue.split(','); |
deeplinkvals = svalue.split(','); |
if (ltikeyRegExp.test(deeplinkvals[4])) { |
if (ltikeyRegExp.test(deeplinkvals[4])) { |
linkprotectparts = deeplinkvals[4].split(':'); |
linkprotectparts = deeplinkvals[4].split(':'); |
Line 1203 function draw() {
|
Line 1262 function draw() {
|
if (deeplinkvals[5] >= 1) { |
if (deeplinkvals[5] >= 1) { |
dlinkmenusdivsty = 'inline-block'; |
dlinkmenusdivsty = 'inline-block'; |
} |
} |
|
if (dlinkexitRegExp.test(deeplinkvals[7])) { |
|
linkexitparts = deeplinkvals[7].split(':'); |
|
deeplinkvals[7] = linkexitparts[0]; |
|
if (deeplinkvals[7] != 'no') { |
|
dlinkexitdivsty = 'inline-block'; |
|
if (!linkexitparts[1]) { |
|
dlinkexittextval = 'Exit Tool'; |
|
} else { |
|
dlinkexittextval = linkexitparts[1]; |
|
} |
|
} |
|
} |
} else { |
} else { |
deeplinkvals = ['off','unhide','full','res','','0']; |
deeplinkvals = ['off','unhide','full','res','','0','_self','no']; |
} |
} |
var deeplinkstate = new Array(); |
var deeplinkstate = new Array(); |
deeplinkstate = ['only','off','both']; |
deeplinkstate = ['only','off','both']; |
Line 1224 function draw() {
|
Line 1295 function draw() {
|
deeplinkscopetxt = ['resource only','enclosing map/folder','recursive map/folder']; |
deeplinkscopetxt = ['resource only','enclosing map/folder','recursive map/folder']; |
var deeplinkprotect = new Array(); |
var deeplinkprotect = new Array(); |
deeplinkprotect = ['none','key','ltic','ltid']; |
deeplinkprotect = ['none','key','ltic','ltid']; |
|
var deeplinktarget = new Array(); |
|
deeplinktarget = ['_self','_top']; |
|
var deeplinktargettxt = new Array(); |
|
deeplinktargettxt = ['Embedded','Not embedded']; |
|
var deeplinkexit = ['yes','url','no']; |
tablestart('Deep-linked items'); |
tablestart('Deep-linked items'); |
choicewrite('<tr><td>Access status?</td><td>'); |
choicewrite('<tr><td>Access status?</td><td>'); |
choicewrite('<select name="deeplinkstate">'); |
choicewrite('<select name="deeplinkstate">'); |
Line 1279 function draw() {
|
Line 1355 function draw() {
|
choicewrite('</span><br />'); |
choicewrite('</span><br />'); |
|
|
var possmenus = new Array(); |
var possmenus = new Array(); |
if ((pextra != '') && (pextra != null)) { |
if ((pextra != '') && (typeof(pextra) != 'undefined')) { |
var lticRegExp = /^ltic_/; |
var lticRegExp = /^ltic_/; |
var ltidRegExp = /^ltid_/; |
var ltidRegExp = /^ltid_/; |
var menusRegExp = /^menus_/; |
var menusRegExp = /^menus_/; |
Line 1404 function draw() {
|
Line 1480 function draw() {
|
} |
} |
choicewrite('</select></div></span><br />'); |
choicewrite('</select></div></span><br />'); |
} |
} |
|
choicewrite('</td></tr>'); |
|
choicewrite('<tr><td>Embedded?</td><td>'); |
|
choicewrite('<select name="deeplinktarget">'); |
|
for (var i=0; i<deeplinktarget.length; i++) { |
|
choicewrite('<option value="'+deeplinktarget[i]+'"'); |
|
if (deeplinkvals[6] == deeplinktarget[i]) { |
|
choicewrite(' selected="selected"'); |
|
} |
|
choicewrite('>'+deeplinktargettxt[i]+'</option>'); |
|
} |
|
choicewrite('</select>'); |
|
choicewrite('</td></tr>'); |
|
choicewrite('<tr><td>Exit Button?</td><td>'); |
|
choicewrite('<span style="white-space: nowrap;"><label>'); |
|
choicewrite('<input name="deeplinkexit" value="no"'+ |
|
' type="radio" '+calldeeplink('exit')); |
|
if (deeplinkvals[7]=='no') { choicewrite(' checked="checked"'); } |
|
choicewrite(' />not in use</label></span><br />'); |
|
choicewrite('<span style="white-space: nowrap;"><label>'); |
|
choicewrite('<input name="deeplinkexit" value="yes"'+ |
|
' type="radio" '+calldeeplink('exit')); |
|
if (deeplinkvals[7]=='yes') { choicewrite(' checked="checked"'); } |
|
choicewrite(' />in use, no redirect</label></span> '); |
|
choicewrite('<span style="white-space: nowrap;"><label>'); |
|
choicewrite('<input name="deeplinkexit" value="url"'+ |
|
' type="radio" '+calldeeplink('exit')); |
|
if (deeplinkvals[7]=='url') { choicewrite(' checked="checked"'); } |
|
choicewrite(' />in use, redirect to URL</label></span><br />'); |
|
choicewrite('<div id="deeplinkexitdiv" style="display:'+dlinkexitdivsty+'">'); |
|
choicewrite('<br /><span style="white-space: nowrap;">Button text: '); |
|
choicewrite('<input type="text" name="deeplinkexittext" id="deeplinkexittext" value="'+dlinkexittextval+'" size="10" />'); |
|
choicewrite('</span></div>'); |
choicewrite('</td></tr></table>'); |
choicewrite('</td></tr></table>'); |
} |
} |
} |
} |
Line 1734 function init() {
|
Line 1842 function init() {
|
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'); } |
else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); } |
else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); } |
|
else if (pscat == 'tex') { sopt('texdisplay','TeX File Display'); } |
else { pscat = 'any'; } |
else { pscat = 'any'; } |
if (pscat != 'deeplink') { sopt('any','String Value'); } |
if (pscat != 'deeplink') { sopt('any','String Value'); } |
} |
} |