--- loncom/interface/lonparmset.pm 2000/11/20 22:56:01 1.1
+++ loncom/interface/lonparmset.pm 2002/04/10 15:30:45 1.50
@@ -1,64 +1,940 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
+# $Id: lonparmset.pm,v 1.50 2002/04/10 15:30:45 matthew 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 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
+# 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;
+
+my %courseopt;
+my %useropt;
+my %parmhash;
+
+my @ids;
+my %symbp;
+my %mapp;
+my %typep;
+my %keyp;
+
+my $uname;
+my $udom;
+my $uhome;
+my $csec;
+
+# -------------------------------------------- Figure out a cascading parameter
+
+sub parmval {
+ my ($what,$id,$def)=@_;
+ my $result='';
+ my @outpar=();
+# ----------------------------------------------------- Cascading lookup scheme
+
+ my $symbparm=$symbp{$id}.'.'.$what;
+ my $mapparm=$mapp{$id}.'___(all).'.$what;
+
+ my $seclevel=$ENV{'request.course.id'}.'.['.$csec.'].'.$what;
+ my $seclevelr=$ENV{'request.course.id'}.'.['.$csec.'].'.$symbparm;
+ my $seclevelm=$ENV{'request.course.id'}.'.['.$csec.'].'.$mapparm;
+
+ my $courselevel=$ENV{'request.course.id'}.'.'.$what;
+ my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
+ my $courselevelm=$ENV{'request.course.id'}.'.'.$mapparm;
+
+# -------------------------------------------------------- first, check default
+
+ if ($def) { $outpar[11]=$def; $result=11; }
+
+# ----------------------------------------------------- second, check map parms
+
+ my $thisparm=$parmhash{$symbparm};
+ if ($thisparm) { $outpar[10]=$thisparm; $result=10; }
+
+# --------------------------------------------------------- third, check course
+
+ if ($courseopt{$courselevel}) {
+ $outpar[9]=$courseopt{$courselevel};
+ $result=9;
+ }
+
+ if ($courseopt{$courselevelm}) {
+ $outpar[8]=$courseopt{$courselevelm};
+ $result=8;
+ }
+
+ if ($courseopt{$courselevelr}) {
+ $outpar[7]=$courseopt{$courselevelr};
+ $result=7;
+ }
+
+ if ($csec) {
+ if ($courseopt{$seclevel}) {
+ $outpar[6]=$courseopt{$seclevel};
+ $result=6;
+ }
+ if ($courseopt{$seclevelm}) {
+ $outpar[5]=$courseopt{$seclevelm};
+ $result=5;
+ }
+
+ if ($courseopt{$seclevelr}) {
+ $outpar[4]=$courseopt{$seclevelr};
+ $result=4;
+ }
+ }
+
+# ---------------------------------------------------------- fourth, check user
+
+ if ($uname) {
+ if ($useropt{$courselevel}) {
+ $outpar[3]=$useropt{$courselevel};
+ $result=3;
+ }
+
+ if ($useropt{$courselevelm}) {
+ $outpar[2]=$useropt{$courselevelm};
+ $result=2;
+ }
+
+ if ($useropt{$courselevelr}) {
+ $outpar[1]=$useropt{$courselevelr};
+ $result=1;
+ }
+ }
+
+ return ($result,@outpar);
+}
+
+# ------------------------------------------------------------ Output for value
+
+sub valout {
+ my ($value,$type)=@_;
+ return ($value?(($type=~/^date/)?localtime($value):$value):' ');
+}
+
+# -------------------------------------------------------- Produces link anchor
+
+sub plink {
+ my ($type,$dis,$value,$marker,$return,$call)=@_;
+ my $winvalue=$value;
+ unless ($winvalue) {
+ if ($type=~/^date/) {
+ $winvalue=$ENV{'form.recent_'.$type};
+ } else {
+ $winvalue=$ENV{'form.recent_'.(split(/\_/,$type))[0]};
+ }
+ }
+ return
+ ''.
+ &valout($value,$type).'';
+}
+
+
+sub startpage {
+ my ($r,$id,$udom,$csec,$uname)=@_;
+ $r->content_type('text/html');
+ $r->send_http_header;
+ $r->print(<
+
+LON-CAPA Course Parameters
+
+
+
+