[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm
raeburn
raeburn at source.lon-capa.org
Sun Jan 19 21:43:41 EST 2014
raeburn Mon Jan 20 02:43:41 2014 EDT
Modified files:
/loncom/interface lonprintout.pm
Log:
- Bug 3462
- Use lonlocal::locallocaltime() for display of dates/times
- Consistency with lonnavmaps::printable()
- Start of window for printability might be determined by opendate
and/or contentopen, if printstartdate not set.
- Message displayed to students in case resource is not printable
depends on nature of limits.
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.637 loncom/interface/lonprintout.pm:1.638
--- loncom/interface/lonprintout.pm:1.637 Mon Jan 20 01:26:50 2014
+++ loncom/interface/lonprintout.pm Mon Jan 20 02:43:41 2014
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.637 2014/01/20 01:26:50 raeburn Exp $
+# $Id: lonprintout.pm,v 1.638 2014/01/20 02:43:41 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -27,7 +27,6 @@
#
package Apache::lonprintout;
use strict;
-use POSIX;
use Apache::Constants qw(:common :http);
use Apache::lonxml;
use Apache::lonnet;
@@ -47,7 +46,6 @@
use HTTP::Response;
use LONCAPA::map();
-use POSIX qw(ctime);
use Apache::lonlocal;
use Carp;
use LONCAPA;
@@ -494,7 +492,7 @@
#
# @return ($open, $close)
#
-# @note If open/close dates are not defined they will be retunred as undef
+# @note If open/close dates are not defined they will be returned as undef
# @note It is possible for there to be no overlap in which case -1,-1
# will be returned.
# @note The algorithm used is to take the latest open date and the earliest end date.
@@ -524,7 +522,7 @@
# If no overlap...both are -1 as promised.
- if (defined($earliest_close) && defined($latest_open)
+ if (($earliest_close ne '') && ($latest_open ne '')
&& ($earliest_close < $latest_open)) {
$latest_open = -1;
$earliest_close = -1;
@@ -572,11 +570,13 @@
#
# @return (opendate, closedate)
#
-# @note If open/close dates are not defined they will be retunred as undef
+# @note If open/close dates are not defined they will be returned as undef
# @note It is possible for there to be no overlap in which case -1,-1
# will be returned.
# @note The algorithm used is to take the latest open date and the earliest end date.
-#
+# For consistency with &printable() in lonnavmaps.pm determination of start
+# date for printing checks printstartdate param first, then, if not set,
+# opendate param, then, if not set, contentopen param.
sub get_print_dates {
my $res = shift;
@@ -595,7 +595,18 @@
foreach my $part (@parts) {
my $partopen = $res->parmval('printstartdate', $part);
my $partclose = $res->parmval('printenddate', $part);
-
+ if (!$partopen) {
+ $partopen = $res->parmval('opendate',$part);
+ }
+ if (!$partopen) {
+ $partopen = $res->parmval('contentopen',$part);
+ }
+ if ($partopen) {
+ push(@open_dates, $partopen);
+ }
+ if ($partclose) {
+ push(@close_dates, $partclose);
+ }
push(@open_dates, $partopen);
push(@close_dates, $partclose);
}
@@ -603,13 +614,6 @@
($open_date, $close_date) = &compute_open_window(\@open_dates, \@close_dates);
- if ($open_date) {
- $open_date = POSIX::strftime('%D', localtime($open_date));
- }
- if ($close_date) {
- $close_date = POSIX::strftime('%D', localtime($close_date));
- }
-
return ($open_date, $close_date);
}
@@ -4661,12 +4665,33 @@
# Generate the first state, to select which resources get printed.
Apache::lonhelper::state->new("START", "Select Printing Options:");
if (!$res_printable) {
- $paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{MESSAGE_TEXT} =
- '<p class="LC_info">'
- .&mt('Printing for current resource is only possible between [_1] and [_2]',
- $res_printstartdate, $res_printenddate).'</p>';
- Apache::lonhelper::message->new();
+ my $now = time;
+ my $shownprintstart = &Apache::lonlocal::locallocaltime($res_printstartdate);
+ my $shownprintend = &Apache::lonlocal::locallocaltime($res_printenddate);
+ my $noprintmsg;
+ if (($res_printenddate) && ($res_printenddate < $now)) {
+ $noprintmsg = &mt('Printing for current resource no longer available (ended: [_1])',
+ $shownprintend);
+ } else {
+ if (($res_printstartdate) && ($res_printstartdate > $now)) {
+ if (($res_printenddate) && ($res_printenddate > $now) && ($res_printenddate > $res_printstartdate)) {
+ $noprintmsg = &mt('Printing for current resource is only possible between [_1] and [_2]',
+ $shownprintstart,$shownprintend);
+ } elsif (!$res_printenddate) {
+ $noprintmsg = &mt('Printing for current resource will only be possible starting [_1]',
+ $shownprintstart);
+ } else {
+ $noprintmsg = &mt('Printing for current resource is unavailable');
+ }
+ }
+ }
+
+ if ($noprintmsg) {
+ $paramHash = Apache::lonhelper::getParamHash();
+ $paramHash->{MESSAGE_TEXT} =
+ '<p class="LC_info">'.$noprintmsg.'</p>';
+ Apache::lonhelper::message->new();
+ }
}
$paramHash = Apache::lonhelper::getParamHash();
$paramHash = Apache::lonhelper::getParamHash();
More information about the LON-CAPA-cvs
mailing list