0)) {
- svalue += ':'+posslti;
+ } else if (sform.deeplinkprotect[i].value == 'ltic') {
+ var possltic = sform.linkpossltic.options[sform.linkpossltic.selectedIndex].value;
+ if ((numRegExp.test(possltic)) && (possltic > 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;
@@ -466,32 +477,60 @@ function validateDeepLink() {
}
}
}
+ svalue += ',';
+ svalue += sform.deeplinktarget.options[sform.deeplinktarget.selectedIndex].value;
+ svalue += ',';
+ if (sform.deeplinkexit.length) {
+ for (var i=0; i '+
- 'Remove ';
- frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv);
+ ipDiv.innerHTML = ' '+"\n"+
+ 'Remove ';
+ innerDiv.appendChild(ipDiv);
}
- return false;
+ return;
}
-function removeIpRule(iptype,num) {
+function removeIpRule(caller,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);
- for (var i=0; i No ');
}
+ if (pscat=='tex') {
+ tablestart('TeX file display');
+ choicewrite('Value: ');
+ choicewrite(' tth (TeX to HTML) ');
+ choicewrite(' MathJax ');
+ }
if (pscat=='ip') {
var currallow = new Array;
var currdeny = new Array;
- if ((svalue != '') && (svalue != null)) {
+ if ((svalue != '') && (typeof(svalue) != 'undefined')) {
var patternComma = /,/;
var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/;
@@ -1110,20 +1180,20 @@ function draw() {
}
var curripaccess = [currallow,currdeny];
tablestart('IP Number/Name');
- choicewrite(' Allow from Deny from ');
+ choicewrite(' Allow from Deny from '+"\n");
var acctypes = ['allow','deny'];
for (var i=0; i'+
- ''+
- '
');
+ choicewrite(['
',
+ '',
+ '
');
+ choicewrite(['
'].join("\n"));
}
- choicewrite('
Add item ');
+ choicewrite('Add item '+"\n");
}
- choicewrite(' ');
+ choicewrite(''+"\n");
}
if (pscat=='fileext') {
tablestart('Allowed File Extensions');
@@ -1167,30 +1237,57 @@ function draw() {
}
if (pscat=='deeplink') {
var deeplinkvals = new Array();
- var linktypeparts = new Array();
- var ltikeyRegExp = /^(lti|key):(\w+)$/;
+ var linkprotectparts = new Array();
+ var ltikeyRegExp = /^(ltic:\d+|ltid:\d+|key:[a-zA-Z\d_.!@#$%^&*()+=-]+)$/;
+ var linkexitparts = new Array();
+ var dlinkexitRegExp = /^(yes|url|no)(|:[^:,;'"]+)$/;
var dlinkkeysty = 'hidden';
var dlinkkeyval = '';
- var dlinkltidivsty = 'none';
+ var dlinklticdivsty = 'none';
+ var dlinkltiddivsty = 'none';
var dlinkmenusdivsty = 'none';
- if ((svalue != '') && (svalue != null)) {
+ var dlinkexitdivsty = 'none';
+ var dlinkexittextval = '';
+ if ((svalue != '') && (typeof(svalue) != 'undefined')) {
deeplinkvals = svalue.split(',');
- if (ltikeyRegExp.test(deeplinkvals[2])) {
- linktypeparts = deeplinkvals[2].split(':');
- deeplinkvals[2] = linktypeparts[0];
- if (linktypeparts[0] == 'key') {
+ if (ltikeyRegExp.test(deeplinkvals[4])) {
+ linkprotectparts = deeplinkvals[4].split(':');
+ deeplinkvals[4] = linkprotectparts[0];
+ if (linkprotectparts[0] == 'key') {
dlinkkeysty = 'text';
- dlinkkeyval = linktypeparts[1];
- } else if (linktypeparts[0] == 'lti') {
- dlinkltidivsty = 'block';
+ dlinkkeyval = linkprotectparts[1];
+ } else if (linkprotectparts[0] == 'ltic') {
+ dlinklticdivsty = 'block';
+ } else if (linkprotectparts[0] == 'ltid') {
+ dlinkltiddivsty = 'block';
}
}
- if (deeplinkvals[3] >= 1) {
+ if (deeplinkvals[5] >= 1) {
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 {
- deeplinkvals = ['full','res','any','0'];
+ deeplinkvals = ['off','unhide','full','res','','0','_self','no'];
}
+ 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();
@@ -1199,94 +1296,155 @@ function draw() {
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'];
+ var deeplinkprotect = new Array();
+ 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');
+ choicewrite('Access status? ');
+ choicewrite('');
+ for (var i=0; i'+deeplinkstatetxt[i]+'');
+ }
+ choicewrite(' ');
+ choicewrite('Hide other resources? ');
+ choicewrite('');
+ for (var i=0; i'+deeplinkotherstxt[i]+'');
+ }
+ choicewrite(' ');
choicewrite('In Contents + Gradebook? ');
choicewrite('');
for (var i=0; i'+deeplinklisttxt[i]+'');
}
choicewrite(' ');
- choicewrite('Access scope via deep-link ');
+ choicewrite(' Access scope for link ');
choicewrite('');
for (var i=0; i'+deeplinkscopetxt[i]+'');
}
choicewrite(' ');
- choicewrite('Supported Link Types ');
- choicewrite('');
- choicewrite(' regular + deep ');
- choicewrite('');
- choicewrite(' deep only ');
+ choicewrite(' Link protection ');
choicewrite('');
- choicewrite(' deep with key ');
+ choicewrite(' not in use');
+ choicewrite(' key access');
choicewrite(' ');
choicewrite(' ');
var possmenus = new Array();
- if ((pextra != '') && (pextra != null)) {
- var ltiRegExp = /^lti_/;
+ if ((pextra != '') && (typeof(pextra) != 'undefined')) {
+ var lticRegExp = /^ltic_/;
+ var ltidRegExp = /^ltid_/;
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= 1) {
+ var lticnums = new Array();
+ var ltictitles = new Array();
+ for (var j=0; j');
+ choicewrite(' course LTI launch ');
+ choicewrite('');
+ choicewrite('');
+ var sel='';
+ if (deeplinkvals[4]!='ltic') {
+ sel = ' selected="selected"';
+ }
+ if (lticnums.length > 1) {
+ choicewrite('Select ');
+ }
+ for (var j=0; j'+ltictitles[j]+'');
+ }
+ choicewrite('
');
}
- if (ltinums.length) {
+ }
+ } 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(' deep with LTI launch ');
- choicewrite(' ');
+ choicewrite('Embedded? ');
+ choicewrite('');
+ for (var i=0; i'+deeplinktargettxt[i]+'');
+ }
+ choicewrite(' ');
+ choicewrite(' ');
+ choicewrite('Exit Button? ');
+ choicewrite('');
+ choicewrite(' not in use ');
+ choicewrite('');
+ choicewrite(' in use, no redirect ');
+ choicewrite('');
+ choicewrite(' in use, redirect to URL ');
+ choicewrite('');
+ choicewrite('Button text: ');
+ choicewrite(' ');
+ choicewrite('
');
choicewrite(' ');
}
}
@@ -1655,6 +1845,7 @@ function init() {
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 if (pscat == 'tex') { sopt('texdisplay','TeX File Display'); }
else { pscat = 'any'; }
if (pscat != 'deeplink') { sopt('any','String Value'); }
}