--- rat/client/parameter.html 2019/01/06 04:02:19 1.79 +++ rat/client/parameter.html 2020/10/29 23:24:13 1.84 @@ -5,7 +5,7 @@ The LearningOnline Network with CAPA Parameter Input Window // -// $Id: parameter.html,v 1.79 2019/01/06 04:02:19 raeburn Exp $ +// $Id: parameter.html,v 1.84 2020/10/29 23:24:13 raeburn Exp $ // // Copyright Michigan State University Board of Trustees // @@ -52,6 +52,7 @@ var precursive=''; var pnonreccol=''; var pmarkerst=''; var pparm=''; +var pextra=''; var defhour=0; var defmin=0; @@ -401,7 +402,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; } } @@ -412,6 +413,111 @@ function validateInterval() { assemble(); } +function validateDeepLink() { + var sform=choices.document.forms.sch; + 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.deeplinktypes.length) { + for (var i=0; i 0)) { + svalue += ':'+posslti; + } 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; + } + } + } + assemble(); +} + +function toggleDeepLink(caller) { + var sform=choices.document.forms.sch; + if ((caller == 'types') && (sform.deeplinktypes.length)) { + var frame = window.frames["choices"]; + for (var i=0; iX"; } choicewrite(''+selection+''); - -} +} function draw() { choicestart(); @@ -807,7 +912,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:'); @@ -973,17 +1078,17 @@ function draw() { choicewrite(' /> No
'); } if (pscat=='ip') { - var currallow = new Array; + 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)) { + if (patternComma.test(svalue)) { current = svalue.split(','); } else { - current = (svalue); + current = [svalue]; } for (var i=0; i Yes, and the scope of student selected slot is a single resource.
'); + 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(' /> 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') { + } + if (pscat=='deeplink') { + var deeplinkvals = new Array(); + var linktypeparts = new Array(); + var ltikeyRegExp = /^(lti|key):(\w+)$/; + var dlinkkeysty = 'hidden'; + var dlinkkeyval = ''; + var dlinkltidivsty = 'none'; + var dlinkmenusdivsty = 'none'; + if ((svalue != '') && (svalue != null)) { + deeplinkvals = svalue.split(','); + if (ltikeyRegExp.test(deeplinkvals[2])) { + linktypeparts = deeplinkvals[2].split(':'); + deeplinkvals[2] = linktypeparts[0]; + if (linktypeparts[0] == 'key') { + dlinkkeysty = 'text'; + dlinkkeyval = linktypeparts[1]; + } else if (linktypeparts[0] == 'lti') { + dlinkltidivsty = 'block'; + } + } + if (deeplinkvals[3] >= 1) { + dlinkmenusdivsty = 'inline-block'; + } + } else { + deeplinkvals = ['full','res','any','0']; + } + 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 deeplinkurls = new Array(); + deeplinkurls = ['any','only','key','lti']; tablestart('Deep-linked items'); - choicewrite('Value:'); - choicewrite('
'); - choicewrite('
'); - choicewrite('
'); - choicewrite('
'); - choicewrite('
'); + choicewrite('In Contents + Gradebook?'); + choicewrite(''); + choicewrite('Access scope via deep-link'); + choicewrite(''); + choicewrite('Supported Link Types'); + choicewrite('
'); + choicewrite('
'); + choicewrite(''); + choicewrite(''); + choicewrite('
'); + + var possmenus = new Array(); + if ((pextra != '') && (pextra != null)) { + var ltiRegExp = /^lti_/; + var menusRegExp = /^menus_/; + var extras = pextra.split('&'); + for (var i=0; i= 1) { + var ltinums = new Array(); + var ltititles = 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(''); - } + } } if (ptype=='color') { @@ -1221,6 +1463,7 @@ function init() { } if (pair[0]=='defmin' && pair[1] >= 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 = ''; @@ -1411,7 +1654,7 @@ function init() { 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') { @@ -1432,7 +1675,7 @@ function init() { if (precursive != 1) { selwrite('checked="checked" '); } - selwrite('onclick="parent.recursechange();" />No'); + selwrite('onclick="parent.recursechange();" />No'); selwrite('
'); } } @@ -1442,6 +1685,8 @@ function init() { } if ((ptype=='date') && (pscat=='interval')) { selwrite(' - +