--- loncom/interface/lonparmset.pm 2005/11/22 02:24:50 1.269
+++ loncom/interface/lonparmset.pm 2006/05/16 20:43:57 1.306
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.269 2005/11/22 02:24:50 raeburn Exp $
+# $Id: lonparmset.pm,v 1.306 2006/05/16 20:43:57 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -63,6 +63,7 @@ use Apache::lonhomework;
use Apache::lonxml;
use Apache::lonlocal;
use Apache::lonnavmaps;
+use Apache::lonrss;
# --- Caches local to lonparmset
@@ -90,11 +91,11 @@ Inputs: $what - a parameter spec (inclu
Returns: A list, the first item is the index into the remaining list of items of parm valuse that is the active one, the list consists of parm values at the 14 possible levels
-14 - General Course
-13 - Map or Folder level in course
+14- General Course
+13- Map or Folder level in course
12- resource default
11- map default
-10 - resource level in course
+10- resource level in course
9 - General for section
8 - Map or Folder level for section
7 - resource level in section
@@ -109,25 +110,23 @@ Returns: A list, the first item is the
##################################################
sub parmval {
- my ($what,$id,$def,$uname,$udom,$csec,$cgroup)=@_;
- return &parmval_by_symb($what,&symbcache($id),$def,$uname,$udom,$csec,$cgroup);
+ my ($what,$id,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;
+ return &parmval_by_symb($what,&symbcache($id),$def,$uname,$udom,$csec,
+ $cgroup,$courseopt);
}
sub parmval_by_symb {
- my ($what,$symb,$def,$uname,$udom,$csec,$cgroup)=@_;
+ my ($what,$symb,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;
# load caches
-
&cacheparmhash();
- my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $useropt=&Apache::lonnet::get_userresdata($uname,$udom);
- my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
my $result='';
my @outpar=();
# ----------------------------------------------------- Cascading lookup scheme
my $map=(&Apache::lonnet::decode_symb($symb))[0];
+ $map = &Apache::lonnet::deversion($map);
my $symbparm=$symb.'.'.$what;
my $mapparm=$map.'___(all).'.$what;
@@ -187,7 +186,7 @@ sub parmval_by_symb {
$result=7;
}
}
-# ------------------------------------------------------ fifth, check gourse group
+# ------------------------------------------------------ fifth, check course group
if (defined($cgroup)) {
if (defined($$courseopt{$grplevel})) {
$outpar[6]=$$courseopt{$grplevel};
@@ -295,6 +294,25 @@ sub preset_defaults {
}
##################################################
+
+sub date_sanity_info {
+ my $checkdate=shift;
+ unless ($checkdate) { return ''; }
+ my $result='';
+ my $crsprefix='course.'.$env{'request.course.id'}.'.';
+ if ($env{$crsprefix.'default_enrollment_end_date'}) {
+ if ($checkdate>$env{$crsprefix.'default_enrollment_end_date'}) {
+ $result.='
'.&mt('After course enrollment end!');
+ }
+ }
+ if ($env{$crsprefix.'default_enrollment_start_date'}) {
+ if ($checkdate<$env{$crsprefix.'default_enrollment_start_date'}) {
+ $result.='
'.&mt('Before course enrollment start!');
+ }
+ }
+ return $result;
+}
+##################################################
##################################################
#
# Store a parameter by ID
@@ -310,7 +328,7 @@ sub preset_defaults {
sub storeparm {
my ($sresid,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_;
- &storeparm_by_symb(&symbcache($sresid),$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup);
+ &storeparm_by_symb(&symbcache($sresid),$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,'',$cgroup);
}
#
@@ -327,7 +345,7 @@ sub storeparm {
my %recstack;
sub storeparm_by_symb {
- my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup,$recflag)=@_;
+ my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$recflag,$cgroup)=@_;
unless ($recflag) {
# first time call
%recstack=();
@@ -370,19 +388,25 @@ sub storeparm_by_symb {
}
if ($active) {
&storeparm_by_symb($symb,$newspnam,$snum,$newvalue,&rulescache($triggered.'_type'),
- $uname,$udom,$csec,$cgroup,$recflag);
+ $uname,$udom,$csec,$recflag,$cgroup);
}
}
}
return '';
}
+sub log_parmset {
+ return &Apache::lonnet::instructor_log('parameterlog',@_);
+}
+
sub storeparm_by_symb_inner {
# ---------------------------------------------------------- Get symb, map, etc
my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_;
# ---------------------------------------------------------- Construct prefixes
$spnam=~s/\_([^\_]+)$/\.$1/;
my $map=(&Apache::lonnet::decode_symb($symb))[0];
+ $map = &Apache::lonnet::deversion($map);
+
my $symbparm=$symb.'.'.$spnam;
my $mapparm=$map.'___(all).'.$spnam;
@@ -433,9 +457,11 @@ sub storeparm_by_symb_inner {
if ($delete) {
$reply=&Apache::lonnet::del
('resourcedata',[keys(%storecontent)],$cdom,$cnum);
+ &log_parmset(\%storecontent,1);
} else {
$reply=&Apache::lonnet::cput
('resourcedata',\%storecontent,$cdom,$cnum);
+ &log_parmset(\%storecontent);
}
&Apache::lonnet::devalidatecourseresdata($cnum,$cdom);
} else {
@@ -456,9 +482,11 @@ sub storeparm_by_symb_inner {
if ($delete) {
$reply=&Apache::lonnet::del
('resourcedata',[keys(%storecontent)],$udom,$uname);
+ &log_parmset(\%storecontent,1,$uname,$udom);
} else {
$reply=&Apache::lonnet::cput
('resourcedata',\%storecontent,$udom,$uname);
+ &log_parmset(\%storecontent,0,$uname,$udom);
}
&Apache::lonnet::devalidateuserresdata($uname,$udom);
}
@@ -518,7 +546,7 @@ sub valout {
}
$result=~s/\s+$//;
} elsif (&isdateparm($type)) {
- $result = localtime($value);
+ $result = localtime($value).&date_sanity_info($value);
} else {
$result = $value;
}
@@ -557,26 +585,19 @@ sub plink {
my ($parmname)=((split(/\&/,$marker))[1]=~/\_([^\_]+)$/);
my ($hour,$min,$sec,$val)=&preset_defaults($parmname);
unless (defined($winvalue)) { $winvalue=$val; }
- return
+ return '
'. ''. - &valout($value,$type).''; + &valout($value,$type).' |
';
}
- my $grouplist = &Apache::lonnet::get_users_groups(
- $udom,$uname,$env{'request.course.id'});
- if ($grouplist) {
- my @groups = split(/:/,$grouplist);
- @groups = sort(@groups);
- $cgroup = $groups[0];
+ @usersgroups = &Apache::lonnet::get_users_groups(
+ $udom,$uname,$env{'request.course.id'});
+ if (@usersgroups > 0) {
+ unless (grep(/^\Q$cgroup\E$/,@usersgroups)) {
+ $cgroup = $usersgroups[0];
+ }
}
}
}
@@ -1464,7 +1575,7 @@ sub assessparms {
'
');
}
- &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev);
+ &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);
$r->print('
'.$message.'
'); @@ -1486,6 +1597,7 @@ sub assessparms { if ($parmlev eq 'full') { my $coursespan=$csec?8:5; + my $userspan=3; if ($cgroup ne '') { $coursespan += 3; } @@ -1494,7 +1606,10 @@ sub assessparms { $r->print(''.
"$title");
@@ -1637,7 +1756,7 @@ ENDTABLEHEADFOUR
&print_row($r,$_,\%part,\%name,\%symbp,$rid,\%default,
\%type,\%display,$defbgone,$defbgtwo,
$defbgthree,$parmlev,$uname,$udom,$csec,
- $cgroup);
+ $cgroup,\@usersgroups);
}
}
}
@@ -1811,7 +1930,7 @@ ENDMAPONE
}
if ($csec) {$r->print(&mt("Section")." $csec\n")};
- if ($cgroup) {$r->print(&mt("Group")." $csec\n")};
+ if ($cgroup) {$r->print(&mt("Group")." $cgroup\n")};
$r->print("\n");
#---------------------------------------------------------------- print table
$r->print('');
@@ -1828,7 +1947,7 @@ ENDMAPONE
$r->print("
");
} # end of $parmlev eq general
}
- $r->print('