[LON-CAPA-cvs] cvs: modules /raeburn/register register.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Fri, 05 May 2006 18:30:47 -0000


raeburn		Fri May  5 14:30:47 2006 EDT

  Modified files:              
    /modules/raeburn/register	register.pm 
  Log:
  Open and close date can now be set for registration form.  New registrations and reactivation of cancelled registrations are not permitted before open or after close date, and an appropriate message is displayed. Modification or cancellation of an existing registration is still permitted however.
  
  
Index: modules/raeburn/register/register.pm
diff -u modules/raeburn/register/register.pm:1.7 modules/raeburn/register/register.pm:1.8
--- modules/raeburn/register/register.pm:1.7	Fri Feb  3 20:33:49 2006
+++ modules/raeburn/register/register.pm	Fri May  5 14:30:42 2006
@@ -10,6 +10,7 @@
 use HTTP::Cookies;
 use CGI::Apache qw(:standard);
 use Apache::LON::processform;
+use Date::Manip;
 
 sub handler {
     my $r = shift;
@@ -280,10 +281,10 @@
     my $year = $$params{'year'};
     my $event = $$params{'event'};
     my $quoted_user = $dbh->quote( $user );
-
     my %curr=();
     my @workshops=();
     my $set_func;
+    my $verify_func;
     my $load_func;
     my @excluded = ('page','go','event','year');
     my @curr_values = ();
@@ -362,8 +363,27 @@
         }
     }
 
+# Check if new registrations are allowed.
+    my ($registeropen,$registerclose) = $dbh->selectrow_array("SELECT registeropen,registerclose FROM event_config WHERE event_id = '$event_id'");
+    my ($regopen,$regclose,$opendate,$closedate);
+    my $now = time;
+    my $regaccess = 'current';
+    if (defined($registeropen)) {
+        $regopen = &UnixDate($registeropen, "%s");
+        $opendate = localtime($regopen);
+        if ($now < $regopen) {
+            $regaccess = 'future';
+        }
+    }
+    if (defined($registerclose)) {
+        $regclose = &UnixDate($registerclose, "%s");
+        $closedate = localtime($regclose);
+        if ($now > $regclose) {
+            $regaccess = 'past';
+        }
+    }
 # build function to populate fields on page load
-    if ($userstatus || $status) {
+    if (($userstatus || $status) && ($status eq 'enroll' || $regaccess eq 'current')) { 
         $load_func = 'onLoad="javascript:setValues()"'; 
         $set_func = qq|
 function setValues() {
@@ -371,7 +391,7 @@
  var iter = 0
  var selParam = 0\n
         |;
-  
+
         if (exists ($$items{'selectbox'}) ) {
             foreach (@{$$items{'selectbox'}}) {
                 $set_func .= qq|
@@ -381,7 +401,7 @@
      }
  }
  formName.$_.selectedIndex = selParam
-            \n|;
+                \n|;
             }
         }
 
@@ -403,7 +423,7 @@
                 $value =~ s/\n+/\\n/g;
                 $set_func .= qq|
  formName.$_.value = "$value"
-            \n|;
+                \n|;
             }
         }
 
@@ -438,7 +458,7 @@
              formName.$_.checked = true
          }
      }
- }\n|
+ }\n|;
                 }
             }
         }
@@ -447,22 +467,23 @@
     }
 
 # build function to verify form completion
-    my $verify_func = qq|
+    if ($regaccess eq 'current') { 
+        $verify_func = qq|
 function validForm(caller) {
   var checkok = 1
   var msg = "The information you provided was incomplete.\\nThe following actions need to be taken\\n"
-    |;
-    foreach (sort keys %{$form_elements}) {
-        if ($$form_elements{$_}{'required'} eq 'Y') {
-            if ($$form_elements{$_}{type} eq 'selectbox') {
-                $verify_func .= qq|
+        |;
+        foreach (sort keys %{$form_elements}) {
+            if ($$form_elements{$_}{'required'} eq 'Y') {
+                if ($$form_elements{$_}{type} eq 'selectbox') {
+                    $verify_func .= qq|
   if (document.regForm.$_.options[document.regForm.$_.selectedIndex].value == "") {
       msg = msg + "Select an option for the $$form_elements{$_}{title} field that is not 'Please select'.\\n"
       checkok = 0
   }
-                |;
-            } elsif ($$form_elements{$_}{type} eq 'radio') {
-                $verify_func .= qq|
+                    |;
+                } elsif ($$form_elements{$_}{type} eq 'radio') {
+                    $verify_func .= qq|
   var $_ = 0
   for (var i=0; i<document.regForm.$_.length; i++) {
       if (document.regForm.$_\[i].checked == true) {
@@ -473,35 +494,35 @@
       msg = msg + "Click one of the radio buttons for the $$form_elements{$_}{title} field.\\n"
       checkok = 0
   }
-                |;
-            } elsif ($$form_elements{$_}{type} eq 'textbox') {
-                $verify_func .= qq|
+                    |;
+                } elsif ($$form_elements{$_}{type} eq 'textbox') {
+                    $verify_func .= qq|
   if (document.regForm.$_.value == "") {
       msg = msg + "Enter a value in the textbox for the $$form_elements{$_}{title} field.\\n"
       checkok = 0
   }
-                |;
-                if ($_ eq 'email') {
-                    $verify_func .= qq|
+                    |;
+                    if ($_ eq 'email') {
+                        $verify_func .= qq|
   if (document.regForm.email.value != "") {
       if (validmail(document.regForm.email) == false) {
           msg = msg + "Enter a valid e-mail address for the $$form_elements{$_}{title} field.\\n"
           checkok = 0
       }
   }
-                    |;
-                }
-            } elsif ($$form_elements{$_}{type} eq 'textarea') {
-                $verify_func .= qq|
+                        |;
+                    }
+                } elsif ($$form_elements{$_}{type} eq 'textarea') {
+                    $verify_func .= qq|
   if (document.regForm.$_.value == "") {
       msg = msg + "Enter a value in the text area for the $$form_elements{$_}{title} field.\\n"
       checkok = 0
   }
                     |;
                 }
+            }
         }
-    }
-    $verify_func .= <<'END';
+        $verify_func .= <<'END';
   if (checkok == 0) {
       alert(msg)
       return
@@ -536,6 +557,7 @@
   }
 }
 END
+    }
     $r->print(<<"END_OF_A"); 
 <html><head><title>LON-CAPA Event Registration: page 1</title>
 <meta http-equiv="pragma" content="no-cache">
@@ -595,9 +617,30 @@
     if ($status eq 'enroll') {
         $r->print("<b>A registration currently exists for you for the $year LON-CAPA $event. Use this form to modify your registration, or to cancel it.</b><br /><br />");
     } elsif ($status eq 'cancel') {
-        $r->print("<b>Your previous registration for the $year LON-CAPA $event was cancelled. Use this form to reactivate your cancelled registration.</b><br /><br />");
+        $r->print("<b>Your previous registration for the $year LON-CAPA $event was cancelled.</b> ");
+        if ($regaccess eq 'current') {
+            $r->print("<b>Use this form to reactivate your cancelled registration.</b><br /><br />");
+        } elsif ($regaccess eq 'past') {
+            $r->print("<b>Reactivation of cancelled registrations is not currently available as new registrations will not be allowed until $opendate");
+        }
     } else {
-        $r->print("<b>Please submit your registration for the $year LON-CAPA $event.</b>");
+        if ($regaccess eq 'current') {
+            $r->print("<b>Please submit your registration for the $year LON-CAPA $event.</b>");
+        } elsif ($regaccess eq 'future') {
+            $r->print("<b>New registrations for the $year LON-CAPA $event will be accepted beginning $opendate.  Please return at that time to make your reservation.</b>");
+        } elsif ($regaccess eq 'past') {
+            $r->print("<b>New registrations for the $year LON-CAPA $event are no longer being accepted. Registration closed on $closedate.</b>");
+        }
+    }
+    if ($status ne 'enroll' && $regaccess ne 'current') {
+        $r->print (qq|
+     <br />
+     </td>
+    </tr>
+   </table>
+        |);
+        &main_footer($r,$page,$year,$event,$returnpage,$sponsors,$sponsorinfo,$$domain);
+        return;
     }
     $r->print(<<"END_OF_C");
     <table border='0' cellspacing='0' cellpadding='0'>
@@ -794,7 +837,7 @@
     my $quoted_domain = $dbh->quote( $domain );
     my %quoted_params = ();
     my %table_items = (); 
-    foreach (%{$params}) {
+    foreach (%{$params}) { 
         unless (ref($$params{$_}) eq 'ARRAY') {
             $quoted_params{$_} = $dbh->quote( $$params{$_} );
         }