From 5be6e95c799cbbae23168d07dcf2cdd11a2c9080 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Sun, 27 Aug 2017 12:22:35 -0400 Subject: [PATCH] Adding gulp to combine and minify all js files for the app. Adding gulp to the registration project. The default task will combine and uglify the js files and then watch the js folders models collections and views for any file changes. --- .gitignore | 1 + gulpfile.js | 17 +++++++++++++ js/glmApp.js | 1 + models/front/registrations/registration.php | 27 +++++++++++---------- package.json | 21 ++++++++++++++++ 5 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 .gitignore create mode 100644 gulpfile.js create mode 100644 js/glmApp.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..8009dc1 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,17 @@ +var gulp = require('gulp'), + watch = require('gulp-watch'), + concat = require('gulp-concat'), + uglify = require('gulp-uglify'); + +gulp.task('scripts', function(){ + gulp.src(['./js/models/*.js', './js/collections/*.js', './js/views/*.js']) + .pipe(concat('glmApp.js')) + .pipe(uglify()) + .pipe(gulp.dest('./js/')); +}); + +gulp.task('watch', function(){ + gulp.watch('js/**/*.js', ['scripts']); +}); + +gulp.task('default', ['scripts', 'watch']); diff --git a/js/glmApp.js b/js/glmApp.js new file mode 100644 index 0000000..f7f66d4 --- /dev/null +++ b/js/glmApp.js @@ -0,0 +1 @@ +var app=app||{};app.Account=Backbone.Model.extend({defaults:{name:"",email:""},initialize:function(){this.on("invalid",function(e,t){console.log(t)})},validate:function(e,t){return void 0===e.name||""===e.name?"Need a name!":void 0===e.email||""===e.email?"Need an email address!":void 0}}),(app=app||{}).Login=Backbone.Model.extend({defaults:{username:"",password:""},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=app||{}).RegClass=Backbone.Model.extend({defaults:{reg_event:0,name:"",descr:""},initialize:function(){this.accounts=new app.Accounts}}),(app=app||{}).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.RegClasses},setClasses:function(e){this.classes.reset(e)}}),(app=app||{}).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=app||{}).Accounts=Backbone.Collection.extend({model:app.Account,localStorage:new Backbone.LocalStorage("Accounts_"+this.id)}),(app=app||{}).RegClasses=Backbone.Collection.extend({model:app.RegClass}),(app=app||{}).RegRates=Backbone.Collection.extend({model:app.RegRate}),(app=app||{}).AccountView=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")}}),(app=app||{}).AppView=Backbone.View.extend({el:"#regApp",initialize:function(){this.event=new app.RegEventView({model:app.regEvent}),this.render()},render:function(){return this.$el.append(this.event.render().el),this},events:{"click #appLogin":"login"},login:function(){console.log("login called"),view=new app.LoginView({model:new app.Login}),this.$el.append(view.render().el)},start:function(e){app.regEvent=new app.RegEvent(e.revEvent),app.regEvent.setClasses(e.regEventClasses)}}),(app=app||{}).LoginView=Backbone.View.extend({tagName:"div",className:"glm-reg-login",template:_.template($("#eventReg-account-login").html()),events:{"click .accountLogin":"loginToAccount"},initialize:function(){return this},loginToAccount:function(){console.log("user: "+this.$userInput.val().trim()),console.log("password: "+this.$pwdInput.val().trim())},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.$userInput=this.$(".login"),this.$pwdInput=this.$(".password"),this}}),(app=app||{}).RegClassView=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},events:{"click .addRegistrant":"newEntry"},newEntry:function(){this.$newName=this.$(".addName"),this.$newEmail=this.$(".addEmail"),this.$newName.val().trim()&&this.$newEmail.val().trim()&&(this.model.accounts.create({name:this.$newName.val().trim(),email:this.$newEmail.val().trim()}),this.$newName.val(""),this.$newEmail.val(""))},render:function(){return this.$el.html(this.template(this.model.toJSON())),this},addOne:function(e){if(e.isValid()){var t=new app.AccountView({model:e});this.$el.append(t.render().el)}},addAll:function(){this.$(".glm-reg-level").html(""),this.model.classes.each(this.addOne,this)}}),(app=app||{}).RegEventView=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.regEvent.classes.map(function(e){return new app.RegClassView({model:e}).render().el});return this.$el.append(e),this}}); \ No newline at end of file diff --git a/models/front/registrations/registration.php b/models/front/registrations/registration.php index a5c411b..fa5aa30 100644 --- a/models/front/registrations/registration.php +++ b/models/front/registrations/registration.php @@ -39,19 +39,20 @@ { $scripts = array( 'backbone-local' => 'js/lib/backbone.localStorage.min.js', - 'account' => 'js/models/account.js', - 'regClass' => 'js/models/regClass.js', - 'regEvent' => 'js/models/regEvent.js', - 'regRate' => 'js/models/regRate.js', - 'login' => 'js/models/login.js', - 'accounts' => 'js/collections/accounts.js', - 'regClasses' => 'js/collections/regClasses.js', - 'regRates' => 'js/collections/regRates.js', - 'registrantView' => 'js/views/account.js', - 'regEventView' => 'js/views/regEvent.js', - 'regClassView' => 'js/views/regClass.js', - 'regLoginView' => 'js/views/login.js', - 'appView' => 'js/views/app.js', + 'regApp' => 'js/glmApp.js', + // 'account' => 'js/models/account.js', + // 'regClass' => 'js/models/regClass.js', + // 'regEvent' => 'js/models/regEvent.js', + // 'regRate' => 'js/models/regRate.js', + // 'login' => 'js/models/login.js', + // 'accounts' => 'js/collections/accounts.js', + // 'regClasses' => 'js/collections/regClasses.js', + // 'regRates' => 'js/collections/regRates.js', + // 'registrantView' => 'js/views/account.js', + // 'regEventView' => 'js/views/regEvent.js', + // 'regClassView' => 'js/views/regClass.js', + // 'regLoginView' => 'js/views/login.js', + // 'appView' => 'js/views/app.js', ); foreach ( $scripts as $scriptName => $scriptPath ) { wp_register_script( diff --git a/package.json b/package.json new file mode 100644 index 0000000..cb0c0e5 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "glm-member-db-registrations", + "version": "0.1.0", + "description": "Gulp setup for registrations", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git@cvs2:WP-Plugins/glm-member-db-registrations.git" + }, + "author": "Steve Sutton", + "license": "MIT", + "devDependencies": { + "gulp": "^3.9.1", + "gulp-concat": "^2.6.1", + "gulp-uglify": "^3.0.0", + "gulp-watch": "^4.3.11" + } +} -- 2.17.1