Annotation of rat/client/parameter.html, revision 1.98
1.56 raeburn 1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
2: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1.1 www 4: <!--
5: The LearningOnline Network with CAPA
6: Parameter Input Window
1.16 albertel 7: //
1.98 ! raeburn 8: // $Id: parameter.html,v 1.97 2025/06/30 20:29:06 raeburn Exp $
1.16 albertel 9: //
10: // Copyright Michigan State University Board of Trustees
11: //
12: // This file is part of the LearningOnline Network with CAPA (LON-CAPA).
13: //
14: // LON-CAPA is free software; you can redistribute it and/or modify
15: // it under the terms of the GNU General Public License as published by
16: // the Free Software Foundation; either version 2 of the License, or
17: // (at your option) any later version.
18: //
19: // LON-CAPA is distributed in the hope that it will be useful,
20: // but WITHOUT ANY WARRANTY; without even the implied warranty of
21: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22: // GNU General Public License for more details.
23: //
24: // You should have received a copy of the GNU General Public License
25: // along with LON-CAPA; if not, write to the Free Software
26: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27: //
28: // /home/httpd/html/adm/gpl.txt
29: //
30: // http://www.lon-capa.org/
31: //
1.1 www 32: -->
33: <head>
1.56 raeburn 34: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1.1 www 35: <title>LON-CAPA</title>
36:
1.46 albertel 37: <script type="text/javascript">
1.56 raeburn 38: // <![CDATA[
1.1 www 39:
40: var ptype='';
41: var pvalue='';
1.68 raeburn 42: var pmodval='';
1.70 raeburn 43: var pextraval='';
1.71 raeburn 44: var pextravaltwo='';
1.1 www 45: var preturn='';
46: var pcode='';
1.2 www 47: var pscat='';
1.85 raeburn 48: var psmap='';
1.2 www 49: var pmarker='';
1.63 www 50: var pmodal='';
1.1 www 51: var pname='';
1.76 raeburn 52: var precursive='';
53: var pnonreccol='';
54: var pmarkerst='';
55: var pparm='';
1.80 raeburn 56: var pextra='';
1.1 www 57:
1.31 www 58: var defhour=0;
59: var defmin=0;
60: var defsec=0;
61:
1.1 www 62: var svalue;
1.2 www 63: var stype;
64: var smarker;
1.1 www 65:
66: var vars=new Array();
67:
1.2 www 68: var cdate=new Date();
69:
70: var csec;
71: var cmin;
72: var chour;
73: var cday;
74:
75: var months=new Array();
76:
77:
1.1 www 78: function selwrite(text) {
79: this.window.selector.document.write(text);
80: }
81:
82: function choicestart() {
1.61 raeburn 83: this.window.choices.document.open();
1.62 raeburn 84: choicewrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
85: choicewrite('<html xmlns="http://www.w3.org/1999/xhtml">');
1.55 bisitz 86: choicewrite('<head>');
1.62 raeburn 87: choicewrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
88: choicewrite('<title>LON-CAPA</title>');
1.55 bisitz 89: choicewrite('<style type="text/css">');
90: choicewrite('<!--');
91: choicewrite('body {');
92: choicewrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
93: choicewrite('line-height:130%;');
94: choicewrite('font-size:0.83em;');
95: choicewrite('background: #FFFFFF;');
96: choicewrite('}');
97: choicewrite('table.LC_parmsel_table {font-size: 90%;}');
98: choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');
1.96 raeburn 99: choicewrite('fieldset.LC_grace { display:inline; }');
100: choicewrite('fieldset.LC_grace > legend { font-weight: normal; }');
1.55 bisitz 101: choicewrite('-->');
102: choicewrite('</style>');
103: choicewrite('</head>');
1.62 raeburn 104: choicewrite('<body>');
1.1 www 105: }
106:
107: function choiceend() {
108: choicewrite('</body></html>');
109: this.window.choices.document.close();
110: }
111:
112: function choicewrite(text) {
113: this.window.choices.document.write(text);
114: }
115:
116: function tablestart(headtext) {
1.55 bisitz 117: choicewrite('<table class="LC_parmsel_table"><tr bgcolor="#C5DB99"><th colspan="3">'+
1.1 www 118: headtext+'</th></tr>');
119: }
120:
121: function valline(text,id1,id2) {
1.52 bisitz 122: choicewrite('<tr><td>'+text+
1.51 bisitz 123: '</td><td><input type="text" size="4" name="val'+
1.53 bisitz 124: id1+'" /></td><td>incl:<input type="checkbox" name="val'+
125: id2+'" /></td></tr>');
1.1 www 126: }
127:
1.46 albertel 128: function escapeHTML(text) {
129: text = text.replace(/&/g, '&');
130: text = text.replace(/"/g, '"');
131: text = text.replace(/</g, '<');
132: text = text.replace(/>/g, '>');
133: return text;
134: }
135:
1.2 www 136: function datecalc() {
137: var sform=choices.document.forms.sch;
138:
139: cdate.setHours(sform.hours.options[sform.hours.selectedIndex].value);
140: cdate.setMinutes(sform.minutes.options[sform.minutes.selectedIndex].value);
141: cdate.setSeconds(sform.minutes.options[sform.seconds.selectedIndex].value);
142: cdate.setDate(sform.date.options[sform.date.selectedIndex].value);
143: cdate.setMonth(sform.month.options[sform.month.selectedIndex].value);
144: cdate.setFullYear(sform.year.options[sform.year.selectedIndex].value);
145:
146: draw();
147: }
148:
149: function hour() {
150: var thishour=cdate.getHours();
151: var i; var j;
1.53 bisitz 152: choicewrite('<select name="hours" onchange="parent.datecalc();">');
1.2 www 153: for (i=0;i<=23;i++) {
1.54 bisitz 154: choicewrite('<option value="'+i+'"');
1.2 www 155: if (i==thishour) {
1.54 bisitz 156: choicewrite(' selected="selected"');
1.2 www 157: }
158: choicewrite('>');
159: if (i==12) { choicewrite('noon'); } else {
160: if (i==0) { choicewrite('midnight') } else {
161:
162: if (i<12) { choicewrite(i+' am'); } else {
163: j=i-12; choicewrite(j+' pm');
164: }
165:
166: }
167: }
168: choicewrite('</option>');
169: }
170: choicewrite('</select>');
171: }
172:
173: function minute() {
174: var thisminutes=cdate.getMinutes();
175: var i;
1.53 bisitz 176: choicewrite('<select name="minutes" onchange="parent.datecalc();">');
1.2 www 177: for (i=0;i<=59;i++) {
1.54 bisitz 178: choicewrite('<option value="'+i+'"');
1.2 www 179: if (i==thisminutes) {
1.54 bisitz 180: choicewrite(' selected="selected"');
1.2 www 181: }
182: choicewrite('>'+i+'</option>');
183: }
184: choicewrite('</select>');
185: }
186:
187: function second() {
188: var thisseconds=cdate.getSeconds();
189: var i;
1.53 bisitz 190: choicewrite('<select name="seconds" onchange="parent.datecalc();">');
1.2 www 191: for (i=0;i<=59;i++) {
1.54 bisitz 192: choicewrite('<option value="'+i+'"');
1.2 www 193: if (i==thisseconds) {
1.54 bisitz 194: choicewrite(' selected="selected"');
1.2 www 195: }
196: choicewrite('>'+i+'</option>');
197: }
198: choicewrite('</select>');
1.79 raeburn 199: }
1.2 www 200:
201:
202: function date() {
203: var thisdate=cdate.getDate();
204: var i;
1.53 bisitz 205: choicewrite('<select name="date" onchange="parent.datecalc();">');
1.2 www 206: for (i=1;i<=31;i++) {
1.54 bisitz 207: choicewrite('<option value="'+i+'"');
1.2 www 208: if (i==thisdate) {
1.54 bisitz 209: choicewrite(' selected="selected"');
1.2 www 210: }
211: choicewrite('>'+i+'</option>');
212: }
213: choicewrite('</select>');
214: }
215:
216: function year() {
217: var thisyear=cdate.getFullYear();
1.19 www 218: var nowdate=new Date();
219: var nowyear=nowdate.getFullYear();
1.33 albertel 220: if ( !thisyear ) { thisyear=nowyear; }
1.19 www 221: var loweryear=thisyear-2;
222: var upperyear=thisyear+5;
223: if (thisyear>nowyear) { loweryear=nowyear-2; }
224: if (thisyear<nowyear) { upperyear=nowyear+5; }
1.2 www 225: var i;
1.53 bisitz 226: choicewrite('<select name="year" onchange="parent.datecalc();">');
1.19 www 227: for (i=loweryear;i<=upperyear;i++) {
1.54 bisitz 228: choicewrite('<option value="'+i+'"');
1.2 www 229: if (i==thisyear) {
1.54 bisitz 230: choicewrite(' selected="selected"');
1.2 www 231: }
232: choicewrite('>'+i+'</option>');
233: }
234: choicewrite('</select>');
235: }
236:
237: function month() {
238: var thismonth=cdate.getMonth();
239: var i;
1.53 bisitz 240: choicewrite('<select name="month" onchange="parent.datecalc();">');
1.2 www 241: for (i=0;i<=11;i++) {
1.54 bisitz 242: choicewrite('<option value="'+i+'"');
1.2 www 243: if (i==thismonth) {
1.54 bisitz 244: choicewrite(' selected="selected"');
1.2 www 245: }
246: choicewrite('>'+months[i]+'</option>');
247: }
248: choicewrite('</select>');
249: }
1.79 raeburn 250:
251:
1.96 raeburn 252: function intminute(mins) {
253: var thisminutes;
254: if ((typeof mins === 'number') && (!isNaN(mins))) {
255: thisminutes=mins;
256: } else {
257: thisminutes=cmins;
258: }
1.2 www 259: var i;
1.69 musolffc 260: var result = '';
1.96 raeburn 261: var funcname = '';
262: if (pscat == 'grace') {
263: funcname = 'parent.gracestringeval()';
264: } else {
265: funcname = 'parent.intcalc()';
266: }
267: result += '<select name="minutes" onchange="'+funcname+';">';
1.2 www 268: for (i=0;i<=59;i++) {
1.69 musolffc 269: result += '<option value="'+i+'"';
1.2 www 270: if (i==thisminutes) {
1.69 musolffc 271: result += ' selected="selected"';
1.2 www 272: }
1.69 musolffc 273: result += '>'+i+'</option>';
1.2 www 274: }
1.69 musolffc 275: result += '</select>';
276: return result;
1.2 www 277: }
278:
1.96 raeburn 279: function inthour(hours) {
280: var thishours;
281: if ((typeof hours === 'number') && (!isNaN(hours))) {
282: thishours=hours;
283: } else {
284: thishours=chours;
285: }
1.2 www 286: var i;
1.69 musolffc 287: var result = '';
1.96 raeburn 288: var funcname = '';
289: if (pscat == 'grace') {
290: funcname = 'parent.gracestringeval()';
291: } else {
292: funcname = 'parent.intcalc()';
293: }
294: result += '<select name="hours" onchange="'+funcname+';">';
1.2 www 295: for (i=0;i<=23;i++) {
1.69 musolffc 296: result += '<option value="'+i+'"';
1.2 www 297: if (i==thishours) {
1.69 musolffc 298: result += ' selected="selected"';
1.2 www 299: }
1.69 musolffc 300: result += '>'+i+'</option>';
1.2 www 301: }
1.69 musolffc 302: result += '</select>';
303: return result;
1.71 raeburn 304: }
1.2 www 305:
1.96 raeburn 306: function intsecond(secs) {
307: var thisseconds;
308: if ((typeof secs === 'number') && (!isNaN(secs))) {
309: thisseconds=secs;
310: } else {
311: thisseconds=csecs;
312: }
1.2 www 313: var i;
1.69 musolffc 314: var result = '';
1.96 raeburn 315: var funcname = '';
316: if (pscat == 'grace') {
317: funcname = 'parent.gracestringeval()';
318: } else {
319: funcname = 'parent.intcalc()';
320: }
321: result += '<select name="seconds" onchange="'+funcname+';">';
1.2 www 322: for (i=0;i<=59;i++) {
1.69 musolffc 323: result += '<option value="'+i+'"';
1.2 www 324: if (i==thisseconds) {
1.69 musolffc 325: result += ' selected="selected"';
1.2 www 326: }
1.69 musolffc 327: result += '>'+i+'</option>';
1.2 www 328: }
1.69 musolffc 329: result += '</select>';
330: return result;
1.97 raeburn 331: }
332:
333: function intweek(weeks) {
334: var thisweek;
335: if ((typeof weeks === 'number') && (!isNaN(weeks))) {
336: thisweek=weeks;
337: }
338: var i;
339: var result ='';
340: var funcname = '';
341: if (pscat == 'grace') {
342: funcname = 'parent.gracestringeval()';
343: }
344: result += '<select name="weeks" onchange="'+funcname+';">';
345: for (i=0;i<=52;i++) {
346: result += '<option value="'+i+'"';
347: if (i==thisweek) {
348: result += ' selected="selected"';
349: }
350: result += '>'+i+'</option>';
351: }
352: result += '</select>';
353: return result;
354: }
1.2 www 355:
1.96 raeburn 356: function intday(days) {
357: var thisdate;
1.97 raeburn 358: var maxallowed;
1.96 raeburn 359: if ((typeof days === 'number') && (!isNaN(days))) {
360: thisdate=days;
361: } else {
362: thisdate=cdays;
363: }
1.2 www 364: var i;
1.69 musolffc 365: var result ='';
1.96 raeburn 366: var funcname = '';
367: if (pscat == 'grace') {
368: funcname = 'parent.gracestringeval()';
1.97 raeburn 369: maxallowed = 6;
1.96 raeburn 370: } else {
371: funcname = 'parent.intcalc()';
1.97 raeburn 372: maxallowed = 31;
1.96 raeburn 373: }
374: result += '<select name="date" onchange="'+funcname+';">';
1.97 raeburn 375: for (i=0;i<=maxallowed;i++) {
1.69 musolffc 376: result += '<option value="'+i+'"';
1.2 www 377: if (i==thisdate) {
1.69 musolffc 378: result += ' selected="selected"';
1.2 www 379: }
1.69 musolffc 380: result += '>'+i+'</option>';
1.2 www 381: }
1.69 musolffc 382: result += '</select>';
383: return result;
1.2 www 384: }
385:
386: function intcalc() {
387: var sform=choices.document.forms.sch;
388: svalue=((sform.date.options[sform.date.selectedIndex].value*24+
389: sform.hours.options[sform.hours.selectedIndex].value*1)*60+
390: sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
391: sform.seconds.options[sform.seconds.selectedIndex].value*1;
1.68 raeburn 392: if ((ptype=='date') && (pscat=='interval')) {
393: var newpmodval = '';
1.70 raeburn 394: var newpextraval = '';
1.71 raeburn 395: var newpextravaltwo = 'Done';
1.68 raeburn 396: if (sform.donebutton.length) {
397: for (var i=0; i<sform.donebutton.length; i++) {
398: if (sform.donebutton[i].checked) {
399: if (sform.donebutton[i].value == '_done') {
400: newpmodval = sform.donebutton[i].value;
1.71 raeburn 401: newpextravaltwo = sform.donebutton_text.value;
1.70 raeburn 402: } else {
403: if (sform.donebutton[i].value == '_done_proctor') {
404: newpmodval = sform.donebutton[i].value;
405: newpextraval = sform.donebutton_proctorkey.value;
1.71 raeburn 406: newpextravaltwo = sform.donebutton_text.value;
407: newpextravaltwo = newpextravaltwo.replace(/:/g,'');
1.70 raeburn 408: }
1.68 raeburn 409: }
410: }
411: }
412: }
413: pmodval = newpmodval;
1.70 raeburn 414: pextraval = newpextraval;
1.71 raeburn 415: pextravaltwo = newpextravaltwo;
1.68 raeburn 416: draw();
417: if (pmodval) {
1.71 raeburn 418: var doneRegExp = /^(_done)(|_proctor)$/;
419: var donevals = pmodval.match(doneRegExp);
420: if (donevals.length == 3) {
421: svalue += donevals[1];
422: }
423: if (newpextravaltwo) {
424: if (newpextravaltwo != 'Done') {
425: svalue += ':'+newpextravaltwo+':';
426: }
427: }
428: if (donevals[2] != '') {
429: svalue += donevals[2];
430: if (pextraval != '') {
431: svalue += '_'+pextraval;
432: }
433: }
1.70 raeburn 434: }
1.68 raeburn 435: } else {
436: draw();
437: }
1.2 www 438: }
439:
1.70 raeburn 440: function toggleSecret() {
441: var sform=choices.document.forms.sch;
442: if (sform.donebutton.length) {
443: for (var i=0; i<sform.donebutton.length; i++) {
444: if (sform.donebutton[i].checked) {
1.71 raeburn 445: if (sform.donebutton[i].value == '') {
446: if (document.getElementById('donebuttontextdiv')) {
447: document.getElementById('donebuttontextdiv').style.display='none';
448: }
449: } else {
450: if (document.getElementById('donebuttontextdiv')) {
451: document.getElementById('donebuttontextdiv').style.display='block';
452: }
453: }
1.70 raeburn 454: if (sform.donebutton[i].value == '_done_proctor') {
455: if (document.getElementById('done_proctorkey')) {
456: document.getElementById('done_proctorkey').type='text';
457: }
458: } else {
459: if (document.getElementById('done_proctorkey')) {
460: document.getElementById('done_proctorkey').type='hidden';
461: document.getElementById('done_proctorkey').value='';
462: }
463: }
464: }
465: }
466: }
467: }
468:
469: function validateInterval() {
470: var sform=choices.document.forms.sch;
471: if (sform.donebutton.length) {
472: for (var i=0; i<sform.donebutton.length; i++) {
473: if (sform.donebutton[i].checked) {
474: if (sform.donebutton[i].value == '_done_proctor') {
1.88 raeburn 475: var keyval = sform.donebutton_proctorkey.value;
476: if ((keyval == '') || (typeof(keyval) == 'undefined')) {
1.84 raeburn 477: alert('Please enter a key for a proctor to enter when a student uses the "Done" button.');
1.70 raeburn 478: return;
479: }
480: }
481: }
482: }
483: }
484: intcalc();
485: assemble();
486: }
487:
1.98 ! raeburn 488: function validateGrace() {
! 489: var items = choices.document.getElementsByName('setgrace');
! 490: var needpcr = 0;
! 491: var neednum = 0;
! 492: if (items) {
! 493: if (items.length) {
! 494: if (items.length > 0) {
! 495: for (var i=0; i<items.length; i++) {
! 496: var numnotnull = 0;
! 497: var fracnotnull = 0;
! 498: var graceDiv = items[i].closest('div');
! 499: var timeSels = graceDiv.getElementsByTagName("select");
! 500: if (timeSels.length) {
! 501: for (var j=0; j<timeSels.length; j++) {
! 502: var selidx = timeSels[j].selectedIndex;
! 503: if (selidx >= 0) {
! 504: var val = timeSels[j].options[selidx].value;
! 505: if ((val !== null) && (val !== '') && (val !== 'undefined')) {
! 506: numnotnull = 1;
! 507: break;
! 508: }
! 509: }
! 510: }
! 511: }
! 512: var inputElems = graceDiv.getElementsByTagName("input");
! 513: if (inputElems.length) {
! 514: for (var j=0; j<inputElems.length; j++) {
! 515: var iname = inputElems[j].getAttribute('name');
! 516: if (iname == 'frac') {
! 517: var ival = inputElems[j].value;
! 518: ival.trim();
! 519: var poss = parseFloat(ival);
! 520: if ((typeof poss === 'number') && (!isNaN(poss))) {
! 521: if ((poss => 0) && (poss <= 1)) {
! 522: fracnotnull = 1;
! 523: }
! 524: }
! 525: break;
! 526: }
! 527: }
! 528: }
! 529: if (numnotnull && !fracnotnull) {
! 530: needpcr ++;
! 531: }
! 532: if (fracnotnull && !numnotnull) {
! 533: neednum ++;
! 534: }
! 535: }
! 536: if (needpcr) {
! 537: if (needpcr == 1) {
! 538: alert("Grace period setting is incomplete: enter a number between 0 and 1.0 for 'Partial Credit', or use 'Remove'.");
! 539: } else {
! 540: alert(needpcr+" Grace period settings are incomplete: for each enter a number between 0 and 1.0 for 'Partial Credit', or use 'Remove'.");
! 541: }
! 542: return;
! 543: }
! 544: if (neednum) {
! 545: if (neednum == 1) {
! 546: alert("Grace period setting is incomplete: select a number in at least one of the 'Time past due' select boxes, or use 'Remove'.");
! 547: } else {
! 548: alert(neednum +" Grace period settings are incomplete: for each select a number in at least one of the 'Time past due' select boxes, or use 'Remove'.");
! 549: }
! 550: return;
! 551: }
! 552: }
! 553: }
! 554: }
! 555: assemble();
! 556: }
! 557:
1.80 raeburn 558: function validateDeepLink() {
559: var sform=choices.document.forms.sch;
1.86 raeburn 560: svalue = sform.deeplinkstate.options[sform.deeplinkstate.selectedIndex].value+',';
561: svalue += sform.deeplinkothers.options[sform.deeplinkothers.selectedIndex].value+',';
562: svalue += sform.deeplinklisted.options[sform.deeplinklisted.selectedIndex].value+',';
1.80 raeburn 563: svalue += sform.deeplinkacc.options[sform.deeplinkacc.selectedIndex].value+',';
1.84 raeburn 564: var keyRegExp = /^[a-zA-Z\d_.!@#$%^&*()+=-]+$/;
565: var numRegExp = /^\d+$/;
1.90 raeburn 566: var exitTextRegExp = /^[^'":;,]+$/;
1.86 raeburn 567: if (sform.deeplinkprotect.length) {
568: for (var i=0; i<sform.deeplinkprotect.length; i++) {
569: if (sform.deeplinkprotect[i].checked) {
570: svalue += sform.deeplinkprotect[i].value;
571: if (sform.deeplinkprotect[i].value == 'key') {
1.80 raeburn 572: var posskey = sform.deeplinkkey.value;
573: posskey = posskey.replace(/^\s+|\s+$/g,'');
574: if (keyRegExp.test(posskey)) {
575: svalue += ':'+posskey;
1.84 raeburn 576: } else {
577: alert('Please enter a value for the key containing one or more of: a-zA-Z0-9_.!@#$%^&*()+=-\n'+
578: 'or choose a different supported link type.');
579: return;
1.80 raeburn 580: }
1.86 raeburn 581: } else if (sform.deeplinkprotect[i].value == 'ltic') {
582: var possltic = sform.linkpossltic.options[sform.linkpossltic.selectedIndex].value;
583: if ((numRegExp.test(possltic)) && (possltic > 0)) {
584: svalue += ':'+possltic;
585: } else {
586: alert('Please select an LTI launcher, or choose a different supported link type.');
587: return;
588: }
589: } else if (sform.deeplinkprotect[i].value == 'ltid') {
590: var possltid = sform.linkpossltid.options[sform.linkpossltid.selectedIndex].value;
591: if ((numRegExp.test(possltid)) && (possltid > 0)) {
592: svalue += ':'+possltid;
1.84 raeburn 593: } else {
594: alert('Please select an LTI launcher, or choose a different supported link type.');
595: return;
596: }
597: }
598: break;
599: }
600: }
601: }
602: svalue += ',';
603: if (sform.deeplinkmenus.length) {
604: for (var i=0; i<sform.deeplinkmenus.length; i++) {
605: if (sform.deeplinkmenus[i].checked) {
606: if (sform.deeplinkmenus[i].value == 'std') {
607: svalue += '0';
608: } else if (sform.deeplinkmenus[i].value == 'collnum') {
609: var posscoll = sform.linkpossmenu.options[sform.linkpossmenu.selectedIndex].value;
610: if ((numRegExp.test(posscoll)) && (posscoll > 0)) {
611: svalue += posscoll;
612: } else {
613: alert("Please select either a numbered collection or check 'Standard (all menus)'.");
614: return;
1.80 raeburn 615: }
616: }
617: break;
618: }
619: }
620: }
1.87 raeburn 621: svalue += ',';
622: svalue += sform.deeplinktarget.options[sform.deeplinktarget.selectedIndex].value;
1.90 raeburn 623: svalue += ',';
624: if (sform.deeplinkexit.length) {
625: for (var i=0; i<sform.deeplinkexit.length; i++) {
626: if (sform.deeplinkexit[i].checked) {
627: if (sform.deeplinkexit[i].value == 'no') {
628: svalue += sform.deeplinkexit[i].value;
629: } else {
630: var exittext = sform.deeplinkexittext.value;
631: exittext = exittext.replace(/^\s+|\s+$/g,'');
632: if ((exittext.length) && (exitTextRegExp.test(exittext))) {
633: svalue += sform.deeplinkexit[i].value;
634: if (exittext !== 'Exit Tool') {
635: svalue += ':'+exittext;
636: }
637: } else {
638: alert('Please enter the button text. Disallowed characters are ;,":\'\n'+
639: 'or check "not in use" option for "Exit Tool Link"');
640: return;
641: }
642: }
643: break;
644: }
645: }
646: }
1.80 raeburn 647: assemble();
648: }
649:
1.84 raeburn 650: function toggleDeepLink(caller) {
1.80 raeburn 651: var sform=choices.document.forms.sch;
1.86 raeburn 652: if ((caller == 'protect') && (sform.deeplinkprotect.length)) {
1.80 raeburn 653: var frame = window.frames["choices"];
1.86 raeburn 654: for (var i=0; i<sform.deeplinkprotect.length; i++) {
655: if (sform.deeplinkprotect[i].checked) {
656: if (frame.document.getElementById('deeplinkkey')) {
657: if (sform.deeplinkprotect[i].value == 'key') {
1.80 raeburn 658: frame.document.getElementById('deeplinkkey').type='text';
1.86 raeburn 659: } else {
660: frame.document.getElementById('deeplinkkey').type='hidden';
1.80 raeburn 661: }
1.86 raeburn 662: }
663: if (frame.document.getElementById('deeplinklticdiv')) {
664: if (sform.deeplinkprotect[i].value == 'ltic') {
665: frame.document.getElementById('deeplinklticdiv').style.display='block';
666: } else {
667: frame.document.getElementById('deeplinklticdiv').style.display='none';
1.80 raeburn 668: }
1.86 raeburn 669: }
670: if (frame.document.getElementById('deeplinkltiddiv')) {
671: if (sform.deeplinkprotect[i].value == 'ltid') {
672: frame.document.getElementById('deeplinkltiddiv').style.display='block';
673: } else {
674: frame.document.getElementById('deeplinkltiddiv').style.display='none';
1.80 raeburn 675: }
676: }
677: break;
678: }
679: }
680: }
1.84 raeburn 681: if ((caller == 'menus') && (sform.deeplinkmenus.length)) {
682: var frame = window.frames["choices"];
683: for (var i=0; i<sform.deeplinkmenus.length; i++) {
684: if (sform.deeplinkmenus[i].checked) {
685: if (frame.document.getElementById('deeplinkmenusdiv')) {
686: if (sform.deeplinkmenus[i].value == 'collnum') {
687: frame.document.getElementById('deeplinkmenusdiv').style.display='inline-block';
688: } else {
689: frame.document.getElementById('deeplinkmenusdiv').style.display='none';
690: }
691: }
692: break;
693: }
694: }
695: }
1.90 raeburn 696: if ((caller == 'exit') && (sform.deeplinkexit.length)) {
697: var frame = window.frames["choices"];
698: for (var i=0; i<sform.deeplinkexit.length; i++) {
699: if (sform.deeplinkexit[i].checked) {
700: if (frame.document.getElementById('deeplinkexitdiv')) {
701: if (sform.deeplinkexit[i].value == 'no') {
702: frame.document.getElementById('deeplinkexitdiv').style.display='none';
703: sform.deeplinkexittext.value = '';
704: } else {
705: frame.document.getElementById('deeplinkexitdiv').style.display='inline-block';
706: if (sform.deeplinkexittext.value == '') {
707: sform.deeplinkexittext.value = 'Exit Tool';
708: }
709: frame.document.getElementById('deeplinkexitdiv').scrollIntoView();
710: }
711: }
712: break;
713: }
714: }
715: }
1.80 raeburn 716: }
717:
1.84 raeburn 718: function calldeeplink(caller) {
719: return 'onclick="parent.toggleDeepLink(\''+caller+'\')"';
1.80 raeburn 720: }
721:
1.6 www 722: function integereval() {
723: svalue=choices.document.forms.sch.intval.value;
724: svalue=Math.round(svalue);
725: if (pscat=='zeropos') { svalue=Math.abs(svalue); }
726: if ((pscat=='pos') && (svalue==0)) {
727: svalue='';
728: }
1.12 www 729: if (pscat.indexOf('inrange')!=-1) {
1.10 www 730: var rangeparts=new Array;
731: rangeparts=split('_',pscat);
1.12 www 732: rangeparts=split(',',rangeparts[1]);
1.10 www 733: if (svalue<rangeparts[0]) { svalue=rangeparts[0]; }
734: if (svalue>rangeparts[1]) { svalue=rangeparts[1]; }
735: }
1.6 www 736: draw();
737: }
738:
739: function floateval() {
740: svalue=choices.document.forms.sch.floatval.value;
741: svalue=1.0*svalue;
742: if (pscat=='pos') { svalue=Math.abs(svalue); }
743: if ((pscat=='zeroone') && ((svalue<0) || (svalue>1))) {
744: svalue='';
745: }
746: draw();
747: }
748:
749: function stringeval() {
750: svalue=choices.document.forms.sch.stringval.value;
751: draw();
752: }
753:
1.73 raeburn 754: function ipstringeval() {
755: var patternIp = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
756: var acctypes = new Array;
757: acctypes = ['allow','deny'];
758: svalue = '';
759: for (var i=0; i<acctypes.length; i++) {
760: var items = choices.document.getElementsByName('setip'+acctypes[i]);
1.74 raeburn 761: if (items.length > 0) {
1.73 raeburn 762: for (var j=0; j<items.length; j++) {
763: if (items[j].type == "text") {
1.79 raeburn 764: var possip = items[j].value;
1.73 raeburn 765: possip = possip.replace(/^\s+|\s+$/g,'');
766: if (patternIp.test(possip)) {
767: if (acctypes[i] == 'deny') {
768: possip = '!'+possip;
769: }
770: if (svalue == '') {
771: svalue = possip;
772: } else {
773: svalue += ','+possip;
774: }
775: }
776: }
777: }
778: }
779: }
780: }
781:
782: function addIpRule(iptype) {
783: var frame = window.frames["choices"];
784: if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
785: var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
786: var ipDiv = frame.document.createElement('div');
1.95 raeburn 787: ipDiv.innerHTML = '<input type="text" size="12" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+"\n"+
788: '<a href="#" onclick="parent.removeIpRule(this,\''+iptype+'\');return false;">Remove</a>';
789: innerDiv.appendChild(ipDiv);
1.73 raeburn 790: }
1.95 raeburn 791: return;
1.73 raeburn 792: }
793:
1.93 raeburn 794: function removeIpRule(caller,iptype) {
1.73 raeburn 795: var frame = window.frames["choices"];
796: if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
797: var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
1.93 raeburn 798: var divToRemove = caller.closest('div');
1.95 raeburn 799: if (divToRemove) {
800: innerDiv.removeChild(divToRemove);
801: ipstringeval();
802: }
1.73 raeburn 803: }
1.95 raeburn 804: return;
1.73 raeburn 805: }
806:
1.96 raeburn 807: function gracestringeval() {
808: var items = choices.document.getElementsByName('setgrace');
809: if (items.length) {
810: if (items.length > 0) {
811: svalue = '';
812: for (var i=0; i<items.length; i++) {
813: var graceDiv = items[i].closest('div');
814: var timeSels = graceDiv.getElementsByTagName("select");
815: var total = 0;
816: if (timeSels.length) {
817: for (var j=0; j<timeSels.length; j++) {
818: var sname = timeSels[j].getAttribute('name');
819: var poss = parseInt(timeSels[j].options[timeSels[j].selectedIndex].value);
1.97 raeburn 820: if (sname == 'weeks') {
821: if ((poss > 0) && (poss <= 52)) {
822: total += (poss * 604800);
823: }
824: } else if (sname == 'date') {
825: if ((poss > 0) && (poss < 7)) {
1.96 raeburn 826: total += (poss * 86400);
827: }
828: } else if (sname == 'hours') {
829: if ((poss > 0) && (poss < 24)) {
830: total += (poss * 3600);
831: }
832: } else if (sname == 'minutes') {
833: if ((poss > 0) && (poss < 60)) {
834: total += (poss * 60);
835: }
836: }
837: }
838: }
839: var inputElems = graceDiv.getElementsByTagName("input");
840: var frac = '';
841: var grad = '';
842: if (inputElems.length) {
843: for (var j=0; j<inputElems.length; j++) {
844: var iname = inputElems[j].getAttribute('name');
845: if (iname == 'frac') {
846: var ival = inputElems[j].value;
847: ival.trim();
848: var poss = parseFloat(ival);
849: if ((typeof poss === 'number') && (!isNaN(poss))) {
850: if ((poss => 0) && (poss <= 1)) {
851: frac = poss;
852: }
853: }
854: } else if (iname == 'grad') {
855: if (inputElems[j].checked) {
856: grad = 1;
857: } else {
858: grad = 0;
859: }
860: }
861: }
862: }
863: if (svalue === '') {
864: svalue = total+':'+frac+':'+grad;
865: } else {
866: svalue += ','+total+':'+frac+':'+grad;
867: }
868: }
869: }
870: }
871: }
872:
873: function graceitem(current) {
1.97 raeburn 874: var gweeks = 0;
1.96 raeburn 875: var gdays = 0;
876: var ghours = 0;
877: var gmins = 0;
878: var gsecs = 0;
879: var gfrac = '';
880: var checktext = '';
881: var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/;
882: if ((current != '') && (current != 'undefined') && (patternGrace.test(current))) {
883: var graceItems = new Array;
884: graceItems = current.split(':');
885: gsecs=graceItems[0];
1.97 raeburn 886: gweeks=Math.floor(gsecs/604800);
887: gsecs -= gweeks*604800;
1.96 raeburn 888: gdays=Math.floor(gsecs/86400);
889: gsecs -= gdays*86400;
890: ghours=Math.floor(gsecs/3600);
891: gsecs -= ghours*3600;
892: gmins=Math.floor(gsecs/60);
893: gsecs -= gmins*60;
894: gfrac = graceItems[1];
895: if (graceItems[2] == 1) {
896: checktext = ' checked="checked"';
897: }
898: }
899: return '<input type="hidden" name="setgrace" value="" />'+
900: '<fieldset class="LC_grace"><legend>Time past due</legend>'+
1.97 raeburn 901: '<span style="white-space:nowrap">'+intweek(gweeks)+' weeks </span>'+
902: '<span style="white-space:nowrap">'+intday(gdays)+' days </span><br />'+
903: '<span style="white-space:nowrap">'+inthour(ghours)+' hours </span>'+
904: '<span style="white-space:nowrap">'+intminute(gmins)+' mins </span>'+
1.96 raeburn 905: '</fieldset><fieldset class="LC_grace"><legend>Partial Credit</legend>'+
906: '<input type="text" size="3" name="frac" value="'+gfrac+'" onblur="parent.gracestringeval();" />'+
907: ' <label><input type="checkbox" value="1" name="grad"'+checktext+' onclick="parent.gracestringeval();" />'+
908: 'gradual</label></fieldset>'+
909: '<a href="#" onclick="parent.removeGrace(this);return false;">Remove</a><hr />';
910: }
911:
912: function addGrace() {
913: var frame = window.frames["choices"];
914: if (frame.document.getElementById('LC_string_grace_inner')) {
915: var innerDiv = frame.document.getElementById('LC_string_grace_inner');
916: var graceDiv = frame.document.createElement('div');
917: graceDiv.innerHTML = graceitem();
918: innerDiv.appendChild(graceDiv);
919: }
920: return;
921: }
922:
923: function removeGrace(caller) {
924: var frame = window.frames["choices"];
925: if (frame.document.getElementById('LC_string_grace_inner')) {
926: var innerDiv = frame.document.getElementById('LC_string_grace_inner');
927: var divToRemove = caller.closest('div');
928: if (divToRemove) {
929: innerDiv.removeChild(divToRemove);
930: gracestringeval();
931: }
932: }
933: return;
934: }
935:
1.25 www 936: function radiostringeval(newval) {
937: svalue=newval;
938: draw();
939: }
940:
1.29 www 941: function callradiostringeval(newval) {
1.67 raeburn 942: return 'onclick="parent.radiostringeval(\''+newval+'\')"';
1.29 www 943: }
944:
1.72 raeburn 945: function lenienteval(newval) {
946: if (newval == 'weighted') {
947: if (document.getElementById('lenientweighteddiv')) {
948: document.getElementById('lenientweighteddiv').style.display='block';
949: }
950: var patternRelWeight = /^\-?[\d.]+$/;
1.79 raeburn 951: var sform=choices.document.forms.sch;
1.88 raeburn 952: var relwtlength = sform.lenientrelwt.length;
953: if ((relwtlength != '') && (typeof(relwtlength) != 'undefined')) {
1.72 raeburn 954: for (var i=0; i<sform.lenientrelwt.length; i++) {
955: var relweight = sform.lenientrelwt[i].value;
956: relweight = relweight.replace(/^\s+|\s+$/g,'');
957: if (!patternRelWeight.test(relweight)) {
958: if (i<2) {
959: relweight = '1.0';
960: } else {
961: relweight = '0.0';
962: }
963: }
964: sform.lenientrelwt[i].value = relweight;
965: if (i==0) {
966: svalue = relweight;
967: } else {
968: svalue += ','+relweight;
969: }
970: }
971: }
972: } else {
973: if (document.getElementById('lenientweighteddiv')) {
974: document.getElementById('lenientweighteddiv').style.display='none';
975: }
976: svalue=newval;
1.73 raeburn 977: }
1.72 raeburn 978: draw();
979: }
980:
981: function calllenientradioeval(newval) {
982: return 'onclick="parent.lenienteval(\''+newval+'\')"';
983: }
984:
1.68 raeburn 985: function callintervalpmodval() {
1.70 raeburn 986: return 'onclick="parent.intcalc();parent.toggleSecret()"';
1.79 raeburn 987: }
1.68 raeburn 988:
1.2 www 989: function intervaldis() {
990: csecs=svalue;
991: cdays=Math.floor(csecs/86400);
992: csecs-=cdays*86400;
993: chours=Math.floor(csecs/3600);
994: csecs-=chours*3600;
995: cmins=Math.floor(csecs/60);
996: csecs-=cmins*60;
1.69 musolffc 997: return cdays+' days '+chours+' hours '+cmins+' mins '+csecs+' secs';
1.2 www 998: }
1.21 www 999:
1000: function pickcolor(picked) {
1001: svalue=picked;
1002: draw();
1003: }
1004:
1005: function colorfield(ir,ig,ib) {
1006: var col=new Array;
1.23 www 1007: col=["00","11","22","44","66","88","AA","CC","DD","EE","FF"];
1.21 www 1008: var color='#'+col[ir]+col[ig]+col[ib];
1.23 www 1009: var selection="<font color='"+color+"'>X</font>";
1010: if (color==svalue) { selection="<font color='#"+col[10-ir]+col[10-ig]+col[10-ib]+"'>X</font>"; }
1.21 www 1011: choicewrite('<td bgcolor="'+color+'"><a href="javascript:parent.pickcolor('+"'"+
1012: color+"'"+')">'+selection+'</a></td>');
1.80 raeburn 1013: }
1.21 www 1014:
1.1 www 1015: function draw() {
1016: choicestart();
1.51 bisitz 1017: choicewrite('<form name="sch"');
1.6 www 1018: if (ptype=='int') {
1019: choicewrite(' action="javascript:integereval();"');
1020: }
1021: if (ptype=='float') {
1022: choicewrite(' action="javascript:floateval();"');
1023: }
1024: if (ptype=='string') {
1.73 raeburn 1025: if (pscat == 'ip') {
1026: choicewrite(' action="javascript:ipstringeval();"');
1.96 raeburn 1027: } else if (pscat == 'grace') {
1028: choicewrite(' action="javascript:gracestringeval();"');
1.73 raeburn 1029: } else {
1030: choicewrite(' action="javascript:stringeval();"');
1031: }
1.6 www 1032: }
1.62 raeburn 1033: if (ptype != 'int' && ptype != 'float' && ptype != 'string') {
1034: choicewrite(' action=""');
1035: }
1.6 www 1036: choicewrite('>');
1.1 www 1037: if (ptype=='tolerance') {
1.2 www 1038: // 0: pscat
1039: if (pscat=='default') {
1.1 www 1040: tablestart('Use default value or algorithm of resource');
1041: }
1.2 www 1042: if (pscat=='relative_sym') {
1.1 www 1043: // 2: percentage
1044: // 3: open
1045: tablestart('Percentage error, symmetric around value');
1046: valline('Percentage',2,3);
1.13 www 1047: if ((svalue!='') && (typeof(svalue)!="undefined")) {
1048: choices.document.forms.sch.val2.value=parseInt(svalue);
1049: if (svalue.indexOf('+')!=-1) {
1050: choices.document.forms.sch.val3.checked=true;
1051: }
1052: }
1.1 www 1053: }
1.2 www 1054: if (pscat=='relative') {
1.1 www 1055: // 2: left
1056: // 3: open
1057: // 4: right
1058: // 5: open
1059: tablestart('Percentage error, asymmetric around value');
1060: valline('Upper percentage',2,3);
1061: valline('Lower percentage',4,5);
1.17 matthew 1062: var range1=new Array;
1.13 www 1063: if ((svalue!='') && (typeof(svalue)!="undefined")) {
1.17 matthew 1064: range1=svalue.split(',');
1065: if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; }
1066: choices.document.forms.sch.val2.value=parseFloat(range1[0]);
1067: if (range1[0].indexOf('+')!=-1) {
1.13 www 1068: choices.document.forms.sch.val3.checked=true;
1069: }
1.17 matthew 1070: choices.document.forms.sch.val4.value=parseFloat(range1[1]);
1071: if (range1[1].indexOf('+')!=-1) {
1.13 www 1072: choices.document.forms.sch.val5.checked=true;
1073: }
1074: }
1.1 www 1075: }
1.2 www 1076: if (pscat=='absolute_sym') {
1.1 www 1077: tablestart('Absolute error, symmetric around value');
1078: valline('Value',2,3);
1.13 www 1079: if ((svalue!='') && (typeof(svalue)!="undefined")) {
1.15 www 1080: choices.document.forms.sch.val2.value=parseFloat(svalue);
1.13 www 1081: if (svalue.indexOf('+')!=-1) {
1082: choices.document.forms.sch.val3.checked=true;
1083: }
1084: }
1.1 www 1085: }
1.2 www 1086: if (pscat=='absolute') {
1.1 www 1087: tablestart('Absolute error, asymmetric around value');
1088: valline('Upper value',2,3);
1089: valline('Lower value',4,5);
1.17 matthew 1090: var range2=new Array;
1.13 www 1091: if ((svalue!='') && (typeof(svalue)!="undefined")) {
1092: range=svalue.split(',');
1.17 matthew 1093: if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; }
1094: choices.document.forms.sch.val2.value=parseFloat(range2[0]);
1095: if (range2[0].indexOf('+')!=-1) {
1.13 www 1096: choices.document.forms.sch.val3.checked=true;
1097: }
1.17 matthew 1098: choices.document.forms.sch.val4.value=parseFloat(range2[1]);
1099: if (range2[1].indexOf('+')!=-1) {
1.13 www 1100: choices.document.forms.sch.val5.checked=true;
1101: }
1102: }
1.1 www 1103: }
1104: }
1105:
1106: if (ptype=='date') {
1.2 www 1107: if (pscat=='default') {
1108: tablestart('Default value or none');
1109: choicewrite('</table>');
1110: } else {
1111: if (pscat=='start') {
1.24 www 1112: tablestart('Date and time');
1.2 www 1113: }
1114: if (pscat=='end') {
1.24 www 1115: tablestart('Date and time');
1.2 www 1116: }
1117: if (pscat=='interval') {
1.70 raeburn 1118: var proctorkeytype = 'hidden';
1.71 raeburn 1119: var donebuttontext = 'none';
1.70 raeburn 1120: if (pmodval == '_done_proctor') {
1121: proctorkeytype = 'text';
1.71 raeburn 1122: donebuttontext = 'block';
1123: }
1124: if (pmodval == '_done') {
1125: donebuttontext = 'block';
1.70 raeburn 1126: }
1.2 www 1127: tablestart('Time interval');
1.69 musolffc 1128: choicewrite( [
1129: '<tr><td colspan="3">'+intervaldis()+'</td></tr>',
1130: '<tr><td>Time:</td><td colspan="2">',
1131: '<span style="white-space:nowrap">'+intday()+' days </span>',
1132: '<span style="white-space:nowrap">'+inthour()+' hours</span>',
1133: '<span style="white-space:nowrap">'+intminute()+' mins</span>',
1134: '<span style="white-space:nowrap">'+intsecond()+' secs</span>',
1135: '</td></tr>',
1136: '</table>',
1137: '<br />',
1138: ].join("\n"));
1.68 raeburn 1139: tablestart('Provide a "Done" button to students?');
1140: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.70 raeburn 1141: choicewrite('<label><input name="donebutton" value=""'+
1142: ' type="radio" '+callintervalpmodval());
1143: if (pmodval == '') { choicewrite(' checked="checked"'); }
1144: choicewrite(' /> No</label><br />');
1.68 raeburn 1145: choicewrite('<label><input name="donebutton" value="_done"'+
1146: ' type="radio" '+callintervalpmodval());
1.70 raeburn 1147: if (pmodval == '_done') { choicewrite(' checked="checked"'); }
1.68 raeburn 1148: choicewrite(' /> Yes</label><br />');
1.70 raeburn 1149: choicewrite('<span style="white-space:nowrap">'+
1150: '<label><input name="donebutton" value="_done_proctor"'+
1.68 raeburn 1151: ' type="radio" '+callintervalpmodval());
1.70 raeburn 1152: if (pmodval == '_done_proctor') { choicewrite(' checked="checked"'); }
1153: choicewrite(' /> Yes, with proctor key</label>');
1154: choicewrite(' <input name="donebutton_proctorkey" value='+
1155: '"'+escapeHTML(pextraval)+'" type="'+proctorkeytype+
1.71 raeburn 1156: '" id="done_proctorkey" size="10"'+
1157: ' onblur="parent.intcalc();" /></span><br />'+
1158: '<div id="donebuttontextdiv" style="display:'+donebuttontext+'">'+
1159: '<br /><span style="white-space:nowrap">'+
1160: 'Button text:'+
1161: '<input name="donebutton_text" value='+
1162: '"'+escapeHTML(pextravaltwo)+'" type="text" '+
1163: 'size="10" onblur="parent.intcalc();" /></span></div>');
1.68 raeburn 1164: choicewrite('</td></tr></table>');
1165: } else {
1.52 bisitz 1166: choicewrite('<tr><td colspan="3">'
1.2 www 1167: +cdate.toString()+
1.52 bisitz 1168: '</td></tr><tr><td>Date:</td><td colspan="2">');
1.2 www 1169: month();date();year();
1.52 bisitz 1170: choicewrite('</td></tr><tr><td>Time:'
1.51 bisitz 1171: +'</td><td colspan="2">');hour();choicewrite('h ');minute();
1.2 www 1172: choicewrite('m ');second();
1173: choicewrite('s</td></tr></table>');
1174: }
1175: }
1.1 www 1176: }
1177:
1.6 www 1178: if (ptype=='int') {
1.19 www 1179: var pscatparts=new Array;
1180: pscatparts=pscat.split(',');
1181: pscat=pscatparts[0];
1.6 www 1182: if (pscat=='default') {
1183: tablestart('Default value or none');
1.14 www 1184: choicewrite('</table>');
1.6 www 1185: } else {
1.14 www 1186: if (pscat=='range') {
1187: tablestart('Integer range');
1.52 bisitz 1188: choicewrite('<tr><td>Lower Value:'+
1.51 bisitz 1189: '</td><td colspan="2"><input type="text" size="4" name="val2'+
1.53 bisitz 1190: '" /></td></tr>');
1.52 bisitz 1191: choicewrite('<tr><td>Upper Value:'+
1.51 bisitz 1192: '</td><td colspan="2"><input type="text" size="4" name="val4'+
1.53 bisitz 1193: '" /></td></tr></table>');
1.14 www 1194: var range=new Array;
1195: if ((svalue!='') && (typeof(svalue)!="undefined")) {
1196: range=svalue.split(',');
1197: if (typeof(range[1])=='undefined') { range[1]=range[0]; }
1198: choices.document.forms.sch.val2.value=parseInt(range[0]);
1199: choices.document.forms.sch.val4.value=parseInt(range[1]);
1200: }
1201: } else {
1.6 www 1202: if (pscat=='pos') {
1203: tablestart('Positive (non-zero) integer');
1204: }
1205: if (pscat=='zeropos') {
1206: tablestart('Positive integer or zero');
1207: }
1.12 www 1208: if (pscat.indexOf('inrange')!=-1) {
1.10 www 1209: var rangeparts=new Array;
1.12 www 1210: rangeparts=split(',',pscat);
1.10 www 1211: tablestart('Integer in the range ['+rangeparts[1]+']');
1212: }
1.6 www 1213: if (pscat=='any') {
1214: tablestart('Integer');
1215: }
1.52 bisitz 1216: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.51 bisitz 1217: choicewrite('<input name="intval" size="10" value="'+escapeHTML(svalue)+
1.53 bisitz 1218: '" onchange="parent.integereval()" />');
1.54 bisitz 1219: choicewrite('</td></tr></table>');
1.6 www 1220: }
1.14 www 1221: }
1.1 www 1222: }
1223:
1.6 www 1224: if (ptype=='float') {
1225: if (pscat=='default') {
1226: tablestart('Default value or none');
1.79 raeburn 1227: choicewrite('</table>');
1.6 www 1228: } else {
1229: if (pscat=='pos') {
1230: tablestart('Positive floating point number or zero');
1231: }
1232: if (pscat=='zeroone') {
1233: tablestart('Floating point number between zero and one');
1234: }
1235: if (pscat=='any') {
1236: tablestart('Floating point number');
1237: }
1.52 bisitz 1238: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.51 bisitz 1239: choicewrite('<input name="floatval" size="10" value="'+escapeHTML(svalue)+
1.53 bisitz 1240: '" onchange="parent.floateval()" />');
1.54 bisitz 1241: choicewrite('</td></tr></table>');
1.6 www 1242: }
1.1 www 1243: }
1244:
1.6 www 1245: if (ptype=='string') {
1.83 raeburn 1246: if ((pscat=='any') || (pscat=='') || (pscat=='default') ||
1.42 albertel 1247: (typeof(pscat)=='undefined')) {
1.6 www 1248: tablestart('Text');
1.54 bisitz 1249: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.46 albertel 1250: choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
1.53 bisitz 1251: '" type="text" onchange="parent.stringeval()" />');
1.25 www 1252: }
1253: if (pscat=='yesno') {
1254: tablestart('Yes/No');
1.52 bisitz 1255: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32 albertel 1256: choicewrite('<label><input name="stringval" value="yes"'+
1.29 www 1257: ' type="radio" '+callradiostringeval('yes'));
1.53 bisitz 1258: if (svalue=='yes') { choicewrite(' checked="checked"'); }
1259: choicewrite(' /> Yes</label><br />');
1.32 albertel 1260: choicewrite('<label><input name="stringval" value="no"'+
1.29 www 1261: ' type="radio" '+callradiostringeval('no'));
1.53 bisitz 1262: if (svalue=='no') { choicewrite(' checked="checked"'); }
1263: choicewrite(' /> No</label><br />');
1.25 www 1264: }
1.47 albertel 1265: if (pscat=='problemstatus') {
1266: tablestart('Problem Status');
1.52 bisitz 1267: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.47 albertel 1268: choicewrite('<label><input name="stringval" value="yes"'+
1269: ' type="radio" '+callradiostringeval('yes'));
1.53 bisitz 1270: if (svalue=='yes') { choicewrite(' checked="checked"'); }
1271: choicewrite(' /> Yes</label><br />');
1.49 albertel 1272: choicewrite('<label><input name="stringval" value="answer"'+
1273: ' type="radio" '+callradiostringeval('answer'));
1.53 bisitz 1274: if (svalue=='answer') { choicewrite(' checked="checked"'); }
1275: choicewrite(' /> Yes, and show correct answer if they exceed the maximum number of tries.</label><br />');
1.47 albertel 1276: choicewrite('<label><input name="stringval" value="no"'+
1277: ' type="radio" '+callradiostringeval('no'));
1.53 bisitz 1278: if (svalue=='no') { choicewrite(' checked="checked"'); }
1279: choicewrite(' /> No, don\'t show correct/incorrect feedback.</label><br />');
1.47 albertel 1280: choicewrite('<label><input name="stringval" value="no_feedback_ever"'+
1281: ' type="radio" '+callradiostringeval('no_feedback_ever'));
1.53 bisitz 1282: if (svalue=='no_feedback_ever') { choicewrite(' checked="checked"'); }
1283: choicewrite(' /> No, show no feedback at all.</label><br />');
1.47 albertel 1284: }
1.25 www 1285: if (pscat=='examtype') {
1286: tablestart('Exam Type');
1.52 bisitz 1287: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32 albertel 1288: choicewrite('<label><input name="stringval" value="online"'+
1.29 www 1289: ' type="radio" '+callradiostringeval('online'));
1.53 bisitz 1290: if (svalue=='online') { choicewrite(' checked="checked"'); }
1291: choicewrite(' /> Online</label><br />');
1.32 albertel 1292: choicewrite('<label><input name="stringval" value="checkout"'+
1.29 www 1293: ' type="radio" '+callradiostringeval('checkout'));
1.53 bisitz 1294: if (svalue=='checkout') { choicewrite(' checked="checked"'); }
1295: choicewrite(' /> Check out</label><br />');
1.25 www 1296: }
1297: if (pscat=='questiontype') {
1298: tablestart('Question Type');
1.52 bisitz 1299: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32 albertel 1300: choicewrite('<label><input name="stringval" value="problem"'+
1.29 www 1301: ' type="radio" '+callradiostringeval('problem'));
1.53 bisitz 1302: if (svalue=='problem') { choicewrite(' checked="checked"'); }
1303: choicewrite(' /> Standard Problem</label><br />');
1.36 albertel 1304: // choicewrite('<label><input name="stringval" value="quiz"'+
1305: // ' type="radio" '+callradiostringeval('quiz'));
1.53 bisitz 1306: // if (svalue=='quiz') { choicewrite(' checked="checked"'); }
1307: // choicewrite(' /> Quiz</label><br />');
1.35 albertel 1308: choicewrite('<label><input name="stringval" value="practice"'+
1309: ' type="radio" '+callradiostringeval('practice'));
1.53 bisitz 1310: if (svalue=='practice') { choicewrite(' checked="checked"'); }
1311: choicewrite(' /> Practice</label><br />');
1.32 albertel 1312: choicewrite('<label><input name="stringval" value="exam"'+
1.29 www 1313: ' type="radio" '+callradiostringeval('exam'));
1.53 bisitz 1314: if (svalue=='exam') { choicewrite(' checked="checked"'); }
1.65 bisitz 1315: choicewrite(' /> Bubblesheet Exam</label><br />');
1.36 albertel 1316: // choicewrite('<label><input name="stringval" value="assess"'+
1317: // ' type="radio" '+callradiostringeval('assess'));
1.53 bisitz 1318: // if (svalue=='assess') { choicewrite(' checked="checked"'); }
1319: // choicewrite(' /> Assessment</label><br />');
1.32 albertel 1320: choicewrite('<label><input name="stringval" value="survey"'+
1.29 www 1321: ' type="radio" '+callradiostringeval('survey'));
1.53 bisitz 1322: if (svalue=='survey') { choicewrite(' checked="checked"'); }
1323: choicewrite(' /> Survey</label><br />');
1.36 albertel 1324: // choicewrite('<label><input name="stringval" value="form"'+
1325: // ' type="radio" '+callradiostringeval('form'));
1.53 bisitz 1326: // if (svalue=='form') { choicewrite(' checked="checked"'); }
1.36 albertel 1327: // choicewrite('> Input Form</label><br />');
1.57 raeburn 1328: choicewrite('<label><input name="stringval" value="surveycred"'+
1329: ' type="radio" '+callradiostringeval('surveycred'));
1330: if (svalue=='surveycred') { choicewrite(' checked="checked"'); }
1331: choicewrite('> Survey (credit for submission)</label><br />');
1332: choicewrite('<label><input name="stringval" value="anonsurvey"'+
1333: ' type="radio" '+callradiostringeval('anonsurvey'));
1334: if (svalue=='anonsurvey') { choicewrite(' checked="checked"'); }
1335: choicewrite('> Anonymous Survey</label><br />');
1336: choicewrite('<label><input name="stringval" value="anonsurveycred"'+
1337: ' type="radio" '+callradiostringeval('anonsurveycred'));
1338: if (svalue=='anonsurveycred') { choicewrite(' checked="checked"'); }
1339: choicewrite('> Anonymous Survey (credit for submission)</label><br />');
1.59 raeburn 1340: choicewrite('<label><input name="stringval" value="randomizetry"'+
1341: ' type="radio" '+callradiostringeval('randomizetry'));
1342: if (svalue=='randomizetry') { choicewrite(' checked="checked"'); }
1343: choicewrite('> New Randomization Each N Tries (default N=1)</label><br />');
1.32 albertel 1344: choicewrite('<label><input name="stringval" value="library"'+
1.29 www 1345: ' type="radio" '+callradiostringeval('library'));
1.53 bisitz 1346: if (svalue=='library') { choicewrite(' checked="checked"'); }
1347: choicewrite(' /> Library</label><br />');
1.25 www 1348: }
1.60 raeburn 1349: if (pscat=='lenient') {
1.72 raeburn 1350: var patternLenientStd = /^(yes|no|default)$/;
1351: var patternLenientRel = /^([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)$/;
1352: var lenientweighted = 'none';
1353: var relatives = new Array;
1.60 raeburn 1354: tablestart('Lenient Grading (Partial Credit)');
1355: choicewrite('<tr><td>Value:</td><td colspan="2">');
1356: choicewrite('<label><input name="stringval" value="yes"'+
1.72 raeburn 1357: ' type="radio" '+calllenientradioeval('yes'));
1.60 raeburn 1358: if (svalue=='yes') { choicewrite(' checked="checked"'); }
1359: choicewrite(' /> Yes</label><br />');
1360: choicewrite('<label><input name="stringval" value="no"'+
1.72 raeburn 1361: ' type="radio" '+calllenientradioeval('no'));
1.60 raeburn 1362: if (svalue=='no') { choicewrite(' checked="checked"'); }
1363: choicewrite(' /> No</label><br />');
1364: choicewrite('<label><input name="stringval" value="default"'+
1.72 raeburn 1365: ' type="radio" '+calllenientradioeval('default'));
1.60 raeburn 1366: if (svalue=='default') { choicewrite(' checked="checked"'); }
1367: choicewrite(' /> Default (only bubblesheet grading is lenient)</label><br />');
1.72 raeburn 1368: choicewrite('<label><input name="stringval" value="weighted"'+
1369: ' type="radio" '+calllenientradioeval('weighted'));
1370: if (!patternLenientStd.test(svalue) && svalue != '') {
1371: choicewrite(' checked="checked"');
1372: lenientweighted='block';
1373: var relatives = svalue.match(patternLenientRel);
1374: }
1375: choicewrite(' />Yes, weighted (optionresponse in checkbox mode)</label><br /><br />'+
1376: '<div id="lenientweighteddiv" style="display:'+lenientweighted+'">'+
1377: '<table class="LC_parmsel_table"><tr bgcolor="#C5DB99">'+
1378: '<th colspan="2">Foil submission status</th><th>Points</th></tr>');
1379: var lenienttypes = ['Correct (checked)','Correct (unchecked)','Incorrect (checked)','Incorrect (unchecked)'];
1380: for (var i=0; i<lenienttypes.length; i++) {
1381: var j = i+1;
1382: if (relatives[j] == '') {
1383: if (i < 2) {
1384: relatives[j] = '1.0';
1385: } else {
1386: relatives[j] = '0.0';
1387: }
1388: }
1389: choicewrite('<tr><td colspan="2">'+lenienttypes[i]+'</td>'+
1390: '<td><input type="text" name="lenientrelwt" value="'+relatives[j]+'"'+
1391: ' size="3" onblur="parent.lenienteval(\'weighted\')" /></td></tr>');
1392: }
1393: choicewrite('</table></div>');
1.60 raeburn 1394: }
1.64 raeburn 1395: if (pscat=='discussvote') {
1396: tablestart('Discussion Voting');
1397: choicewrite('<tr><td>Value:</td><td colspan="2">');
1398: choicewrite('<label><input name="stringval" value="yes"'+
1399: ' type="radio" '+callradiostringeval('yes'));
1400: if (svalue=='yes') { choicewrite(' checked="checked"'); }
1401: choicewrite(' /> Yes</label><br />');
1402: choicewrite('<label><input name="stringval" value="notended"'+
1403: ' type="radio" '+callradiostringeval('notended'));
1404: if (svalue=='notended') { choicewrite(' checked="checked"'); }
1405: choicewrite(' /> Yes, unless discussion ended</label><br />');
1406: choicewrite('<label><input name="stringval" value="no"'+
1407: ' type="radio" '+callradiostringeval('no'));
1408: if (svalue=='no') { choicewrite(' checked="checked"'); }
1409: choicewrite(' /> No</label><br />');
1410: }
1.91 raeburn 1411: if (pscat=='tex') {
1412: tablestart('TeX file display');
1413: choicewrite('<tr><td>Value:</td><td colspan="2">');
1414: choicewrite('<label><input name="stringval" value="tth"'+
1415: ' type="radio" '+callradiostringeval('tth'));
1416: if (svalue=='tth') { choicewrite(' checked="checked"'); }
1417: choicewrite(' /> tth (TeX to HTML)</label><br />');
1418: choicewrite('<label><input name="stringval" value="mathjax"'+
1419: ' type="radio" '+callradiostringeval('mathjax'));
1420: if (svalue=='mathjax') { choicewrite(' checked="checked"'); }
1421: choicewrite(' /> MathJax</label><br />');
1422: }
1.25 www 1423: if (pscat=='ip') {
1.83 raeburn 1424: var currallow = new Array;
1.73 raeburn 1425: var currdeny = new Array;
1.88 raeburn 1426: if ((svalue != '') && (typeof(svalue) != 'undefined')) {
1.73 raeburn 1427: var patternComma = /,/;
1428: var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
1429: var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/;
1430: var current = new Array;
1.83 raeburn 1431: if (patternComma.test(svalue)) {
1.73 raeburn 1432: current = svalue.split(',');
1433: } else {
1.81 raeburn 1434: current = [svalue];
1.73 raeburn 1435: }
1436: for (var i=0; i<current.length; i++) {
1437: if (patternDeny.test(current[i])) {
1438: var denied = current[i].replace(/^!/,'');
1439: currdeny.push(denied);
1440: } else {
1441: if (patternAllow.test(current[i])) {
1442: currallow.push(current[i]);
1.83 raeburn 1443: }
1.73 raeburn 1444: }
1445: }
1446: }
1447: if (currdeny.length == 0) {
1448: currdeny = ('');
1449: }
1450: if (currallow.length == 0) {
1451: currallow = ('');
1452: }
1453: var curripaccess = [currallow,currdeny];
1454: tablestart('IP Number/Name');
1.95 raeburn 1455: choicewrite('<tr><th>Allow from</th><th>Deny from</th></tr><tr>'+"\n");
1.73 raeburn 1456: var acctypes = ['allow','deny'];
1457: for (var i=0; i<acctypes.length; i++) {
1.95 raeburn 1458: choicewrite(['<td valign="top">',
1459: '<div>',
1460: '<div id="LC_string_ipacc_inner_'+acctypes[i]+'">'].join("\n"));
1.73 raeburn 1461: for (var j=0; j<curripaccess[i].length; j++) {
1.95 raeburn 1462: choicewrite(['<div><input type="text" size="12" name="setip'+acctypes[i]+'" value="'+curripaccess[i][j]+'" onblur="parent.ipstringeval();" />',
1463: '<a href="#" onclick="parent.removeIpRule(this,\''+acctypes[i]+'\');return false;">Remove</a>',
1464: '</div>'].join("\n"));
1.73 raeburn 1465: }
1.95 raeburn 1466: choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');return false;">Add item</button>'+"\n");
1.73 raeburn 1467: }
1.95 raeburn 1468: choicewrite('</div></td></tr></table>'+"\n");
1.6 www 1469: }
1.26 www 1470: if (pscat=='fileext') {
1471: tablestart('Allowed File Extensions');
1.52 bisitz 1472: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32 albertel 1473: choicewrite('<label><input name="radstringval" value="txt"'+
1.29 www 1474: ' type="radio" '+callradiostringeval('txt'));
1.53 bisitz 1475: if (svalue=='txt') { choicewrite(' checked="checked"'); }
1476: choicewrite(' /> Plain Text</label><br />');
1.32 albertel 1477: choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+
1.29 www 1478: ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
1.53 bisitz 1479: if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }
1480: choicewrite(' /> Picture File</label><br />');
1.58 raeburn 1481: choicewrite('<label><input name="radstringval" value="doc,docx,xls,xlsx,ppt,pptx"'+
1482: ' type="radio" '+callradiostringeval('doc,docx,xls,xlsx,ppt,pptx'));
1483: if (svalue=='doc,docx,xls,xlsx,ppt,pptx') { choicewrite(' checked="checked"'); }
1.53 bisitz 1484: if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }
1485: choicewrite(' /> Office Document</label><br />');
1.46 albertel 1486: choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
1.53 bisitz 1487: '" onchange="parent.stringeval()" />');
1.26 www 1488: }
1.37 albertel 1489: if (pscat=='useslots') {
1490: tablestart('Slots control access');
1.52 bisitz 1491: choicewrite('<tr><td>Value:</td><td colspan="2">');
1.37 albertel 1492: choicewrite('<label><input name="stringval" value="no"'+
1493: ' type="radio" '+callradiostringeval('no'));
1.53 bisitz 1494: if (svalue=='no') { choicewrite(' checked="checked"'); }
1495: choicewrite(' /> No</label><br />');
1.37 albertel 1496: choicewrite('<label><input name="stringval" value="resource"'+
1497: ' type="radio" '+callradiostringeval('resource'));
1.53 bisitz 1498: if (svalue=='resource') { choicewrite(' checked="checked"'); }
1.82 raeburn 1499: choicewrite(' /> Yes, and the scope of the slot is a single resource.</label><br />');
1.38 albertel 1500: choicewrite('<label><input name="stringval" value="map"'+
1501: ' type="radio" '+callradiostringeval('map'));
1.53 bisitz 1502: if (svalue=='map') { choicewrite(' checked="checked"'); }
1.82 raeburn 1503: choicewrite(' /> Yes, and the scope of the slot is the enclosing map/folder. When checking in, it applies to only one resource.</label><br />');
1.39 albertel 1504: choicewrite('<label><input name="stringval" value="map_map"'+
1.40 albertel 1505: ' type="radio" '+callradiostringeval('map_map'));
1.53 bisitz 1506: if (svalue=='map_map') { choicewrite(' checked="checked"'); }
1.82 raeburn 1507: 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.</label><br />');
1.79 raeburn 1508: choicewrite('</td></tr></table>');
1.80 raeburn 1509: }
1510: if (pscat=='deeplink') {
1511: var deeplinkvals = new Array();
1.86 raeburn 1512: var linkprotectparts = new Array();
1.89 raeburn 1513: var ltikeyRegExp = /^(ltic:\d+|ltid:\d+|key:[a-zA-Z\d_.!@#$%^&*()+=-]+)$/;
1.90 raeburn 1514: var linkexitparts = new Array();
1515: var dlinkexitRegExp = /^(yes|url|no)(|:[^:,;'"]+)$/;
1.80 raeburn 1516: var dlinkkeysty = 'hidden';
1.84 raeburn 1517: var dlinkkeyval = '';
1.86 raeburn 1518: var dlinklticdivsty = 'none';
1519: var dlinkltiddivsty = 'none';
1.84 raeburn 1520: var dlinkmenusdivsty = 'none';
1.90 raeburn 1521: var dlinkexitdivsty = 'none';
1522: var dlinkexittextval = '';
1.88 raeburn 1523: if ((svalue != '') && (typeof(svalue) != 'undefined')) {
1.80 raeburn 1524: deeplinkvals = svalue.split(',');
1.86 raeburn 1525: if (ltikeyRegExp.test(deeplinkvals[4])) {
1526: linkprotectparts = deeplinkvals[4].split(':');
1527: deeplinkvals[4] = linkprotectparts[0];
1528: if (linkprotectparts[0] == 'key') {
1.80 raeburn 1529: dlinkkeysty = 'text';
1.86 raeburn 1530: dlinkkeyval = linkprotectparts[1];
1531: } else if (linkprotectparts[0] == 'ltic') {
1532: dlinklticdivsty = 'block';
1533: } else if (linkprotectparts[0] == 'ltid') {
1534: dlinkltiddivsty = 'block';
1.80 raeburn 1535: }
1536: }
1.86 raeburn 1537: if (deeplinkvals[5] >= 1) {
1.84 raeburn 1538: dlinkmenusdivsty = 'inline-block';
1539: }
1.90 raeburn 1540: if (dlinkexitRegExp.test(deeplinkvals[7])) {
1541: linkexitparts = deeplinkvals[7].split(':');
1542: deeplinkvals[7] = linkexitparts[0];
1543: if (deeplinkvals[7] != 'no') {
1544: dlinkexitdivsty = 'inline-block';
1545: if (!linkexitparts[1]) {
1546: dlinkexittextval = 'Exit Tool';
1547: } else {
1548: dlinkexittextval = linkexitparts[1];
1549: }
1550: }
1551: }
1.80 raeburn 1552: } else {
1.90 raeburn 1553: deeplinkvals = ['off','unhide','full','res','','0','_self','no'];
1.80 raeburn 1554: }
1.86 raeburn 1555: var deeplinkstate = new Array();
1556: deeplinkstate = ['only','off','both'];
1557: var deeplinkstatetxt = new Array();
1558: deeplinkstatetxt = ['deep only','deeplink off','regular + deep'];
1559: var deeplinkothers = new Array();
1560: deeplinkothers = ['hide','unhide'];
1561: var deeplinkotherstxt = new Array();
1562: deeplinkotherstxt = ['Hidden','Unhidden'];
1.80 raeburn 1563: var deeplinklisting = new Array();
1564: deeplinklisting = ['full','absent','grades','details','datestatus'];
1565: var deeplinklisttxt = new Array();
1566: deeplinklisttxt = ['Listed (linked) in both','Not listed','Listed in grades only','Listed (unlinked) in both','Listed (unlinked) inc. status in both'];
1567: var deeplinkscopes = new Array();
1568: deeplinkscopes = ['res','map','rec'];
1569: var deeplinkscopetxt = new Array();
1570: deeplinkscopetxt = ['resource only','enclosing map/folder','recursive map/folder'];
1.86 raeburn 1571: var deeplinkprotect = new Array();
1572: deeplinkprotect = ['none','key','ltic','ltid'];
1.87 raeburn 1573: var deeplinktarget = new Array();
1574: deeplinktarget = ['_self','_top'];
1575: var deeplinktargettxt = new Array();
1576: deeplinktargettxt = ['Embedded','Not embedded'];
1.90 raeburn 1577: var deeplinkexit = ['yes','url','no'];
1.78 raeburn 1578: tablestart('Deep-linked items');
1.86 raeburn 1579: choicewrite('<tr><td>Access status?</td><td>');
1580: choicewrite('<select name="deeplinkstate">');
1581: for (var i=0; i<deeplinkstate.length; i++) {
1582: choicewrite('<option value="'+deeplinkstate[i]+'"');
1583: if (deeplinkvals[0] == deeplinkstate[i]) {
1584: choicewrite(' selected="selected"');
1585: }
1586: choicewrite('>'+deeplinkstatetxt[i]+'</option>');
1587: }
1588: choicewrite('</select></td></tr>');
1589: choicewrite('<tr><td>Hide other resources?</td><td>');
1590: choicewrite('<select name="deeplinkothers">');
1591: for (var i=0; i<deeplinkothers.length; i++) {
1592: choicewrite('<option value="'+deeplinkothers[i]+'"');
1593: if (deeplinkvals[1] == deeplinkothers[i]) {
1594: choicewrite(' selected="selected"');
1595: }
1596: choicewrite('>'+deeplinkotherstxt[i]+'</option>');
1597: }
1598: choicewrite('</select></td></tr>');
1.84 raeburn 1599: choicewrite('<tr><td>In Contents + Gradebook?</td><td>');
1.80 raeburn 1600: choicewrite('<select name="deeplinklisted">');
1601: for (var i=0; i<deeplinklisting.length; i++) {
1602: choicewrite('<option value="'+deeplinklisting[i]+'"');
1.86 raeburn 1603: if (deeplinkvals[2] == deeplinklisting[i]) {
1.80 raeburn 1604: choicewrite(' selected="selected"');
1605: }
1606: choicewrite('>'+deeplinklisttxt[i]+'</option>');
1607: }
1608: choicewrite('</select></td></tr>');
1.86 raeburn 1609: choicewrite('<tr><td>Access scope for link</td><td>');
1.80 raeburn 1610: choicewrite('<select name="deeplinkacc">');
1611: for (var i=0; i<deeplinkscopes.length; i++) {
1612: choicewrite('<option value="'+deeplinkscopes[i]+'"');
1.86 raeburn 1613: if (deeplinkvals[3] == deeplinkscopes[i]) {
1.80 raeburn 1614: choicewrite(' selected="selected"');
1615: }
1616: choicewrite('>'+deeplinkscopetxt[i]+'</option>');
1617: }
1618: choicewrite('</select></td></tr>');
1.86 raeburn 1619: choicewrite('<tr><td>Link protection</td><td>');
1.80 raeburn 1620: choicewrite('<span style="white-space: nowrap;"><label>');
1.86 raeburn 1621: choicewrite('<input name="deeplinkprotect" value="none"'+
1622: ' type="radio" '+calldeeplink('protect'));
1623: if (deeplinkvals[4]=='none') { choicewrite(' checked="checked"'); }
1624: choicewrite(' /> not in use</label>');
1625: choicewrite('<input name="deeplinkprotect" value="key"'+
1626: ' type="radio" '+calldeeplink('protect'));
1627: if (deeplinkvals[4]=='key') { choicewrite(' checked="checked"'); }
1628: choicewrite(' /> key access</label>');
1.84 raeburn 1629: choicewrite('<input type="'+dlinkkeysty+'" name="deeplinkkey" id="deeplinkkey" value="'+dlinkkeyval+'" size="10" />');
1.80 raeburn 1630: choicewrite('</span><br />');
1.84 raeburn 1631:
1632: var possmenus = new Array();
1.88 raeburn 1633: if ((pextra != '') && (typeof(pextra) != 'undefined')) {
1.86 raeburn 1634: var lticRegExp = /^ltic_/;
1635: var ltidRegExp = /^ltid_/;
1.84 raeburn 1636: var menusRegExp = /^menus_/;
1637: var extras = pextra.split('&');
1638: for (var i=0; i<extras.length; i++) {
1.86 raeburn 1639: if (lticRegExp.test(extras[i])) {
1640: extras[i] = extras[i].replace(lticRegExp,'');
1641: var possltic = extras[i].split(',');
1642: if (possltic.length >= 1) {
1643: var lticnums = new Array();
1644: var ltictitles = new Array();
1645: for (var j=0; j<possltic.length; j++) {
1646: var entries = possltic[j].split(':');
1647: lticnums[j] = entries[0];
1648: ltictitles[j] = decodeURIComponent(entries[1]);
1.80 raeburn 1649: }
1.86 raeburn 1650: if (lticnums.length) {
1.84 raeburn 1651: choicewrite('<span style="white-space: nowrap;"><label>');
1.86 raeburn 1652: choicewrite('<input name="deeplinkprotect" value="ltic"'+
1653: ' type="radio" '+calldeeplink('protect'));
1654: if (deeplinkvals[4]=='ltic') { choicewrite(' checked="checked"'); }
1655: choicewrite(' /> course LTI launch</label>');
1656: choicewrite('<div id="deeplinklticdiv" style="display:'+dlinklticdivsty+'">');
1657: choicewrite('<select name="linkpossltic">');
1.84 raeburn 1658: var sel='';
1.86 raeburn 1659: if (deeplinkvals[4]!='ltic') {
1.84 raeburn 1660: sel = ' selected="selected"';
1661: }
1.86 raeburn 1662: if (lticnums.length > 1) {
1.84 raeburn 1663: choicewrite('<option value=""'+sel+'>Select</option>');
1664: }
1.86 raeburn 1665: for (var j=0; j<lticnums.length; j++) {
1.84 raeburn 1666: sel = '';
1.86 raeburn 1667: if (deeplinkvals[4]=='ltic') {
1668: if (linkprotectparts.length) {
1669: if (lticnums[j] == linkprotectparts[1]) {
1.84 raeburn 1670: sel = ' selected="selected"';
1671: }
1.80 raeburn 1672: }
1673: }
1.86 raeburn 1674: choicewrite('<option value="'+lticnums[j]+'"'+sel+'>'+ltictitles[j]+'</option>');
1.80 raeburn 1675: }
1.84 raeburn 1676: choicewrite('</select></div></span><br />');
1.80 raeburn 1677: }
1678: }
1.86 raeburn 1679: } else if (ltidRegExp.test(extras[i])) {
1680: extras[i] = extras[i].replace(ltidRegExp,'');
1681: var possltid = extras[i].split(',');
1682: if (possltid.length >= 1) {
1683: var ltidnums = new Array();
1684: var ltidtitles = new Array();
1685: for (var j=0; j<possltid.length; j++) {
1686: var entries = possltid[j].split(':');
1687: ltidnums[j] = entries[0];
1688: ltidtitles[j] = decodeURIComponent(entries[1]);
1689: }
1690: if (ltidnums.length) {
1691: choicewrite('<span style="white-space: nowrap;"><label>');
1692: choicewrite('<input name="deeplinkprotect" value="ltid"'+
1693: ' type="radio" '+calldeeplink('protect'));
1694: if (deeplinkvals[4]=='ltid') { choicewrite(' checked="checked"'); }
1695: choicewrite(' />domain LTI launch</label>');
1696: choicewrite('<div id="deeplinkltiddiv" style="display:'+dlinkltiddivsty+'">');
1697: choicewrite('<select name="linkpossltid">');
1698: var sel='';
1699: if (deeplinkvals[4]!='ltid') {
1700: sel = ' selected="selected"';
1701: }
1702: if (ltidnums.length > 1) {
1703: choicewrite('<option value=""'+sel+'>Select</option>');
1704: }
1705: for (var j=0; j<ltidnums.length; j++) {
1706: sel = '';
1707: if (deeplinkvals[4]=='ltid') {
1708: if (linkprotectparts.length) {
1709: if (ltidnums[j] == linkprotectparts[1]) {
1710: sel = ' selected="selected"';
1711: }
1712: }
1713: }
1714: choicewrite('<option value="'+ltidnums[j]+'"'+sel+'>'+ltidtitles[j]+'</option>');
1715: }
1716: choicewrite('</select></div></span><br />');
1717: }
1718: }
1719:
1.84 raeburn 1720: } else if (menusRegExp.test(extras[i])) {
1721: extras[i] = extras[i].replace(menusRegExp,'');
1722: possmenus = extras[i].split(',');
1.80 raeburn 1723: }
1724: }
1725: }
1.84 raeburn 1726: choicewrite('<tr><td>Menu Items Displayed</td><td>');
1727: choicewrite('<span style="white-space: nowrap;"><label>');
1728: choicewrite('<input name="deeplinkmenus" value="std"'+
1729: ' type="radio" '+calldeeplink('menus'));
1.86 raeburn 1730: if (deeplinkvals[5] == 0) {
1.84 raeburn 1731: choicewrite(' checked="checked"');
1732: }
1733: choicewrite(' /> Standard (all menus)</label></span><br />');
1734: if (possmenus.length >= 1) {
1735: choicewrite('<span style="white-space: nowrap;"><label>');
1736: choicewrite('<input name="deeplinkmenus" value="collnum"'+
1737: ' type="radio" '+calldeeplink('menus'));
1.86 raeburn 1738: if (deeplinkvals[5] > 0) { choicewrite(' checked="checked"'); }
1.84 raeburn 1739: choicewrite(' /> Numbered collection</label>');
1740: choicewrite('<div id="deeplinkmenusdiv" style="display:'+dlinkmenusdivsty+'">');
1741: choicewrite('<select name="linkpossmenu">');
1742: var sel='';
1.86 raeburn 1743: if (deeplinkvals[5] == 0) {
1.84 raeburn 1744: sel = ' selected="selected"';
1745: }
1746: if (possmenus.length > 1) {
1747: choicewrite('<option value=""'+sel+'>Select</option>');
1748: }
1749: for (var i=0; i<possmenus.length; i++) {
1750: sel = '';
1.86 raeburn 1751: if (deeplinkvals[5] == possmenus[i]) {
1.84 raeburn 1752: sel = ' selected="selected"';
1753: }
1754: choicewrite('<option value="'+possmenus[i]+'"'+sel+'>'+possmenus[i]+'</option>');
1755: }
1756: choicewrite('</select></div></span><br />');
1757: }
1.87 raeburn 1758: choicewrite('</td></tr>');
1759: choicewrite('<tr><td>Embedded?</td><td>');
1760: choicewrite('<select name="deeplinktarget">');
1761: for (var i=0; i<deeplinktarget.length; i++) {
1762: choicewrite('<option value="'+deeplinktarget[i]+'"');
1763: if (deeplinkvals[6] == deeplinktarget[i]) {
1764: choicewrite(' selected="selected"');
1765: }
1766: choicewrite('>'+deeplinktargettxt[i]+'</option>');
1767: }
1768: choicewrite('</select>');
1.90 raeburn 1769: choicewrite('</td></tr>');
1770: choicewrite('<tr><td>Exit Button?</td><td>');
1771: choicewrite('<span style="white-space: nowrap;"><label>');
1772: choicewrite('<input name="deeplinkexit" value="no"'+
1773: ' type="radio" '+calldeeplink('exit'));
1774: if (deeplinkvals[7]=='no') { choicewrite(' checked="checked"'); }
1775: choicewrite(' />not in use</label></span><br />');
1776: choicewrite('<span style="white-space: nowrap;"><label>');
1777: choicewrite('<input name="deeplinkexit" value="yes"'+
1778: ' type="radio" '+calldeeplink('exit'));
1779: if (deeplinkvals[7]=='yes') { choicewrite(' checked="checked"'); }
1780: choicewrite(' />in use, no redirect</label></span> ');
1781: choicewrite('<span style="white-space: nowrap;"><label>');
1782: choicewrite('<input name="deeplinkexit" value="url"'+
1783: ' type="radio" '+calldeeplink('exit'));
1784: if (deeplinkvals[7]=='url') { choicewrite(' checked="checked"'); }
1785: choicewrite(' />in use, redirect to URL</label></span><br />');
1786: choicewrite('<div id="deeplinkexitdiv" style="display:'+dlinkexitdivsty+'">');
1787: choicewrite('<br /><span style="white-space: nowrap;">Button text: ');
1788: choicewrite('<input type="text" name="deeplinkexittext" id="deeplinkexittext" value="'+dlinkexittextval+'" size="10" />');
1789: choicewrite('</span></div>');
1.78 raeburn 1790: choicewrite('</td></tr></table>');
1.80 raeburn 1791: }
1.96 raeburn 1792: if (pscat=='grace') {
1793: tablestart('Grace period after due date');
1794: choicewrite('<tr><td colspan="3" valign="top">'+
1795: '<div id="LC_string_grace_wrap">'+
1796: '<div id="LC_string_grace_inner">');
1797: if ((svalue != '') && (typeof(svalue) != 'undefined')) {
1798: var patternComma = /,/;
1799: var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/;
1800: var current = new Array;
1801: if (patternComma.test(svalue)) {
1802: current = svalue.split(',');
1803: } else {
1804: current = [svalue];
1805: }
1806: for (var i=0; i<current.length; i++) {
1807: if (patternGrace.test(current[i])) {
1808: choicewrite('<div>');
1809: choicewrite(graceitem(current[i]));
1810: choicewrite('</div>');
1811: }
1812: }
1813: } else {
1814: choicewrite('<div>');
1815: choicewrite(graceitem());
1816: choicewrite('</div>');
1817: }
1818: choicewrite('</div><button onclick="parent.addGrace();return false;">Add another?</button>');
1819: choicewrite('</div></td></tr></table>');
1820: }
1.21 www 1821: }
1.79 raeburn 1822:
1.21 www 1823: if (ptype=='color') {
1824: tablestart('Choose a Color');
1825: choicewrite('<table>');
1826: if (svalue) {
1.23 www 1827: choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
1.46 albertel 1828: escapeHTML(svalue)+'" colspan="2"> </td></tr>');
1.21 www 1829: }
1.23 www 1830: for (var ir=0; ir<=10; ir++) {
1831: for (var ig=0; ig<=10; ig++) {
1.21 www 1832: choicewrite('<tr>');
1.23 www 1833: for (var ib=0; ib<=10; ib++) {
1.21 www 1834: colorfield(ir,ig,ib);
1835: }
1836: choicewrite('</tr>');
1.79 raeburn 1837: }
1.21 www 1838: }
1839: choicewrite('</table></td></table>');
1.1 www 1840: }
1841:
1.40 albertel 1842: choicewrite('</form>');
1.1 www 1843: choiceend();
1844: }
1845:
1846: function sopt(va,text) {
1847: selwrite('<option value="'+va+'"');
1.2 www 1848: if (va==pscat) {
1.54 bisitz 1849: selwrite(' selected="selected"');
1.1 www 1850: }
1851: selwrite('>'+text+'</option>');
1852: }
1853:
1854: function catchange() {
1855: var sform=selector.document.forms.fsel.fcat;
1.2 www 1856: pscat=sform.options[sform.selectedIndex].value;
1.1 www 1857: draw();
1858: }
1859:
1.76 raeburn 1860: function recursechange() {
1861: var rform=selector.document.forms.frec;
1862: var count = rform.recurse.length;
1863: if (count > 0) {
1864: for (var i=0; i<count; i++) {
1865: if (rform.recurse[i].checked) {
1866: var colnum = pnonreccol;
1867: if (rform.recurse[i].value == 1) {
1868: colnum++;
1869: }
1.79 raeburn 1870: pmarker = pmarkerst+'_'+pparm+'&'+colnum;
1.76 raeburn 1871: }
1872: }
1873: }
1874: }
1875:
1.1 www 1876: function assemble() {
1.2 www 1877: if ((ptype=='date') && (pscat!='interval')) {
1.41 www 1878: svalue=Math.floor(cdate.getTime()/1000);
1.2 www 1879: }
1.12 www 1880: if (ptype=='tolerance') {
1881: if (pscat=='relative_sym') {
1882: svalue=choices.document.forms.sch.val2.value+'%';
1883: if (choices.document.forms.sch.val3.checked) {
1884: svalue+='+';
1885: }
1886: }
1887: if (pscat=='absolute_sym') {
1888: svalue=choices.document.forms.sch.val2.value;
1889: if (choices.document.forms.sch.val3.checked) {
1890: svalue+='+';
1891: }
1892: }
1893: if (pscat=='absolute') {
1894: svalue=choices.document.forms.sch.val2.value;
1895: if (choices.document.forms.sch.val3.checked) {
1896: svalue+='+';
1897: }
1898: svalue+=','+choices.document.forms.sch.val4.value;
1899: if (choices.document.forms.sch.val5.checked) {
1900: svalue+='+';
1901: }
1902: }
1903: if (pscat=='relative') {
1904: svalue=choices.document.forms.sch.val2.value+'%';
1905: if (choices.document.forms.sch.val3.checked) {
1906: svalue+='+';
1907: }
1908: svalue+=','+choices.document.forms.sch.val4.value+'%';
1909: if (choices.document.forms.sch.val5.checked) {
1910: svalue+='+';
1911: }
1912: }
1.14 www 1913: }
1914: if ((ptype=='int') && (pscat=='range')) {
1915: svalue=choices.document.forms.sch.val2.value+','+
1916: choices.document.forms.sch.val4.value;
1.12 www 1917: }
1.6 www 1918: if (pscat=='default') { svalue=''; }
1.2 www 1919: stype=ptype+'_'+pscat;
1.1 www 1920: }
1921:
1922:
1923: function init() {
1924: var i;
1.2 www 1925: var subs=new Array();
1.71 raeburn 1926: var doneRegExp = /_done(|\:[^\:]+\:)/;
1927: var doneproctorRegExp = /_done(|\:[^\:]+\:)_proctor/;
1.70 raeburn 1928: var proctorkeyRegExp = /^(\d+)_(.+)$/;
1.71 raeburn 1929: var donetextRegExp = /\:([^\:]+)\:/;
1.79 raeburn 1930: var markerRegExp = /^(.+)_([A-Za-z0-9]+)\&(\d+)$/;
1.1 www 1931: var namevalue=this.window.location.search.split('&');
1932: namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
1933:
1934: for (i=0;i<namevalue.length;i++) {
1935: var pair=namevalue[i].split('=');
1.3 www 1936: pair[1]=unescape(pair[1]);
1.1 www 1937: if (pair[0]=='value') { pvalue=pair[1]; }
1.2 www 1938: if (pair[0]=='type') { subs=pair[1].split('_');
1939: ptype=subs[0];
1940: pscat=subs[1];
1.79 raeburn 1941: if (typeof(subs[2])!="undefined") {
1942: pscat+='_'+subs[2];
1.11 www 1943: }
1.79 raeburn 1944: if ((pscat=='') || (typeof(pscat)=="undefined")) {
1.6 www 1945: pscat='default';
1946: }
1.2 www 1947: }
1.1 www 1948: if (pair[0]=='return') { preturn=pair[1]; }
1949: if (pair[0]=='call') { pcode=pair[1]; }
1.2 www 1950: if (pair[0]=='marker') { pmarker=pair[1]; }
1.1 www 1951: if (pair[0]=='name') { pname=pair[1]; }
1.63 www 1952: if (pair[0]=='modal') { pmodal=pair[1]; }
1.34 albertel 1953: if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
1954: defhour=pair[1];
1955: }
1956: if (pair[0]=='defmin' && pair[1] >= 0 && pair[1] < 60) { defmin=pair[1]; }
1957: if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
1.80 raeburn 1958: if (pair[0]=='extra') { pextra=pair[1]; }
1.1 www 1959: }
1960:
1.79 raeburn 1961: var tablecol = '';
1.76 raeburn 1962: var ismap = '';
1963: if (markerRegExp.test(pmarker)) {
1964: var markerinfo = pmarker.match(markerRegExp);
1965: if (markerinfo.length == 4) {
1966: pmarkerst = markerinfo[1];
1967: pparm = markerinfo[2];
1.79 raeburn 1968: tablecol = markerinfo[3];
1.76 raeburn 1969: if (tablecol == 17 || tablecol == 16) {
1970: ismap = 1;
1971: if (tablecol == 17) {
1972: precursive = 1;
1973: }
1974: pnonreccol = 16;
1.79 raeburn 1975: } else if (tablecol == 11 || tablecol == 10) {
1.76 raeburn 1976: ismap = 1;
1977: if (tablecol == 11) {
1978: precursive = 1;
1979: }
1980: pnonreccol = 10;
1981: } else if (tablecol == 7 || tablecol == 6) {
1982: ismap = 1;
1983: if (tablecol == 7) {
1984: precursive = 1;
1985: }
1986: pnonreccol = 6;
1987: } else if (tablecol == 3 || tablecol == 2) {
1988: ismap = 1;
1989: if (tablecol == 3) {
1990: precursive = 1;
1991: }
1992: pnonreccol = 2;
1993: }
1994: }
1995: }
1.85 raeburn 1996: psmap = ismap;
1.76 raeburn 1997:
1998:
1.68 raeburn 1999: if (ptype=='date' && pscat == 'interval') {
1.70 raeburn 2000: if (doneproctorRegExp.test(pvalue)) {
1.71 raeburn 2001: var current = pvalue.match(doneproctorRegExp);
2002: if (current.length == 2) {
2003: var textstr = current[1];
2004: if (textstr != '') {
2005: var textvals = textstr.match(donetextRegExp);
2006: if (textvals.length == 2) {
2007: pextravaltwo = textvals[1];
2008: }
2009: }
2010: }
1.70 raeburn 2011: var intervalwithkey = pvalue.replace(doneproctorRegExp,'');
2012: if (proctorkeyRegExp.test(intervalwithkey)) {
2013: var currvals = intervalwithkey.match(proctorkeyRegExp);
2014: if (currvals.length == 3) {
2015: pvalue = currvals[1];
2016: pextraval = currvals[2];
1.71 raeburn 2017: pmodval = '_done_proctor';
1.70 raeburn 2018: } else {
2019: pmodval = '';
2020: }
2021: }
2022: } else {
2023: if (doneRegExp.test(pvalue)) {
1.79 raeburn 2024: var current = pvalue.match(doneRegExp);
1.71 raeburn 2025: if (current.length == 2) {
2026: var textstr = current[1];
2027: if (textstr != '') {
2028: var textvals = textstr.match(donetextRegExp);
2029: if (textvals.length == 2) {
2030: pextravaltwo = textvals[1];
2031: }
2032: }
2033: }
1.70 raeburn 2034: var pnumval = pvalue.replace(doneRegExp,'');
1.71 raeburn 2035: pmodval = '_done';
1.70 raeburn 2036: pvalue = pnumval;
2037: }
1.68 raeburn 2038: }
2039: }
1.1 www 2040: svalue=pvalue;
1.6 www 2041: if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
1.79 raeburn 2042: (pscat=='default') &&
2043: (typeof(svalue)!="undefined") &&
1.11 www 2044: (svalue!=0) && (svalue!='')) { pscat='any'; }
1.1 www 2045:
1.13 www 2046: if (ptype=='tolerance') {
2047: var tperc=0;
2048: var trange=0;
2049: if (typeof(svalue)!='undefined') {
2050: if (svalue.indexOf('%')!=-1) { tperc=1; }
2051: if (svalue.indexOf(',')!=-1) { trange=1; }
2052: if (trange) {
2053: if (tperc) { pscat='relative'; } else { pscat='absolute'; }
2054: } else {
2055: if (tperc) { pscat='relative_sym'; } else { pscat='absolute_sym'; }
2056: }
2057: }
2058: }
2059:
1.61 raeburn 2060: this.window.selector.document.open();
1.62 raeburn 2061: selwrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
2062: selwrite('<html xmlns="http://www.w3.org/1999/xhtml">');
1.55 bisitz 2063: selwrite('<head>');
1.62 raeburn 2064: selwrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
2065: selwrite('<title>LON-CAPA</title>');
1.55 bisitz 2066: selwrite('<style type="text/css">');
2067: selwrite('<!--');
2068: selwrite('body {');
2069: selwrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
2070: selwrite('line-height:130%;');
2071: selwrite('font-size:0.83em;');
2072: selwrite('background: #FFFFFF;');
2073: selwrite('}');
2074: selwrite('-->');
2075: selwrite('</style>');
2076: selwrite('</head>');
1.62 raeburn 2077: selwrite('<body>');
2078: selwrite('<form name="fsel" action=""><b>'+pname+'</b><br />');
1.66 bisitz 2079: selwrite('Format of Value(s): <select name="fcat" onchange="parent.catchange();">');
1.12 www 2080:
1.1 www 2081: if (ptype=='tolerance') {
2082: sopt('default','Default');
2083: sopt('relative_sym','Relative Tolerance, Symmetric (percent)');
2084: sopt('relative','Relative Tolerance (percentages)');
2085: sopt('absolute_sym','Absolute Tolerance, Symmetric (value)');
2086: sopt('absolute','Absolute Tolerance (values)');
2087: }
2088:
2089: if (ptype=='date') {
1.48 albertel 2090: if (pscat != 'interval') {
2091: sopt('default','Default');
2092: sopt('start','Starting Date');
2093: sopt('end','Ending Date');
2094: } else {
2095: sopt('interval','Time Interval');
2096: }
2097:
1.11 www 2098: if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
1.2 www 2099: cdate.setTime(pvalue*1000);
1.30 www 2100: } else {
1.31 www 2101: cdate.setSeconds(defsec);
2102: cdate.setMinutes(defmin);
2103: cdate.setHours(defhour);
1.2 www 2104: }
2105:
2106: months[0]='January';
2107: months[1]='February';
2108: months[2]='March';
2109: months[3]='April';
2110: months[4]='May';
2111: months[5]='June';
2112: months[6]='July';
2113: months[7]='August';
2114: months[8]='September';
2115: months[9]='October';
2116: months[10]='November';
2117: months[11]='December';
1.1 www 2118: }
1.79 raeburn 2119:
1.6 www 2120: if (ptype=='int') {
2121: sopt('default','Default');
2122: sopt('pos','Positive Integer, Not Zero');
2123: sopt('zeropos','Positive Integer or Zero');
1.13 www 2124: sopt('inrange','Integer in Range');
2125: sopt('range','Range of Integers');
1.6 www 2126: sopt('any','Integer');
1.1 www 2127: }
2128:
1.6 www 2129: if (ptype=='float') {
2130: sopt('default','Default');
2131: sopt('zeroone','Floating Point between 0 and 1');
2132: sopt('pos','Positive Floating Point');
2133: sopt('any','Floating Point');
1.1 www 2134:
2135: }
2136:
1.6 www 2137: if (ptype=='string') {
1.44 albertel 2138: //sopt('default','Default');
2139: if (pscat == 'yesno') { sopt('yesno','Yes/No'); }
1.47 albertel 2140: else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }
1.45 albertel 2141: else if (pscat == 'examtype') { sopt('examtype','Exam Type'); }
2142: else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
1.60 raeburn 2143: else if (pscat == 'lenient') { sopt('lenient','Lenient Grading (Partial Credit)'); }
1.64 raeburn 2144: else if (pscat == 'discussvote') { sopt('discussvote','Discussion Voting'); }
1.45 albertel 2145: else if (pscat == 'ip') { sopt('ip','IP Number/Name'); }
2146: else if (pscat == 'fileext') { sopt('fileext','File Extension'); }
2147: else if (pscat == 'useslots') { sopt('useslots','Slots control access'); }
1.78 raeburn 2148: else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); }
1.92 raeburn 2149: else if (pscat == 'tex') { sopt('texdisplay','TeX File Display'); }
1.96 raeburn 2150: else if (pscat == 'grace') { sopt('grace','Grace period'); }
1.45 albertel 2151: else { pscat = 'any'; }
1.80 raeburn 2152: if (pscat != 'deeplink') { sopt('any','String Value'); }
1.22 www 2153: }
2154:
2155: if (ptype=='color') {
2156: sopt('default','Use Default Color');
2157: sopt('custom','Use Custom Color');
1.1 www 2158: }
2159:
2160: selwrite('</select></form>');
1.77 raeburn 2161: if (ismap == 1) {
1.76 raeburn 2162: if ((pparm != 'hiddenresource') && (pparm != 'encrypturl')) {
2163: selwrite('<form name="frec" action="">');
2164: selwrite('Recursive: <label><input type="radio" name="recurse" value="1" ');
2165: if (precursive == 1) {
2166: selwrite('checked="checked" ');
2167: }
2168: selwrite('onclick="parent.recursechange();" />Yes</label> ');
2169: selwrite('<label><input type="radio" name="recurse" value="0" ');
2170: if (precursive != 1) {
2171: selwrite('checked="checked" ');
2172: }
1.83 raeburn 2173: selwrite('onclick="parent.recursechange();" />No</label>');
1.76 raeburn 2174: selwrite('</form><br />');
2175: }
2176: }
1.63 www 2177: var targ='parent.opener';
2178: if (pmodal==1) {
2179: targ='parent.parent';
1.70 raeburn 2180: }
2181: if ((ptype=='date') && (pscat=='interval')) {
2182: selwrite('<a href="javascript:parent.validateInterval();');
1.80 raeburn 2183: } else if ((ptype=='string') && (pscat=='deeplink')) {
2184: selwrite('<a href="javascript:parent.validateDeepLink();');
1.98 ! raeburn 2185: } else if ((ptype=='string') && (pscat=='grace')) {
! 2186: selwrite('<a href="javascript:parent.validateGrace();');
1.70 raeburn 2187: } else {
2188: selwrite('<a href="javascript:parent.assemble();');
2189: }
1.1 www 2190: if (preturn!='') {
1.63 www 2191: selwrite(targ+'.document.'+preturn+'_value.value=parent.window.svalue;');
2192: selwrite(targ+'.document.'+preturn+'_type.value=parent.window.stype;');
1.2 www 2193: }
2194: if (pmarker!='') {
1.63 www 2195: selwrite(targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
1.1 www 2196: }
2197: if (pcode!='') {
1.63 www 2198: selwrite(targ+'.'+pcode+'();');
1.1 www 2199: }
1.43 albertel 2200: selwrite('">Save</a> ');
1.5 www 2201:
2202: selwrite('<a href="javascript:');
1.63 www 2203: selwrite(targ+'.document.'+preturn+'_value.value='+"'';");
1.5 www 2204: if (pmarker!='') {
2205: selwrite(
1.63 www 2206: targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
1.5 www 2207: }
2208: if (pcode!='') {
1.63 www 2209: selwrite(targ+'.'+pcode+'();');
1.5 www 2210: }
2211: selwrite('">Delete</a> ');
1.4 www 2212:
1.1 www 2213: selwrite('</body></html>');
2214: this.window.selector.document.close();
1.84 raeburn 2215: if (pscat == 'deeplink') {
1.85 raeburn 2216: if (psmap==1) {
2217: document.getElementById("LCparampopup").rows="100,*";
2218: } else {
2219: document.getElementById("LCparampopup").rows="60,*";
2220: }
1.84 raeburn 2221: }
1.96 raeburn 2222: if (pscat == 'grace') {
2223: if (psmap==1) {
2224: document.getElementById("LCparampopup").rows="105,*";
2225: } else {
2226: document.getElementById("LCparampopup").rows="65,*";
2227: }
2228: }
1.2 www 2229: draw();
1.83 raeburn 2230:
1.1 www 2231: }
2232:
1.56 raeburn 2233: // ]]>
1.1 www 2234: </script>
1.56 raeburn 2235: </head>
1.1 www 2236:
1.84 raeburn 2237: <frameset id="LCparampopup" rows="125,*" onload="init();">
1.56 raeburn 2238: <frame name="selector" src="empty.html" />
2239: <frame name="choices" src="empty.html" />
1.1 www 2240: </frameset>
2241:
2242:
2243:
1.16 albertel 2244: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>