From 14ed377cc1aef5c2b3e6670ee3a9b5e486d6437f Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Fri, 15 Sep 2017 11:59:37 -0400 Subject: [PATCH] Adding edit to admin edit registration levels and charges --- js/adminRegApp.js | 2 +- js/views/admin/regClass.js | 42 ++++++++++------ js/views/admin/regEvent.js | 6 +-- models/admin/registrations/events.php | 12 +++-- .../admin/registrations/eventEditLevels.html | 50 ++++++++++++++----- 5 files changed, 77 insertions(+), 35 deletions(-) diff --git a/js/adminRegApp.js b/js/adminRegApp.js index 75cbb65..d4a2dcf 100644 --- a/js/adminRegApp.js +++ b/js/adminRegApp.js @@ -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,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 .class-edit":"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(),s=this.$(".class-descr").val().trim();this.model.save({name:e,descr:s}),this.$(".class-display-template").show(),this.$(".class-edit-template").hide(),glmSubmitRequired--},s:function(){console.log("add called");var e=this.$(".class-name").val().trim(),s=this.$(".class-descr").val().trim();this.model.set({name:e,descr:s}),this.model.get("parent").classes.create(this.model)},cancel:function(){console.log("cancel called"),this.remove()},editLevel:function(){console.log("editLevel called"),this.$(".class-display-template").hide(),this.$(".class-edit-template").show(),this.$(".class-name").focus(),glmSubmitRequired++},render:function(e){return this.$el.html(this.template(this.model.toJSON())),e&&(console.log("New level created"),this.$(".class-display-template").hide(),this.$(".class-edit-template").show(),this.$(".class-name").focus(),glmSubmitRequired++),this},addOne:function(e){if(console.log("addOne called"),e.isValid()){var s=new app.Views.Admin.RegClasses({model:e});this.$el.append(s.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 #class-add":"addLevel"},addLevel:function(){console.log("addLevel Called");var e=new app.Models.Admin.RegClass({parent:this.model}),s=new app.Views.Admin.RegClass({model:e});this.$el.append(s.render(!0).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 diff --git a/js/views/admin/regClass.js b/js/views/admin/regClass.js index c93331d..b6a4f86 100644 --- a/js/views/admin/regClass.js +++ b/js/views/admin/regClass.js @@ -13,23 +13,24 @@ app.Views.Admin.RegClass = Backbone.View.extend({ }, events: { - 'click .edit-level': 'editLevel', - 'click .class-update': 'update', - 'click .class-add': 'add', - 'click .class-cancel': 'cancel', + 'click .class-edit': 'editLevel', + 'click .class-update': 'update', + 'click .class-add': 'add', + 'click .class-cancel': 'cancel', }, update: function(){ - console.log('Update called'); + 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(); - }, + this.$('.class-display-template').show(); + this.$('.class-edit-template').hide(); + glmSubmitRequired--; + },s add: function(){ - console.log('Add called'); + 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 }); @@ -39,23 +40,34 @@ app.Views.Admin.RegClass = Backbone.View.extend({ }, cancel: function(){ - console.log('Cancel called'); + console.log('cancel called'); this.remove(); }, editLevel: function(){ - this.$('.class-edit-form').show(); - this.$('.class-label').hide(); + console.log('editLevel called'); + this.$('.class-display-template').hide(); + this.$('.class-edit-template').show(); this.$('.class-name').focus(); + glmSubmitRequired++; }, - render: function(){ - this.$el.html( this.template( this.model.toJSON() ) ); + render: function(addFlag){ + this.$el.html( this.template( this.model.toJSON() ) ); + // If addFlag set then we know the call to this is to add a class and not to initialize existing classes + if (addFlag) { + console.log('New level created'); + this.$('.class-display-template').hide(); + this.$('.class-edit-template').show(); + this.$('.class-name').focus(); + glmSubmitRequired++; + } return this; }, addOne: function( item ){ - if ( item.isValid() ) { + console.log('addOne called'); + if ( item.isValid() ) { var view = new app.Views.Admin.RegClasses({ model: item }); this.$el.append( view.render().el ); } diff --git a/js/views/admin/regEvent.js b/js/views/admin/regEvent.js index 34ce042..3a52ba4 100644 --- a/js/views/admin/regEvent.js +++ b/js/views/admin/regEvent.js @@ -18,17 +18,17 @@ app.Views.Admin.RegEvent = Backbone.View.extend({ }, events: { - 'click #add-reg-level': 'addLevel', + 'click #class-add': 'addLevel', }, addLevel: function(){ - console.log( 'Add Level Called' ); + console.log( 'addLevel Called' ); // create a new view and model and add it to classes and call render. // 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); + this.$el.append(view.render(true).el); }, render: function(){ diff --git a/models/admin/registrations/events.php b/models/admin/registrations/events.php index b9cd4cf..9f5b22f 100644 --- a/models/admin/registrations/events.php +++ b/models/admin/registrations/events.php @@ -163,10 +163,16 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent // Make all arrays of arrays non-associative to make Backbone happy foreach ($regEvent['reg_class'] as $k=>$v) { - $regEvent['reg_class'][$k]['reg_rate'] = array_values($regEvent['reg_class'][$k]['reg_rate']); + if (is_array($regEvent['reg_class'][$k]['reg_rate'])) { + $regEvent['reg_class'][$k]['reg_rate'] = array_values($regEvent['reg_class'][$k]['reg_rate']); + } + } + if (is_array($regEvent['reg_class'])) { + $regEvent['reg_class'] = array_values($regEvent['reg_class']); + } + if (is_array($regEvent['reg_time'])) { + $regEvent['reg_time'] = array_values($regEvent['reg_time']); } - $regEvent['reg_class'] = array_values($regEvent['reg_class']); - $regEvent['reg_time'] = array_values($regEvent['reg_time']); // Separate Event, Classes, and Times and send those as separate JSONs $regClassesJSON = json_encode($regEvent['reg_class']); diff --git a/views/admin/registrations/eventEditLevels.html b/views/admin/registrations/eventEditLevels.html index 8623861..0849c3f 100644 --- a/views/admin/registrations/eventEditLevels.html +++ b/views/admin/registrations/eventEditLevels.html @@ -29,27 +29,38 @@ @@ -66,6 +77,10 @@ {* Need to have RegEvent model created *} {* And create the RegClasses collection *} -- 2.17.1