-app.Models.Admin.RegClass=Backbone.Model.extend({defaults:{id:"new",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}),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.updateCount),this},events:{"click .edit-level":"editLevel"},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.Account({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)},events:{"click .add-reg-level":"addLevel"},addLevel:function(){console.log("Add Level Called");var e=new app.Views.Admin.RegClass({model:new app.Models.Admin.RegClass});this.$el.append(e.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
app.Collections.Admin.RegClasses = Backbone.Collection.extend({
model: app.Models.Admin.RegClass,
+ localStorage: new Backbone.LocalStorage( 'Classes' ),
+
});
// Defaults
defaults: {
- id: 'new',
+ id: null,
+ parent: 0,
reg_event: 0,
name: '',
descr: '',
template: _.template( jQuery('#regClass-template').html() ),
initialize: function(){
- this.listenTo( this.model, 'change', this.updateCount );
+ this.listenTo( this.model, 'change', this.render );
return this;
},
events: {
- 'click .edit-level': 'editLevel'
+ 'click .edit-level': 'editLevel',
+ 'click .class-update': 'update',
+ 'click .class-add': 'add',
+ 'click .class-cancel': 'cancel',
+ },
+
+ update: function(){
+ console.log('Update called');
+ var cName = this.$('.class-name').val().trim();
+ var cDescr = this.$('.class-descr').val().trim();
+ this.model.save({ name: cName, descr: cDescr });
+ this.$('.class-edit-form').hide();
+ this.$('.class-label').show();
+ },
+
+ add: function(){
+ console.log('Add called');
+ var cName = this.$('.class-name').val().trim();
+ var cDescr = this.$('.class-descr').val().trim();
+ this.model.set({ name: cName, descr: cDescr });
+ // Add this new model to the collection.
+ var parentEvent = this.model.get( 'parent' );
+ parentEvent.classes.create( this.model );
+ },
+
+ cancel: function(){
+ console.log('Cancel called');
+ this.remove();
},
editLevel: function(){
addOne: function( item ){
if ( item.isValid() ) {
- var view = new app.Views.Admin.Account({ model: item });
+ var view = new app.Views.Admin.RegClasses({ model: item });
this.$el.append( view.render().el );
}
},
// Called when the view is first created
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',
+ //'click .class-add': 'add',
},
addLevel: function(){
console.log( 'Add Level Called' );
// create a new view and model and add it to classes and call render.
- var view = new app.Views.Admin.RegClass({ model: new app.Models.Admin.RegClass });
+ // Create the model for the view and add it to the collection
+ var regClass = new app.Models.Admin.RegClass({ parent: this.model });
+ //this.model.classes.add( regClass );
+ var view = new app.Views.Admin.RegClass({ model: regClass });
this.$el.append(view.render().el);
},
var regemail = this.$emailInput.val().trim();
if ( regemail ) {
- this.model.save({ email: regemail });
+ this.model.save({ email: regemail });
} else {
this.clear(); // NEW
}
<h3>Registration Levels</h3>
<a class="add-reg-level">Add Level</a>
</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">
- <a>Delete Level</a>
- <a class="edit-level">Edit</a>
- <div class="class-label">
- <h3><%= name %></h3>
- <%= descr %>
- </div>
- <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>
- <a class="add-reg-rate">Add Reg Rate</a>
- </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">
+ <% if (id) { %>
+ <a>Delete Level</a>
+ <a class="edit-level">Edit</a>
+ <div class="class-label">
+ <h3><%= name %></h3>
+ <%= 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>
{/literal}
<div class="glm-reg-event-list" id="regApp">