File:  [LON-CAPA] / rat / client / parameter.html
Revision 1.55: download - view: text, annotated - select for diffs
Fri Feb 5 18:16:23 2010 UTC (14 years, 3 months ago) by bisitz
Branches: MAIN
CVS tags: HEAD
Table Mode, Parameter Setting Popup Window:
Bug 6212 - Font Size
- Manually added standard font styles taken from CSS definitions in loncommon.pm which can't be used here automatically
- Added padding and border to enhance layout and readability

    1: <html>
    2: <!--
    3: The LearningOnline Network with CAPA
    4: Parameter Input Window
    5: //
    6: // $Id: parameter.html,v 1.55 2010/02/05 18:16:23 bisitz Exp $
    7: //
    8: // Copyright Michigan State University Board of Trustees
    9: //
   10: // This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   11: //
   12: // LON-CAPA is free software; you can redistribute it and/or modify
   13: // it under the terms of the GNU General Public License as published by
   14: // the Free Software Foundation; either version 2 of the License, or
   15: // (at your option) any later version.
   16: //
   17: // LON-CAPA is distributed in the hope that it will be useful,
   18: // but WITHOUT ANY WARRANTY; without even the implied warranty of
   19: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   20: // GNU General Public License for more details.
   21: //
   22: // You should have received a copy of the GNU General Public License
   23: // along with LON-CAPA; if not, write to the Free Software
   24: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   25: //
   26: // /home/httpd/html/adm/gpl.txt
   27: //
   28: // http://www.lon-capa.org/
   29: //
   30: -->
   31: <head>
   32: <title>LON-CAPA</title>
   33: </head>
   34: 
   35: <script type="text/javascript">
   36: 
   37: var ptype='';
   38: var pvalue='';
   39: var preturn='';
   40: var pcode='';
   41: var pscat='';
   42: var pmarker='';
   43: var pname='';
   44: 
   45: var defhour=0;
   46: var defmin=0;
   47: var defsec=0;
   48: 
   49: var svalue;
   50: var stype;
   51: var smarker;
   52: 
   53: var vars=new Array();
   54: 
   55: var cdate=new Date();
   56: 
   57: var csec;
   58: var cmin;
   59: var chour;
   60: var cday;
   61: 
   62: var months=new Array();
   63: 
   64: 
   65: function selwrite(text) {
   66:   this.window.selector.document.write(text);
   67: }
   68: 
   69: function choicestart() {
   70:   this.window.choices.document.clear();
   71:   choicewrite('<html><body>');
   72:   choicewrite('<head>');
   73:   choicewrite('<style type="text/css">');
   74:   choicewrite('<!--');
   75:   choicewrite('body {');
   76:   choicewrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
   77:   choicewrite('line-height:130%;');
   78:   choicewrite('font-size:0.83em;');
   79:   choicewrite('background: #FFFFFF;');
   80:   choicewrite('}');
   81:   choicewrite('table.LC_parmsel_table {font-size: 90%;}');
   82:   choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');
   83:   choicewrite('-->');
   84:   choicewrite('</style>');
   85:   choicewrite('</head>');
   86: }
   87: 
   88: function choiceend() {
   89:   choicewrite('</body></html>');
   90:   this.window.choices.document.close();
   91: }
   92: 
   93: function choicewrite(text) {
   94:   this.window.choices.document.write(text);
   95: }
   96: 
   97: function tablestart(headtext) {
   98:   choicewrite('<table class="LC_parmsel_table"><tr bgcolor="#C5DB99"><th colspan="3">'+
   99:               headtext+'</th></tr>');
  100: }
  101: 
  102: function valline(text,id1,id2) {
  103:   choicewrite('<tr><td>'+text+
  104:               '</td><td><input type="text" size="4" name="val'+
  105:               id1+'" /></td><td>incl:<input type="checkbox" name="val'+
  106:               id2+'" /></td></tr>');
  107: }
  108: 
  109: function escapeHTML(text) {
  110:   text = text.replace(/&/g, '&amp;');
  111:   text = text.replace(/"/g, '&quot;');
  112:   text = text.replace(/</g, '&lt;');
  113:   text = text.replace(/>/g, '&gt;');
  114:   return text;
  115: }
  116: 
  117: function datecalc() {
  118:     var sform=choices.document.forms.sch;
  119: 
  120:     cdate.setHours(sform.hours.options[sform.hours.selectedIndex].value);
  121:     cdate.setMinutes(sform.minutes.options[sform.minutes.selectedIndex].value);
  122:     cdate.setSeconds(sform.minutes.options[sform.seconds.selectedIndex].value);
  123:     cdate.setDate(sform.date.options[sform.date.selectedIndex].value);
  124:     cdate.setMonth(sform.month.options[sform.month.selectedIndex].value);
  125:     cdate.setFullYear(sform.year.options[sform.year.selectedIndex].value);
  126: 
  127:     draw();
  128: }
  129: 
  130: function hour() {
  131:    var thishour=cdate.getHours();
  132:     var i; var j;
  133:     choicewrite('<select name="hours" onchange="parent.datecalc();">');
  134:     for (i=0;i<=23;i++) {
  135:         choicewrite('<option value="'+i+'"');
  136:         if (i==thishour) {
  137:             choicewrite(' selected="selected"');
  138:         }
  139:         choicewrite('>');
  140:         if (i==12) { choicewrite('noon'); } else {
  141:            if (i==0) { choicewrite('midnight') } else {
  142:               
  143:                  if (i<12) { choicewrite(i+' am'); } else {
  144:                     j=i-12; choicewrite(j+' pm');
  145:                  }
  146:               
  147:            }
  148:         }
  149:         choicewrite('</option>');
  150:     }
  151:     choicewrite('</select>');
  152: }
  153: 
  154: function minute() {
  155:    var thisminutes=cdate.getMinutes();
  156:     var i;
  157:     choicewrite('<select name="minutes" onchange="parent.datecalc();">');
  158:     for (i=0;i<=59;i++) {
  159:         choicewrite('<option value="'+i+'"');
  160:         if (i==thisminutes) {
  161:             choicewrite(' selected="selected"');
  162:         }
  163:         choicewrite('>'+i+'</option>');
  164:     }
  165:     choicewrite('</select>');
  166: } 
  167: 
  168: function second() {
  169:    var thisseconds=cdate.getSeconds();
  170:     var i;
  171:     choicewrite('<select name="seconds" onchange="parent.datecalc();">');
  172:     for (i=0;i<=59;i++) {
  173:         choicewrite('<option value="'+i+'"');
  174:         if (i==thisseconds) {
  175:             choicewrite(' selected="selected"');
  176:         }
  177:         choicewrite('>'+i+'</option>');
  178:     }
  179:     choicewrite('</select>');
  180: } 
  181: 
  182: 
  183: function date() {
  184:    var thisdate=cdate.getDate();
  185:     var i;
  186:     choicewrite('<select name="date" onchange="parent.datecalc();">');
  187:     for (i=1;i<=31;i++) {
  188:         choicewrite('<option value="'+i+'"');
  189:         if (i==thisdate) {
  190:             choicewrite(' selected="selected"');
  191:         }
  192:         choicewrite('>'+i+'</option>');
  193:     }
  194:     choicewrite('</select>');
  195: }
  196: 
  197: function year() {
  198:    var thisyear=cdate.getFullYear();
  199:    var nowdate=new Date();
  200:    var nowyear=nowdate.getFullYear();
  201:    if ( !thisyear ) { thisyear=nowyear; }
  202:    var loweryear=thisyear-2;
  203:    var upperyear=thisyear+5;
  204:    if (thisyear>nowyear) { loweryear=nowyear-2; }
  205:    if (thisyear<nowyear) { upperyear=nowyear+5; } 
  206:     var i;
  207:     choicewrite('<select name="year" onchange="parent.datecalc();">');
  208:     for (i=loweryear;i<=upperyear;i++) {
  209:         choicewrite('<option value="'+i+'"');
  210:         if (i==thisyear) {
  211:             choicewrite(' selected="selected"');
  212:         }
  213:         choicewrite('>'+i+'</option>');
  214:     }
  215:     choicewrite('</select>');
  216: }
  217: 
  218: function month() {
  219:     var thismonth=cdate.getMonth();
  220:     var i;
  221:     choicewrite('<select name="month" onchange="parent.datecalc();">');
  222:     for (i=0;i<=11;i++) {
  223:         choicewrite('<option value="'+i+'"');
  224:         if (i==thismonth) {
  225:             choicewrite(' selected="selected"');
  226:         }
  227:         choicewrite('>'+months[i]+'</option>');
  228:     }
  229:     choicewrite('</select>');
  230: }
  231:     
  232:     
  233: function intminute() {
  234:    var thisminutes=cmins;
  235:     var i;
  236:     choicewrite('<select name="minutes" onchange="parent.intcalc();">');
  237:     for (i=0;i<=59;i++) {
  238:         choicewrite('<option value="'+i+'"');
  239:         if (i==thisminutes) {
  240:             choicewrite(' selected="selected"');
  241:         }
  242:         choicewrite('>'+i+'</option>');
  243:     }
  244:     choicewrite('</select>');
  245: } 
  246: 
  247: function inthour() {
  248:    var thishours=chours;
  249:     var i;
  250:     choicewrite('<select name="hours" onchange="parent.intcalc();">');
  251:     for (i=0;i<=23;i++) {
  252:         choicewrite('<option value="'+i+'"');
  253:         if (i==thishours) {
  254:             choicewrite(' selected="selected"');
  255:         }
  256:         choicewrite('>'+i+'</option>');
  257:     }
  258:     choicewrite('</select>');
  259: } 
  260: 
  261: function intsecond() {
  262:    var thisseconds=csecs;
  263:     var i;
  264:     choicewrite('<select name="seconds" onchange="parent.intcalc();">');
  265:     for (i=0;i<=59;i++) {
  266:         choicewrite('<option value="'+i+'"');
  267:         if (i==thisseconds) {
  268:             choicewrite(' selected="selected"');
  269:         }
  270:         choicewrite('>'+i+'</option>');
  271:     }
  272:     choicewrite('</select>');
  273: } 
  274: 
  275: 
  276: function intday() {
  277:    var thisdate=cdays;
  278:     var i;
  279:     choicewrite('<select name="date" onchange="parent.intcalc();">');
  280:     for (i=0;i<=31;i++) {
  281:         choicewrite('<option value="'+i+'"');
  282:         if (i==thisdate) {
  283:             choicewrite(' selected="selected"');
  284:         }
  285:         choicewrite('>'+i+'</option>');
  286:     }
  287:     choicewrite('</select>');
  288: }
  289: 
  290: function intcalc() {
  291:     var sform=choices.document.forms.sch;
  292:     svalue=((sform.date.options[sform.date.selectedIndex].value*24+
  293:              sform.hours.options[sform.hours.selectedIndex].value*1)*60+
  294:              sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
  295:              sform.seconds.options[sform.seconds.selectedIndex].value*1;
  296:     draw();
  297: }
  298: 
  299: function integereval() {
  300:    svalue=choices.document.forms.sch.intval.value;
  301:    svalue=Math.round(svalue);
  302:    if (pscat=='zeropos') { svalue=Math.abs(svalue); }
  303:    if ((pscat=='pos') && (svalue==0)) {
  304:       svalue='';
  305:    }
  306:    if (pscat.indexOf('inrange')!=-1) {
  307:       var rangeparts=new Array;
  308:       rangeparts=split('_',pscat);
  309:       rangeparts=split(',',rangeparts[1]);
  310:       if (svalue<rangeparts[0]) { svalue=rangeparts[0]; }
  311:       if (svalue>rangeparts[1]) { svalue=rangeparts[1]; }
  312:    }
  313:    draw();
  314: }
  315: 
  316: function floateval() {
  317:    svalue=choices.document.forms.sch.floatval.value;
  318:    svalue=1.0*svalue;
  319:    if (pscat=='pos') { svalue=Math.abs(svalue); }
  320:    if ((pscat=='zeroone') && ((svalue<0) || (svalue>1))) {
  321:       svalue='';
  322:    }
  323:    draw();
  324: }
  325: 
  326: function stringeval() {
  327:    svalue=choices.document.forms.sch.stringval.value;
  328:    draw();
  329: }
  330: 
  331: function radiostringeval(newval) {
  332:    svalue=newval;
  333:    draw();
  334: }
  335: 
  336: function callradiostringeval(newval) {
  337:    return 'onchange="parent.radiostringeval(\''
  338:           +newval+'\')" onclick="parent.radiostringeval(\''
  339:           +newval+'\')"';
  340: }
  341: 
  342: function intervaldis() {
  343:     csecs=svalue;
  344:     cdays=Math.floor(csecs/86400);
  345:     csecs-=cdays*86400;
  346:     chours=Math.floor(csecs/3600);
  347:     csecs-=chours*3600;
  348:     cmins=Math.floor(csecs/60);
  349:     csecs-=cmins*60;
  350:     choicewrite(cdays+' days '+chours+' hours '
  351:                +cmins+' mins '+csecs+' secs');
  352: }
  353: 
  354: function pickcolor(picked) {
  355:   svalue=picked;
  356:   draw();
  357: }
  358: 
  359: function colorfield(ir,ig,ib) {
  360:    var col=new Array;
  361:    col=["00","11","22","44","66","88","AA","CC","DD","EE","FF"];
  362:    var color='#'+col[ir]+col[ig]+col[ib];
  363:    var selection="<font color='"+color+"'>X</font>";
  364:    if (color==svalue) { selection="<font color='#"+col[10-ir]+col[10-ig]+col[10-ib]+"'>X</font>"; }
  365:    choicewrite('<td bgcolor="'+color+'"><a href="javascript:parent.pickcolor('+"'"+
  366:                color+"'"+')">'+selection+'</a></td>');
  367:                
  368: }    
  369: 
  370: function draw() {
  371:    choicestart();
  372:    choicewrite('<form name="sch"');
  373:    if (ptype=='int') {
  374:       choicewrite(' action="javascript:integereval();"');
  375:    }
  376:    if (ptype=='float') {
  377:       choicewrite(' action="javascript:floateval();"');
  378:    }
  379:    if (ptype=='string') {
  380:       choicewrite(' action="javascript:stringeval();"');
  381:    }
  382:    choicewrite('>');
  383:    if (ptype=='tolerance') {
  384: // 0: pscat
  385:       if (pscat=='default') {
  386:          tablestart('Use default value or algorithm of resource');
  387:       }
  388:       if (pscat=='relative_sym') {
  389: // 2: percentage
  390: // 3: open
  391:          tablestart('Percentage error, symmetric around value');
  392:          valline('Percentage',2,3);
  393:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  394:             choices.document.forms.sch.val2.value=parseInt(svalue);
  395:             if (svalue.indexOf('+')!=-1) {
  396:                choices.document.forms.sch.val3.checked=true;
  397:             }
  398:          }
  399:       }
  400:       if (pscat=='relative') {
  401: // 2: left
  402: // 3: open
  403: // 4: right
  404: // 5: open
  405:          tablestart('Percentage error, asymmetric around value');
  406:          valline('Upper percentage',2,3);
  407:          valline('Lower percentage',4,5);
  408:          var range1=new Array;
  409:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  410:             range1=svalue.split(',');
  411:             if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; }
  412:             choices.document.forms.sch.val2.value=parseFloat(range1[0]);
  413:             if (range1[0].indexOf('+')!=-1) {
  414:                choices.document.forms.sch.val3.checked=true;
  415:             }
  416:             choices.document.forms.sch.val4.value=parseFloat(range1[1]);
  417:             if (range1[1].indexOf('+')!=-1) {
  418:                choices.document.forms.sch.val5.checked=true;
  419:             }
  420:          }
  421:       }
  422:       if (pscat=='absolute_sym') {
  423:          tablestart('Absolute error, symmetric around value');
  424:          valline('Value',2,3);
  425:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  426:             choices.document.forms.sch.val2.value=parseFloat(svalue);
  427:             if (svalue.indexOf('+')!=-1) {
  428:                choices.document.forms.sch.val3.checked=true;
  429:             }
  430:          }
  431:       }
  432:       if (pscat=='absolute') {
  433:          tablestart('Absolute error, asymmetric around value');
  434:          valline('Upper value',2,3);
  435:          valline('Lower value',4,5);
  436:          var range2=new Array;
  437:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  438:             range=svalue.split(',');
  439:             if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; }
  440:             choices.document.forms.sch.val2.value=parseFloat(range2[0]);
  441:             if (range2[0].indexOf('+')!=-1) {
  442:                choices.document.forms.sch.val3.checked=true;
  443:             }
  444:             choices.document.forms.sch.val4.value=parseFloat(range2[1]);
  445:             if (range2[1].indexOf('+')!=-1) {
  446:                choices.document.forms.sch.val5.checked=true;
  447:             }
  448:          }
  449:       }
  450:    }
  451: 
  452:    if (ptype=='date') {
  453:      if (pscat=='default') {
  454:          tablestart('Default value or none');
  455:          choicewrite('</table>');
  456:      } else {
  457:       if (pscat=='start') {
  458:          tablestart('Date and time');
  459:       }
  460:       if (pscat=='end') {
  461:          tablestart('Date and time');
  462:       }
  463:       if (pscat=='interval') {
  464:          tablestart('Time interval');
  465:          choicewrite('<tr><td colspan="3">');
  466:          intervaldis();
  467:          choicewrite('</td></tr><tr><td>Time:'
  468:          +'</td><td colspan="2">');
  469:          intday();choicewrite('days ');
  470:          inthour();choicewrite('hours ');
  471:          intminute(); choicewrite('mins '); intsecond();
  472:          choicewrite('secs</td></tr></table>');         
  473:       } else { 
  474:          choicewrite('<tr><td colspan="3">'
  475:          +cdate.toString()+
  476:          '</td></tr><tr><td>Date:</td><td colspan="2">');
  477:          month();date();year();
  478:          choicewrite('</td></tr><tr><td>Time:'
  479:          +'</td><td colspan="2">');hour();choicewrite('h ');minute();
  480:          choicewrite('m ');second();
  481:          choicewrite('s</td></tr></table>');
  482:       }
  483:      }
  484:    }
  485: 
  486:    if (ptype=='int') {
  487:       var pscatparts=new Array;
  488:       pscatparts=pscat.split(',');
  489:       pscat=pscatparts[0];
  490:       if (pscat=='default') {
  491:          tablestart('Default value or none');
  492:          choicewrite('</table>');
  493:       } else {
  494:        if (pscat=='range') {
  495:          tablestart('Integer range');      
  496:          choicewrite('<tr><td>Lower Value:'+
  497:               '</td><td colspan="2"><input type="text" size="4" name="val2'+
  498:               '" /></td></tr>');
  499:          choicewrite('<tr><td>Upper Value:'+
  500:               '</td><td colspan="2"><input type="text" size="4" name="val4'+
  501:               '" /></td></tr></table>');
  502:          var range=new Array;
  503:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  504:             range=svalue.split(',');
  505:             if (typeof(range[1])=='undefined') { range[1]=range[0]; }
  506:             choices.document.forms.sch.val2.value=parseInt(range[0]);
  507:             choices.document.forms.sch.val4.value=parseInt(range[1]);
  508:          }
  509:        } else {
  510:         if (pscat=='pos') {
  511:            tablestart('Positive (non-zero) integer');
  512:         }
  513:         if (pscat=='zeropos') {
  514:            tablestart('Positive integer or zero');
  515:         }
  516:         if (pscat.indexOf('inrange')!=-1) {
  517:            var rangeparts=new Array;
  518:            rangeparts=split(',',pscat);
  519:            tablestart('Integer in the range ['+rangeparts[1]+']');
  520:         }
  521:         if (pscat=='any') {
  522:            tablestart('Integer');
  523:         }
  524:         choicewrite('<tr><td>Value:</td><td colspan="2">');
  525:         choicewrite('<input name="intval" size="10" value="'+escapeHTML(svalue)+
  526:                     '" onchange="parent.integereval()" />');
  527:         choicewrite('</td></tr></table>');
  528:       }
  529:      }
  530:    }
  531: 
  532:    if (ptype=='float') {
  533:       if (pscat=='default') {
  534:          tablestart('Default value or none');
  535:          choicewrite('</table>');         
  536:       } else {
  537:         if (pscat=='pos') {
  538:            tablestart('Positive floating point number or zero');
  539:         }
  540:         if (pscat=='zeroone') {
  541:            tablestart('Floating point number between zero and one');
  542:         }
  543:         if (pscat=='any') {
  544:            tablestart('Floating point number');
  545:         }
  546:         choicewrite('<tr><td>Value:</td><td colspan="2">');
  547:         choicewrite('<input name="floatval" size="10" value="'+escapeHTML(svalue)+
  548:                     '" onchange="parent.floateval()" />');
  549:         choicewrite('</td></tr></table>');
  550:       }
  551:    }
  552: 
  553:    if (ptype=='string') {
  554:         if ((pscat=='any') || (pscat=='') || (pscat=='default') ||  
  555:             (typeof(pscat)=='undefined')) {
  556:            tablestart('Text');
  557:            choicewrite('<tr><td>Value:</td><td colspan="2">');
  558:            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
  559:                     '" type="text" onchange="parent.stringeval()" />');
  560:         }
  561:         if (pscat=='yesno') {
  562:            tablestart('Yes/No');
  563: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  564:            choicewrite('<label><input name="stringval" value="yes"'+
  565:                   ' type="radio" '+callradiostringeval('yes'));
  566:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
  567:            choicewrite(' /> Yes</label><br />');
  568:            choicewrite('<label><input name="stringval" value="no"'+
  569:                   ' type="radio" '+callradiostringeval('no'));
  570:            if (svalue=='no') { choicewrite(' checked="checked"'); }
  571:            choicewrite(' /> No</label><br />');
  572:         }
  573:         if (pscat=='problemstatus') {
  574:            tablestart('Problem Status');
  575: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  576:            choicewrite('<label><input name="stringval" value="yes"'+
  577:                   ' type="radio" '+callradiostringeval('yes'));
  578:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
  579:            choicewrite(' /> Yes</label><br />');
  580:            choicewrite('<label><input name="stringval" value="answer"'+
  581:                   ' type="radio" '+callradiostringeval('answer'));
  582:            if (svalue=='answer') { choicewrite(' checked="checked"'); }
  583:            choicewrite(' /> Yes, and show correct answer if they exceed the maximum number of tries.</label><br />');
  584:            choicewrite('<label><input name="stringval" value="no"'+
  585:                   ' type="radio" '+callradiostringeval('no'));
  586:            if (svalue=='no') { choicewrite(' checked="checked"'); }
  587:            choicewrite(' /> No, don\'t show correct/incorrect feedback.</label><br />');
  588:            choicewrite('<label><input name="stringval" value="no_feedback_ever"'+
  589:                   ' type="radio" '+callradiostringeval('no_feedback_ever'));
  590:            if (svalue=='no_feedback_ever') { choicewrite(' checked="checked"'); }
  591:            choicewrite(' /> No, show no feedback at all.</label><br />');
  592:         }
  593:         if (pscat=='examtype') {
  594:            tablestart('Exam Type');
  595: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  596:            choicewrite('<label><input name="stringval" value="online"'+
  597:                 ' type="radio" '+callradiostringeval('online'));
  598:            if (svalue=='online') { choicewrite(' checked="checked"'); }
  599:            choicewrite(' /> Online</label><br />');
  600:            choicewrite('<label><input name="stringval" value="checkout"'+
  601:               ' type="radio" '+callradiostringeval('checkout'));
  602:            if (svalue=='checkout') { choicewrite(' checked="checked"'); }
  603:            choicewrite(' /> Check out</label><br />');
  604:        }
  605:         if (pscat=='questiontype') {
  606:            tablestart('Question Type');
  607: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  608:            choicewrite('<label><input name="stringval" value="problem"'+
  609:                ' type="radio" '+callradiostringeval('problem'));
  610:            if (svalue=='problem') { choicewrite(' checked="checked"'); }
  611:            choicewrite(' /> Standard Problem</label><br />');
  612: //	   choicewrite('<label><input name="stringval" value="quiz"'+
  613: //                ' type="radio" '+callradiostringeval('quiz'));
  614: //         if (svalue=='quiz') { choicewrite(' checked="checked"'); }
  615: //         choicewrite(' /> Quiz</label><br />');
  616:            choicewrite('<label><input name="stringval" value="practice"'+
  617:                   ' type="radio" '+callradiostringeval('practice'));
  618:            if (svalue=='practice') { choicewrite(' checked="checked"'); }
  619:            choicewrite(' /> Practice</label><br />');
  620:            choicewrite('<label><input name="stringval" value="exam"'+
  621:                   ' type="radio" '+callradiostringeval('exam'));
  622:            if (svalue=='exam') { choicewrite(' checked="checked"'); }
  623:            choicewrite(' /> Exam</label><br />');
  624: //         choicewrite('<label><input name="stringval" value="assess"'+
  625: //              ' type="radio" '+callradiostringeval('assess'));
  626: //         if (svalue=='assess') { choicewrite(' checked="checked"'); }
  627: //         choicewrite(' /> Assessment</label><br />');
  628:            choicewrite('<label><input name="stringval" value="survey"'+
  629:                 ' type="radio" '+callradiostringeval('survey'));
  630:            if (svalue=='survey') { choicewrite(' checked="checked"'); }
  631:            choicewrite(' /> Survey</label><br />');
  632: //         choicewrite('<label><input name="stringval" value="form"'+
  633: //                ' type="radio" '+callradiostringeval('form'));
  634: //         if (svalue=='form') { choicewrite(' checked="checked"'); }
  635: //         choicewrite('> Input Form</label><br />');
  636:            choicewrite('<label><input name="stringval" value="library"'+
  637:                ' type="radio" '+callradiostringeval('library'));
  638:            if (svalue=='library') { choicewrite(' checked="checked"'); }
  639:            choicewrite(' /> Library</label><br />');
  640:         }
  641:         if (pscat=='ip') {
  642:            tablestart('IP Number/Name');
  643: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  644:            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
  645:                     '" onchange="parent.stringeval()" />');
  646:         }
  647:         if (pscat=='fileext') {
  648:             tablestart('Allowed File Extensions');
  649: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  650:            choicewrite('<label><input name="radstringval" value="txt"'+
  651:                ' type="radio" '+callradiostringeval('txt'));
  652:            if (svalue=='txt') { choicewrite(' checked="checked"'); }
  653:            choicewrite(' /> Plain Text</label><br />');
  654:            choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+
  655:                ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
  656:            if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }
  657:            choicewrite(' /> Picture File</label><br />');
  658:            choicewrite('<label><input name="radstringval" value="doc,xls,ppt"'+
  659:                ' type="radio" '+callradiostringeval('doc,xls,ppt'));
  660:            if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }
  661:            choicewrite(' /> Office Document</label><br />');
  662:            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
  663:                     '" onchange="parent.stringeval()" />');
  664:        }
  665:        if (pscat=='useslots') {
  666:            tablestart('Slots control access');
  667: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
  668:            choicewrite('<label><input name="stringval" value="no"'+
  669:                   ' type="radio" '+callradiostringeval('no'));
  670:            if (svalue=='no') { choicewrite(' checked="checked"'); }
  671:            choicewrite(' /> No</label><br />');
  672:            choicewrite('<label><input name="stringval" value="resource"'+
  673:                   ' type="radio" '+callradiostringeval('resource'));
  674:            if (svalue=='resource') { choicewrite(' checked="checked"'); }
  675:            choicewrite(' /> Yes, and the scope of student selected slot is a single resource.</label><br />');
  676:            choicewrite('<label><input name="stringval" value="map"'+
  677:                   ' type="radio" '+callradiostringeval('map'));
  678:            if (svalue=='map') { choicewrite(' checked="checked"'); }
  679:            choicewrite(' /> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, it applies to only one resource.</label><br />');
  680:            choicewrite('<label><input name="stringval" value="map_map"'+
  681:                   ' type="radio" '+callradiostringeval('map_map'));
  682:            if (svalue=='map_map') { choicewrite(' checked="checked"'); }
  683:            choicewrite(' /> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, all resources in the map/folder are checked in.</label><br />');
  684:         choicewrite('</td></tr></table>');
  685:       }
  686:    }
  687:    
  688:    if (ptype=='color') {
  689:       tablestart('Choose a Color');
  690:       choicewrite('<table>');
  691:       if (svalue) {
  692:          choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
  693:                      escapeHTML(svalue)+'" colspan="2">&nbsp;</td></tr>');
  694:       }
  695:       for (var ir=0; ir<=10; ir++) {
  696:           for (var ig=0; ig<=10; ig++) {
  697:               choicewrite('<tr>');
  698:               for (var ib=0; ib<=10; ib++) {
  699:                   colorfield(ir,ig,ib);
  700: 	      }
  701:               choicewrite('</tr>');
  702: 	  }	      
  703:       }
  704:       choicewrite('</table></td></table>');
  705:    }
  706: 
  707:    choicewrite('</form>');
  708:    choiceend();
  709: }
  710: 
  711: function sopt(va,text) {
  712:    selwrite('<option value="'+va+'"');
  713:    if (va==pscat) {
  714:      selwrite(' selected="selected"');
  715:    }
  716:    selwrite('>'+text+'</option>');
  717: }
  718: 
  719: function catchange() {
  720:    var sform=selector.document.forms.fsel.fcat;
  721:    pscat=sform.options[sform.selectedIndex].value;
  722:    draw();
  723: }
  724: 
  725: function assemble() {
  726:     if ((ptype=='date') && (pscat!='interval')) {
  727:         svalue=Math.floor(cdate.getTime()/1000);
  728:     }
  729:     if (ptype=='tolerance') {
  730:        if (pscat=='relative_sym') {
  731:           svalue=choices.document.forms.sch.val2.value+'%';
  732:           if (choices.document.forms.sch.val3.checked) {
  733:              svalue+='+';
  734:           }
  735:        }
  736:        if (pscat=='absolute_sym') {
  737:           svalue=choices.document.forms.sch.val2.value;
  738:           if (choices.document.forms.sch.val3.checked) {
  739:              svalue+='+';
  740:           }
  741:        }
  742:        if (pscat=='absolute') {
  743:           svalue=choices.document.forms.sch.val2.value;
  744:           if (choices.document.forms.sch.val3.checked) {
  745:              svalue+='+';
  746:           }
  747:           svalue+=','+choices.document.forms.sch.val4.value;
  748:           if (choices.document.forms.sch.val5.checked) {
  749:              svalue+='+';
  750:           }
  751:        }
  752:        if (pscat=='relative') {
  753:           svalue=choices.document.forms.sch.val2.value+'%';
  754:           if (choices.document.forms.sch.val3.checked) {
  755:              svalue+='+';
  756:           }
  757:           svalue+=','+choices.document.forms.sch.val4.value+'%';
  758:           if (choices.document.forms.sch.val5.checked) {
  759:              svalue+='+';
  760:           }
  761:        }
  762:     }
  763:     if ((ptype=='int') && (pscat=='range')) {
  764:           svalue=choices.document.forms.sch.val2.value+','+
  765:                  choices.document.forms.sch.val4.value;
  766:     }
  767:     if (pscat=='default') { svalue=''; }
  768:     stype=ptype+'_'+pscat;
  769: }
  770: 
  771: 
  772: function init() {
  773:   var i;
  774:   var subs=new Array();
  775:   var namevalue=this.window.location.search.split('&');
  776:   namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
  777: 
  778:   for (i=0;i<namevalue.length;i++) {
  779:      var pair=namevalue[i].split('=');
  780:      pair[1]=unescape(pair[1]);
  781:      if (pair[0]=='value') { pvalue=pair[1]; }
  782:      if (pair[0]=='type') { subs=pair[1].split('_');
  783:                             ptype=subs[0];
  784:                             pscat=subs[1];
  785:                             if (typeof(subs[2])!="undefined") { 
  786:                                pscat+='_'+subs[2]; 
  787:                             }
  788:                             if ((pscat=='') || (typeof(pscat)=="undefined")) { 
  789:                                pscat='default';
  790:                             }
  791:                            }
  792:      if (pair[0]=='return') { preturn=pair[1]; }
  793:      if (pair[0]=='call') { pcode=pair[1]; }
  794:      if (pair[0]=='marker') { pmarker=pair[1]; }
  795:      if (pair[0]=='name') { pname=pair[1]; }
  796:      if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
  797:          defhour=pair[1];
  798:      }
  799:      if (pair[0]=='defmin' && pair[1] >= 0 && pair[1] < 60) { defmin=pair[1]; }
  800:      if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
  801:   }
  802: 
  803:   svalue=pvalue;
  804:   if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
  805:       (pscat=='default') && 
  806:       (typeof(svalue)!="undefined") && 
  807:       (svalue!=0) && (svalue!='')) { pscat='any'; }
  808: 
  809:   if (ptype=='tolerance') {
  810:      var tperc=0;
  811:      var trange=0;
  812:      if (typeof(svalue)!='undefined') {
  813:         if (svalue.indexOf('%')!=-1) { tperc=1;  }
  814:         if (svalue.indexOf(',')!=-1) { trange=1; }
  815:         if (trange) {
  816:            if (tperc) { pscat='relative'; } else { pscat='absolute'; }
  817:         } else {
  818:            if (tperc) { pscat='relative_sym'; } else { pscat='absolute_sym'; }
  819:         }
  820:      }
  821:   }
  822: 
  823:   this.window.selector.document.clear();
  824:   selwrite('<html><body>');
  825:   selwrite('<head>');
  826:   selwrite('<style type="text/css">');
  827:   selwrite('<!--');
  828:   selwrite('body {');
  829:   selwrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
  830:   selwrite('line-height:130%;');
  831:   selwrite('font-size:0.83em;');
  832:   selwrite('background: #FFFFFF;');
  833:   selwrite('}');
  834:   selwrite('-->');
  835:   selwrite('</style>');
  836:   selwrite('</head>');
  837:   selwrite('<form name="fsel"><b>'+pname+'</b><br />');
  838:   selwrite('<select name="fcat" onchange="parent.catchange();">');
  839: 
  840:   if (ptype=='tolerance') {
  841:      sopt('default','Default');
  842:      sopt('relative_sym','Relative Tolerance, Symmetric (percent)');
  843:      sopt('relative','Relative Tolerance (percentages)');
  844:      sopt('absolute_sym','Absolute Tolerance, Symmetric (value)');
  845:      sopt('absolute','Absolute Tolerance (values)');
  846:   }
  847: 
  848:   if (ptype=='date') {
  849:      if (pscat != 'interval') {
  850:          sopt('default','Default');
  851: 	 sopt('start','Starting Date');
  852: 	 sopt('end','Ending Date');
  853:      } else {
  854:          sopt('interval','Time Interval');
  855:      }
  856: 
  857:      if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
  858:         cdate.setTime(pvalue*1000);
  859:      } else {        
  860:         cdate.setSeconds(defsec);
  861:         cdate.setMinutes(defmin);
  862:         cdate.setHours(defhour);
  863:      }
  864:  
  865:      months[0]='January';
  866:      months[1]='February';
  867:      months[2]='March';
  868:      months[3]='April';
  869:      months[4]='May';
  870:      months[5]='June';
  871:      months[6]='July';
  872:      months[7]='August';
  873:      months[8]='September';
  874:      months[9]='October';
  875:      months[10]='November';
  876:      months[11]='December';
  877:   }
  878:    
  879:   if (ptype=='int') {
  880:      sopt('default','Default');
  881:      sopt('pos','Positive Integer, Not Zero');
  882:      sopt('zeropos','Positive Integer or Zero');
  883:      sopt('inrange','Integer in Range');
  884:      sopt('range','Range of Integers');
  885:      sopt('any','Integer');
  886:   }
  887: 
  888:   if (ptype=='float') {
  889:      sopt('default','Default');
  890:      sopt('zeroone','Floating Point between 0 and 1');
  891:      sopt('pos','Positive Floating Point');
  892:      sopt('any','Floating Point');
  893: 
  894:   }
  895: 
  896:   if (ptype=='string') {
  897:      //sopt('default','Default');
  898:      if (pscat == 'yesno')        { sopt('yesno','Yes/No'); }
  899:      else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }
  900:      else if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }
  901:      else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
  902:      else if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }
  903:      else if (pscat == 'fileext')      { sopt('fileext','File Extension'); }
  904:      else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
  905:      else { pscat = 'any'; }
  906:      sopt('any','String Value');
  907:   }
  908: 
  909:   if (ptype=='color') {
  910:      sopt('default','Use Default Color');
  911:      sopt('custom','Use Custom Color');
  912:   }
  913: 
  914:   selwrite('</select></form>');
  915: 
  916:   selwrite('<a href="javascript:parent.assemble();');
  917:   if (preturn!='') {
  918:      selwrite(
  919:       'parent.opener.document.'+preturn+'_value.value=parent.window.svalue;');
  920:      selwrite(
  921:       'parent.opener.document.'+preturn+'_type.value=parent.window.stype;');
  922:   }
  923:   if (pmarker!='') {
  924:      selwrite(
  925:      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  926:   }
  927:   if (pcode!='') {
  928:      selwrite('parent.opener.'+pcode+'();');
  929:   }
  930:   selwrite('">Save</a>&nbsp;&nbsp;');
  931: 
  932:   selwrite('<a href="javascript:');
  933:      selwrite(
  934:       'parent.opener.document.'+preturn+'_value.value='+"'';");
  935:   if (pmarker!='') {
  936:      selwrite(
  937:      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  938:   }
  939:   if (pcode!='') {
  940:      selwrite('parent.opener.'+pcode+'();');
  941:   }
  942:   selwrite('">Delete</a>&nbsp;&nbsp;');
  943:  
  944:   selwrite('<a href="javascript:');
  945: // Old code :
  946: //----------------------------------------------------------------------
  947: //  if (preturn!='') {
  948: //     selwrite('parent.opener.document.'+preturn+'_value.value='+"'';");
  949: //     selwrite('parent.opener.document.'+preturn+'_type.value='+"'';");
  950: // }
  951: //  if (pmarker!='') {
  952: //     selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';");
  953: //  }
  954: //  if (pcode!='') {
  955: //     selwrite('parent.opener.'+pcode+'();');
  956: //  }
  957: //----------------------------------------------------------------------
  958: // Just close the window to 'cancel' the operation.  There are javascript
  959: // errors in the above commented out code that I have not been able to 
  960: // track down.  I think they reside in 'parent.opener.'+pcode+'();'
  961: //
  962:   selwrite('this.parent.close();');
  963:   selwrite('">Cancel</a>'); 
  964:  
  965:   selwrite('</body></html>');
  966:   this.window.selector.document.close();
  967:   draw();
  968:   
  969: }
  970: 
  971: </script>
  972: 
  973: <frameset rows="120,*" onLoad="init();">
  974: <frame name="selector" src="empty.html">
  975: <frame name="choices" src="empty.html">
  976: </frameset>
  977: 
  978: 
  979: 
  980: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>