Updated registrations admin.css to improve registrations levels & charges setup.
Changed eventEditLevels.html for improved layout.
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;
-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
},
events: {
- 'click .add-reg-level': 'addLevel',
- //'click .class-add': 'add',
+ 'click #add-reg-level': 'addLevel',
},
addLevel: function(){
$option = 'dashboard';
$view = false;
- $where = ' true ';
- $alphaWhere = ' true ';
$numbDisplayed = false;
$lastDisplayed = false;
$paging = true;
$start = 1;
$limit = 20; // Set to the number of listings per page
$textSearch = false;
- $where = "TRUE";
+ $where = ' TRUE ';
$alphaList = false;
$alphaWhere = '';
$alphaSelected = false;
$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);
<a href="{$thisUrl}?page=glm-members-admin-menu-registrations-events&option=edit®EventID={$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>
<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 of Registration 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} </p>
+ </form>
- <br clear="all">
+ <p><b>Total found:</b> {$regEventsCount} </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®EventID={$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®EventID={$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($) {