--- loncom/interface/lonparmset.pm 2005/06/14 02:33:18 1.221 +++ loncom/interface/lonparmset.pm 2005/06/17 18:11:42 1.224 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.221 2005/06/14 02:33:18 www Exp $ +# $Id: lonparmset.pm,v 1.224 2005/06/17 18:11:42 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -251,10 +251,10 @@ sub rulescache { if ($rulesid ne $env{'request.course.id'}) { %rules=(); } - unless ($rules{$id}) { + unless (defined($rules{$id})) { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; - my %rules=&Apache::lonnet::dump('parmdefactions',$dom,$crs); + %rules=&Apache::lonnet::dump('parmdefactions',$dom,$crs); $rulesid=$env{'request.course.id'}; } return $rules{$id}; @@ -2571,9 +2571,6 @@ $bodytag $breadcrumbs
ENDDEFHEAD - if ($env{'form.storerules'}) { - &resetrulescache(); - } my @ids=(); my %typep=(); my %keyp=(); @@ -2590,33 +2587,107 @@ ENDDEFHEAD &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, \%mapp, \%symbp,\%maptitles,\%uris, \%keyorder,\%defkeytype); + if ($env{'form.storerules'}) { + my %newrules=(); + my @delrules=(); + foreach (keys %env) { + if ($_=~/^form\.(\w+)\_action$/) { + my $tempkey=$1; + if ($env{$_}) { + $newrules{$tempkey.'_action'}=$env{$_}; + if (&isdateparm($defkeytype{$tempkey})) { + $newrules{$tempkey.'_hours'}=$env{'form.'.$tempkey.'_hours'}; + $newrules{$tempkey.'_min'}=$env{'form.'.$tempkey.'_min'}; + $newrules{$tempkey.'_sec'}=$env{'form.'.$tempkey.'_sec'}; + } else { + $newrules{$tempkey.'_value'}=$env{'form.'.$tempkey.'_value'}; + } + } else { + push @delrules,$tempkey.'_action'; + push @delrules,$tempkey.'_hours'; + push @delrules,$tempkey.'_min'; + push @delrules,$tempkey.'_sec'; + push @delrules,$tempkey.'_value'; + } + } + } + &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs); + &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs); + &resetrulescache(); + } my %lt=&Apache::lonlocal::texthash('hours' => 'Hours', 'min' => 'Minutes', 'sec' => 'Seconds', 'yes' => 'Yes', 'no' => 'No'); + my @standardoptions=('','default'); + my @standarddisplay=('',&mt('Default value when manually setting')); + my @dateoptions=('','default'); + my @datedisplay=('',&mt('Default value when manually setting')); + foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) { + unless ($tempkey) { next; } + push @standardoptions,'when_setting_'.$tempkey; + push @standarddisplay,&mt('Automatically set when setting ').$tempkey; + if (&isdateparm($defkeytype{$tempkey})) { + push @dateoptions,'later_than_'.$tempkey; + push @datedisplay,&mt('Automatically set later than ').$tempkey; + push @dateoptions,'earlier_than_'.$tempkey; + push @datedisplay,&mt('Automatically set earlier than ').$tempkey; + } + } $r->print("\n'); + &mt('Action').''); foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) { + unless ($tempkey) { next; } $r->print("\n'); - } - $r->print("
".&mt('Rule for parameter').''. - &mt('Automatically set to ...').''.&mt('if ...').'
'.&mt('Value').'
".$allparms{$tempkey}."\n
(".$tempkey.')
'); + my $action=&rulescache($tempkey.'_action'); + $r->print(''); + + + $r->print("\n\n"); + if (&isdateparm($defkeytype{$tempkey})) { + my $hours=&rulescache($tempkey.'_hours'); + my $min=&rulescache($tempkey.'_min'); + my $sec=&rulescache($tempkey.'_sec'); $r->print(<$lt{'hours'}
-$lt{'min'}
-$lt{'sec'} +$lt{'hours'}
+$lt{'min'}
+$lt{'sec'} ENDINPUTDATE } elsif ($defkeytype{$tempkey} eq 'string_yesno') { + my $yeschecked=''; + my $nochecked=''; + if (&rulescache($tempkey.'_value') eq 'yes') { $yeschecked='checked="checked"'; } + if (&rulescache($tempkey.'_value') eq 'no') { $nochecked='checked="checked"'; } + $r->print(< $lt{'yes'}
- +
+ ENDYESNO } else { - $r->print(''); + $r->print(''); } $r->print('
"); + $r->print("\n\n\n"); return; } @@ -2689,8 +2760,6 @@ sub handler { } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv', text=>"Course Environment"}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef, - 'Edit Course Environment')); &crsenv($r); } elsif ($env{'form.action'} eq 'setoverview' && $parm_permission) { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',