[LON-CAPA-cvs] cvs: loncom /interface lonhtmlcommon.pm

matthew lon-capa-cvs@mail.lon-capa.org
Wed, 03 Mar 2004 22:55:35 -0000


matthew		Wed Mar  3 17:55:35 2004 EDT

  Modified files:              
    /loncom/interface	lonhtmlcommon.pm 
  Log:
  date_setter: now takes $state, which indicates the initial state of the
  form elements it produces.  Also provides javascript functions for enabling
  and disableing the form state.
  
  
Index: loncom/interface/lonhtmlcommon.pm
diff -u loncom/interface/lonhtmlcommon.pm:1.58 loncom/interface/lonhtmlcommon.pm:1.59
--- loncom/interface/lonhtmlcommon.pm:1.58	Mon Mar  1 11:19:45 2004
+++ loncom/interface/lonhtmlcommon.pm	Wed Mar  3 17:55:35 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common html routines
 #
-# $Id: lonhtmlcommon.pm,v 1.58 2004/03/01 16:19:45 www Exp $
+# $Id: lonhtmlcommon.pm,v 1.59 2004/03/03 22:55:35 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -201,6 +201,13 @@
 Additional html/javascript to be associated with each element in
 the date_setter.  See lonparmset for example usage.
 
+=item $includeempty 
+
+=item $state
+
+Specifies the initial state of the form elements.  Either 'disabled' or empty.
+Defaults to empty, which indiciates the form elements are not disabled. 
+
 =back
 
 Bugs
@@ -212,7 +219,10 @@
 ##############################################
 ##############################################
 sub date_setter {
-    my ($formname,$dname,$currentvalue,$special,$includeempty) = @_;
+    my ($formname,$dname,$currentvalue,$special,$includeempty,$state) = @_;
+    if (! defined($state) || $state ne 'disabled') {
+        $state = '';
+    }
     if (! defined($currentvalue) || $currentvalue eq 'now') {
 	unless ($includeempty) {
 	    $currentvalue = time;
@@ -261,18 +271,39 @@
         }
     }
 
+    function $dname\_disable() {
+        document.$formname.$dname\_month.disabled=true;
+        document.$formname.$dname\_day.disabled=true;
+        document.$formname.$dname\_year.disabled=true;
+        document.$formname.$dname\_hour.disabled=true;
+        document.$formname.$dname\_minute.disabled=true;
+        document.$formname.$dname\_second.disabled=true;
+    }
+
+    function $dname\_enable() {
+        document.$formname.$dname\_month.disabled=false;
+        document.$formname.$dname\_day.disabled=false;
+        document.$formname.$dname\_year.disabled=false;
+        document.$formname.$dname\_hour.disabled=false;
+        document.$formname.$dname\_minute.disabled=false;
+        document.$formname.$dname\_second.disabled=false;        
+    }
+
     function $dname\_opencalendar() {
-       var calwin=window.open(
+        if (! document.$formname.$dname\_month.disabled) {
+            var calwin=window.open(
 "/adm/announcements?pickdate=yes&formname=$formname&element=$dname&month="+
 document.$formname.$dname\_month.value+"&year="+
 document.$formname.$dname\_year.value,
              "LONCAPAcal",
               "height=350,width=350,scrollbars=yes,resizable=yes,menubar=no");
+        }
 
     }
 </script>
 ENDJS
     $result .= "  <nobr><select name=\"$dname\_month\" ".$special.' '.
+        $state.' '.
         "onChange=\"javascript:$dname\_checkday()\" >\n";
     my @Months = qw/January February  March     April   May      June 
                     July    August    September October November December/;
@@ -285,14 +316,14 @@
         $result .= "> ".&mt($Months[$m])." </option>\n";
     }
     $result .= "  </select>\n";
-    $result .= "  <input type=\"text\" name=\"$dname\_day\" ".
+    $result .= "  <input type=\"text\" name=\"$dname\_day\" ".$state.' '.
             "value=\"$mday\" size=\"3\" ".$special.' '.
             "onChange=\"javascript:$dname\_checkday()\" />\n";
-    $result .= "  <input type=\"year\" name=\"$dname\_year\" ".
+    $result .= "  <input type=\"year\" name=\"$dname\_year\" ".$state.' '.
             "value=\"$year\" size=\"5\" ".$special.' '.
             "onChange=\"javascript:$dname\_checkday()\" />\n";
     $result .= "&nbsp;&nbsp;";
-    $result .= "  <select name=\"$dname\_hour\" ".$special." >\n";
+    $result .= "  <select name=\"$dname\_hour\" ".$special." ".$state.' '.">\n";
     if ($includeempty) { $result.="<option value=''></option>"; }
     for (my $h = 0;$h<24;$h++) {
         $result .= "      <option value=\"$h\" ";
@@ -313,8 +344,10 @@
     } 
     $result .= "  </select>\n";
     $result .= "  <input type=\"text\" name=\"$dname\_minute\" ".$special.' '.
+        $state.' '.
         "value=\"$min\" size=\"3\" /> m\n";
     $result .= "  <input type=\"text\" name=\"$dname\_second\" ".$special.' '.
+        $state.' '.
         "value=\"$sec\" size=\"3\" /> s\n";
     $result .= "<a href=\"javascript:$dname\_opencalendar()\">".
     &mt('Select Date')."</a></nobr>\n<!-- end $dname date setting form -->\n";