From f384d133b2ee20e80c13d6ad72ea83e872edbe10 Mon Sep 17 00:00:00 2001 From: Shreyansh Dwivedi Date: Sat, 3 Aug 2019 13:57:42 +0530 Subject: [PATCH] feat: Implement a tick box for organizers/admin to override Email --- app/controllers/events/view/sessions/create.js | 3 +++ app/controllers/events/view/sessions/edit.js | 3 +++ app/controllers/events/view/speakers/create.js | 6 +++++- app/controllers/events/view/speakers/edit.js | 6 +++++- app/models/speaker.js | 1 + .../components/forms/session-speaker-form.hbs | 14 ++++++++++++++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/controllers/events/view/sessions/create.js b/app/controllers/events/view/sessions/create.js index 36d003cf2e5..7856f30d369 100644 --- a/app/controllers/events/view/sessions/create.js +++ b/app/controllers/events/view/sessions/create.js @@ -6,6 +6,9 @@ export default Controller.extend({ await this.get('model.session').save(); if (this.addNewSpeaker) { let newSpeaker = this.get('model.speaker'); + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); + } newSpeaker.save() .then(() => { newSpeaker.sessions.pushObject(_this.get('model.session')); diff --git a/app/controllers/events/view/sessions/edit.js b/app/controllers/events/view/sessions/edit.js index 0e784ae5a02..c12eadb11db 100644 --- a/app/controllers/events/view/sessions/edit.js +++ b/app/controllers/events/view/sessions/edit.js @@ -7,6 +7,9 @@ export default Controller.extend({ let _this = this; if (this.addNewSpeaker) { let newSpeaker = this.get('model.speaker'); + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); + } newSpeaker.save() .then(() => { newSpeaker.sessions.pushObject(_this.get('model.session')); diff --git a/app/controllers/events/view/speakers/create.js b/app/controllers/events/view/speakers/create.js index a21cbe96e8d..dbd20da7410 100644 --- a/app/controllers/events/view/speakers/create.js +++ b/app/controllers/events/view/speakers/create.js @@ -7,7 +7,11 @@ export default Controller.extend({ if (!sessionDetails) { await this.get('model.session').save(); } - await this.get('model.speaker').save(); + let newSpeaker = this.get('model.speaker'); + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); + } + await newSpeaker.save(); if (!sessionDetails) { this.get('model.speaker.sessions').pushObject(this.get('model.session')); await this.get('model.session').save(); diff --git a/app/controllers/events/view/speakers/edit.js b/app/controllers/events/view/speakers/edit.js index 96d6a5f6ebe..bf666c3131a 100644 --- a/app/controllers/events/view/speakers/edit.js +++ b/app/controllers/events/view/speakers/edit.js @@ -4,7 +4,11 @@ export default Controller.extend({ actions: { save() { this.set('isLoading', true); - this.get('model.speaker').save() + let speaker = this.get('model.speaker'); + if (speaker.isEmailOverridden) { + speaker.set('email', this.authManager.currentUser.email); + } + speaker.save() .then(() => { this.notify.success(this.l10n.t('Speaker details have been saved')); this.transitionToRoute('events.view.speakers'); diff --git a/app/models/speaker.js b/app/models/speaker.js index e850240b371..b8f732bf40f 100644 --- a/app/models/speaker.js +++ b/app/models/speaker.js @@ -27,6 +27,7 @@ export default ModelBase.extend({ linkedin : attr('string'), organisation : attr('string'), isFeatured : attr('boolean', { default: false }), + isEmailOverridden : attr('boolean', { default: false }), position : attr('string'), country : attr('string'), city : attr('string'), diff --git a/app/templates/components/forms/session-speaker-form.hbs b/app/templates/components/forms/session-speaker-form.hbs index cbff42e2ed3..8762d94ade6 100644 --- a/app/templates/components/forms/session-speaker-form.hbs +++ b/app/templates/components/forms/session-speaker-form.hbs @@ -121,6 +121,13 @@ {{#if field.isLongText}} {{widgets/forms/rich-text-editor value=(mut (get data.speaker field.fieldIdentifier)) textareaId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} + {{else if (eq field.fieldIdentifier 'email')}} + {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden + onChange=(action (mut data.speaker.isEmailOverridden))}} + {{#if (not data.speaker.isEmailOverridden)}} + {{input type=field.type value=(mut (get data.speaker field.fieldIdentifier)) + id=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} + {{/if}} {{else}} {{input type=field.type value=(mut (get data.speaker field.fieldIdentifier)) id=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} {{/if}} @@ -185,6 +192,13 @@ {{#if field.isLongText}} {{widgets/forms/rich-text-editor value=(mut (get data.speaker field.fieldIdentifier)) textareaId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} + {{else if (eq field.fieldIdentifier 'email')}} + {{ui-checkbox label=(t 'Do not require email for this speaker.') checked=data.speaker.isEmailOverridden + onChange=(action (mut data.speaker.isEmailOverridden))}} + {{#if (not data.speaker.isEmailOverridden)}} + {{input type=field.type value=(mut (get data.speaker field.fieldIdentifier)) + id=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}} + {{/if}} {{else}} {{#if field.isUrlField}} {{widgets/forms/link-input