--- loncom/interface/lonparmset.pm 2005/06/17 20:01:50 1.226
+++ loncom/interface/lonparmset.pm 2005/06/18 17:23:25 1.229
@@ -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.229 2005/06/18 17:23:25 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -260,6 +260,20 @@ sub rulescache {
return $rules{$id};
}
+sub preset_defaults {
+ my $type=shift;
+ if (&rulescache($type.'_action') eq 'default') {
+# yes, there is something
+ return (&rulescache($type.'_hours'),
+ &rulescache($type.'_min'),
+ &rulescache($type.'_sec'),
+ &rulescache($type.'_value'));
+ } else {
+# nothing there or something else
+ return ('','','','','');
+ }
+}
+
##################################################
##################################################
#
@@ -313,8 +327,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 '';
@@ -489,11 +524,13 @@ sub plink {
$winvalue=$env{'form.recent_'.(split(/\_/,$type))[0]};
}
}
-
-
+ my ($parmname)=((split(/\&/,$marker))[1]=~/\_([^\_]+)$/);
+ &Apache::lonnet::logthis($marker.'-'.$parmname);
+ my ($hour,$min,$sec,$val)=&preset_defaults($parmname);
+ unless (defined($winvalue)) { $winvalue=$val; }
return
''.
+ .$marker."','".$return."','".$call."','".$hour."','".$min."','".$sec."'".');">'.
&valout($value,$type).'';
}
@@ -2632,11 +2669,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 +2694,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 +2738,19 @@ ENDDEFHEAD
}
}
$r->print('');
-
-
+ unless (&isdateparm($defkeytype{$tempkey})) {
+ $r->print("\n
".&mt('Triggering value(s) of other parameter (optional, comma-separated):').
+ '');
+ }
$r->print("\n