--- loncom/interface/lonparmset.pm 2005/06/03 19:16:25 1.205
+++ loncom/interface/lonparmset.pm 2005/06/04 15:26:13 1.207
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.205 2005/06/03 19:16:25 www Exp $
+# $Id: lonparmset.pm,v 1.207 2005/06/04 15:26:13 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1805,7 +1805,8 @@ $output
ENDenv
}
##################################################
-
+# Overview mode
+##################################################
my $tableopen;
sub tablestart {
@@ -1827,6 +1828,35 @@ sub tableend {
}
}
+sub readdata {
+ my ($crs,$dom)=@_;
+# Read coursedata
+ my $resourcedata=&Apache::lonnet::get_courseresdata($crs,$dom);
+# Read userdata
+
+ my $classlist=&Apache::loncoursedata::get_classlist();
+ foreach (keys %$classlist) {
+ # the following undefs are for 'domain', and 'username' respectively.
+ if ($_=~/^(\w+)\:(\w+)$/) {
+ my ($tuname,$tudom)=($1,$2);
+ my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom);
+ foreach my $userkey (keys %{$useropt}) {
+ if ($userkey=~/^$env{'request.course.id'}/) {
+ my $newkey=$userkey;
+ $newkey=~s/^($env{'request.course.id'}\.)/$1\[useropt\:$tuname\:$tudom\]\./;
+ $$resourcedata{$newkey}=$$useropt{$userkey};
+ }
+ }
+ }
+ }
+ return $resourcedata;
+}
+
+sub extractuser {
+ my $key=shift;
+ return ($key=~/^$env{'request.course.id'}.\[useropt\:(\w+)\:(\w+)\]\./);
+}
+
sub overview {
my $r=shift;
my $bodytag=&Apache::loncommon::bodytag(
@@ -1846,7 +1876,9 @@ $breadcrumbs
ENDOVER
# Setting
- my %olddata=&Apache::lonnet::dump('resourcedata',$dom,$crs);
+# Set userlevel immediately
+# Do an intermediate store of course level
+ my $olddata=&readdata($crs,$dom);
my %newdata=();
undef %newdata;
my @deldata=();
@@ -1855,18 +1887,58 @@ ENDOVER
if ($_=~/^form\.([a-z]+)\_(.+)$/) {
my $cmd=$1;
my $thiskey=$2;
+ my ($tuname,$tudom)=&extractuser($thiskey);
+ my $tkey=$thiskey;
+ if ($tuname) {
+ $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
+ }
if ($cmd eq 'set') {
my $data=$env{$_};
- if ($olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; }
+ if ($$olddata{$thiskey} ne $data) {
+ if ($tuname) {
+ if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {
+ $r->print('
'.&mt('Stored modified parameter for').' '.
+ &Apache::loncommon::plainname($tuname,$tudom));
+ } else {
+ $r->print('
'.
+ &mt('Error storing parameters').'
');
+ }
+ &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
+ } else {
+ $newdata{$thiskey}=$data;
+ }
+ }
} elsif ($cmd eq 'del') {
- push (@deldata,$thiskey);
+ if ($tuname) {
+ if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') {
+ $r->print('
'.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom));
+ } else {
+ $r->print(''.
+ &mt('Error deleting parameters').'
');
+ }
+ &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
+ } else {
+ push (@deldata,$thiskey);
+ }
} elsif ($cmd eq 'datepointer') {
my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
- if (defined($data) and $olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; }
+ if (defined($data) and $$olddata{$thiskey} ne $data) {
+ if ($tuname) {
+ if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {
+ $r->print('
'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));
+ } else {
+ $r->print(''.
+ &mt('Error storing parameters').'
');
+ }
+ &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
+ } else {
+ $newdata{$thiskey}=$data;
+ }
+ }
}
}
}
-# Store
+# Store all course level
my $delentries=$#deldata+1;
my @newdatakeys=keys %newdata;
my $putentries=$#newdatakeys+1;
@@ -1888,24 +1960,34 @@ ENDOVER
}
&Apache::lonnet::devalidatecourseresdata($crs,$dom);
}
-# Read and display
- my %resourcedata=&Apache::lonnet::dump('resourcedata',$dom,$crs);
+# Read modified data
+
+ my $resourcedata=&readdata($crs,$dom);
+
+# Start list output
+
my $oldsection='';
my $oldrealm='';
my $oldpart='';
my $pointer=0;
$tableopen=0;
my $foundkeys=0;
- foreach my $thiskey (sort keys %resourcedata) {
- if ($resourcedata{$thiskey.'.type'}) {
- my ($course,$middle,$part,$name)=
- ($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
+ foreach my $thiskey (sort keys %{$resourcedata}) {
+ if ($$resourcedata{$thiskey.'.type'}) {
+ my ($middle,$part,$name)=
+ ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
my $section=&mt('All Students');
- if ($middle=~/^\[(.*)\]\./) {
- $section=&mt('Group/Section').': '.$1;
- $middle=~s/^\[(.*)\]\.//;
+ if ($middle=~/^\[(.*)\]/) {
+ my $issection=$1;
+ if ($issection=~/^useropt\:(\w+)\:(\w+)/) {
+ $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
+ } else {
+ $section=&mt('Group/Section').': '.$issection;
+ }
+ $middle=~s/^\[(.*)\]//;
}
- $middle=~s/\.$//;
+ $middle=~s/\.+$//;
+ $middle=~s/^\.+//;
my $realm=''.&mt('All Resources').'';
if ($middle=~/^(.+)\_\_\_\(all\)$/) {
$realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).'
('.$1.')';
@@ -1935,19 +2017,19 @@ ENDOVER
': | ');
$foundkeys++;
- if ($resourcedata{$thiskey.'.type'}=~/^date/) {
+ if ($$resourcedata{$thiskey.'.type'}=~/^date/) {
my $jskey='key_'.$pointer;
$pointer++;
$r->print(
&Apache::lonhtmlcommon::date_setter('overviewform',
$jskey,
- $resourcedata{$thiskey}).
+ $$resourcedata{$thiskey}).
''
);
} else {
$r->print(
'');
+ $$resourcedata{$thiskey}.'">');
}
$r->print(' | ');
}
@@ -2154,7 +2236,8 @@ sub handler {
['action','state',
'pres_marker',
'pres_value',
- 'pres_type']);
+ 'pres_type',
+ 'udom','uname']);
&Apache::lonhtmlcommon::clear_breadcrumbs();