--- loncom/interface/lonparmset.pm 2007/11/02 23:29:49 1.384 +++ loncom/interface/lonparmset.pm 2007/11/02 23:30:56 1.385 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.384 2007/11/02 23:29:49 albertel Exp $ +# $Id: lonparmset.pm,v 1.385 2007/11/02 23:30:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2503,7 +2503,7 @@ sub storedata { if ($tuname) { $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./; } - if ($cmd eq 'set' || $cmd eq 'datepointer') { + if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') { my ($data, $typeof, $text); if ($cmd eq 'set') { $data=$env{$_}; @@ -2513,6 +2513,10 @@ sub storedata { $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_}); $typeof=$env{'form.typeof_'.$thiskey}; $text = &mt('Saved modified date for'); + } elsif ($cmd eq 'dateinterval') { + $data=&get_date_interval_from_form($thiskey); + $typeof=$env{'form.typeof_'.$thiskey}; + $text = &mt('Saved modified date for'); } if (defined($data) and $$olddata{$thiskey} ne $data) { if ($tuname) { @@ -2727,6 +2731,9 @@ sub listdata { ''. &date_sanity_info($$resourcedata{$thiskey}) ); + } elsif ($thistype eq 'date_interval') { + $r->print(&date_interval_selector($thiskey, + $$resourcedata{$thiskey})); } elsif ($thistype =~ m/^string/) { $r->print(&string_selector($thistype,$thiskey, $$resourcedata{$thiskey})); @@ -2741,9 +2748,49 @@ sub listdata { return $foundkeys; } + +sub date_interval_selector { + my ($thiskey, $showval) = @_; + my $result; + &Apache::lonnet::logthis($showval); + foreach my $which (['days', 86400, 31], + ['hours', 3600, 23], + ['minutes', 60, 59], + ['seconds', 1, 59]) { + my ($name, $factor, $max) = @{ $which }; + my $amount = int($showval/$factor); + $showval %= $factor; + &Apache::lonnet::logthis("$amount $factor $showval"); + my %select = ((map {$_ => $_} (0..$max)), + 'select_form_order' => [0..$max]); + $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey, + %select); + $result .= ' '.&mt($name); + } + $result .= ''; + return $result; + +} + +sub get_date_interval_from_form { + my ($key) = @_; + my $seconds = 0; + foreach my $which (['days', 86400], + ['hours', 3600], + ['minutes', 60], + ['seconds', 1]) { + my ($name, $factor) = @{ $which }; + if (defined($env{'form.'.$name.'_'.$key})) { + $seconds += $env{'form.'.$name.'_'.$key} * $factor; + } + } + return $seconds; +} + + sub default_selector { my ($thiskey, $showval) = @_; - return '' ; + return ''; } my %strings =