version 1.95, 2025/06/28 13:55:43
|
version 1.97, 2025/06/30 20:29:06
|
Line 96 function choicestart() {
|
Line 96 function choicestart() {
|
choicewrite('}'); |
choicewrite('}'); |
choicewrite('table.LC_parmsel_table {font-size: 90%;}'); |
choicewrite('table.LC_parmsel_table {font-size: 90%;}'); |
choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}'); |
choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}'); |
|
choicewrite('fieldset.LC_grace { display:inline; }'); |
|
choicewrite('fieldset.LC_grace > legend { font-weight: normal; }'); |
choicewrite('-->'); |
choicewrite('-->'); |
choicewrite('</style>'); |
choicewrite('</style>'); |
choicewrite('</head>'); |
choicewrite('</head>'); |
Line 247 function month() {
|
Line 249 function month() {
|
} |
} |
|
|
|
|
function intminute() { |
function intminute(mins) { |
var thisminutes=cmins; |
var thisminutes; |
|
if ((typeof mins === 'number') && (!isNaN(mins))) { |
|
thisminutes=mins; |
|
} else { |
|
thisminutes=cmins; |
|
} |
var i; |
var i; |
var result = ''; |
var result = ''; |
result += '<select name="minutes" onchange="parent.intcalc();">'; |
var funcname = ''; |
|
if (pscat == 'grace') { |
|
funcname = 'parent.gracestringeval()'; |
|
} else { |
|
funcname = 'parent.intcalc()'; |
|
} |
|
result += '<select name="minutes" onchange="'+funcname+';">'; |
for (i=0;i<=59;i++) { |
for (i=0;i<=59;i++) { |
result += '<option value="'+i+'"'; |
result += '<option value="'+i+'"'; |
if (i==thisminutes) { |
if (i==thisminutes) { |
Line 263 function intminute() {
|
Line 276 function intminute() {
|
return result; |
return result; |
} |
} |
|
|
function inthour() { |
function inthour(hours) { |
var thishours=chours; |
var thishours; |
|
if ((typeof hours === 'number') && (!isNaN(hours))) { |
|
thishours=hours; |
|
} else { |
|
thishours=chours; |
|
} |
var i; |
var i; |
var result = ''; |
var result = ''; |
result += '<select name="hours" onchange="parent.intcalc();">'; |
var funcname = ''; |
|
if (pscat == 'grace') { |
|
funcname = 'parent.gracestringeval()'; |
|
} else { |
|
funcname = 'parent.intcalc()'; |
|
} |
|
result += '<select name="hours" onchange="'+funcname+';">'; |
for (i=0;i<=23;i++) { |
for (i=0;i<=23;i++) { |
result += '<option value="'+i+'"'; |
result += '<option value="'+i+'"'; |
if (i==thishours) { |
if (i==thishours) { |
Line 279 function inthour() {
|
Line 303 function inthour() {
|
return result; |
return result; |
} |
} |
|
|
function intsecond() { |
function intsecond(secs) { |
var thisseconds=csecs; |
var thisseconds; |
|
if ((typeof secs === 'number') && (!isNaN(secs))) { |
|
thisseconds=secs; |
|
} else { |
|
thisseconds=csecs; |
|
} |
var i; |
var i; |
var result = ''; |
var result = ''; |
result += '<select name="seconds" onchange="parent.intcalc();">'; |
var funcname = ''; |
|
if (pscat == 'grace') { |
|
funcname = 'parent.gracestringeval()'; |
|
} else { |
|
funcname = 'parent.intcalc()'; |
|
} |
|
result += '<select name="seconds" onchange="'+funcname+';">'; |
for (i=0;i<=59;i++) { |
for (i=0;i<=59;i++) { |
result += '<option value="'+i+'"'; |
result += '<option value="'+i+'"'; |
if (i==thisseconds) { |
if (i==thisseconds) { |
Line 293 function intsecond() {
|
Line 328 function intsecond() {
|
} |
} |
result += '</select>'; |
result += '</select>'; |
return result; |
return result; |
} |
} |
|
|
|
function intweek(weeks) { |
|
var thisweek; |
|
if ((typeof weeks === 'number') && (!isNaN(weeks))) { |
|
thisweek=weeks; |
|
} |
|
var i; |
|
var result =''; |
|
var funcname = ''; |
|
if (pscat == 'grace') { |
|
funcname = 'parent.gracestringeval()'; |
|
} |
|
result += '<select name="weeks" onchange="'+funcname+';">'; |
|
for (i=0;i<=52;i++) { |
|
result += '<option value="'+i+'"'; |
|
if (i==thisweek) { |
|
result += ' selected="selected"'; |
|
} |
|
result += '>'+i+'</option>'; |
|
} |
|
result += '</select>'; |
|
return result; |
|
} |
|
|
function intday() { |
function intday(days) { |
var thisdate=cdays; |
var thisdate; |
|
var maxallowed; |
|
if ((typeof days === 'number') && (!isNaN(days))) { |
|
thisdate=days; |
|
} else { |
|
thisdate=cdays; |
|
} |
var i; |
var i; |
var result =''; |
var result =''; |
result += '<select name="date" onchange="parent.intcalc();">'; |
var funcname = ''; |
for (i=0;i<=31;i++) { |
if (pscat == 'grace') { |
|
funcname = 'parent.gracestringeval()'; |
|
maxallowed = 6; |
|
} else { |
|
funcname = 'parent.intcalc()'; |
|
maxallowed = 31; |
|
} |
|
result += '<select name="date" onchange="'+funcname+';">'; |
|
for (i=0;i<=maxallowed;i++) { |
result += '<option value="'+i+'"'; |
result += '<option value="'+i+'"'; |
if (i==thisdate) { |
if (i==thisdate) { |
result += ' selected="selected"'; |
result += ' selected="selected"'; |
Line 663 function removeIpRule(caller,iptype) {
|
Line 734 function removeIpRule(caller,iptype) {
|
return; |
return; |
} |
} |
|
|
|
function gracestringeval() { |
|
var items = choices.document.getElementsByName('setgrace'); |
|
if (items.length) { |
|
if (items.length > 0) { |
|
svalue = ''; |
|
for (var i=0; i<items.length; i++) { |
|
var graceDiv = items[i].closest('div'); |
|
var timeSels = graceDiv.getElementsByTagName("select"); |
|
var total = 0; |
|
if (timeSels.length) { |
|
for (var j=0; j<timeSels.length; j++) { |
|
var sname = timeSels[j].getAttribute('name'); |
|
var poss = parseInt(timeSels[j].options[timeSels[j].selectedIndex].value); |
|
if (sname == 'weeks') { |
|
if ((poss > 0) && (poss <= 52)) { |
|
total += (poss * 604800); |
|
} |
|
} else if (sname == 'date') { |
|
if ((poss > 0) && (poss < 7)) { |
|
total += (poss * 86400); |
|
} |
|
} else if (sname == 'hours') { |
|
if ((poss > 0) && (poss < 24)) { |
|
total += (poss * 3600); |
|
} |
|
} else if (sname == 'minutes') { |
|
if ((poss > 0) && (poss < 60)) { |
|
total += (poss * 60); |
|
} |
|
} |
|
} |
|
} |
|
var inputElems = graceDiv.getElementsByTagName("input"); |
|
var frac = ''; |
|
var grad = ''; |
|
if (inputElems.length) { |
|
for (var j=0; j<inputElems.length; j++) { |
|
var iname = inputElems[j].getAttribute('name'); |
|
if (iname == 'frac') { |
|
var ival = inputElems[j].value; |
|
ival.trim(); |
|
var poss = parseFloat(ival); |
|
if ((typeof poss === 'number') && (!isNaN(poss))) { |
|
if ((poss => 0) && (poss <= 1)) { |
|
frac = poss; |
|
} |
|
} |
|
} else if (iname == 'grad') { |
|
if (inputElems[j].checked) { |
|
grad = 1; |
|
} else { |
|
grad = 0; |
|
} |
|
} |
|
} |
|
} |
|
if (svalue === '') { |
|
svalue = total+':'+frac+':'+grad; |
|
} else { |
|
svalue += ','+total+':'+frac+':'+grad; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
function graceitem(current) { |
|
var gweeks = 0; |
|
var gdays = 0; |
|
var ghours = 0; |
|
var gmins = 0; |
|
var gsecs = 0; |
|
var gfrac = ''; |
|
var checktext = ''; |
|
var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/; |
|
if ((current != '') && (current != 'undefined') && (patternGrace.test(current))) { |
|
var graceItems = new Array; |
|
graceItems = current.split(':'); |
|
gsecs=graceItems[0]; |
|
gweeks=Math.floor(gsecs/604800); |
|
gsecs -= gweeks*604800; |
|
gdays=Math.floor(gsecs/86400); |
|
gsecs -= gdays*86400; |
|
ghours=Math.floor(gsecs/3600); |
|
gsecs -= ghours*3600; |
|
gmins=Math.floor(gsecs/60); |
|
gsecs -= gmins*60; |
|
gfrac = graceItems[1]; |
|
if (graceItems[2] == 1) { |
|
checktext = ' checked="checked"'; |
|
} |
|
} |
|
return '<input type="hidden" name="setgrace" value="" />'+ |
|
'<fieldset class="LC_grace"><legend>Time past due</legend>'+ |
|
'<span style="white-space:nowrap">'+intweek(gweeks)+' weeks </span>'+ |
|
'<span style="white-space:nowrap">'+intday(gdays)+' days </span><br />'+ |
|
'<span style="white-space:nowrap">'+inthour(ghours)+' hours </span>'+ |
|
'<span style="white-space:nowrap">'+intminute(gmins)+' mins </span>'+ |
|
'</fieldset><fieldset class="LC_grace"><legend>Partial Credit</legend>'+ |
|
'<input type="text" size="3" name="frac" value="'+gfrac+'" onblur="parent.gracestringeval();" />'+ |
|
' <label><input type="checkbox" value="1" name="grad"'+checktext+' onclick="parent.gracestringeval();" />'+ |
|
'gradual</label></fieldset>'+ |
|
'<a href="#" onclick="parent.removeGrace(this);return false;">Remove</a><hr />'; |
|
} |
|
|
|
function addGrace() { |
|
var frame = window.frames["choices"]; |
|
if (frame.document.getElementById('LC_string_grace_inner')) { |
|
var innerDiv = frame.document.getElementById('LC_string_grace_inner'); |
|
var graceDiv = frame.document.createElement('div'); |
|
graceDiv.innerHTML = graceitem(); |
|
innerDiv.appendChild(graceDiv); |
|
} |
|
return; |
|
} |
|
|
|
function removeGrace(caller) { |
|
var frame = window.frames["choices"]; |
|
if (frame.document.getElementById('LC_string_grace_inner')) { |
|
var innerDiv = frame.document.getElementById('LC_string_grace_inner'); |
|
var divToRemove = caller.closest('div'); |
|
if (divToRemove) { |
|
innerDiv.removeChild(divToRemove); |
|
gracestringeval(); |
|
} |
|
} |
|
return; |
|
} |
|
|
function radiostringeval(newval) { |
function radiostringeval(newval) { |
svalue=newval; |
svalue=newval; |
draw(); |
draw(); |
Line 754 function draw() {
|
Line 954 function draw() {
|
if (ptype=='string') { |
if (ptype=='string') { |
if (pscat == 'ip') { |
if (pscat == 'ip') { |
choicewrite(' action="javascript:ipstringeval();"'); |
choicewrite(' action="javascript:ipstringeval();"'); |
|
} else if (pscat == 'grace') { |
|
choicewrite(' action="javascript:gracestringeval();"'); |
} else { |
} else { |
choicewrite(' action="javascript:stringeval();"'); |
choicewrite(' action="javascript:stringeval();"'); |
} |
} |
Line 1517 function draw() {
|
Line 1719 function draw() {
|
choicewrite('</span></div>'); |
choicewrite('</span></div>'); |
choicewrite('</td></tr></table>'); |
choicewrite('</td></tr></table>'); |
} |
} |
|
if (pscat=='grace') { |
|
tablestart('Grace period after due date'); |
|
choicewrite('<tr><td colspan="3" valign="top">'+ |
|
'<div id="LC_string_grace_wrap">'+ |
|
'<div id="LC_string_grace_inner">'); |
|
if ((svalue != '') && (typeof(svalue) != 'undefined')) { |
|
var patternComma = /,/; |
|
var patternGrace = /^\d+:(0|1).?\d*:(0|1)$/; |
|
var current = new Array; |
|
if (patternComma.test(svalue)) { |
|
current = svalue.split(','); |
|
} else { |
|
current = [svalue]; |
|
} |
|
for (var i=0; i<current.length; i++) { |
|
if (patternGrace.test(current[i])) { |
|
choicewrite('<div>'); |
|
choicewrite(graceitem(current[i])); |
|
choicewrite('</div>'); |
|
} |
|
} |
|
} else { |
|
choicewrite('<div>'); |
|
choicewrite(graceitem()); |
|
choicewrite('</div>'); |
|
} |
|
choicewrite('</div><button onclick="parent.addGrace();return false;">Add another?</button>'); |
|
choicewrite('</div></td></tr></table>'); |
|
} |
} |
} |
|
|
if (ptype=='color') { |
if (ptype=='color') { |
Line 1846 function init() {
|
Line 2077 function init() {
|
else if (pscat == 'useslots') { sopt('useslots','Slots control access'); } |
else if (pscat == 'useslots') { sopt('useslots','Slots control access'); } |
else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); } |
else if (pscat == 'deeplink') { sopt('deeplink','Deep-linked items'); } |
else if (pscat == 'tex') { sopt('texdisplay','TeX File Display'); } |
else if (pscat == 'tex') { sopt('texdisplay','TeX File Display'); } |
|
else if (pscat == 'grace') { sopt('grace','Grace period'); } |
else { pscat = 'any'; } |
else { pscat = 'any'; } |
if (pscat != 'deeplink') { sopt('any','String Value'); } |
if (pscat != 'deeplink') { sopt('any','String Value'); } |
} |
} |
Line 1915 function init() {
|
Line 2147 function init() {
|
document.getElementById("LCparampopup").rows="60,*"; |
document.getElementById("LCparampopup").rows="60,*"; |
} |
} |
} |
} |
|
if (pscat == 'grace') { |
|
if (psmap==1) { |
|
document.getElementById("LCparampopup").rows="105,*"; |
|
} else { |
|
document.getElementById("LCparampopup").rows="65,*"; |
|
} |
|
} |
draw(); |
draw(); |
|
|
} |
} |