diff options
Diffstat (limited to 'www/js')
-rw-r--r-- | www/js/app.js | 2 | ||||
-rw-r--r-- | www/js/models/report.js | 33 | ||||
-rw-r--r-- | www/js/router.js | 18 | ||||
-rw-r--r-- | www/js/views/details.js | 2 | ||||
-rw-r--r-- | www/js/views/submit.js | 134 |
5 files changed, 147 insertions, 42 deletions
diff --git a/www/js/app.js b/www/js/app.js index 54fc8b9..6b68902 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -38,7 +38,7 @@ var tpl = { ;(function (FMS, Backbone, _, $) { _.extend(FMS, { templates: [ - 'home', 'around', 'photo', 'details', 'submit', 'sent' + 'home', 'around', 'photo', 'details', 'submit', 'submit_email', 'submit_name', 'submit_password', 'sent' ], initialized: 0, diff --git a/www/js/models/report.js b/www/js/models/report.js index 44d1aef..4334ba4 100644 --- a/www/js/models/report.js +++ b/www/js/models/report.js @@ -61,34 +61,19 @@ lat: model.get('lat'), lon: model.get('lon'), pc: model.get('pc'), - may_show_name: $('#form_may_show_name').val() || 0, - used_map: 1 + may_show_name: model.get('may_show_name'), + used_map: 1, + name: model.get('user').get('name'), + email: model.get('user').get('email'), + phone: model.get('user').get('phone') }; - if ( FMS.currentUser && FMS.currentUser.get('password') ) { - params.name = FMS.currentUser.get('name'); - params.email = FMS.currentUser.get('email'); - params.phone = FMS.currentUser.get('phone'); - params.password_sign_in = FMS.currentUser.get('password'); + if ( this.submit_clicked == 'submit_sign_in' ) { params.submit_sign_in = 1; + params.password_sign_in = model.get('user').get('password'); } else { - params.name = $('#form_name').val(); - params.email = $('#form_email').val(); - params.phone = $('#form_phone').val(); - params.password_sign_in = $('#password_sign_in').val(); - - if ( this.submit_clicked == 'submit_sign_in' ) { - params.submit_sign_in = 1; - } else { - params.submit_register = 1; - } - - FMS.currentUser.set({ - name: params.name, - email: params.email, - phone: params.phone, - password: params.password - }); + params.password_register = model.get('user').get('password') || ''; + params.submit_register = 1; } var that = this; diff --git a/www/js/router.js b/www/js/router.js index f241184..3abbe49 100644 --- a/www/js/router.js +++ b/www/js/router.js @@ -10,6 +10,9 @@ 'photo': 'photo', 'details': 'details', 'submit': 'submit', + 'submit-email': 'submitEmail', + 'submit-name': 'submitName', + 'submit-password': 'submitPassword', 'sent': 'sent' }, @@ -47,6 +50,21 @@ this.changeView(submitView); }, + submitEmail: function(){ + var submitEmailView = new FMS.SubmitEmailView({ model: FMS.currentReport }); + this.changeView(submitEmailView); + }, + + submitName: function(){ + var submitNameView = new FMS.SubmitNameView({ model: FMS.currentReport }); + this.changeView(submitNameView); + }, + + submitPassword: function(){ + var submitPasswordView = new FMS.SubmitPasswordView({ model: FMS.currentReport }); + this.changeView(submitPasswordView); + }, + sent: function(){ var sentView = new FMS.SentView({ model: FMS.currentReport }); this.changeView(sentView); diff --git a/www/js/views/details.js b/www/js/views/details.js index a5a5eee..13d1100 100644 --- a/www/js/views/details.js +++ b/www/js/views/details.js @@ -4,7 +4,7 @@ template: 'details', id: 'details-page', prev: 'photo', - next: 'submit', + next: 'submit-email', onClickButtonPrev: function() { this.model.set('title', $('#form_title').val()); diff --git a/www/js/views/submit.js b/www/js/views/submit.js index 6d6e57b..a19ead6 100644 --- a/www/js/views/submit.js +++ b/www/js/views/submit.js @@ -35,6 +35,52 @@ return this; }, + onClickSubmit: function(e) { + this.beforeSubmit(); + + if ( this.validate() ) { + this.model.set('user', FMS.currentUser); + this.model.save(); + } + }, + + onReportSync: function(model, resp, options) { + if ( FMS.currentUser ) { + FMS.currentUser.save(); + } + this.navigate( 'sent', 'left' ); + }, + + onReportError: function(model, err, options) { + alert( FMS.strings.sync_error + ': ' + err.errors); + }, + + beforeSubmit: function() {}, + + _destroy: function() { + this.model.off('sync'); + this.model.off('error'); + } + }) + }); +})(FMS, Backbone, _, $); + + +;(function (FMS, Backbone, _, $) { + _.extend( FMS, { + SubmitEmailView: FMS.SubmitView.extend({ + template: 'submit_email', + id: 'submit-email-page', + prev: 'details', + + events: { + 'pagehide': 'destroy', + 'pageshow': 'afterDisplay', + 'click .ui-btn-left': 'onClickButtonPrev', + 'click #have_password': 'onClickPassword', + 'click #email_confirm': 'onClickConfirm' + }, + validate: function() { this.clearValidationErrors(); var isValid = 1; @@ -49,6 +95,53 @@ this.validationError('form_email', FMS.validationStrings.email.email); } + return isValid; + }, + + onClickPassword: function() { + if ( this.validate() ) { + FMS.currentUser.set('email', $('#form_email').val()); + this.navigate( 'submit-password' ); + } + }, + + onClickConfirm: function() { + if ( this.validate() ) { + FMS.currentUser.set('email', $('#form_email').val()); + this.navigate( 'submit-name' ); + } + }, + + _destroy: function() {} + }) + }); +})(FMS, Backbone, _, $); + +;(function (FMS, Backbone, _, $) { + _.extend( FMS, { + SubmitNameView: FMS.SubmitView.extend({ + template: 'submit_name', + id: 'submit-name-page', + prev: 'submit-email', + + events: { + 'pagehide': 'destroy', + 'pageshow': 'afterDisplay', + 'click .ui-btn-left': 'onClickButtonPrev', + 'click #send_confirm': 'onClickSubmit', + 'click #set_password': 'onClickPassword' + }, + + initialize: function() { + console.log('submit name initalize'); + this.model.on('sync', this.onReportSync, this ); + this.model.on('error', this.onReportError, this ); + }, + + validate: function() { + this.clearValidationErrors(); + var isValid = 1; + var name = $('#form_name').val(); if ( !name ) { isValid = 0; @@ -64,29 +157,38 @@ return isValid; }, - onClickSubmit: function(e) { - this.model.set( 'submit_clicked', $(e.target).attr('id') ); - + onClickPassword: function() { if ( this.validate() ) { - this.model.save(); + FMS.currentUser.set('name', $('#form_name').val()); + FMS.currentUser.set('phone', $('#form_phone').val()); + this.navigate( 'submit-password' ); } }, - onReportSync: function(model, resp, options) { - if ( FMS.currentUser ) { - FMS.currentUser.save(); - } - this.navigate( 'sent', 'left' ); - }, + beforeSubmit: function() { + FMS.currentUser.set('name', $('#form_name').val()); + FMS.currentUser.set('phone', $('#form_phone').val()); + } + }) + }); +})(FMS, Backbone, _, $); - onReportError: function(model, err, options) { - alert( FMS.strings.sync_error + ': ' + err.errors); +;(function (FMS, Backbone, _, $) { + _.extend( FMS, { + SubmitPasswordView: FMS.SubmitView.extend({ + template: 'submit_password', + id: 'submit-password-page', + prev: 'submit-email', + + events: { + 'pagehide': 'destroy', + 'pageshow': 'afterDisplay', + 'click .ui-btn-left': 'onClickButtonPrev', + 'click #report': 'onClickSubmit', }, - _destroy: function() { - this.model.off('sync'); - this.model.off('error'); - } + validate: function() { return 1; } }) }); })(FMS, Backbone, _, $); + |