From 64bb0b219fe89b770eeef16563134b1a302e3b56 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 8 Sep 2017 12:59:55 -0400 Subject: [PATCH] Reorganizing the js files. Setting up with admin and front directories. --- gulpfile.js | 9 +- js/collections/{ => front}/accounts.js | 0 js/collections/{ => front}/regClasses.js | 0 js/collections/{ => front}/regRates.js | 0 js/models/admin/regAdminClass.js | 17 ++ js/models/admin/regAdminEvent.js | 28 +++ js/models/{ => front}/account.js | 0 js/models/{ => front}/accountDetail.js | 0 js/models/{ => front}/login.js | 0 js/models/{ => front}/regClass.js | 0 js/models/{ => front}/regEvent.js | 0 js/models/{ => front}/regRate.js | 0 js/regApp.js | 2 +- js/views/admin/adminRegClass.js | 86 +++++++++ js/views/admin/adminRegEvent.js | 25 +++ js/views/admin/eventEditLevels.js | 35 ++++ js/views/{ => front}/account.js | 2 +- js/views/{ => front}/app.js | 2 +- js/views/{ => front}/login.js | 10 +- js/views/{ => front}/regClass.js | 8 +- js/views/{ => front}/regEvent.js | 2 +- models/admin/registrations/events.php | 174 +++++++++--------- .../admin/registrations/eventEditLevels.html | 54 ++---- 23 files changed, 310 insertions(+), 144 deletions(-) rename js/collections/{ => front}/accounts.js (100%) rename js/collections/{ => front}/regClasses.js (100%) rename js/collections/{ => front}/regRates.js (100%) create mode 100644 js/models/admin/regAdminClass.js create mode 100644 js/models/admin/regAdminEvent.js rename js/models/{ => front}/account.js (100%) rename js/models/{ => front}/accountDetail.js (100%) rename js/models/{ => front}/login.js (100%) rename js/models/{ => front}/regClass.js (100%) rename js/models/{ => front}/regEvent.js (100%) rename js/models/{ => front}/regRate.js (100%) create mode 100644 js/views/admin/adminRegClass.js create mode 100644 js/views/admin/adminRegEvent.js create mode 100644 js/views/admin/eventEditLevels.js rename js/views/{ => front}/account.js (95%) rename js/views/{ => front}/app.js (95%) rename js/views/{ => front}/login.js (74%) rename js/views/{ => front}/regClass.js (93%) rename js/views/{ => front}/regEvent.js (90%) diff --git a/gulpfile.js b/gulpfile.js index dd8074b..5545412 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,7 +5,14 @@ var gulp = require('gulp'), plumber = require('gulp-plumber'); gulp.task('scripts', function(){ - gulp.src(['js/models/*.js', './js/collections/*.js', './js/views/*.js']) + gulp.src([ + 'js/models/front/*.js', + 'js/models/admin/*.js', + 'js/collections/front/*.js', + 'js/collections/admin/*.js', + 'js/views/front/*.js', + 'js/views/admin/*.js' + ]) .pipe(plumber()) .pipe(concat('regApp.js')) .pipe(uglify()) diff --git a/js/collections/accounts.js b/js/collections/front/accounts.js similarity index 100% rename from js/collections/accounts.js rename to js/collections/front/accounts.js diff --git a/js/collections/regClasses.js b/js/collections/front/regClasses.js similarity index 100% rename from js/collections/regClasses.js rename to js/collections/front/regClasses.js diff --git a/js/collections/regRates.js b/js/collections/front/regRates.js similarity index 100% rename from js/collections/regRates.js rename to js/collections/front/regRates.js diff --git a/js/models/admin/regAdminClass.js b/js/models/admin/regAdminClass.js new file mode 100644 index 0000000..56ec5fa --- /dev/null +++ b/js/models/admin/regAdminClass.js @@ -0,0 +1,17 @@ +// js/models/regAdminClass.js + +// Admin Registration Class model +app.Models.AdminRegClass = Backbone.Model.extend({ + + // Defaults + defaults: { + reg_event: 0, + name: '', + descr: '', + }, + + initialize: function(){ + this.rates = new app.Collections.Rates; + }, + +}); diff --git a/js/models/admin/regAdminEvent.js b/js/models/admin/regAdminEvent.js new file mode 100644 index 0000000..666ebe9 --- /dev/null +++ b/js/models/admin/regAdminEvent.js @@ -0,0 +1,28 @@ +// js/models/regAdminEvent.js + +// Event Reg model +app.Models.AdminRegEvent = Backbone.Model.extend({ + + // Default regEvent values + 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(){ + // for setting up classes + this.classes = new app.Collections.RegClasses; + }, + + setClasses: function( regClasses ){ + this.classes.reset( regClasses ); + }, + +}); diff --git a/js/models/account.js b/js/models/front/account.js similarity index 100% rename from js/models/account.js rename to js/models/front/account.js diff --git a/js/models/accountDetail.js b/js/models/front/accountDetail.js similarity index 100% rename from js/models/accountDetail.js rename to js/models/front/accountDetail.js diff --git a/js/models/login.js b/js/models/front/login.js similarity index 100% rename from js/models/login.js rename to js/models/front/login.js diff --git a/js/models/regClass.js b/js/models/front/regClass.js similarity index 100% rename from js/models/regClass.js rename to js/models/front/regClass.js diff --git a/js/models/regEvent.js b/js/models/front/regEvent.js similarity index 100% rename from js/models/regEvent.js rename to js/models/front/regEvent.js diff --git a/js/models/regRate.js b/js/models/front/regRate.js similarity index 100% rename from js/models/regRate.js rename to js/models/front/regRate.js diff --git a/js/regApp.js b/js/regApp.js index 3fd3f5b..ab86387 100644 --- a/js/regApp.js +++ b/js/regApp.js @@ -1 +1 @@ -app.Models.Account=Backbone.Model.extend({defaults:{id:"",email:"",parent:""},initialize:function(){this.on("invalid",function(e,t){console.log(t)})},validate:function(e,t){if(void 0===e.email||""===e.email)return"Need an email address!"}}),app.Models.AccountDetail=app.Models.Account.extend({defaults:{id:"",fname:"",lname:"",org:"",title:"",addr1:"",addr2:"",city:"",state:"",zip:"",country:"",phone:"",fax:"",email_ok:!1,is_member:!1,date_created:"",email:"",parent:""}}),app.Models.Login=Backbone.Model.extend({defaults:{username:"",password:""},urlRoot:appLoginUrl,initialize:function(){this.on("invalid",function(e,t){console.log(t)})},validate:function(e,t){return void 0===e.username||""===e.username?"Username required!":void 0===e.password||""===e.password?"Password required!":void 0}}),app.Models.RegClass=Backbone.Model.extend({defaults:{reg_event:0,name:"",descr:"",reg_rate_name:"",reg_rate_base_price:"",reg_rate_per_reg:"",reg_count:0},initialize:function(){this.accounts=new app.Collections.Accounts}}),app.Models.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.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.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.Accounts=Backbone.Collection.extend({model:app.Models.Account,localStorage:new Backbone.LocalStorage("Accounts"),sync:function(e,t,i){console.log("sync called on collection. method: "+e)}}),app.Collections.RegClasses=Backbone.Collection.extend({model:app.Models.RegClass}),app.Collections.RegRates=Backbone.Collection.extend({model:app.Models.RegRate}),app.Views.Account=Backbone.View.extend({tagName:"div",className:"glm-reg-level-registrant clearfix",template:_.template($("#account-template").html()),events:{"click label":"edit","click .glm-reg-level-registrant-delete":"deleteOne","click .saveRegistrant":"close"},initialize:function(){return this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.$nameInput=this.$(".editName"),this.$emailInput=this.$(".editEmail"),this},deleteOne:function(){this.model.destroy()},edit:function(){this.$el.addClass("editing"),this.$nameInput.focus()},close:function(){var e=this.$nameInput.val().trim(),t=this.$emailInput.val().trim();e&&t?this.model.save({name:e,email:t}):this.clear(),this.$el.removeClass("editing")}}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.App=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.RegEvent({model:app.Models.regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{"click #appLogin":"login"},login:function(){this.loginView=new app.Views.Login({model:new app.Models.Login}),this.$el.append(this.loginView.render().el),$("#appLogin").hide()}}),app.Views.Login=Backbone.View.extend({tagName:"div",className:"glm-reg-login",template:_.template($("#eventReg-account-login").html()),events:{"click .accountLogin":"loginToAccount","click #loginCancel":"closeLoginForm"},initialize:function(){return this},closeLoginForm:function(){this.remove(),$("#appLogin").show()},loginToAccount:function(){$.ajax({url:ajaxUrl})},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.$userInput=this.$(".login"),this.$pwdInput=this.$(".password"),this}}),app.Views.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template($("#regClass-template").html()),initialize:function(){return this.listenTo(this.model.accounts,"add",this.addOne),this.listenTo(this.model.accounts,"create",this.addOne),this.listenTo(this.model.accounts,"reset",this.addAll),this.listenTo(this.model,"change",this.updateCount),this},events:{"click .addRegistrant":"newEntry"},newEntry:function(){this.$newEmail=this.$(".addEmail"),this.$newEmail.val().trim()&&$.ajax({context:this,url:ajaxUrl+"&glm_action=account&option=checkEmail",dataType:"json",data:"email="+this.$newEmail.val().trim()}).done(function(e){!0!==e.validEmail?alert("Must be a valid email address!"):!0!==e.valid?alert("No account matched that email address!"):void 0!==e.id&&void 0!==e.email&&(this.model.accounts.create({id:e.id,email:e.email,parent:this.model.id}),this.model.trigger("change"),this.$newEmail.val(""))}).fail(function(e){console.log("Fail: "+e)})},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},updateCount:function(){return this.model.reg_count=this.model.accounts.length,console.log("Updating Count: "+this.model.reg_count),this.render,this},addOne:function(e){if(e.isValid()){var t=new app.Views.Account({model:e});this.$el.append(t.render().el)}},addAll:function(){this.$(".glm-reg-level").html("")}}),app.Views.RegEvent=Backbone.View.extend({tagName:"div",className:"glm-reg-event-item clearfix",template:_.template($("#regEvent-template").html()),initialize:function(){this.listenTo(this.model,"change",this.render)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=app.Models.regEvent.classes.map(function(e){return new app.Views.RegClass({model:e}).render().el});return this.$el.append(e),this}}); \ No newline at end of file +app.Models.Account=Backbone.Model.extend({defaults:{id:"",email:"",parent:""},initialize:function(){this.on("invalid",function(e,t){console.log(t)})},validate:function(e,t){if(void 0===e.email||""===e.email)return"Need an email address!"}}),app.Models.AccountDetail=app.Models.Account.extend({defaults:{id:"",fname:"",lname:"",org:"",title:"",addr1:"",addr2:"",city:"",state:"",zip:"",country:"",phone:"",fax:"",email_ok:!1,is_member:!1,date_created:"",email:"",parent:""}}),app.Models.Login=Backbone.Model.extend({defaults:{username:"",password:""},urlRoot:appLoginUrl,initialize:function(){this.on("invalid",function(e,t){console.log(t)})},validate:function(e,t){return void 0===e.username||""===e.username?"Username required!":void 0===e.password||""===e.password?"Password required!":void 0}}),app.Models.RegClass=Backbone.Model.extend({defaults:{reg_event:0,name:"",descr:"",reg_rate_name:"",reg_rate_base_price:"",reg_rate_per_reg:"",reg_count:0},initialize:function(){this.accounts=new app.Collections.Accounts}}),app.Models.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.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Models.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.Models.AdminRegClass=Backbone.Model.extend({defaults:{reg_event:0,name:"",descr:""},initialize:function(){this.rates=new app.Collections.Rates}}),app.Models.AdminRegEvent=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.RegClasses},setClasses:function(e){this.classes.reset(e)}}),app.Collections.Accounts=Backbone.Collection.extend({model:app.Models.Account,localStorage:new Backbone.LocalStorage("Accounts"),sync:function(e,t,i){console.log("sync called on collection. method: "+e)}}),app.Collections.RegClasses=Backbone.Collection.extend({model:app.Models.RegClass}),app.Collections.RegRates=Backbone.Collection.extend({model:app.Models.RegRate}),app.Views.Account=Backbone.View.extend({tagName:"div",className:"glm-reg-level-registrant clearfix",template:_.template(jQuery("#account-template").html()),events:{"click label":"edit","click .glm-reg-level-registrant-delete":"deleteOne","click .saveRegistrant":"close"},initialize:function(){return this.listenTo(this.model,"change",this.render),this.listenTo(this.model,"destroy",this.remove),this},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.$nameInput=this.$(".editName"),this.$emailInput=this.$(".editEmail"),this},deleteOne:function(){this.model.destroy()},edit:function(){this.$el.addClass("editing"),this.$nameInput.focus()},close:function(){var e=this.$nameInput.val().trim(),t=this.$emailInput.val().trim();e&&t?this.model.save({name:e,email:t}):this.clear(),this.$el.removeClass("editing")}}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.App=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.RegEvent({model:app.Models.regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{"click #appLogin":"login"},login:function(){this.loginView=new app.Views.Login({model:new app.Models.Login}),this.$el.append(this.loginView.render().el),jQuery("#appLogin").hide()}}),app.Views.Login=Backbone.View.extend({tagName:"div",className:"glm-reg-login",template:_.template(jQuery("#eventReg-account-login").html()),events:{"click .accountLogin":"loginToAccount","click #loginCancel":"closeLoginForm"},initialize:function(){return this},closeLoginForm:function(){this.remove(),jQuery("#appLogin").show()},loginToAccount:function(){jQuery.ajax({url:ajaxUrl})},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.$userInput=jQuery(".login"),this.$pwdInput=jQuery(".password"),this}}),app.Views.RegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model.accounts,"add",this.addOne),this.listenTo(this.model.accounts,"create",this.addOne),this.listenTo(this.model.accounts,"reset",this.addAll),this.listenTo(this.model,"change",this.updateCount),this},events:{"click .addRegistrant":"newEntry"},newEntry:function(){this.$newEmail=jQuery(".addEmail"),this.$newEmail.val().trim()&&jQuery.ajax({context:this,url:ajaxUrl+"&glm_action=account&option=checkEmail",dataType:"json",data:"email="+this.$newEmail.val().trim()}).done(function(e){!0!==e.validEmail?alert("Must be a valid email address!"):!0!==e.valid?alert("No account matched that email address!"):void 0!==e.id&&void 0!==e.email&&(this.model.accounts.create({id:e.id,email:e.email,parent:this.model.id}),this.model.trigger("change"),this.$newEmail.val(""))}).fail(function(e){console.log("Fail: "+e)})},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},updateCount:function(){return this.model.reg_count=this.model.accounts.length,console.log("Updating Count: "+this.model.reg_count),this.render,this},addOne:function(e){if(e.isValid()){var t=new app.Views.Account({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.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)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=app.Models.regEvent.classes.map(function(e){return new app.Views.RegClass({model:e}).render().el});return this.$el.append(e),this}}),app.Views.AdminRegClass=Backbone.View.extend({tagName:"div",className:"glm-reg-level",template:_.template(jQuery("#regClass-template").html()),initialize:function(){return this.listenTo(this.model.accounts,"add",this.addOne),this.listenTo(this.model.accounts,"create",this.addOne),this.listenTo(this.model.accounts,"reset",this.addAll),this.listenTo(this.model,"change",this.updateCount),this},events:{"click .addRegistrant":"newEntry"},newEntry:function(){this.$newEmail=this.$(".addEmail"),this.$newEmail.val().trim()&&jQuery.ajax({context:this,url:ajaxUrl+"&glm_action=account&option=checkEmail",dataType:"json",data:"email="+this.$newEmail.val().trim()}).done(function(e){!0!==e.validEmail?alert("Must be a valid email address!"):!0!==e.valid?alert("No account matched that email address!"):void 0!==e.id&&void 0!==e.email&&(this.model.accounts.create({id:e.id,email:e.email,parent:this.model.id}),this.model.trigger("change"),this.$newEmail.val(""))}).fail(function(e){console.log("Fail: "+e)})},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},updateCount:function(){return this.model.reg_count=this.model.accounts.length,console.log("Updating Count: "+this.model.reg_count),this.render,this},addOne:function(e){if(e.isValid()){var t=new app.Views.Account({model:e});this.$el.append(t.render().el)}},addAll:function(){jQuery(".glm-reg-level").html("")}}),app.Views.AdminRegEvent=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)},render:function(){this.$el.html(this.template(this.model.toJSON()));var e=app.Models.regEvent.classes.map(function(e){return new app.Views.AdminRegClass({model:e}).render().el});return this.$el.append(e),this}}),Backbone.emulateJSON=!0,Backbone.emulateHTTP=!0,app.Views.EventEditLevels=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.Views.RegEvent({model:app.Models.regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{"click #appLogin":"login"},login:function(){this.loginView=new app.Views.Login({model:new app.Models.Login}),this.$el.append(this.loginView.render().el),jQuery("#appLogin").hide()}}); \ No newline at end of file diff --git a/js/views/admin/adminRegClass.js b/js/views/admin/adminRegClass.js new file mode 100644 index 0000000..cb38cab --- /dev/null +++ b/js/views/admin/adminRegClass.js @@ -0,0 +1,86 @@ +// js/views/regClass.js + +app.Views.AdminRegClass = Backbone.View.extend({ + tagName: 'div', + + className: 'glm-reg-level', + + template: _.template( jQuery('#regClass-template').html() ), + + initialize: function(){ + this.listenTo( this.model.accounts, 'add', this.addOne ); + this.listenTo( this.model.accounts, 'create', this.addOne ); + this.listenTo( this.model.accounts, 'reset', this.addAll ); + this.listenTo( this.model, 'change', this.updateCount ); + //this.listenTo( this.model, 'change:accounts', this.render ); + + //this.model.accounts.fetch(); + return this; + }, + + events: { + 'click .addRegistrant': 'newEntry', + }, + + // For the new entry check the email from the server and see + // if there's already an account setup. + newEntry: function(){ + this.$newEmail = this.$('.addEmail'); + + if ( !this.$newEmail.val().trim() ) { + return; + } + // Check for this email address + jQuery.ajax({ + context: this, + url: ajaxUrl + '&glm_action=account&option=checkEmail', + dataType: 'json', + data: 'email=' + this.$newEmail.val().trim() + }) + .done(function(account){ + // Check for id and email + if ( account.validEmail !== true ) { + // If not found then nothing was found for that email. + alert('Must be a valid email address!'); + } else if ( account.valid !== true ) { + alert( 'No account matched that email address!' ); + } else if ( account.id !== undefined && account.email !== undefined ) { + this.model.accounts.create({ + id: account.id, + email: account.email, + parent: this.model.id + }); + this.model.trigger('change'); + this.$newEmail.val(''); + } + }) + .fail(function(msg){ + console.log('Fail: ' + msg); + }); + }, + + render: function(){ + this.$el.html( this.template( this.model.toJSON() ) ); + return this; + }, + + updateCount: function(){ + this.model.reg_count = this.model.accounts.length; + console.log( 'Updating Count: ' + this.model.reg_count ); + this.render; + return this; + }, + + addOne: function( item ){ + if ( item.isValid() ) { + var view = new app.Views.Account({ model: item }); + this.$el.append( view.render().el ); + } + }, + + addAll: function(){ + jQuery('.glm-reg-level').html(''); + //this.model.accounts.each( this.addOne, this ); + }, + +}); diff --git a/js/views/admin/adminRegEvent.js b/js/views/admin/adminRegEvent.js new file mode 100644 index 0000000..4fbe663 --- /dev/null +++ b/js/views/admin/adminRegEvent.js @@ -0,0 +1,25 @@ +// js/views/adminRegEvent.js + +// Admin reg view +app.Views.AdminRegEvent = Backbone.View.extend({ + + tagName: 'div', + + className: 'glm-reg-event-item clearfix', + + template: _.template( jQuery('#regEvent-template').html() ), + + // Called when the view is first created + initialize: function(){ + this.listenTo( this.model, 'change', this.render ); + }, + render: function(){ + this.$el.html( this.template( this.model.toJSON() ) ); + var view = app.Models.regEvent.classes.map(function(item){ + return (new app.Views.AdminRegClass({ model: item })).render().el; + }); + this.$el.append(view); + return this; + }, + +}); diff --git a/js/views/admin/eventEditLevels.js b/js/views/admin/eventEditLevels.js new file mode 100644 index 0000000..b964fc9 --- /dev/null +++ b/js/views/admin/eventEditLevels.js @@ -0,0 +1,35 @@ +// js/views/app.js +Backbone.emulateJSON = true; +Backbone.emulateHTTP = true; + +// Event Registrant List View +app.Views.EventEditLevels = Backbone.View.extend({ + + el: '#regApp', + + initialize: function(){ + this.event = new app.Views.RegEvent({ model: app.Models.regEvent }); + this.render(); + }, + + render: function(){ + this.$el.append( this.event.render().el ); + return this; + }, + + events: { + 'click #appLogin': 'login' + }, + + login: function(){ + this.loginView = new app.Views.Login({ model: new app.Models.Login() }); + this.$el.append( this.loginView.render().el ); + jQuery('#appLogin').hide(); + }, + + // start: function( bootstrap ){ + // app.Models.regEvent = new app.Models.RegEvent( bootstrap.regEvent ); + // app.Models.regEvent.setClasses( bootstrap.regEventClasses ); + // }, + +}); diff --git a/js/views/account.js b/js/views/front/account.js similarity index 95% rename from js/views/account.js rename to js/views/front/account.js index 2371b3d..33fd7d4 100644 --- a/js/views/account.js +++ b/js/views/front/account.js @@ -6,7 +6,7 @@ app.Views.Account = Backbone.View.extend({ className: 'glm-reg-level-registrant clearfix', - template: _.template( $('#account-template').html() ), + template: _.template( jQuery('#account-template').html() ), events: { 'click label': 'edit', diff --git a/js/views/app.js b/js/views/front/app.js similarity index 95% rename from js/views/app.js rename to js/views/front/app.js index d73159e..b9f2645 100644 --- a/js/views/app.js +++ b/js/views/front/app.js @@ -24,7 +24,7 @@ app.Views.App = Backbone.View.extend({ login: function(){ this.loginView = new app.Views.Login({ model: new app.Models.Login() }); this.$el.append( this.loginView.render().el ); - $('#appLogin').hide(); + jQuery('#appLogin').hide(); }, // start: function( bootstrap ){ diff --git a/js/views/login.js b/js/views/front/login.js similarity index 74% rename from js/views/login.js rename to js/views/front/login.js index 2a07efc..f7ce8f6 100644 --- a/js/views/login.js +++ b/js/views/front/login.js @@ -6,7 +6,7 @@ app.Views.Login = Backbone.View.extend({ className: 'glm-reg-login', - template: _.template( $('#eventReg-account-login').html() ), + template: _.template( jQuery('#eventReg-account-login').html() ), events: { 'click .accountLogin': 'loginToAccount', @@ -19,21 +19,21 @@ app.Views.Login = Backbone.View.extend({ closeLoginForm: function(){ this.remove(); - $('#appLogin').show(); + jQuery('#appLogin').show(); return; }, loginToAccount: function(){ // Send data to login ajax and verify user login - $.ajax({ + jQuery.ajax({ url: ajaxUrl }); }, render: function(){ this.$el.html( this.template( this.model.toJSON() ) ); - this.$userInput = this.$('.login'); - this.$pwdInput = this.$('.password'); + this.$userInput = jQuery('.login'); + this.$pwdInput = jQuery('.password'); return this; }, diff --git a/js/views/regClass.js b/js/views/front/regClass.js similarity index 93% rename from js/views/regClass.js rename to js/views/front/regClass.js index e86bda0..f42af05 100644 --- a/js/views/regClass.js +++ b/js/views/front/regClass.js @@ -5,7 +5,7 @@ app.Views.RegClass = Backbone.View.extend({ className: 'glm-reg-level', - template: _.template( $('#regClass-template').html() ), + template: _.template( jQuery('#regClass-template').html() ), initialize: function(){ this.listenTo( this.model.accounts, 'add', this.addOne ); @@ -25,13 +25,13 @@ app.Views.RegClass = Backbone.View.extend({ // For the new entry check the email from the server and see // if there's already an account setup. newEntry: function(){ - this.$newEmail = this.$('.addEmail'); + this.$newEmail = jQuery('.addEmail'); if ( !this.$newEmail.val().trim() ) { return; } // Check for this email address - $.ajax({ + jQuery.ajax({ context: this, url: ajaxUrl + '&glm_action=account&option=checkEmail', dataType: 'json', @@ -79,7 +79,7 @@ app.Views.RegClass = Backbone.View.extend({ }, addAll: function(){ - this.$('.glm-reg-level').html(''); + jQuery('.glm-reg-level').html(''); //this.model.accounts.each( this.addOne, this ); }, diff --git a/js/views/regEvent.js b/js/views/front/regEvent.js similarity index 90% rename from js/views/regEvent.js rename to js/views/front/regEvent.js index 9b5cd6c..b7ca426 100644 --- a/js/views/regEvent.js +++ b/js/views/front/regEvent.js @@ -7,7 +7,7 @@ app.Views.RegEvent = Backbone.View.extend({ className: 'glm-reg-event-item clearfix', - template: _.template( $('#regEvent-template').html() ), + template: _.template( jQuery('#regEvent-template').html() ), // Called when the view is first created initialize: function(){ diff --git a/models/admin/registrations/events.php b/models/admin/registrations/events.php index 8f8cc2a..1c17294 100644 --- a/models/admin/registrations/events.php +++ b/models/admin/registrations/events.php @@ -79,8 +79,8 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent } public function modelAction($actionData = false) - { - + { + $option = 'dashboard'; $view = false; $where = ' true '; @@ -115,36 +115,36 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent $regEventSample = false; $regEventJason = false; $regClassJSON = false; - + // Get any provided option if (isset($_REQUEST['option'])) { $option = $_REQUEST['option']; } - + // Get registration event ID if supplied if (isset($_REQUEST['regEventID'])) { - + // Make sure it's numeric $regEventID = ($_REQUEST['regEventID'] - 0); - + } else { - + // Try to get saved $regEventID = get_option('glmMembersDatabaseRegistrationsRegEventID'); - + } - + if (!$regEventID || $regEventID <= 0) { $regEventID = false; } - - - + + + switch ($option) { - + case 'configureEvent': - -// This obviously still needs work - not really updated since stolen from front-end code + +// This obviously still needs work - not really updated since stolen from front-end code $scripts = array( 'backbone-local' => 'js/lib/backbone.localStorage.min.js', 'regApp' => 'js/regApp.js', @@ -158,50 +158,50 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent true ); } - wp_enqueue_script( array( 'backbone', 'jquery' ) ); + wp_enqueue_script( array( 'jquery', 'backbone' ) ); wp_enqueue_script( array_keys( $scripts ) ); $regEvent = array(); - + // including test data for now include GLM_MEMBERS_REGISTRATIONS_PLUGIN_PATH . '/data/event_setup.php'; - + $regClass = $regEventSample['reg_class']; - + // Find the regClass rate to be used // There will only be one as this is based on the date. //$regClassRate - + $eventData = array(); - + unset($regClass['reg_rate']); - + // Build the Class array of json objects for the classes. $jsonClasses = array(); foreach ( $regClass as $rClass ) { $jsonClasses[] = json_encode( $rClass ); } $regClassJSON = '[' . implode( ',', $jsonClasses ) . ']'; - + $view = 'eventEditLevels'; - + break; - + case 'add': case 'edit': - + // If we're adding a new reg event if ($option == 'add') { - + // Verify that event is not already listed $regEvent = $this->getEntry($regEventID, 'event'); if (!$regEvent) { - + // Get data on this event from events add-on $eventData = apply_filters('glm-member-db-events-get-event', $regEventID); - + // Did we get event data? if ($eventData) { - + // Add event to registrations $sql = " INSERT INTO ".$this->table." @@ -243,19 +243,19 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent ;"; $this->wpdb->query($sql); $regEventID = $this->wpdb->insert_id; - + if ($regEventID) { $regEventUpdated = true; } - + } - + } else { $reason = "Trying to add an event that is already listed in Registrations."; } - + } - + // If there's no problem yet, try to get the regEvent data for edit if ($reason == '') { if ($regEventID) { @@ -265,69 +265,69 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent } } } - + $view = 'eventEdit'; - + break; - + case 'update': - + // Try to update the reg event $regEvent = $this->updateEntry($regEventID); - + // If there's some type of failure, flag that for the view file if ($regEvent['status']) { $regEventUpdated = true; } else { $regEventUpdateError = true; } - + $view = 'eventEdit'; - + break; - - + + case 'eventDashboard': - + // If we have an event ID if ($regEventID) { - + $regEvent = $this->getEntry($regEventID); if ($regEvent) { $haveRegEvent = true; - + // Try to get the event configuration including recurrences and times $this->postProcAddedEventData = true; $regEvent = $this->getEventConfig($regEventID, true, true, true); - + // If we have the event data if ($regEvent) { - + $haveRegEvent = true; - + // If event is time_specific and we have recurrences for the event if ($regEvent['time_specific']['value'] && is_array($regEvent['recurrences']) && count($regEvent['recurrences']) > 0) { - + $haveRegEventRecurrences = true; - + // For each recurrence foreach ($regEvent['recurrences'] as $k=>$v) { - + $regEvent['recurrences'][$k]['haveTimes'] = false; - + // If we have times for this recurrence if ($v['times'] && count($v['times']) > 0) { - + $regEvent['recurrences'][$k]['haveTimes'] = false; $haveRegEventTimes = true; - + // Get the first event date/time $first = current($v['times']); $last = end($v['times']); $regEvent['recurrences'][$k]['first_time'] = $first; $regEvent['recurrences'][$k]['lastTime'] = $last; - + // Set event first and last times if (!$regEventFirstTime || $regEventFirstTime['timestamp'] < $first ) { $regEventFirstTime = $first; @@ -335,16 +335,16 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent if (!$regEventLastTime || $regEventLastTime['timestamp'] > $last ) { $regEventLastTime = $last; } - + // Check all event times for matching reg event times foreach ($v['times'] as $tk=>$tv) { - + // If time doesn't exist in reg_times if (!isset($regEvent['reg_times'][$tk])) { - + $sTime = date('Y-m-d H:i:s',strtotime($tv['start_time']['datetime'])); $eTime = date('Y-m-d H:i:s',strtotime($tv['end_time']['datetime'])); - + // Add reg event time $this->wpdb->insert( GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time", @@ -387,7 +387,7 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent '%f' // total_payments ) ); - + } // If time isn't in reg_times } // each recurrence times } // have times for recurrence @@ -395,45 +395,45 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent } // Time specific and have times } // have event data } // have reg event ID - + } else { $reason = 'Unable to load registration event data or registration event not selected.'; } - + $view = 'eventDashboard'; - + break; - + case 'dashboard': default: - + // If doing alpha list if (isset($_REQUEST['alpha'])) { $actionData['request']['alpha'] = $_REQUEST['alpha']; } - + // If user clicked a page request then we need to check the savedAlpha value if (isset($_REQUEST['savedAlpha']) && isset($_REQUEST['pageSelect'])) { $actionData['request']['alpha'] = $_REQUEST['savedAlpha']; } - + if ($actionData['request']['alpha'] && strlen($actionData['request']['alpha']) == 1) { $alphaSelected = strtoupper($actionData['request']['alpha']); $alphaWhere .= " AND T.event_name LIKE '$alphaSelected%'"; } - + // Get full list for all other filters, but not filtered by alpha (that would be silly) $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected); - + // 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); - + // Get paging results $numbDisplayed = $listResult['returned']; $lastDisplayed = $listResult['last']; @@ -448,38 +448,38 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent if ($listResult['returned'] == $limit) { $nextStart = $start + $limit; } - + // since we're doing paging, we have to break out just the event data $list = $listResult['list']; unset($listResult); - + // If we have list entries - even if it's an empty list $success = true; $haveRegEvents = false; if ($list !== false) { - + $success = true; - + // If we have any entries if (count($list) > 0) { $haveRegEvents = true; } } - + // Get full list of event names matching the current where clause for text search box - $namesList = $this->getSimpleRegEventsList($where); - + $namesList = $this->getSimpleRegEventsList($where); + $view = 'eventsDashboard'; - + break; } - + // If we have a valid account ID, save that for future use if ($regEventID > 0) { update_option('glmMembersDatabaseRegistrationsRegEventID', $regEventID); } - + // Compile template data $templateData = array( 'option' => $option, @@ -508,14 +508,14 @@ class GlmMembersAdmin_registrations_events extends GlmDataRegistrationsRegEvent 'regEventUpdateError' => $regEventUpdateError, 'regEventAdded' => $regEventAdded, 'reason' => $reason, - + 'entry' => $regEventSample, 'thisJsUrl' => GLM_MEMBERS_REGISTRATIONS_PLUGIN_URL . '/js', 'regEventJSON' => json_encode( $regEventSample['reg_event'] ), 'regClassJSON' => $regClassJSON, - + ); - + // Return status, any suggested view, and any data to controller return array( 'status' => true, diff --git a/views/admin/registrations/eventEditLevels.html b/views/admin/registrations/eventEditLevels.html index a2c93ca..4b4f77b 100644 --- a/views/admin/registrations/eventEditLevels.html +++ b/views/admin/registrations/eventEditLevels.html @@ -1,13 +1,13 @@ {include file='admin/registrations/eventHeader.html'} - +

Registrations Event Edit - +     {if $regEventUpdated}Registration Event Updated{/if} {if $regEventUpdateError}Registration Event Update Error{/if} {if $regEventAdded}Registration Event Added{/if} - +

{if $reason} @@ -17,34 +17,12 @@ - - - - + {* Event Registration App - Backbone.js *} {* Underscore Templates for the Event Registration App *} {literal} {/literal}
-
{* Bootstrap the models needed on page load *} {* Need to have RegEvent model created *} {* And create the RegClasses collection *} - - + + {/if} - + {include file='admin/footer.html'} -- 2.17.1