--- loncom/interface/lonparmset.pm 2001/03/20 22:01:13 1.24 +++ loncom/interface/lonparmset.pm 2001/12/27 17:00:30 1.42 @@ -1,23 +1,56 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # +# $Id: lonparmset.pm,v 1.42 2001/12/27 17:00:30 www Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# # (Handler to resolve ambiguous file locations # # (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, # 12/08,12/12, -# 16/01/01,02/08,03/20 Gerd Kortemeyer +# 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 +# 12/19 Guy Albertelli +# 12/26,12/27 Gerd Kortemeyer +# +### package Apache::lonparmset; use strict; use Apache::lonnet; use Apache::Constants qw(:common :http REDIRECT); +use Apache::loncommon; use GDBM_File; @@ -36,6 +69,7 @@ my %keyp; my %defp; my %allkeys; +my %allmaps; my $uname; my $udom; @@ -152,21 +186,9 @@ sub plink { &valout($value,$type).''; } -# ================================================================ Main Handler +sub assessparms { -sub handler { - my $r=shift; - - if ($r->header_only) { - $r->content_type('text/html'); - $r->send_http_header; - return OK; - } - -# ----------------------------------------------------- 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=(); @@ -183,6 +205,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]; @@ -216,7 +259,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'}.'
';
}
@@ -235,9 +278,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;
@@ -247,7 +291,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;
@@ -269,20 +314,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;
@@ -323,13 +368,13 @@ sub handler {
# ---------------------------------------------------------------- Store Course
#
# Expire sheets
- &Apache::lonnet::expirespread('studentcalc');
+ &Apache::lonnet::expirespread('','','studentcalc');
if (($snum==7) || ($snum==4)) {
- &Apache::lonnet::expirespread('assesscalc',$symbp{$sresid});
+ &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});
} elsif (($snum==8) || ($snum==5)) {
- &Apache::lonnet::expirespread('assesscalc',$mapp{$sresid});
+ &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});
} else {
- &Apache::lonnet::expirespread('assesscalc');
+ &Apache::lonnet::expirespread('','','assesscalc');
}
# Store parameter
@@ -370,22 +415,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);
+ }
}
}
@@ -395,17 +440,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
-
+