version 1.38, 2005/04/07 06:56:22
|
version 1.40, 2005/11/02 20:31:55
|
Line 29
|
Line 29
|
package Apache::outputtags; |
package Apache::outputtags; |
|
|
use strict; |
use strict; |
|
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
use POSIX qw(strftime); |
use POSIX qw(strftime); |
|
|
Line 40 sub initialize_outputtags {
|
Line 41 sub initialize_outputtags {
|
%Apache::outputtags::showonce=(); |
%Apache::outputtags::showonce=(); |
} |
} |
|
|
|
|
sub start_displayduedate { |
sub start_displayduedate { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result; |
my $result; |
|
|
|
# Different parts can have different due dates... so we keep a list |
|
# of the parts for which we've displayed the duedate: |
|
|
if (exists($Apache::outputtags::showonce{'displayduedate'})) { |
if (exists($Apache::outputtags::showonce{'displayduedate'})) { |
return ''; |
if (grep(/^\Q$Apache::inputtags::part\E$/, |
} else { |
@{$Apache::outputtags::showonce{'displayduedate'}})) { |
$Apache::outputtags::showonce{'displayduedate'}=1; |
return ''; |
|
} |
} |
} |
|
push (@{$Apache::outputtags::showonce{'displayduedate'}}, |
|
$Apache::inputtags::part); |
|
|
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
&Apache::lonxml::debug("got a $status in duedatebox"); |
&Apache::lonxml::debug("got a $status in duedatebox"); |
my $style = &Apache::lonxml::get_param('style',$parstack,$safeeval); |
my $style = &Apache::lonxml::get_param('style',$parstack,$safeeval); |
if (($status =~ /CAN.*_ANSWER/) && ($target eq 'web')) { |
if (($status =~ /CAN.*_ANSWER/) && ($target eq 'web')) { |
# my $format = &Apache::lonxml::get_param('format',$parstack,$safeeval); |
|
# if ($format eq '') { |
|
# &Apache::lonxml::debug("using default format"); |
|
# $format="%c"; |
|
# } |
|
my $id = $Apache::inputtags::part; |
my $id = $Apache::inputtags::part; |
my $date = &Apache::lonnet::EXT("resource.$id.duedate"); |
my $date = &Apache::lonnet::EXT("resource.$id.duedate"); |
&Apache::lonxml::debug("duedatebox found $date for $id"); |
&Apache::lonxml::debug("duedatebox found $date for $id"); |
if (lc($style) !~ 'plain') { |
|
$result ='<table border="on"><tr><td>Due '. |
# Only show the due date if the current date is |
&Apache::lonnavmaps::timeToHumanString($date). |
# different from due date of the previous part. I think |
'</td></tr></table>'; |
# this is probably the best way to avoid due date clutter. |
} else { |
|
$result=&mt('Due').' '.&Apache::lonnavmaps::timeToHumanString($date); |
my $showduedate = 1; |
|
my $part_count = scalar(@{$Apache::outputtags::showonce{'displayduedate'}}); |
|
if ($part_count > 1) { |
|
my $prev_part_id = $Apache::outputtags::showonce{'displayduedate'}->[$part_count-2]; |
|
my $prev_due_date = &Apache::lonnet::EXT("resource.$prev_part_id.duedate"); |
|
if ($prev_due_date == $date) { |
|
$showduedate = 0; |
|
} |
|
} |
|
|
|
if ($showduedate) { |
|
if (lc($style) !~ 'plain') { |
|
$result ='<table border="on"><tr><td>Due '. |
|
&Apache::lonnavmaps::timeToHumanString($date). |
|
'</td></tr></table>'; |
|
} else { |
|
$result=&mt('Due').' '.&Apache::lonnavmaps::timeToHumanString($date); |
|
} |
} |
} |
# } else { |
|
# $result ='<table border="on"><tr><td>No due date set.</td></tr></table>'; |
|
# } |
|
} elsif ( $target eq 'edit' ) { |
} elsif ( $target eq 'edit' ) { |
$result=&Apache::edit::tag_start($target,$token); |
$result=&Apache::edit::tag_start($target,$token); |
$result.='</td></tr>'; |
$result.='</td></tr>'; |