--- loncom/interface/lonparmset.pm 2005/06/17 20:01:50 1.226 +++ loncom/interface/lonparmset.pm 2005/06/18 14:39:24 1.228 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.226 2005/06/17 20:01:50 www Exp $ +# $Id: lonparmset.pm,v 1.228 2005/06/18 14:39:24 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -313,8 +313,29 @@ sub storeparm_by_symb { my ($whichaction,$whichparm)=($action=~/^(.*\_)([^\_]+)$/); # set triggered parameter on same level my $newspnam=$prefix.$triggered; - - &Apache::lonnet::logthis('About to set '.$newspnam.' using action '.$whichaction.' with '.$parm.' ('.$whichparm.')'); + my $newvalue=''; + my $active=1; + if ($action=~/^when\_setting/) { +# are there restrictions? + if (&rulescache($triggered.'_triggervalue')=~/\w/) { + $active=0; + foreach my $possiblevalue (split(/\s*\,\s*/,&rulescache($triggered.'_triggervalue'))) { + if (lc($possiblevalue) eq lc($nval)) { $active=1; } + } + } + $newvalue=&rulescache($triggered.'_value'); + } else { + my $totalsecs=((&rulescache($triggered.'_days')*24+&rulescache($triggered.'_hours'))*60+&rulescache($triggered.'_min'))*60+&rulescache($triggered.'_sec'); + if ($action=~/^later\_than/) { + $newvalue=$nval+$totalsecs; + } else { + $newvalue=$nval-$totalsecs; + } + } + if ($active) { + &storeparm_by_symb($symb,$newspnam,$snum,$newvalue,&rulescache($triggered.'_type'), + $uname,$udom,$csec,$recflag); + } } } return ''; @@ -2632,11 +2653,13 @@ ENDDEFHEAD } $newrules{$tempkey.'_type'}=$defkeytype{$tempkey}; if (&isdateparm($defkeytype{$tempkey})) { + $newrules{$tempkey.'_days'}=$env{'form.'.$tempkey.'_days'}; $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'}; + $newrules{$tempkey.'_triggervalue'}=$env{'form.'.$tempkey.'_triggervalue'}; } } else { push(@delrules,$tempkey.'_action'); @@ -2655,7 +2678,8 @@ ENDDEFHEAD &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs); &resetrulescache(); } - my %lt=&Apache::lonlocal::texthash('hours' => 'Hours', + my %lt=&Apache::lonlocal::texthash('days' => 'Days', + 'hours' => 'Hours', 'min' => 'Minutes', 'sec' => 'Seconds', 'yes' => 'Yes', @@ -2698,15 +2722,19 @@ ENDDEFHEAD } } $r->print(''); - - + unless (&isdateparm($defkeytype{$tempkey})) { + $r->print("\n
".&mt('Triggering value(s) of other parameter (optional, comma-separated):'). + ''); + } $r->print("\n\n"); if (&isdateparm($defkeytype{$tempkey})) { + my $days=&rulescache($tempkey.'_days'); my $hours=&rulescache($tempkey.'_hours'); my $min=&rulescache($tempkey.'_min'); my $sec=&rulescache($tempkey.'_sec'); $r->print(<$lt{'days'}
$lt{'hours'}
$lt{'min'}
$lt{'sec'}