Moved add level button to ID from class.
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 12 Sep 2017 18:39:43 +0000 (14:39 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 12 Sep 2017 18:39:43 +0000 (14:39 -0400)
Updated registrations admin.css to improve registrations levels & charges setup.
Changed eventEditLevels.html for improved layout.

css/admin.css
js/adminRegApp.js
js/views/admin/regEvent.js
models/admin/registrations/events.php
views/admin/registrations/eventEditLevels.html
views/admin/registrations/eventsDashboard.html

index 9acebfd..788b7ea 100644 (file)
     clear: both;
     display: block;
 }
-.glm-reg-event-item {
-    border: 1px solid black;
-    padding: 10px;
-    margin: 1.2rem 1rem;
-    position: relative;
-}
 .glm-reg-event-item h2 {
     font-size: 1.5rem;
     font-weight: bold;
     width: 80%;
 }
 .glm-reg-level {
-    width: 48%;
-    float: left;
-    clear: left;
-}
-.glm-reg-level h3 {
-    font-size: 1rem;
-    font-weight: bold;
-    text-decoration: none;
-    padding: .3rem;
+    width: 99%;
+    padding-bottom: .7em;
+    padding-top: 1em;
+}
+.glm-class-label {
+    height: 1em;
+}
+.glm-class-header {
+    width: 99%;
+    border-bottom-style: solid;
+    padding-bottom: 1em;
+    padding-top: 1em;
 }
 .glm-reg-submit {
     padding: 1rem;
index c0a020f..75cbb65 100644 (file)
@@ -1 +1 @@
-app.Models.Admin.RegClass=Backbone.Model.extend({defaults:{id:null,parent:0,reg_event:0,name:"",descr:""},initialize:function(){this.rates=new app.Collections.Admin.RegRates}}),app.Models.Admin.RegEvent=Backbone.Model.extend({defaults:{name:"regEvent",event_name:"",event_code:"",notify_email:"",attendees_max:0,attendees_max_per_reg:0,reg_hold_minutes:0,cart_hold_days:0,terms:""},initialize:function(){this.classes=new app.Collections.Admin.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.Admin.RegRate=Backbone.Model.extend({defaults:{reg_event:0,reg_class:"",name:"",start_days:0,end_days:0,base_rate:0,per_registrant:0,registrant_credits:0},initialize:function(){}}),app.Collections.Admin.RegClasses=Backbone.Collection.extend({model:app.Models.Admin.RegClass,localStorage:new Backbone.LocalStorage("Classes")}),app.Collections.Admin.RegRates=Backbone.Collection.extend({model:app.Models.Admin.RegRate}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.Admin.EventEditLevels=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.Admin.RegEvent({model:regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{}}),app.Views.Admin.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model,"change",this.render),this},events:{"click .edit-level":"editLevel","click .class-update":"update","click .class-add":"add","click .class-cancel":"cancel"},update:function(){console.log("Update called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.save({name:e,descr:t}),this.$(".class-edit-form").hide(),this.$(".class-label").show()},add:function(){console.log("Add called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.set({name:e,descr:t}),this.model.get("parent").classes.create(this.model)},cancel:function(){console.log("Cancel called"),this.remove()},editLevel:function(){this.$(".class-edit-form").show(),this.$(".class-label").hide(),this.$(".class-name").focus()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},addOne:function(e){if(e.isValid()){var t=new app.Views.Admin.RegClasses({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.Admin.RegEvent=Backbone.View.extend({tagName:"div",className:"glm-reg-event-item clearfix",template:_.template(jQuery("#regEvent-template").html()),initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model.classes,"add",this.addOne),this.listenTo(this.model.classes,"create",this.addOne),this.listenTo(this.model.classes,"reset",this.addAll)},events:{"click .add-reg-level":"addLevel"},addLevel:function(){console.log("Add Level Called");var e=new app.Models.Admin.RegClass({parent:this.model}),t=new app.Views.Admin.RegClass({model:e});this.$el.append(t.render().el)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=regEvent.classes.map(function(e){return new app.Views.Admin.RegClass({model:e}).render().el});return this.$el.append(e),this}});
\ No newline at end of file
+app.Models.Admin.RegClass=Backbone.Model.extend({defaults:{id:null,parent:0,reg_event:0,name:"",descr:""},initialize:function(){this.rates=new app.Collections.Admin.RegRates}}),app.Models.Admin.RegEvent=Backbone.Model.extend({defaults:{name:"regEvent",event_name:"",event_code:"",notify_email:"",attendees_max:0,attendees_max_per_reg:0,reg_hold_minutes:0,cart_hold_days:0,terms:""},initialize:function(){this.classes=new app.Collections.Admin.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.Admin.RegRate=Backbone.Model.extend({defaults:{reg_event:0,reg_class:"",name:"",start_days:0,end_days:0,base_rate:0,per_registrant:0,registrant_credits:0},initialize:function(){}}),app.Collections.Admin.RegClasses=Backbone.Collection.extend({model:app.Models.Admin.RegClass,localStorage:new Backbone.LocalStorage("Classes")}),app.Collections.Admin.RegRates=Backbone.Collection.extend({model:app.Models.Admin.RegRate}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.Admin.EventEditLevels=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.Admin.RegEvent({model:regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{}}),app.Views.Admin.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model,"change",this.render),this},events:{"click .edit-level":"editLevel","click .class-update":"update","click .class-add":"add","click .class-cancel":"cancel"},update:function(){console.log("Update called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.save({name:e,descr:t}),this.$(".class-edit-form").hide(),this.$(".class-label").show()},add:function(){console.log("Add called");var e=this.$(".class-name").val().trim(),t=this.$(".class-descr").val().trim();this.model.set({name:e,descr:t}),this.model.get("parent").classes.create(this.model)},cancel:function(){console.log("Cancel called"),this.remove()},editLevel:function(){this.$(".class-edit-form").show(),this.$(".class-label").hide(),this.$(".class-name").focus()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},addOne:function(e){if(e.isValid()){var t=new app.Views.Admin.RegClasses({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.Admin.RegEvent=Backbone.View.extend({tagName:"div",className:"glm-reg-event-item clearfix",template:_.template(jQuery("#regEvent-template").html()),initialize:function(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model.classes,"add",this.addOne),this.listenTo(this.model.classes,"create",this.addOne),this.listenTo(this.model.classes,"reset",this.addAll)},events:{"click #add-reg-level":"addLevel"},addLevel:function(){console.log("Add Level Called");var e=new app.Models.Admin.RegClass({parent:this.model}),t=new app.Views.Admin.RegClass({model:e});this.$el.append(t.render().el)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=regEvent.classes.map(function(e){return new app.Views.Admin.RegClass({model:e}).render().el});return this.$el.append(e),this}});
\ No newline at end of file
index e1ca8e7..34ce042 100644 (file)
@@ -18,8 +18,7 @@ app.Views.Admin.RegEvent = Backbone.View.extend({
     },
 
     events: {
-        'click .add-reg-level': 'addLevel',
-        //'click .class-add': 'add',
+        'click #add-reg-level': 'addLevel',
     },
 
     addLevel: function(){
index 8f949cc..f128148 100644 (file)
@@ -83,8 +83,6 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent
 
         $option                    = 'dashboard';
         $view                      = false;
-        $where                     = ' true ';
-        $alphaWhere                = ' true ';
         $numbDisplayed             = false;
         $lastDisplayed             = false;
         $paging                    = true;
@@ -93,7 +91,7 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent
         $start                     = 1;
         $limit                     = 20;        // Set to the number of listings per page
         $textSearch                = false;
-        $where                     = "TRUE";
+        $where                     = ' TRUE ';
         $alphaList                 = false;
         $alphaWhere                = '';
         $alphaSelected             = false;
@@ -422,15 +420,21 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent
                     $alphaWhere .= " AND T.event_name LIKE '$alphaSelected%'";
                 }
 
+                $where = ' TRUE ';
+                if (isset($_REQUEST['text_search']) && trim($_REQUEST['text_search'] != '')) {
+                    $textSearch = trim($_REQUEST['text_search']);
+                    $where = "event_name LIKE '%".$textSearch."%'";
+                    
+                    // Clean up for use in redisplaying search value
+                    $textSearch = stripslashes($textSearch);
+                }
+
                 // Get full list for all other filters, but not filtered by alpha (that would be silly)
-                $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected);
+                $alphaList = $this->getAlphaList('');
 
                 // Get count of reg event listed
                 $regEventsCount = $this->getStats($where);
 
-                // Get stats for number of registration events found matching current selection criteria (includes alpha selection)
-                $filteredRegEventsFound = $this->getStats(str_replace('T.', '', $where.$alphaWhere));
-
                 // Get a current list of reg events
                 $listResult = $this->getSimpleRegEventsList($where.$alphaWhere, 'event_name', true, 'id', $start, $limit, true);
 
index 6fdb4f9..2c58c4d 100644 (file)
         <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=edit&regEventID={$regEventID}" class="nav-tab">Edit Registration Settings</a>
         <a onClick="return false;" class="nav-tab nav-tab-active">Registration Levels & Charges</a>
     </h2>
+    
     {* Event Registration App - Backbone.js *}
     {* Underscore Templates for the Event Registration App *}
+    
     {literal}
-    <script type="text/template" id="regEvent-template">
-    <h2><%= event_name %></h2>
-    <h3>Registration Levels</h3>
-    <a class="add-reg-level">Add Level</a>
-    </script>
-    <script type="text/template" id="regClass-template">
-    <% if (id) { %>
-        <a>Delete Level</a>
-        <a class="edit-level">Edit</a>
-        <div class="class-label">
-            <h3><%= name %></h3>
+
+        <script type="text/template" id="regEvent-template">
+            <div style="margin-bottom: 1em;">
+                <a id="add-reg-level" class="button button-secondary glm-button glm-right">Add a Registration Level</a>
+                <h3>Registration Levels</h3>
+            </div>
+        </script>
+    
+        <script type="text/template" id="account-template">
+            <a class="glm-reg-level-registrant-delete">Delete</a>
+            <label class="registrant-label">
+                <span class="glm-reg-level-registrant-email"><%= email %></span>
+            </label>
+            <div class="registrant-edit">
+                <input type="text" class="editEmail" value="<%- email %>">
+                <input type="submit" class="saveRegistrant" value="Save">
+            </div>
+        </script>
+    
+        <script type="text/template" id="regClass-template">
+            <div class="glm-class-header">
+                <div class="glm-right">
+                    <a class="delete-level button button-secondary glm-button-small">Delete Level</a>
+                    <a class="edit-level button button-secondary glm-button-small">Edit</a>
+                    <a class="add-reg-rate button button-secondary glm-button-small">Add Reg Rate</a>
+                </div>
+                <div class="glm-class-label">
+                    <h3><%= name %></h3>
+                </div>
+            </div>
             <%= descr %>
-        </div>
-        <div class="class-edit-form">
-            <input class="class-name" type="text" name="reg_name_<%- id %>" value="<%- name %>">
-            <input class="class-descr" type="text" name="reg_descr_<%- id %>" size="90" value="<%- descr %>">
-            <a class="class-cancel">Cancel</a>
-            <a class="class-update">Update</a>
-        </div>
-        <a class="add-reg-rate">Add Reg Rate</a>
-    <% } else { %>
-        <div class="class-add-form">
-            <input class="class-name" type="text" name="reg_name_new" value="">
-            <input class="class-descr" type="text" name="reg_descr_new" size="90" value="">
-            <a class="class-cancel">Cancel</a>
-            <a class="class-add">Add</a>
-        </div>
-    <% } %>
-    </script>
+            <div class="class-edit-form">
+                <input class="class-name" type="text" name="reg_name_<% if (id) { %><%- id %><% } else { %> new <% } %>" value="<% if (name) { %><%- name %><% } %>">
+                <input class="class-descr" type="text" name="reg_descr_<% if (id) { %><%- id %><% } else { %> new <% } %>" size="90" value="<% if (descr) { %><%- descr %><% } %>">
+            </div>
+        </script>
+    
+        <script type="text/template" id="eventReg-account-login">
+            <h4>Login</h4>
+            <a class="glm-reg-account-login" id="loginCancel">Close</a>
+            <input class="login">
+            <input class="password">
+            <input type="submit" class="accountLogin" value="Login">
+        </script>
+    
     {/literal}
+    
     <div class="glm-reg-event-list" id="regApp">
     </div>
+    
     {* Bootstrap the models needed on page load *}
     {* Need to have RegEvent model created *}
     {* And create the RegClasses collection *}
     <script>
-    //var $=jQuery.noConflict();
-    var appLoginUrl = '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=login';
-    var ajaxUrl = '{$ajaxUrl}?action=glm_members_admin_ajax';
-    var app = {
-        Models: { Front: {}, Admin: {} },
-        Collections: { Front: {}, Admin: {} },
-        Views: { Front: {}, Admin: {} },
-    };
-    var regEvent = '';
-    jQuery(function($){
-        regEvent = new app.Models.Admin.RegEvent;
-        regEvent.set( {$regEventJSON} );
-        regEvent.setClasses( {$regClassJSON} );
-        new app.Views.Admin.EventEditLevels();
-    });
+        //var $=jQuery.noConflict();
+        var appLoginUrl = '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=login';
+        var ajaxUrl = '{$ajaxUrl}?action=glm_members_admin_ajax';
+        var app = {
+            Models: { Front: {}, Admin: {} },
+            Collections: { Front: {}, Admin: {} },
+            Views: { Front: {}, Admin: {} },
+        };
+        var regEvent = '';
+        jQuery(function($){
+            regEvent = new app.Models.Admin.RegEvent;
+            regEvent.set( {$regEventJSON} );
+            regEvent.setClasses( {$regClassJSON} );
+            new app.Views.Admin.EventEditLevels();
+        });
     </script>
 
 
index 6832a38..3fd9a90 100644 (file)
@@ -4,7 +4,6 @@
 
 <div class="glm-admin-table-inner glm-admin-table">
     <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
-        <input type="hidden" name="glm_action" value="list">
         <input type="hidden" name="prevStart" value="{$prevStart}">
         <input type="hidden" name="nextStart" value="{$nextStart}">
         <input type="hidden" name="limit" value="{$limit}">
         <p><h2 class="glm-admin-table-header">List&nbsp;of&nbsp;Registration&nbsp;Events</h2></p>
         
         <div class="glm-row">   
-            <b>Text Search: </b><input  class="glmRegEventsSearch" type="text" name="text_search" id="autoTest">
+            <b>Text Search: </b><input  class="glmRegEventsSearch" type="text" name="text_search" id="autoTest" value="{$textSearch}">
             <input type="submit" value="Submit" style="margin-right: 2em;">
         </div>
 
-        <p><b>Total found:</b> {$regEventsCount}&nbsp;&nbsp;</p>
+    </form>
 
-        <br clear="all">
+    <p><b>Total found:</b> {$regEventsCount}&nbsp;&nbsp;</p>
 
-        <!-- Add Reg Event Type Button and Dialog Box -->
+    <br clear="all">
 
-        {if $paging}
-            <input type="Submit" name="pageSelect" value="Previous {$limit} Registration Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
-            <input type="Submit" name="pageSelect" value="Next {$limit} Registration Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
-        {/if}
+    <!-- Add Reg Event Type Button and Dialog Box -->
 
-        <div class="glm-alpha-links">
-            <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-list&glm_action=list&textSearch={$textSearch}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
-      {foreach $alphaList as $a}
-            <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-list&glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
-      {/foreach}
-       </div>
-
-        <table class="wp-list-table striped glm-admin-table-single">
-            <thead>
-                <tr>
-                    <th>ID</th>
-                    <th>Event Name</th>
-                </tr>
-            </thead>
-            <tbody>
-    {if $haveRegEvents}
-        {assign var="i" value="0"}
-        {foreach $regEvents as $r}
-            {if $i++ is odd by 1}
-                <tr>
-            {else}
-                <tr class="alternate">
-            {/if}
-                    <td style="width: 50px;">
-                        {$r.id}
-                    </td>
-                    <td>
-                        <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=eventDashboard&regEventID={$r.id}">{$r.event_name}</a>
-                    </td>
-                </tr>
-        {/foreach}
-    {else}
-                <tr class="alternate"><td colspan="2">(no registration events listed)</td></tr>
+    {if $paging}
+        <input type="Submit" name="pageSelect" value="Previous {$limit} Registration Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+        <input type="Submit" name="pageSelect" value="Next {$limit} Registration Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
     {/if}
-            </tbody>
-        </table>
 
-        {if $paging}
-            <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
-            <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+    <div class="glm-alpha-links">
+        <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&text_search={$textSearch}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+  {foreach $alphaList as $a}
+        <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&alpha={$a.alpha}&text_search={$textSearch}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+  {/foreach}
+   </div>
+
+    <table class="wp-list-table striped glm-admin-table-single">
+        <thead>
+            <tr>
+                <th>ID</th>
+                <th>Event Name</th>
+            </tr>
+        </thead>
+        <tbody>
+{if $haveRegEvents}
+    {assign var="i" value="0"}
+    {foreach $regEvents as $r}z
+        {if $i++ is odd by 1}
+            <tr>
+        {else}
+            <tr class="alternate">
         {/if}
+                <td style="width: 50px;">
+                    {$r.id}
+                </td>
+                <td>
+                    <a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=eventDashboard&regEventID={$r.id}">{$r.event_name}</a>
+                </td>
+            </tr>
+    {/foreach}
+{else}
+            <tr class="alternate"><td colspan="2">(no registration events listed)</td></tr>
+{/if}
+        </tbody>
+    </table>
+
+    {if $paging}
+        <input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+        <input type="Submit" name="pageSelect" value="Next {$limit} Events" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+    {/if}
 
-    </form>
 </div>
 <script type="text/javascript">
     jQuery(document).ready(function($) {