Fixed problem with registration level output showing up when there are no levels...
authorChuck Scott <cscott@gaslightmedia.com>
Thu, 12 Oct 2017 21:31:56 +0000 (17:31 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Thu, 12 Oct 2017 21:31:56 +0000 (17:31 -0400)
Now have cart validation basically working. Still need to remove invalid items from database.
Cart Totals now being calculated.
Fixed problem with rate values being passed around as strings instead of float values.
Removed event_name field from reg_request_class, reg_request_rate and reg_request_registrant.

16 files changed:
classes/data/dataRegEvent.php
classes/data/dataRegRate.php
classes/data/dataRegRequestClass.php
classes/data/dataRegRequestRate.php
classes/data/dataRegRequestRegistrant.php
classes/regCartSupport.php
js/adminRegApp.js
js/views/admin/regClass.js
models/admin/ajax/regFront/registrant.php
models/admin/registrations/events.php
models/front/registrations/cart.php
setup/databaseScripts/create_database_V0.0.13.sql
views/admin/registrations/eventEditLevels.html
views/front/registrations/cart.html
views/front/registrations/cartLinkWidget.html
views/front/registrations/header.html [new file with mode: 0644]

index 9c9c871..c7f2619 100644 (file)
@@ -512,6 +512,8 @@ class GlmDataRegistrationsRegEvent extends GlmDataAbstract
         // Restore status of extended data flag
         $this->postProcAddedEventData = $saveExtended;
 
+//        echo "<pre>".print_r($this->regEventData,1)."</pre>";
+
         return $this->regEventData;
 
     }
index 1a8c44c..3d78e95 100644 (file)
@@ -159,17 +159,35 @@ class GlmDataRegistrationsRegRate extends GlmDataAbstract
             // Base rate to register
             'base_rate' => array (
                 'field'     => 'base_rate',
+                'type'      => 'float',
+                'required'  => true,
+                'use'       => 'a'
+            ),
+
+            // Base rate to register
+            'base_rate_money' => array (
+                'field'     => 'base_rate',
+                'as'        => 'base_rate_money',
                 'type'      => 'money',
                 'required'  => false,
-                'use'       => 'a'
+                'use'       => 'gl'
             ),
 
             // Rate per registrant
             'per_registrant' => array (
                 'field'     => 'per_registrant',
+                'type'      => 'float',
+                'required'  => true,
+                'use'       => 'a'
+            ),
+
+            // Rate per registrant
+            'per_registrant_money' => array (
+                'field'     => 'per_registrant',
+                'as'        => 'per_registrant_money',
                 'type'      => 'money',
                 'required'  => false,
-                'use'       => 'a'
+                'use'       => 'gl'
             ),
 
             // Number of registrants included in base rate
index 148a33c..c715d5c 100644 (file)
@@ -124,14 +124,6 @@ class GlmDataRegistrationsRequestClass extends GlmDataAbstract
                 'use'       => 'lgneud'
             ),
 
-            // Event Name
-            'event_name' => array (
-                'field'     => 'event_name',
-                'type'      => 'text',
-                'required'  => true,
-                'use'       => 'lgneud'
-            ),
-
             // Selected Start Time
             'event_datetime' => array (
                 'field'     => 'event_datetime',
index 372080c..5e1d140 100644 (file)
@@ -176,6 +176,15 @@ class GlmDataRegistrationsRegRequestRate extends GlmDataAbstract
             // Base rate at time of registration
             'base_rate' => array (
                 'field'     => 'base_rate',
+                'type'      => 'float',
+                'required'  => true,
+                'use'       => 'a'
+            ),
+
+            // Base rate at time of registration
+            'base_rate_money' => array (
+                'field'     => 'base_rate',
+                'as'        => 'base_rate_money',
                 'type'      => 'money',
                 'required'  => false,
                 'use'       => 'a'
@@ -184,6 +193,15 @@ class GlmDataRegistrationsRegRequestRate extends GlmDataAbstract
             // Per Registrant Rate at time of registration
             'per_registrant' => array (
                 'field'     => 'per_registrant',
+                'type'      => 'float',
+                'required'  => false,
+                'use'       => 'a'
+            ),
+
+            // Per Registrant Rate at time of registration
+            'per_registrant_money' => array (
+                'field'     => 'per_registrant',
+                'as'        => 'per_registrant_money',
                 'type'      => 'money',
                 'required'  => false,
                 'use'       => 'a'
index c9a9e00..5b6a151 100644 (file)
@@ -132,14 +132,6 @@ class GlmDataRegistrationsRequestRegistrant extends GlmDataAbstract
                 'use'       => 'lgneud'
             ),
 
-            // Event Name
-            'event_name' => array (
-                'field'     => 'event_name',
-                'type'      => 'text',
-                'required'  => true,
-                'use'       => 'lgneud'
-            ),
-
             // Pointer reg_time entry
             'reg_time' => array (
                 'field'     => 'reg_time',
index 1714ad0..1eb5795 100644 (file)
@@ -216,7 +216,7 @@ class GlmRegCartSupport
                                         $this->addAccountToCart($registrant['account']);
 
                                         // Add time data to reg_times table
-                                        $this->addTimeToCart($registrant['reg_time']);
+// ****                                        $this->addTimeToCart($registrant['reg_time']);
 
                                     } // Each Registrant
                                 }
@@ -302,8 +302,10 @@ class GlmRegCartSupport
         $totalDiscounts         = 0;
         $grandTotal             = 0;
 
-        // If we have a cart (request)
-        if ($this->cart) {
+        $this->cart['blockCheckout'] = false;
+
+        // If we have a cart and a good request array
+        if ($this->cart && is_array($this->cart['request'])) {
 
             // If a submission account is specified (otherwise it should be a guest user prior to checkout)
             if ($this->cart['request']['account'] && !isset($this->cart['accounts'][$this->cart['request']['account']])) {
@@ -317,6 +319,7 @@ class GlmRegCartSupport
             // If we don't have events for this cart
             if (!is_array($this->cart['events']) || count($this->cart['events']) == 0) {
                 $this->cart['messages'][] = 'Cart is empty.';
+                $this->cart['blockCheckout'] = true;
             } else {
 
                 // Loop through all events in the cart
@@ -325,20 +328,21 @@ class GlmRegCartSupport
                     $eventRegistrants   = 0;
                     $eventCharges       = 0;
                     $eventDiscounts     = 0;
-                    $eventTotal         = 0;
 
-                    // Do event Checks
+                    // Assume this event is OK
+                    $this->cart['events'][$eventKey]['removed'] = false;
+
+                    // Update reg_time entries for current availability and get the event data;
+                    $regEvent = $RegEvent->checkEventTimes($event['id']);
 
                     // Check if Event exists in Events add-on and is active in registrations or if doing admin (admin_active)
                     $regEvent = $RegEvent->getEntry($event['reg_event']);
                     if (!$regEvent) {
                         $this->cart['messages'][] = 'Event in cart is not currently available for registration.';
+                        $this->cart['events'][$eventKey]['removed'] = true;
+                        $this->cart['blockCheckout'] = true;
                     }
 
-                    // Check if the event is time-specific and if there's a list of times for this event - If not, should be a default
-
-
-
                     /*
                      * Classes (levels) Processing
                      */
@@ -346,6 +350,8 @@ class GlmRegCartSupport
                     // If we don't have classes for this event
                     if (!is_array($event['classes']) || count($event['classes']) == 0 ) {
                         $this->cart['messages'][] = 'Event '.$event['event_name'].' has no levels.';
+                        $this->cart['events'][$eventKey]['removed'] = true;
+                        $this->cart['blockCheckout'] = true;
                     } else {
 
                         // Loop through all classes (levels) for this event
@@ -354,10 +360,8 @@ class GlmRegCartSupport
                             $classRegistrants   = 0;
                             $classCharges       = 0;
                             $classDiscounts     = 0;
-                            $classTotal         = 0;
-
-                            // Do class (level) checks
 
+                            $this->cart['events'][$eventKey]['classes'][$classKey]['removed'] = false;
 
                             /*
                              * Rates Processing
@@ -366,107 +370,144 @@ class GlmRegCartSupport
                             // If we don't have rates for this class
                             if (!is_array($class['rates']) || count($class['rates']) == 0 ) {
                                 $this->cart['messages'][] = 'Class '.$class['class_name'].' has no rates.';
+                                $this->cart['events'][$eventKey]['classes'][$classKey]['removed'] = true;
+                                $this->cart['blockCheckout'] = true;
                             } else {
 
                                 // loop through all rates
                                 foreach ($class['rates'] as $rateKey => $rate) {
 
-                                    $rateRegistrants   = 0;
-                                    $rateCharges       = 0;
-                                    $rateDiscounts     = 0;
-                                    $rateTotal         = 0;
+                                    $rateRegistrants            = 0;
+                                    $rateBaseCharge             = 0;
+                                    $rateRegistrantCharges      = 0;
+                                    $rateDiscounts              = 0;
+
+                                    $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['removed'] = false;
 
-                                    // Do rate Checks
+                                    // Get rate data
+                                    $eventRate = $RequestRate->getEntry($rate['id']);
+                                    if (!$eventRate) {
+                                        $this->cart['message'][] = 'Event rate '.$rate['rage_name'].' is no longer listed - Removed registrants for this rate.';
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['removed'] = true;
+                                    } else {
 
+                                        /*
+                                         * Registrants Processing
+                                         */
 
-                                    // Update reg_time entries for current availability
-                                    // Check if listed rate is currently available - If not, add as a problem
+                                        // If we don't have registrants for this class
+                                        if (!is_array($rate['registrants']) || count($rate['registrants']) == 0 ) {
+                                            $this->cart['messages'][] = 'Rate '.$rate['rate_name'].' has no registrants.';
+                                            $this->cart['blockCheckout'] = true;
+                                        } else {
 
-                                    /*
-                                     * Registrants Processing
-                                     */
+                                            // loop through all Registrants
+                                            foreach ($rate['registrants'] as $registrantKey => $registrant) {
 
-                                    // If we don't have registrants for this class
-                                    if (!is_array($rate['registrants']) || count($rate['registrants']) == 0 ) {
-                                        $this->cart['messages'][] = 'Rate '.$rate['rate_name'].' has no registrants.';
-                                    } else {
+                                                $registrantCharges       = 0;
+                                                $registrantDiscounts     = 0;
 
-                                        // loop through all Registrants
-                                        foreach ($rate['registrants'] as $registrantKey => $registrant) {
+                                                $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['removed'] = false;
 
-                                            $registrantCharges       = 0;
-                                            $registrantDiscounts     = 0;
-                                            $registrantTotal         = 0;
+                                                // Check the if registrant still has a time slot hold
 
-                                            // Do registrant checks
 
+                                                // If this registrant is flagged for removal from cart
+                                                if ($this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['removed']) {
+// *** remove registrant from cart in Database
+                                                // Otherwise add registrant to totals
+                                                } else {
 
+                                                    // Add registrant to totals
+                                                    if ($rateRegistrants == 0) {
+                                                        $rateBaseCharge = $rate['base_rate'];
+                                                    }
+                                                    $rateRegistrants++;
+                                                    if ($rateRegistrants > $rate['registrant_credits']) {
+                                                        $registrantCharges = $rate['per_registrant'];
+                                                    }
 
-                                            // Save totals for this registrant
-                                            $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['totalCharges']        = $registrantCharges;
-                                            $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['totalDiscounts']      = $registrantDiscounts;
-                                            $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['rateTotal']           = $registrantTotal;
+                                                    $rateRegistrantCharges += $registrantCharges;
+                                                    $rateDiscounts += $registrantDiscounts;
+                                                }
 
-                                            // Add totals to rate
-                                            $rateRegistrants++;
-                                            $rateCharges       += $registrantCharges;
-                                            $rateDiscounts     += $registrantDiscounts;
-                                            $rateTotal         += $registrantTotal;
+                                                // Save totals for this registrant
+                                                $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['registrantRate']      = $registrantCharges;
+                                                $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['registrants'][$registrantKey]['registrantDiscounts'] = $registrantDiscounts;
 
-                                        } // Each registrant
+                                            } // Each registrant
 
-                                    } // Have registrants
+                                        } // Have registrants
 
-                                    // Save totals for this rate
-                                    $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['totalRegistrants']    = $rateRegistrants;
-                                    $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['totalCharges']        = $rateCharges;
-                                    $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['totalDiscounts']      = $rateDiscounts;
-                                    $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['rateTotal']           = $rateTotal;
+                                        // Save totals for this rate
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['rateRegistrants']        = $rateRegistrants;
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['rateBaseCharge']         = $rateBaseCharge;
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['rateRegistrantCharges']  = $rateRegistrantCharges;
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['totalDiscounts']         = $rateDiscounts;
+                                        $this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['rateTotal']              = ( $rateBaseCharge + $rateRegistrantCarges );
 
-                                    // Add totals to class
-                                    $classRegistrants   += $rateRegistrants;
-                                    $classCharges       += $rateCharges;
-                                    $classDiscounts     += $rateDiscounts;
-                                    $classTotal         += $rateTotal;
+                                        // Add totals to class
+                                        $classRegistrants   += $rateRegistrants;
+                                        $classCharges       += ( $rateBaseCharge + $rateRegistrantCharges);
+                                        $classDiscounts     += $rateDiscounts;
+
+                                        // If rate has been flagged for removal from cart, delete it in the database
+                                        if ($this->cart['events'][$eventKey]['classes'][$classKey]['rates'][$rateKey]['removed']) {
+// *** remove rate from cart in Database
+                                        }
+
+
+                                    } // Have rate
 
                                 } // Each Rate
 
                             } // Have rates
 
                             // Save totals for this class (level)
-                            $this->cart['events'][$eventKey]['classes'][$classKey]['totalRegistrants']    = $classRegistrants;
-                            $this->cart['events'][$eventKey]['classes'][$classKey]['totalCharges']        = $classCharges;
-                            $this->cart['events'][$eventKey]['classes'][$classKey]['totalDiscounts']      = $classDiscounts;
-                            $this->cart['events'][$eventKey]['classes'][$classKey]['classTotal']          = $classTotal;
+                            $this->cart['events'][$eventKey]['classes'][$classKey]['classRegistrants']    = $classRegistrants;
+                            $this->cart['events'][$eventKey]['classes'][$classKey]['classCharges']        = $classCharges;
+                            $this->cart['events'][$eventKey]['classes'][$classKey]['classDiscounts']      = $classDiscounts;
 
                             // Add totals to event
                             $eventRegistrants   += $classRegistrants;
                             $eventCharges       += $classCharges;
                             $eventDiscounts     += $classDiscounts;
-                            $eventTotal         += $classTotal;
 
+                            // If class has been flagged for removal from cart, delete it from cart in database
+                            if ($this->cart['events'][$eventKey]['classes'][$classKey]['removed']) {
+// *** remove class from cart in Database
+                            }
 
                         } // Each class
 
                     } // Have Classes
 
                     // Save totals for this event
-                    $this->cart['events'][$eventKey]['totalRegistrants']    = $eventRegistrants;
-                    $this->cart['events'][$eventKey]['totalCharges']        = $eventCharges;
-                    $this->cart['events'][$eventKey]['totalDiscounts']      = $eventDiscounts;
-                    $this->cart['events'][$eventKey]['eventTotal']          = $eventTotal;
+                    $this->cart['events'][$eventKey]['eventRegistrants']    = $eventRegistrants;
+                    $this->cart['events'][$eventKey]['eventCharges']        = $eventCharges;
+                    $this->cart['events'][$eventKey]['eventDiscounts']      = $eventDiscounts;
 
                     // Add totals to request
-                    $totalCharges       += $eventCharges;
                     $totalRegistrants   += $eventRegistrants;
+                    $totalCharges       += $eventCharges;
                     $totalDiscounts     += $eventDiscounts;
-                    $grandTotal         += $eventTotal;
+
+                    // If event has been flagged for removal from cart, delete it from cart in database
+                    if ($this->cart['events'][$eventKey]['removed']) {
+//*** remove event from cart in Database
+                    }
 
                 } // Each event
 
             } // Have events
 
+            // Save totals for this request
+            $this->cart['totalRegistrants'] = $totalRegistrants;
+            $this->cart['totalCharges']     = $totalCharges;
+            $this->cart['totalDiscounts']   = $totalDiscounts;
+
             // Update request last_update timestamp
+// *** update cart last_update time
 
         } // have request
 
index 08a8191..c11370b 100644 (file)
@@ -304,7 +304,7 @@ app.Views.Admin.RegClass = Backbone.View.extend({
          * be an object, which is why the explicit === below.
          */
         if (addFlag === true) {
-            
+             
             console.log('New level created');
             this.$('.class-display-template').hide();
             this.$('.class-edit-template').show();
index 13f3deb..f1ca5f3 100644 (file)
@@ -185,7 +185,7 @@ app.Views.Admin.RegClass = Backbone.View.extend({
          * be an object, which is why the explicit === below.
          */
         if (addFlag === true) {
-            
+             
             console.log('New level created');
             this.$('.class-display-template').hide();
             this.$('.class-edit-template').show();
index 300bff1..92b3d6e 100644 (file)
@@ -234,8 +234,8 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations
                 '%d', // reg_request_class
                 '%d', // rate
                 '%d', // rate_name
-                '%s', // base_rate
-                '%s', // per_registrant
+                '%f', // base_rate
+                '%f', // per_registrant
                 '%d', // registrant_credits
             );
             if ( !$regRequestRate ) {
index 49a36ae..a5fa9c7 100644 (file)
@@ -171,15 +171,13 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent
                 }
                 if (is_array($regEvent['reg_class'])) {
                     $regEvent['reg_class'] = array_values($regEvent['reg_class']);
+                    $regClassesJSON = json_encode($regEvent['reg_class']);
                 }
                 if (is_array($regEvent['reg_time'])) {
                     $regEvent['reg_time'] = array_values($regEvent['reg_time']);
+                    $regTimesJSON = json_encode($regEvent['reg_time']);
                 }
 
-                // Separate Event, Classes, and Times and send those as separate JSONs
-                $regClassesJSON = json_encode($regEvent['reg_class']);
-                $regTimesJSON = json_encode($regEvent['reg_time']);
-
                 // Get rid of class and time arrays so we just have the event data
                 unset($regEvent['reg_class']);
                 unset($regEvent['reg_time']);
index 6c061a6..0fb52ea 100644 (file)
@@ -145,13 +145,13 @@ class GlmMembersFront_registrations_cart extends GlmRegCartSupport
                 break;
 
         }
-
+//echo "<pre>".print_r($this->config,1)."</pre>";
         // Compile template data
         $templateData = array(
             'cartId'        => $cartId,
             'haveCart'      => $haveCart,
-            'cart'          => $this->cart
-
+            'cart'          => $this->cart,
+            'regUrl'        => GLM_MEMBERS_REGISTRATIONS_SITE_BASE_URL.$this->config['settings']['canonical_reg_page'].'/'
         );
 
 //echo "<pre>".print_r($templateData,1)."</pre>";
index 667db41..dd6a5b5 100644 (file)
@@ -548,7 +548,7 @@ CREATE TABLE {prefix}reg_request_event (
 CREATE TABLE {prefix}reg_request_class (
     id INT NOT NULL AUTO_INCREMENT,
     reg_event INT NULL,                                         -- Pointer to reg_event entry
-    event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
+-- ****    event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
     event_datetime DATETIME NULL,                               -- Date and time of event time selected so it will always be in the cart
     reg_request INT NULL,                                       -- Pointer to the registration request record
     reg_request_event INT NULL,                                 -- Pointer to reg_request_event table entry
@@ -569,7 +569,7 @@ CREATE TABLE {prefix}reg_request_class (
 CREATE TABLE {prefix}reg_request_rate (
     id INT NOT NULL AUTO_INCREMENT,
     reg_event INT NULL,                                         -- Pointer to reg_event entry
-    event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
+--  ****  event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
     event_datetime DATETIME NULL,                               -- Date and time of event time selected so it will always be in the cart
     reg_request INT NULL,                                       -- Pointer to the registration request record
     reg_request_event INT NULL,                                 -- Pointer to reg_request_event table entry
@@ -595,7 +595,7 @@ CREATE TABLE {prefix}reg_request_registrant (
     id INT NOT NULL AUTO_INCREMENT,
     account INT NULL,                                           -- Pointer to the account entry for the person being registered - False (0) if account no longer exists or registrant account not needed
     reg_event INT NULL,                                         -- Pointer to reg_event entry
-    event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
+--  ****  event_name TINYTEXT NULL,                                   -- Name of Event so it will always be in the cart data
     reg_time INT NULL,                                          -- Pointer reg_time entry
     event_datetime DATETIME NULL,                               -- Date and time of event time selected so it will always be in the cart
     reg_request INT NULL,                                       -- Pointer to the registration request record
index 0dd78ef..cdfc20f 100644 (file)
@@ -36,7 +36,7 @@
         </script>
     
         <script type="text/template" id="regClass-template">
-            <div class="class-display-template" style="display: none;">
+            <div class="class-display-template" style="">
                 <div class="glm-class-header">
                     <div class="glm-right">
                         <a class="class-edit button button-secondary glm-button-small">Edit</a>
index 0560945..5241fc6 100644 (file)
@@ -1,4 +1,4 @@
-<h1> *** THIS IS THE CART PAGE *** </h1>
+{include file='front/registrations/header.html'}
 
 <h3>Temporary output for testing cart data</h3>
 
index 7adc746..dec8427 100644 (file)
@@ -3,9 +3,9 @@
     <div id="registrations-cart-link-widget" style="width: 80px; height: 75px; padding: 5px; background-color: #ffffff; border: 1px black solid; position: relative">
         <img src="{$assetUrl}/registrationBlue.svg" width="50" style="position: absolute; z-index: 1;">
         <div style="font-size: .5em; line-height: 1.1em; position: absolute; left: 14px; top: 65px; z-index: 2; font-style: italic;">REGISTRATION</div>
-        <div style="font-size: .5em; line-height: 1.1em; position: absolute; left: 19px; top: 42px; z-index: 2;">
-            {$numb_events} Event{if $numb_events > 1}s{/if}<br>
-            {$numb_registrants} Registrant{if $numb_registrants > 1}s{/if}
+        <div style="font-size: .5em; line-height: 1.1em; position: absolute; left: 22px; top: 44px; z-index: 2;">
+            {$numb_events} Event{if $numb_events == 0 || $numb_events > 1}s{/if}<br>
+            {$numb_registrants} Registrant{if $numb_registrants == 0 || $numb_registrants > 1}s{/if}
         </div>
     </div>
 </a>
diff --git a/views/front/registrations/header.html b/views/front/registrations/header.html
new file mode 100644 (file)
index 0000000..a8254b8
--- /dev/null
@@ -0,0 +1,3 @@
+<div>
+    <a href="{$regUrl}">Register for Another Event</a> (should be a button)
+</div>