--- rat/client/parameter.html 2017/06/13 15:49:36 1.71.2.1 +++ rat/client/parameter.html 2022/05/24 16:23:04 1.87 @@ -5,7 +5,7 @@ The LearningOnline Network with CAPA Parameter Input Window // -// $Id: parameter.html,v 1.71.2.1 2017/06/13 15:49:36 raeburn Exp $ +// $Id: parameter.html,v 1.87 2022/05/24 16:23:04 raeburn Exp $ // // Copyright Michigan State University Board of Trustees // @@ -45,9 +45,15 @@ var pextravaltwo=''; var preturn=''; var pcode=''; var pscat=''; +var psmap=''; var pmarker=''; var pmodal=''; var pname=''; +var precursive=''; +var pnonreccol=''; +var pmarkerst=''; +var pparm=''; +var pextra=''; var defhour=0; var defmin=0; @@ -188,7 +194,7 @@ function second() { choicewrite('>'+i+''); } choicewrite(''); -} +} function date() { @@ -239,8 +245,8 @@ function month() { } choicewrite(''); } - - + + function intminute() { var thisminutes=cmins; var i; @@ -397,7 +403,7 @@ function validateInterval() { 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.'); + alert('Please enter a key for a proctor to enter when a student uses the "Done" button.'); return; } } @@ -408,6 +414,125 @@ function validateInterval() { assemble(); } +function validateDeepLink() { + var sform=choices.document.forms.sch; + svalue = sform.deeplinkstate.options[sform.deeplinkstate.selectedIndex].value+','; + svalue += sform.deeplinkothers.options[sform.deeplinkothers.selectedIndex].value+','; + svalue += sform.deeplinklisted.options[sform.deeplinklisted.selectedIndex].value+','; + svalue += sform.deeplinkacc.options[sform.deeplinkacc.selectedIndex].value+','; + var keyRegExp = /^[a-zA-Z\d_.!@#$%^&*()+=-]+$/; + var numRegExp = /^\d+$/; + if (sform.deeplinkprotect.length) { + for (var i=0; i 0)) { + svalue += ':'+possltic; + } else { + alert('Please select an LTI launcher, or choose a different supported link type.'); + return; + } + } else if (sform.deeplinkprotect[i].value == 'ltid') { + var possltid = sform.linkpossltid.options[sform.linkpossltid.selectedIndex].value; + if ((numRegExp.test(possltid)) && (possltid > 0)) { + svalue += ':'+possltid; + } else { + alert('Please select an LTI launcher, or choose a different supported link type.'); + return; + } + } + break; + } + } + } + svalue += ','; + if (sform.deeplinkmenus.length) { + for (var i=0; i 0)) { + svalue += posscoll; + } else { + alert("Please select either a numbered collection or check 'Standard (all menus)'."); + return; + } + } + break; + } + } + } + svalue += ','; + svalue += sform.deeplinktarget.options[sform.deeplinktarget.selectedIndex].value; + assemble(); +} + +function toggleDeepLink(caller) { + var sform=choices.document.forms.sch; + if ((caller == 'protect') && (sform.deeplinkprotect.length)) { + var frame = window.frames["choices"]; + for (var i=0; i 0) { + for (var j=0; j'+ + 'Remove'; + 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; iX"; } choicewrite(''+selection+''); - -} +} function draw() { choicestart(); @@ -490,7 +708,11 @@ function draw() { choicewrite(' action="javascript:floateval();"'); } 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=""'); @@ -686,7 +908,7 @@ function draw() { if (ptype=='float') { if (pscat=='default') { tablestart('Default value or none'); - choicewrite(''); + choicewrite(''); } else { if (pscat=='pos') { tablestart('Positive floating point number or zero'); @@ -705,7 +927,7 @@ function draw() { } if (ptype=='string') { - if ((pscat=='any') || (pscat=='') || (pscat=='default') || + if ((pscat=='any') || (pscat=='') || (pscat=='default') || (typeof(pscat)=='undefined')) { tablestart('Text'); choicewrite('Value:'); @@ -774,7 +996,7 @@ function draw() { choicewrite('
'); + choicewrite(' /> Bubblesheet Exam
'); // choicewrite('
'); } 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('Value:'); choicewrite('
'); choicewrite('
'); choicewrite('
'); + choicewrite('

'+ + '
'+ + ''+ + ''); + var lenienttypes = ['Correct (checked)','Correct (unchecked)','Incorrect (checked)','Incorrect (unchecked)']; + for (var i=0; i'+ + ''); + } + choicewrite('
Foil submission statusPoints
'+lenienttypes[i]+'
'); } if (pscat=='discussvote') { tablestart('Discussion Voting'); @@ -841,10 +1093,51 @@ function draw() { choicewrite(' /> No
'); } if (pscat=='ip') { - tablestart('IP Number/Name'); - choicewrite('Value:'); - choicewrite(''); + var currallow = new Array; + var currdeny = new Array; + if ((svalue != '') && (svalue != null)) { + 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; iAllow fromDeny from'); + var acctypes = ['allow','deny']; + for (var i=0; i'+ + '
'+ + '
'); + for (var j=0; j'); + choicewrite('Remove'); + choicewrite('
'); + } + choicewrite('
'); + } + choicewrite(''); } if (pscat=='fileext') { tablestart('Allowed File Extensions'); @@ -875,19 +1168,263 @@ function draw() { choicewrite('
'); + choicewrite(' /> Yes, and the scope of the slot is a single resource.
'); choicewrite('
'); + choicewrite(' /> Yes, and the scope of the slot is the enclosing map/folder. When checking in, it applies to only one resource.
'); choicewrite('
'); - choicewrite(''); - } + choicewrite(' /> Yes, and the scope of the slot is the enclosing map/folder. When checking in, all resources in the map/folder are checked in.
'); + choicewrite(''); + } + if (pscat=='deeplink') { + var deeplinkvals = new Array(); + var linkprotectparts = new Array(); + var ltikeyRegExp = /^(ltic|ltid|key):(\w+)$/; + var dlinkkeysty = 'hidden'; + var dlinkkeyval = ''; + var dlinklticdivsty = 'none'; + var dlinkltiddivsty = 'none'; + var dlinkmenusdivsty = 'none'; + if ((svalue != '') && (svalue != null)) { + deeplinkvals = svalue.split(','); + if (ltikeyRegExp.test(deeplinkvals[4])) { + linkprotectparts = deeplinkvals[4].split(':'); + deeplinkvals[4] = linkprotectparts[0]; + if (linkprotectparts[0] == 'key') { + dlinkkeysty = 'text'; + dlinkkeyval = linkprotectparts[1]; + } else if (linkprotectparts[0] == 'ltic') { + dlinklticdivsty = 'block'; + } else if (linkprotectparts[0] == 'ltid') { + dlinkltiddivsty = 'block'; + } + } + if (deeplinkvals[5] >= 1) { + dlinkmenusdivsty = 'inline-block'; + } + } else { + deeplinkvals = ['off','unhide','full','res','','0']; + } + var deeplinkstate = new Array(); + deeplinkstate = ['only','off','both']; + var deeplinkstatetxt = new Array(); + deeplinkstatetxt = ['deep only','deeplink off','regular + deep']; + var deeplinkothers = new Array(); + deeplinkothers = ['hide','unhide']; + var deeplinkotherstxt = new Array(); + deeplinkotherstxt = ['Hidden','Unhidden']; + var deeplinklisting = new Array(); + deeplinklisting = ['full','absent','grades','details','datestatus']; + var deeplinklisttxt = new Array(); + deeplinklisttxt = ['Listed (linked) in both','Not listed','Listed in grades only','Listed (unlinked) in both','Listed (unlinked) inc. status in both']; + var deeplinkscopes = new Array(); + deeplinkscopes = ['res','map','rec']; + var deeplinkscopetxt = new Array(); + deeplinkscopetxt = ['resource only','enclosing map/folder','recursive map/folder']; + var deeplinkprotect = new Array(); + deeplinkprotect = ['none','key','ltic','ltid']; + var deeplinktarget = new Array(); + deeplinktarget = ['_self','_top']; + var deeplinktargettxt = new Array(); + deeplinktargettxt = ['Embedded','Not embedded']; + tablestart('Deep-linked items'); + choicewrite('Access status?'); + choicewrite(''); + choicewrite('Hide other resources?'); + choicewrite(''); + choicewrite('In Contents + Gradebook?'); + choicewrite(''); + choicewrite('Access scope for link'); + choicewrite(''); + choicewrite('Link protection'); + choicewrite(''); + choicewrite(' key access'); + choicewrite(''); + choicewrite('
'); + + var possmenus = new Array(); + if ((pextra != '') && (pextra != null)) { + var lticRegExp = /^ltic_/; + var ltidRegExp = /^ltid_/; + var menusRegExp = /^menus_/; + var extras = pextra.split('&'); + for (var i=0; i= 1) { + var lticnums = new Array(); + var ltictitles = new Array(); + for (var j=0; j'); + choicewrite('
'); + choicewrite('

'); + } + } + } else if (ltidRegExp.test(extras[i])) { + extras[i] = extras[i].replace(ltidRegExp,''); + var possltid = extras[i].split(','); + if (possltid.length >= 1) { + var ltidnums = new Array(); + var ltidtitles = new Array(); + for (var j=0; j'); + choicewrite('
'); + choicewrite('

'); + } + } + + } else if (menusRegExp.test(extras[i])) { + extras[i] = extras[i].replace(menusRegExp,''); + possmenus = extras[i].split(','); + } + } + } + choicewrite('Menu Items Displayed'); + choicewrite('
'); + if (possmenus.length >= 1) { + choicewrite(''); + choicewrite('
'); + choicewrite('

'); + } + choicewrite(''); + choicewrite('Embedded?'); + choicewrite(''); + choicewrite(''); + } } - + if (ptype=='color') { tablestart('Choose a Color'); choicewrite(''); @@ -902,7 +1439,7 @@ function draw() { colorfield(ir,ig,ib); } choicewrite(''); - } + } } choicewrite('
'); } @@ -925,6 +1462,22 @@ function catchange() { draw(); } +function recursechange() { + var rform=selector.document.forms.frec; + var count = rform.recurse.length; + if (count > 0) { + for (var i=0; i= 0 && pair[1] < 60) { defmin=pair[1]; } if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; } + if (pair[0]=='extra') { pextra=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; + } + } } + psmap = ismap; + if (ptype=='date' && pscat == 'interval') { if (doneproctorRegExp.test(pvalue)) { @@ -1033,7 +1626,7 @@ function init() { } } else { if (doneRegExp.test(pvalue)) { - var current = pvalue.match(doneRegExp); + var current = pvalue.match(doneRegExp); if (current.length == 2) { var textstr = current[1]; if (textstr != '') { @@ -1051,8 +1644,8 @@ function init() { } svalue=pvalue; if (((ptype=='float') || (ptype=='string') || (ptype=='int')) && - (pscat=='default') && - (typeof(svalue)!="undefined") && + (pscat=='default') && + (typeof(svalue)!="undefined") && (svalue!=0) && (svalue!='')) { pscat='any'; } if (ptype=='tolerance') { @@ -1128,7 +1721,7 @@ function init() { months[10]='November'; months[11]='December'; } - + if (ptype=='int') { sopt('default','Default'); sopt('pos','Positive Integer, Not Zero'); @@ -1157,8 +1750,9 @@ function init() { else if (pscat == 'ip') { sopt('ip','IP Number/Name'); } else if (pscat == 'fileext') { sopt('fileext','File Extension'); } else if (pscat == 'useslots') { sopt('useslots','Slots control access'); } + else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); } else { pscat = 'any'; } - sopt('any','String Value'); + if (pscat != 'deeplink') { sopt('any','String Value'); } } if (ptype=='color') { @@ -1167,12 +1761,30 @@ function init() { } selwrite(''); + if (ismap == 1) { + if ((pparm != 'hiddenresource') && (pparm != 'encrypturl')) { + selwrite('
'); + selwrite('Recursive:   '); + selwrite(''); + selwrite('

'); + } + } var targ='parent.opener'; if (pmodal==1) { targ='parent.parent'; } if ((ptype=='date') && (pscat=='interval')) { selwrite(' - +