[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