--- loncom/interface/lonparmset.pm 2000/11/28 15:39:52 1.18 +++ loncom/interface/lonparmset.pm 2001/12/18 21:19:55 1.39 @@ -5,17 +5,26 @@ # # (TeX Content Handler # +# YEAR=2000 # 05/29/00,05/30,10/11 Gerd Kortemeyer) # # 10/11,10/12,10/16 Gerd Kortemeyer) # -# 11/20,11/21,11/22,11/23,11/24,11/25,11/27,11/28 Gerd Kortemeyer +# 11/20,11/21,11/22,11/23,11/24,11/25,11/27,11/28, +# 12/08,12/12, +# YEAR=2001 +# 16/01/01,02/08,03/20,03/23,03/24,03/26,05/09, +# 07/05,07/06,08/08,08/09,09/01,09/21 Gerd Kortemeyer +# 12/17 Scott Harrison +# +### package Apache::lonparmset; use strict; use Apache::lonnet; use Apache::Constants qw(:common :http REDIRECT); +use Apache::loncommon; use GDBM_File; @@ -34,6 +43,7 @@ my %keyp; my %defp; my %allkeys; +my %allmaps; my $uname; my $udom; @@ -136,26 +146,23 @@ sub valout { sub plink { my ($type,$dis,$value,$marker,$return,$call)=@_; - return ''. - &valout($value,$type).''; + &valout($value,$type).''; } -# ================================================================ Main Handler - -sub handler { - my $r=shift; - - if ($r->header_only) { - $r->content_type('text/html'); - $r->send_http_header; - return OK; - } +sub assessparms { -# ----------------------------------------------------- Needs to be in a course - - if (($ENV{'request.course.fn'}) && - (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) { + my $r=shift; # -------------------------------------------------------- Variable declaration %courseopt=(); @@ -172,6 +179,27 @@ sub handler { $udom=$ENV{'form.udom'}; unless ($udom) { $udom=$r->dir_config('lonDefDomain'); } + my $pscat=$ENV{'form.pscat'}; + my $pschp=$ENV{'form.pschp'}; + my $pssymb=''; + +# ----------------------------------------------- Was this started from grades? + + if (($ENV{'form.command'} eq 'set') && ($ENV{'form.url'}) + && (!$ENV{'form.dis'})) { + my $url=$ENV{'form.url'}; + $url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; + $pssymb=&Apache::lonnet::symbread($url); + $pscat='all'; + $pschp=''; + } elsif ($ENV{'form.symb'}) { + $pssymb=$ENV{'form.symb'}; + $pscat='all'; + $pschp=''; + } else { + $ENV{'form.url'}=''; + } + my $id=$ENV{'form.id'}; if (($id) && ($udom)) { $uname=(&Apache::lonnet::idget($udom,$id))[1]; @@ -205,7 +233,7 @@ sub handler { my %name=&Apache::lonnet::userenvironment($udom,$uname, ('firstname','middlename','lastname','generation','id')); $message="\n
\nFull Name: ".
- $name{'firstname'}.' '.$name{'middlename'}
+ $name{'firstname'}.' '.$name{'middlename'}.' '
.$name{'lastname'}.' '.$name{'generation'}.
"
\nID: ".$name{'id'}.'
';
}
@@ -224,9 +252,10 @@ sub handler {
$ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) {
# --------------------------------------------------------- Get all assessments
- %allkeys=();
- %defp=();
- map {
+ undef %allkeys;
+ undef %allmaps;
+ undef %defp;
+ foreach (keys %bighash) {
if ($_=~/^src\_(\d+)\.(\d+)$/) {
my $mapid=$1;
my $resid=$2;
@@ -236,7 +265,8 @@ sub handler {
$ids[$#ids+1]=$id;
$typep{$id}=$1;
$keyp{$id}='';
- map {
+ foreach (split(/\,/,
+ &Apache::lonnet::metadata($srcf,'keys'))) {
if ($_=~/^parameter\_(.*)/) {
my $key=$_;
my $allkey=$1;
@@ -250,7 +280,7 @@ sub handler {
$allkeys{$allkey}=$display;
if ($allkey eq $fcat) {
$defp{$id}=
- &Apache::lonnet::metadata($srcf,$key.'.default');
+ &Apache::lonnet::metadata($srcf,$key);
}
if ($keyp{$id}) {
$keyp{$id}.=','.$key;
@@ -258,20 +288,20 @@ sub handler {
$keyp{$id}=$key;
}
}
- } split(/\,/,
- &Apache::lonnet::metadata($srcf,'keys'));
+ }
$mapp{$id}=
&Apache::lonnet::declutter($bighash{'map_id_'.$mapid});
+ $allmaps{$mapid}=$mapp{$id};
$symbp{$id}=$mapp{$id}.
'___'.$resid.'___'.
&Apache::lonnet::declutter($srcf);
}
}
- } keys %bighash;
+ }
# ---------------------------------------------------------- Anything to store?
if ($ENV{'form.pres_marker'}) {
my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'});
- $spnam=~s/\_/\./;
+ $spnam=~s/\_([^\_]+)$/\.$1/;
# ---------------------------------------------------------- Construct prefixes
my $symbparm=$symbp{$sresid}.'.'.$spnam;
@@ -310,6 +340,18 @@ sub handler {
my $reply='';
if ($snum>3) {
# ---------------------------------------------------------------- Store Course
+#
+# Expire sheets
+ &Apache::lonnet::expirespread('','','studentcalc');
+ if (($snum==7) || ($snum==4)) {
+ &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});
+ } elsif (($snum==8) || ($snum==5)) {
+ &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});
+ } else {
+ &Apache::lonnet::expirespread('','','assesscalc');
+ }
+
+# Store parameter
$reply=&Apache::lonnet::critical('put:'.
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata:'.
@@ -317,6 +359,20 @@ sub handler {
$ENV{'course.'.$ENV{'request.course.id'}.'.home'});
} else {
# ------------------------------------------------------------------ Store User
+#
+# Expire sheets
+ &Apache::lonnet::expirespread($uname,$udom,'studentcalc');
+ if ($snum==1) {
+ &Apache::lonnet::expirespread
+ ($uname,$udom,'assesscalc',$symbp{$sresid});
+ } elsif ($snum==2) {
+ &Apache::lonnet::expirespread
+ ($uname,$udom,'assesscalc',$mapp{$sresid});
+ } else {
+ &Apache::lonnet::expirespread($uname,$udom,'assesscalc');
+ }
+
+# Store parameter
$reply=
&Apache::lonnet::critical('put:'.$udom.':'.$uname.':resourcedata:'.
$storecontent,$uhome);
@@ -333,22 +389,22 @@ sub handler {
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata',
$ENV{'course.'.$ENV{'request.course.id'}.'.home'});
if ($reply!~/^error\:/) {
- map {
+ foreach (split(/\&/,$reply)) {
my ($name,$value)=split(/\=/,$_);
$courseopt{&Apache::lonnet::unescape($name)}=
&Apache::lonnet::unescape($value);
- } split(/\&/,$reply);
+ }
}
# --------------------------------------------------- Get userdata (if present)
if ($uname) {
my $reply=
&Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome);
if ($reply!~/^error\:/) {
- map {
+ foreach (split(/\&/,$reply)) {
my ($name,$value)=split(/\=/,$_);
$useropt{&Apache::lonnet::unescape($name)}=
&Apache::lonnet::unescape($value);
- } split(/\&/,$reply);
+ }
}
}
@@ -358,17 +414,18 @@ sub handler {
if ($fcat eq '') {
$a<=>$b;
} else {
- $outpar[&parmval($fcat,$a,$defp{$a})]<=>
- $outpar[&parmval($fcat,$b,$defp{$b})];
+ 1*$outpar[&parmval($fcat,$a,$defp{$a})]<=>
+ 1*$outpar[&parmval($fcat,$b,$defp{$b})];
}
- } @ids;
+ } @ids;
+
# ------------------------------------------------------------------ Start page
$r->content_type('text/html');
$r->send_http_header;
$r->print(<Set Assessment Parameters
-
+