version 1.4, 2000/11/22 12:16:03
|
version 1.8, 2000/11/24 15:27:27
|
Line 9
|
Line 9
|
# |
# |
# 10/11,10/12,10/16 Gerd Kortemeyer) |
# 10/11,10/12,10/16 Gerd Kortemeyer) |
# |
# |
# 11/20,11/21,11/22 Gerd Kortemeyer |
# 11/20,11/21,11/22,11/23,11/24 Gerd Kortemeyer |
|
|
package Apache::lonparmset; |
package Apache::lonparmset; |
|
|
Line 25 my %useropt;
|
Line 25 my %useropt;
|
my %bighash; |
my %bighash; |
my %parmhash; |
my %parmhash; |
|
|
|
my @outpar; |
|
|
my @ids; |
my @ids; |
my %symbp; |
my %symbp; |
my %typep; |
my %typep; |
Line 41 my $fcat;
|
Line 43 my $fcat;
|
|
|
sub parmval { |
sub parmval { |
my ($what,$id)=@_; |
my ($what,$id)=@_; |
|
my $result=''; |
# ----------------------------------------------------- Cascading lookup scheme |
# ----------------------------------------------------- Cascading lookup scheme |
my $symbparm=$symbp{$id}.'.'.$what; |
my $symbparm=$symbp{$id}.'.'.$what; |
my $reslevel= |
my $reslevel= |
Line 52 sub parmval {
|
Line 55 sub parmval {
|
$ENV{'request.course.id'}.'.'.$what; |
$ENV{'request.course.id'}.'.'.$what; |
|
|
# ----------------------------------------------------------- first, check user |
# ----------------------------------------------------------- first, check user |
|
|
if ($uname) { |
if ($uname) { |
if ($useropt{$reslevel}) { return $useropt{$reslevel}; } |
if ($useropt{$reslevel}) { $result=$useropt{$reslevel}; |
if ($useropt{$seclevel}) { return $useropt{$seclevel}; } |
$outpar[1]=$result; } |
if ($useropt{$courselevel}) { return $useropt{$courselevel}; } |
if ($useropt{$seclevel}) { $result=$useropt{$seclevel}; |
|
$outpar[2]=$result; } |
|
if ($useropt{$courselevel}) { $result=$useropt{$courselevel}; |
|
$outpar[3]=$result; } |
} |
} |
|
|
# -------------------------------------------------------- second, check course |
# -------------------------------------------------------- second, check course |
|
|
if ($courseopt{$reslevel}) { return $courseopt{$reslevel}; } |
if ($courseopt{$reslevel}) { $result=$courseopt{$reslevel}; |
if ($courseopt{$seclevel}) { return $courseopt{$seclevel}; } |
$outpar[4]=$result; } |
if ($courseopt{$courselevel}) { return $courseopt{$courselevel}; } |
if ($courseopt{$seclevel}) { $result=$courseopt{$seclevel}; |
|
$outpar[5]=$result; } |
|
if ($courseopt{$courselevel}) { $result=$courseopt{$courselevel}; |
|
$outpar[6]=$result; } |
|
|
# ------------------------------------------------------ third, check map parms |
# ------------------------------------------------------ third, check map parms |
|
|
my $thisparm=$parmhash{$symbparm}; |
my $thisparm=$parmhash{$symbparm}; |
if ($thisparm) { return $thisparm; } |
if ($thisparm) { $result=$thisparm; |
|
$outpar[7]=$result; } |
|
|
# --------------------------------------------- last, look in resource metadata |
# --------------------------------------------- last, look in resource metadata |
|
|
Line 81 sub parmval {
|
Line 90 sub parmval {
|
} |
} |
if (join('',@content)=~ |
if (join('',@content)=~ |
/\<$what[^\>]*\>([^\<]*)\<\/$what\>/) { |
/\<$what[^\>]*\>([^\<]*)\<\/$what\>/) { |
return $1; |
$result=$1; |
|
$outpar[8]=$result; |
} |
} |
} |
} |
return ''; |
return $result; |
} |
} |
|
|
# ---------------------------------------------------------------- Sort routine |
# ---------------------------------------------------------------- Sort routine |
Line 97 sub bycat {
|
Line 107 sub bycat {
|
} |
} |
} |
} |
|
|
|
# -------------------------------------------------------- Produces link anchor |
|
|
|
sub plink { |
|
my ($type,$dis,$value,$marker,$return,$call)=@_; |
|
return '<a href="javascript:pjump('."'".$type."','".$dis."','".$value."','" |
|
.$marker."','".$return."','".$call."'".');">'. |
|
($value?(($type=~/^date/)?localtime($value):$value):' ').'</a>'; |
|
} |
|
|
# ================================================================ Main Handler |
# ================================================================ Main Handler |
|
|
sub handler { |
sub handler { |
Line 132 sub handler {
|
Line 151 sub handler {
|
} |
} |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
$message= |
$message= |
"<h3><font color=red>Unknown User $uname at Domain $udom</font></h3>"; |
"<h3><font color=red>Unknown user '$uname' at domain '$udom'</font></h3>"; |
$uname=''; |
$uname=''; |
} |
} |
|
|
Line 190 sub handler {
|
Line 209 sub handler {
|
# ------------------------------------------------------------------ Start page |
# ------------------------------------------------------------------ Start page |
$r->content_type('text/html'); |
$r->content_type('text/html'); |
$r->send_http_header; |
$r->send_http_header; |
$r->print( |
$r->print(<<ENDHEAD); |
'<html><body bgcolor="#FFFFFF"><h1>Set Assessment Parameters</h1>'); |
<html> |
$r->print("<h2>Course: $ENV{'course.'. |
<head> |
$ENV{'request.course.id'}.'.description'}</h2>"); |
<title>LON-CAPA Assessment Parameters</title> |
if ($csec) { |
<script> |
$r->print("<h3>Section/Group: $csec</h3>"); |
function pclose() { |
} |
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", |
if ($uname) { |
"height=350,width=350,scrollbars=no,menubar=no"); |
$r->print("<h3>For User $uname at Domain $udom"); |
parmwin.close(); |
} |
} |
|
|
|
function pjump(type,dis,value,marker,ret,call) { |
|
parmwin=window.open("/adm/rat/parameter.html?type="+escape(type) |
|
+"&value="+escape(value)+"&marker="+escape(marker) |
|
+"&return="+escape(ret) |
|
+"&call="+escape(call)+"&name="+escape(dis),"LONCAPAparms", |
|
"height=350,width=350,scrollbars=no,menubar=no"); |
|
|
|
} |
|
</script> |
|
</head> |
|
<body bgcolor="#FFFFFF" onUnload="pclose()"> |
|
<h1>Set Assessment Parameters</h1> |
|
<form method="post" action="/adm/parmset" name="parmform"> |
|
<h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2> |
|
<b> |
|
Section/Group: |
|
<input type="text" value="$csec" size="6" name="csec" |
|
onBlur="this.form.submit();"> |
|
<br> |
|
For User |
|
<input type="text" value="$uname" size="12" name="uname" |
|
onBlur="if (this.form.udom.value) { this.form.submit(); }"> |
|
at Domain |
|
<input type="text" value="$udom" size="6" name="udom" |
|
onBlur="if (this.form.uname.value) { this.form.submit(); }"> |
|
</b> |
|
ENDHEAD |
|
|
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
$r->print($message); |
$r->print($message); |
} |
} |
$r->print('<table border=2>'); |
$r->print('<p>Sort list by '); |
|
$r->print('<select name="fcat" onChange="this.form.submit();">'); |
|
my $k; |
|
my @sopt=('map','Map','name','Problem Name','deadline','Deadline'); |
|
for ($k=0;$k<$#sopt;$k=$k+2) { |
|
$r->print('<option value="'.$sopt[$k].'"'); |
|
if ($fcat eq $sopt[$k]) { $r->print(' selected'); } |
|
$r->print('>'.$sopt[$k+1].'</option>'); |
|
} |
|
$r->print('</select>'); |
|
$r->print("\n<p><table border=2>\n<tr>"); |
map { |
map { |
$r->print('<tr>'); |
|
# ------------------------------------------------------ Entry for one resource |
# ------------------------------------------------------ Entry for one resource |
|
@outpar=(); |
|
my $rid=$_; |
|
my $thistitle=''; |
|
my @part=(0,1,1); |
|
my @name=('deadline','sig','tol'); |
|
my @display=('Deadline','Significant Figures','Tolerance'); |
|
my @type=('date','int','tolerance'); |
my %metadata=&Apache::lonmeta::unpackagemeta( |
my %metadata=&Apache::lonmeta::unpackagemeta( |
&Apache::lonnet::getfile('/home/httpd/html/'.$bighash{'src_'.$_}.'.meta'),1); |
&Apache::lonnet::getfile('/home/httpd/html/'.$bighash{'src_'.$rid}.'.meta'),1); |
map { |
map { |
if ($_=~/^parameter\_(\d+)\_(\w+)\_\_dis\_\_(.+)$/) { |
if ($_=~/^parameter\_(\d+)\_(\w+)$/) { |
my $part=$1; |
$part[$#part+1]=$1; |
my $name=$2; |
$name[$#name+1]=$2; |
my $display=$3; |
($type[$#type+1],$display[$#display+1])= |
my $type=$metadata{$_}; |
split(/\_\_dis\_\_/,$metadata{$_}); |
|
unless ($display[$#display]) { |
|
$display[$#display]=$name[$#name]; |
|
} |
|
} |
|
if ($_ eq 'title') { |
|
$thistitle=$metadata{$_}; |
} |
} |
} keys %metadata; |
} keys %metadata; |
|
my $totalparms=$#name+1; |
|
$r->print('<td rowspan='.$totalparms.'><tt><font size=-1>'. |
|
join(' / ',split(/\//,$bighash{'src_'.$rid})).'</font></tt><p><b>'. |
|
$bighash{'title_'.$rid}); |
|
if ($thistitle) { |
|
$r->print(' ('.$thistitle.')'); |
|
} |
|
$r->print('</b></td>'); |
|
my $i; |
|
for ($i=0;$i<$totalparms;$i++) { |
|
$r->print("<td>$part[$i]</td><td>$display[$i]</td>"); |
|
my $j; |
|
for ($j=1;$j<=7;$j++) { |
|
$r->print('<td>'.&plink($type[$i],$display[$i],$outpar[$j]).'</td>');} |
|
$r->print("</tr>\n<tr>"); |
|
} |
# -------------------------------------------------- End entry for one resource |
# -------------------------------------------------- End entry for one resource |
$r->print('</tr>'); |
|
} @ids; |
} @ids; |
$r->print('</table></body></html>'); |
$r->print('</table></form></body></html>'); |
untie(%bighash); |
untie(%bighash); |
untie(%parmhash); |
untie(%parmhash); |
} |
} |
} else { |
} else { |
# ----------------------------- Not in a course, or not allowed to modify parms |
# ----------------------------- Not in a course, or not allowed to modify parms |
$ENV{'user.error.msg'}= |
$ENV{'user.error.msg'}= |
"/adm/flip:opa:0:0:Cannot modify assessment parameters"; |
"/adm/parmset:opa:0:0:Cannot modify assessment parameters"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
return OK; |
return OK; |