File:  [LON-CAPA] / rat / client / parameter.html
Revision 1.59: download - view: text, annotated - select for diffs
Sat Dec 18 23:18:50 2010 UTC (13 years, 5 months ago) by raeburn
Branches: MAIN
CVS tags: version_2_10_X, version_2_10_0_RC2, version_2_10_0, HEAD
- New Question Type - randomizetry
   - New Variation displayed after N tries (default N=1).
- New Parameter - randomizeontries (sets N for randomizetry).

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

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