[LON-CAPA-cvs] cvs: loncom /interface lonhtmlcommon.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Tue, 17 Sep 2002 15:32:46 -0000
This is a MIME encoded message
--matthew1032276766
Content-Type: text/plain
matthew Tue Sep 17 11:32:46 2002 EDT
Modified files:
/loncom/interface lonhtmlcommon.pm
Log:
Finally checking in some changes made a while ago. Added POD header.
Added &date_setter and &get_date_from_form which are used in londropadd
to get and set date information.
--matthew1032276766
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20020917113246.txt"
Index: loncom/interface/lonhtmlcommon.pm
diff -u loncom/interface/lonhtmlcommon.pm:1.9 loncom/interface/lonhtmlcommon.pm:1.10
--- loncom/interface/lonhtmlcommon.pm:1.9 Fri Aug 30 11:35:08 2002
+++ loncom/interface/lonhtmlcommon.pm Tue Sep 17 11:32:46 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.9 2002/08/30 15:35:08 stredwic Exp $
+# $Id: lonhtmlcommon.pm,v 1.10 2002/09/17 15:32:46 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -25,11 +25,230 @@
#
# http://www.lon-capa.org/
#
+######################################################################
+######################################################################
+
+=pod
+
+=head1 NAME
+
+Apache::lonhtmlcommon - routines to do common html things
+
+=head1 SYNOPSIS
+
+Referenced by other mod_perl Apache modules.
+
+=head1 INTRODUCTION
+
+lonhtmlcommon is a collection of subroutines used to present information
+in a consistent html format, or provide other functionality related to
+html.
+
+=head2 General Subroutines
+
+=over 4
+
+=cut
+
+######################################################################
+######################################################################
package Apache::lonhtmlcommon;
+use Time::Local;
use strict;
+##############################################
+##############################################
+
+=pod
+
+=item &date_setter
+
+Inputs
+
+=over 4
+
+=item $dname
+
+The name to prepend to the form elements.
+The form elements defined will be dname_year, dname_month, dname_day,
+dname_hour, dname_min, and dname_sec.
+
+=item $currentvalue
+
+The current setting for this time parameter. A unix format time
+(time in seconds since the beginning of Jan 1st, 1970, GMT.
+An undefined value is taken to indicate the value is the current time.
+Also, to be explicit, a value of 'now' also indicates the current time.
+
+=cut
+
+##############################################
+##############################################
+sub date_setter {
+ my ($formname,$dname,$currentvalue) = @_;
+ if (! defined($currentvalue) || $currentvalue eq 'now') {
+ $currentvalue = time;
+ }
+ # other potentially useful values: wkday,yrday,is_daylight_savings
+ my ($sec,$min,$hour,$mday,$month,$year,undef,undef,undef) =
+ localtime($currentvalue);
+ $year += 1900;
+ my $result = "\n<!-- $dname date setting form -->\n";
+ $result .= <<ENDJS;
+<script language="Javascript">
+ function $dname\_checkday() {
+ var day = document.$formname.$dname\_day.value;
+ var month = document.$formname.$dname\_month.value;
+ var year = document.$formname.$dname\_year.value;
+ var valid = true;
+ if (day < 1) {
+ document.$formname.$dname\_day.value = 1;
+ }
+ if (day > 31) {
+ document.$formname.$dname\_day.value = 31;
+ }
+ if ((month == 1) || (month == 3) || (month == 5) ||
+ (month == 7) || (month == 8) || (month == 10) ||
+ (month == 12)) {
+ if (day > 31) {
+ document.$formname.$dname\_day.value = 31;
+ day = 31;
+ }
+ } else if (month == 2 ) {
+ if ((year % 4 == 0) && (year % 100 != 0)) {
+ if (day > 29) {
+ document.$formname.$dname\_day.value = 29;
+ }
+ } else if (day > 29) {
+ document.$formname.$dname\_day.value = 28;
+ }
+ } else if (day > 30) {
+ document.$formname.$dname\_day.value = 30;
+ }
+ }
+</script>
+ENDJS
+ $result .= " <select name=\"$dname\_month\" ".
+ "onChange=\"javascript:$dname\_checkday()\" >\n";
+ my @Months = qw/January February March April May June
+ July August September October November December/;
+ # Pad @Months with a bogus value to make indexing easier
+ unshift(@Months,'If you can read this an error occurred');
+ for(my $m = 1;$m <=$#Months;$m++) {
+ $result .= " <option value=\"$m\" ";
+ $result .= "selected " if ($m-1 == $month);
+ $result .= "> $Months[$m] </option>\n";
+ }
+ $result .= " </select>\n";
+ $result .= " <input type=\"text\" name=\"$dname\_day\" ".
+ "value=\"$mday\" size=\"3\" ".
+ "onChange=\"javascript:$dname\_checkday()\" />\n";
+ $result .= " <input type=\"year\" name=\"$dname\_year\" ".
+ "value=\"$year\" size=\"5\" ".
+ "onChange=\"javascript:$dname\_checkday()\" />\n";
+ $result .= " ";
+ $result .= " <select name=\"$dname\_hour\" >\n";
+ for (my $h = 0;$h<24;$h++) {
+ $result .= " <option value=\"$h\" ";
+ $result .= "selected " if ($hour == $h);
+ $result .= "> ";
+ if ($h == 0) {
+ $result .= "12 am";
+ } elsif($h == 12) {
+ $result .= "12 noon";
+ } elsif($h < 12) {
+ $result .= "$h am";
+ } else {
+ $result .= $h-12 ." pm";
+ }
+ $result .= " </option>\n";
+ }
+ $result .= " </select>\n";
+ $result .= " <input type=\"text\" name=\"$dname\_minute\" ".
+ "value=\"$min\" size=\"3\" /> m\n";
+ $result .= " <input type=\"text\" name=\"$dname\_second\" ".
+ "value=\"$sec\" size=\"3\" /> s\n";
+ $result .= "<!-- end $dname date setting form -->\n";
+ return $result;
+}
+
+##############################################
+##############################################
+
+=item &get_date_from_form
+
+Inputs:
+
+=over 4
+
+=item $dname
+
+The name passed to &datesetter, which prefixes the form elements.
+
+=item $defaulttime
+
+The unix time to use as the default in case of poor inputs.
+
+=back
+
+Returns: Unix time represented in the form.
+
+=cut
+
+##############################################
+##############################################
+sub get_date_from_form {
+ my ($dname) = @_;
+ my ($sec,$min,$hour,$day,$month,$year);
+ #
+ if (defined($ENV{'form.'.$dname.'_second'})) {
+ my $tmpsec = $ENV{'form.'.$dname.'_second'};
+ if (($tmpsec =~ /^\d+$/) && ($tmpsec >= 0) && ($tmpsec < 60)) {
+ $sec = $tmpsec;
+ }
+ }
+ if (defined($ENV{'form.'.$dname.'_minute'})) {
+ my $tmpmin = $ENV{'form.'.$dname.'_minute'};
+ if (($tmpmin =~ /^\d+$/) && ($tmpmin >= 0) && ($tmpmin < 60)) {
+ $min = $tmpmin;
+ }
+ }
+ if (defined($ENV{'form.'.$dname.'_hour'})) {
+ my $tmphour = $ENV{'form.'.$dname.'_hour'};
+ if (($tmphour =~ /^\d+$/) && ($tmphour > 0) && ($tmphour < 32)) {
+ $hour = $tmphour;
+ }
+ }
+ if (defined($ENV{'form.'.$dname.'_day'})) {
+ my $tmpday = $ENV{'form.'.$dname.'_day'};
+ if (($tmpday =~ /^\d+$/) && ($tmpday > 0) && ($tmpday < 32)) {
+ $day = $tmpday;
+ }
+ }
+ if (defined($ENV{'form.'.$dname.'_month'})) {
+ my $tmpmonth = $ENV{'form.'.$dname.'_month'};
+ if (($tmpmonth =~ /^\d+$/) && ($tmpmonth > 0) && ($tmpmonth < 13)) {
+ $month = $tmpmonth - 1;
+ }
+ }
+ if (defined($ENV{'form.'.$dname.'_year'})) {
+ my $tmpyear = $ENV{'form.'.$dname.'_year'};
+ if (($tmpyear =~ /^\d+$/) && ($tmpyear > 1900)) {
+ $year = $tmpyear - 1900;
+ }
+ }
+ if (eval(&timelocal($sec,$min,$hour,$day,$month,$year))) {
+ return &timelocal($sec,$min,$hour,$day,$month,$year);
+ } else {
+ return undef;
+ }
+}
+
+##############################################
+##############################################
+
sub AscendOrderOptions {
my ($order, $page, $formName)=@_;
@@ -309,7 +528,7 @@
=item &FormatStudentInformation()
-This function produces a formatted string of the student's information:
+This function produces a formatted string of the student\'s information:
username, domain, section, full name, and PID.
=over 4
--matthew1032276766--