diff --git a/app/components/forms/events/view/create-discount-code.js b/app/components/forms/events/view/create-discount-code.js index 0f2fdd3bb45..8f7874b9f33 100644 --- a/app/components/forms/events/view/create-discount-code.js +++ b/app/components/forms/events/view/create-discount-code.js @@ -3,7 +3,6 @@ import { computed } from '@ember/object'; import FormMixin from 'open-event-frontend/mixins/form'; import { later } from '@ember/runloop'; import { currencySymbol } from 'open-event-frontend/helpers/currency-symbol'; -import moment from 'moment'; export default Component.extend(FormMixin, { getValidationRules() { window.$.fn.form.settings.rules.checkMaxMin = () => { @@ -22,11 +21,7 @@ export default Component.extend(FormMixin, { return false; }; - window.$.fn.form.settings.rules.checkDates = () => { - let startDatetime = moment(this.get('data.validFrom')); - let endDatetime = moment(this.get('data.validTill')); - return (endDatetime.diff(startDatetime, 'minutes') > 0); - }; + // TODO: Removing the Discount Code Time Validations due to the weird and buggy behaviour. Will be restored once a perfect solution is found. Please check issue: https://github.com/fossasia/open-event-frontend/issues/3667 return { inline : true, delay : false, @@ -113,46 +108,6 @@ export default Component.extend(FormMixin, { prompt : this.l10n.t('Please select atleast 1 ticket.') } ] - }, - startDate: { - optional : true, - identifier : 'start_date', - rules : [ - { - type : 'checkDates', - prompt : this.l10n.t('Valid Till date & time should be after valid from date and time') - } - ] - }, - startTime: { - optional : true, - identifier : 'start_time', - rules : [ - { - type : 'checkDates', - prompt : '.' - } - ] - }, - endDate: { - optional : true, - identifier : 'end_date', - rules : [ - { - type : 'checkDates', - prompt : this.l10n.t('Valid Till date & time should be after valid from date and time') - } - ] - }, - endTime: { - optional : true, - identifier : 'end_time', - rules : [ - { - type : 'checkDates', - prompt : '.' - } - ] } } }; diff --git a/app/components/forms/orders/attendee-list.js b/app/components/forms/orders/attendee-list.js index 8e9cbf97f9a..74abe7e1db8 100644 --- a/app/components/forms/orders/attendee-list.js +++ b/app/components/forms/orders/attendee-list.js @@ -14,7 +14,7 @@ export default class extends Component { return this.data.attendees; } - @or('data.amount', 'data.isBillingEnabled') + @or('event.isBillingInfoMandatory', 'data.isBillingEnabled') showBillingInfo; @computed('fields.@each.form') diff --git a/app/components/forms/orders/order-form.js b/app/components/forms/orders/order-form.js index bd3d2e7c52b..8dead19d533 100644 --- a/app/components/forms/orders/order-form.js +++ b/app/components/forms/orders/order-form.js @@ -38,6 +38,10 @@ export default Component.extend(FormMixin, { }), sameAsBuyer: false, + isBillingInfoNeeded: computed('event', 'data.isBillingEnabled', function() { + return this.event.isBillingInfoMandatory || this.data.isBillingEnabled; + }), + getRemainingTime: computed('settings', function() { let orderExpiryTime = this.get('settings.orderExpiryTime'); let willExpireAt = this.get('data.createdAt').add(orderExpiryTime, 'minutes'); @@ -380,12 +384,12 @@ export default Component.extend(FormMixin, { } ] }, - company: { - identifier : 'company', + taxBusinessInfo: { + identifier : 'taxBusinessInfo', rules : [ { type : 'empty', - prompt : this.l10n.t('Please enter your company') + prompt : this.l10n.t('Please enter your Tax ID or Business ID') } ] }, @@ -490,4 +494,4 @@ export default Component.extend(FormMixin, { } } } -}); \ No newline at end of file +}); diff --git a/app/components/forms/session-speaker-form.js b/app/components/forms/session-speaker-form.js index a6e15b98cf7..a126c9ad382 100644 --- a/app/components/forms/session-speaker-form.js +++ b/app/components/forms/session-speaker-form.js @@ -501,6 +501,15 @@ export default Component.extend(FormMixin, { return this.speakers.length === 1; }), + isUserOwnerOrAdmin: computed('event.owner.email', 'authManager.currentUser', function() { + return (this.authManager.currentUser.isAnAdmin || (this.event.owner.get('email') === this.authManager.currentUser.get('email'))); + }), + + isUserOrganiser: computed('event.organizers', 'authManager.currentUser', function() { + let { currentUser } = this.authManager; + return this.event.organizers.includes(currentUser); + }), + // Clicking on the add speaker button creates a blank record which increases the length of the session's list by 1. noSessionExists: computed('sessions', function() { return this.sessions.length === 1; diff --git a/app/components/forms/wizard/basic-details-step.js b/app/components/forms/wizard/basic-details-step.js index e072c97e98a..e25ba000bdd 100644 --- a/app/components/forms/wizard/basic-details-step.js +++ b/app/components/forms/wizard/basic-details-step.js @@ -125,12 +125,8 @@ export default Component.extend(FormMixin, EventWizardMixin, { } }, + // TODO: Removing the Event Time Validations due to the weird and buggy behaviour. Will be restored once a perfect solution is found. Please check issue: https://github.com/fossasia/open-event-frontend/issues/3667 getValidationRules() { - window.$.fn.form.settings.rules.checkDates = () => { - let startDatetime = moment(this.get('data.event.startsAt')); - let endDatetime = moment(this.get('data.event.endsAt')); - return (endDatetime.diff(startDatetime, 'minutes') > 0); - }; let validationRules = { inline : true, @@ -165,10 +161,6 @@ export default Component.extend(FormMixin, EventWizardMixin, { { type : 'date', prompt : this.l10n.t('Please give a valid start date') - }, - { - type : 'checkDates', - prompt : this.l10n.t('Start date & time should be before End date and time') } ] }, @@ -182,10 +174,6 @@ export default Component.extend(FormMixin, EventWizardMixin, { { type : 'date', prompt : this.l10n.t('Please give a valid end date') - }, - { - type : 'checkDates', - prompt : this.l10n.t('Start date & time should be before End date and time') } ] }, @@ -196,10 +184,6 @@ export default Component.extend(FormMixin, EventWizardMixin, { { type : 'empty', prompt : this.l10n.t('Please give a start time') - }, - { - type : 'checkDates', - prompt : '..' } ] }, @@ -210,10 +194,6 @@ export default Component.extend(FormMixin, EventWizardMixin, { { type : 'empty', prompt : this.l10n.t('Please give an end time') - }, - { - type : 'checkDates', - prompt : '..' } ] }, diff --git a/app/components/forms/wizard/sessions-speakers-step.js b/app/components/forms/wizard/sessions-speakers-step.js index a1ba6e59dca..0c96bbe432f 100644 --- a/app/components/forms/wizard/sessions-speakers-step.js +++ b/app/components/forms/wizard/sessions-speakers-step.js @@ -3,16 +3,11 @@ import { computed } from '@ember/object'; import FormMixin from 'open-event-frontend/mixins/form'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; import { groupBy } from 'lodash-es'; -import moment from 'moment'; export default Component.extend(EventWizardMixin, FormMixin, { + // TODO: Removing the Session & Speaker Time Validations due to the weird and buggy behaviour. Will be restored once a perfect solution is found. Please check issue: https://github.com/fossasia/open-event-frontend/issues/3667 getValidationRules() { - window.$.fn.form.settings.rules.checkDates = () => { - let startDatetime = moment(this.get('data.speakersCall.startsAt')); - let endDatetime = moment(this.get('data.speakersCall.endsAt')); - return (endDatetime.diff(startDatetime, 'minutes') > 0); - }; return { inline : true, delay : false, @@ -60,10 +55,6 @@ export default Component.extend(EventWizardMixin, FormMixin, { { type : 'empty', prompt : this.l10n.t('Please tell us when your event starts') - }, - { - type : 'checkDates', - prompt : this.l10n.t('Start date & time ') } ] }, @@ -73,10 +64,6 @@ export default Component.extend(EventWizardMixin, FormMixin, { { type : 'empty', prompt : this.l10n.t('Please tell us when your event ends') - }, - { - type : 'checkDates', - prompt : this.l10n.t('Start date & time should be after End date and time') } ] }, @@ -87,10 +74,6 @@ export default Component.extend(EventWizardMixin, FormMixin, { { type : 'empty', prompt : this.l10n.t('Please give a start time') - }, - { - type : 'checkDates', - prompt : '.' } ] }, @@ -101,10 +84,6 @@ export default Component.extend(EventWizardMixin, FormMixin, { { type : 'empty', prompt : this.l10n.t('Please give an end time') - }, - { - type : 'checkDates', - prompt : '.' } ] } diff --git a/app/components/modals/cropper-modal.js b/app/components/modals/cropper-modal.js index 9ef7604bb4b..f6cbe83dede 100644 --- a/app/components/modals/cropper-modal.js +++ b/app/components/modals/cropper-modal.js @@ -1,6 +1,6 @@ import ModalBase from 'open-event-frontend/components/modals/modal-base'; - -export default ModalBase.extend({ +import { action } from '@ember/object'; +export default class extends ModalBase { onVisible() { let viewport = {}; let factor = 150; @@ -16,7 +16,7 @@ export default ModalBase.extend({ height: 250 } }); - }, + } onHide() { this.$('img').croppie('destroy'); @@ -24,19 +24,19 @@ export default ModalBase.extend({ if ($img.parent().is('div.croppie')) { $img.unwrap(); } - }, - actions: { - resetImage() { - this.onHide(); - this.onVisible(); - }, - cropImage() { - this.$('img').croppie('result', 'base64', 'original', 'jpeg').then(result => { - if (this.onImageCrop) { - this.onImageCrop(result); - } - }); - } } -}); + @action + resetImage() { + this.onHide(); + this.onVisible(); + } + @action + cropImage() { + this.$('img').croppie('result', { type: 'base64', size: 'original', quality: 1, format: 'jpeg' }).then(result => { + if (this.onImageCrop) { + this.onImageCrop(result); + } + }); + } +} diff --git a/app/components/paypal-button.js b/app/components/paypal-button.js index bc9710c4d33..2977714fc70 100644 --- a/app/components/paypal-button.js +++ b/app/components/paypal-button.js @@ -1,4 +1,3 @@ -import paypal from 'paypal-checkout'; import Component from '@ember/component'; import { inject as service } from '@ember/service'; @@ -8,6 +7,8 @@ export default Component.extend({ async didInsertElement() { this._super(...arguments); + const paypal = await import('paypal-checkout'); + if (this.paymentFor === 'order') { let order = this.data; let createPayload = { diff --git a/app/controllers/account/password.js b/app/controllers/account/password.js index 0dd585508c6..54300ada370 100644 --- a/app/controllers/account/password.js +++ b/app/controllers/account/password.js @@ -1,40 +1,42 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - changePassword(passwordData) { - this.set('isLoading', true); - let payload = { - 'data': { - 'old-password' : passwordData.passwordCurrent, - 'new-password' : passwordData.passwordNew - } - }; - this.loader - .post('/auth/change-password', payload) - .then(() => { - this.notify.success(this.l10n.t('Password updated successfully'), +export default class extends Controller { + + @action + changePassword(passwordData) { + this.set('isLoading', true); + let payload = { + 'data': { + 'old-password' : passwordData.passwordCurrent, + 'new-password' : passwordData.passwordNew + } + }; + this.loader + .post('/auth/change-password', payload) + .then(() => { + this.notify.success(this.l10n.t('Password updated successfully'), + { + id: 'pass_upd_succ' + }); + }) + .catch(error => { + if (error.errors) { + this.notify.error(this.l10n.t(`${error.errors[0].detail}`), + { + id: 'err_pass_ser' + }); + } else { + this.notify.error(this.l10n.t('Unexpected error. Password did not change.'), { - id: 'pass_upd_succ' + id: 'err_unex_pass' }); - }) - .catch(error => { - if (error.errors) { - this.notify.error(this.l10n.t(`${error.errors[0].detail}`), - { - id: 'err_pass_ser' - }); - } else { - this.notify.error(this.l10n.t('Unexpected error. Password did not change.'), - { - id: 'err_unex_pass' - }); - } - }) - .finally(() => { - this.set('isLoading', false); - this.setProperties({ 'passwordCurrent': '', 'passwordNew': '', 'passwordRepeat': '' }); - }); - } + } + }) + .finally(() => { + this.set('isLoading', false); + this.setProperties({ 'passwordCurrent': '', 'passwordNew': '', 'passwordRepeat': '' }); + }); } -}); +} + diff --git a/app/controllers/account/profile.js b/app/controllers/account/profile.js index a8fbe05c058..365d6ab800b 100644 --- a/app/controllers/account/profile.js +++ b/app/controllers/account/profile.js @@ -1,22 +1,22 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - async updateContactInfo() { - this.set('isLoading', true); - try { - await this.model.save(); - this.notify.success(this.l10n.t('Your Contact Info has been updated'), - { - id: 'cont_info_upd' - }); - } catch (error) { - this.notify.error(this.l10n.t(error.message), - { - id: 'cont_upd_error' - }); - } - this.set('isLoading', false); +export default class extends Controller { + @action + async updateContactInfo() { + this.set('isLoading', true); + try { + await this.model.save(); + this.notify.success(this.l10n.t('Your Contact Info has been updated'), + { + id: 'cont_info_upd' + }); + } catch (error) { + this.notify.error(this.l10n.t(error.message), + { + id: 'cont_upd_error' + }); } + this.set('isLoading', false); } -}); +} diff --git a/app/controllers/admin/content/events.js b/app/controllers/admin/content/events.js index d43cf197bd1..0c5f39856c4 100644 --- a/app/controllers/admin/content/events.js +++ b/app/controllers/admin/content/events.js @@ -1,76 +1,79 @@ import Controller from '@ember/controller'; import { camelCase, startCase } from 'lodash-es'; +import { action } from '@ember/object'; -export default Controller.extend({ +export default class extends Controller { - disableEventSubtopic : true, - currentTopicSelected : null, + disableEventSubtopic = true; + currentTopicSelected = null; - actions: { - async loadSubTopics(topic) { - this.set('isLoading', true); - try { - this.set('model.eventSubTopics', await topic.get('subTopics').toArray()); - this.set('disableEventSubtopic', false); - this.set('currentTopicSelected', topic); - } catch (e) { - this.notify.error(this.l10n.t('An unexpected error has occurred. SubTopics not loaded.'), + @action + async loadSubTopics(topic) { + this.set('isLoading', true); + try { + this.set('model.eventSubTopics', await topic.subTopics.toArray()); + this.set('disableEventSubtopic', false); + this.set('currentTopicSelected', topic); + } catch (e) { + this.notify.error(this.l10n.t('An unexpected error has occurred. SubTopics not loaded.'), + { + id: 'subtop_error' + }); + } finally { + this.set('isLoading', false); + } + } + @action + openModalFor(modelInstanceOrName) { + const modelName = typeof modelInstanceOrName === 'string' ? modelInstanceOrName : modelInstanceOrName.constructor.modelName; + const modelInstance = typeof modelInstanceOrName === 'string' ? this.store.createRecord(modelInstanceOrName) : modelInstanceOrName; + const camelCasedValue = camelCase(modelName); + this.set(camelCasedValue, modelInstance); + modelInstance.openModal = true; + } + @action + deleteEventProperty(eventProp) { + this.set('isLoading', true); + const modelName = camelCase(eventProp.constructor.modelName); + eventProp.destroyRecord() + .then(() => { + this.get(`model.${modelName}s`).removeObject(eventProp); + this.notify.success(this.l10n.t('This Event Property has been deleted successfully.'), { - id: 'subtop_error' + id: 'event_prop_del' }); - } finally { + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Event Type was not deleted.'), + { + id: 'event_type_error' + }); + }) + .finally(() => { this.set('isLoading', false); - } - }, - openModalFor(modelInstanceOrName) { - const modelName = typeof modelInstanceOrName === 'string' ? modelInstanceOrName : modelInstanceOrName.constructor.modelName; - const modelInstance = typeof modelInstanceOrName === 'string' ? this.store.createRecord(modelInstanceOrName) : modelInstanceOrName; - const camelCasedValue = camelCase(modelName); - this.set(camelCasedValue, modelInstance); - modelInstance.openModal = true; - }, - deleteEventProperty(eventProp) { - this.set('isLoading', true); - const modelName = camelCase(eventProp.constructor.modelName); - eventProp.destroyRecord() - .then(() => { - this.get(`model.${modelName}s`).removeObject(eventProp); - this.notify.success(this.l10n.t('This Event Property has been deleted successfully.'), - { - id: 'event_prop_del' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Event Type was not deleted.'), - { - id: 'event_type_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - addEventProperty(modelInstance) { - const camelCasedValue = camelCase(modelInstance.constructor.modelName); - this.set('isLoading', true); - modelInstance.save() - .then(() => { - this.get(`model.${camelCasedValue}s`).addObject(modelInstance); - this.notify.success(this.l10n.t(`${startCase(camelCasedValue)} has been added successfully.`), - { - id: 'mode_add_succ' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t(`An unexpected error has occurred. ${startCase(camelCasedValue)} not saved.`), - { - id: 'mode_err_succ' - }); - }) - .finally(() => { - this.set('isLoading', false); - this.set(camelCasedValue, null); - }); - } + }); + } + @action + addEventProperty(modelInstance) { + const camelCasedValue = camelCase(modelInstance.constructor.modelName); + this.set('isLoading', true); + modelInstance.save() + .then(() => { + this.get(`model.${camelCasedValue}s`).addObject(modelInstance); + this.notify.success(this.l10n.t(`${startCase(camelCasedValue)} has been added successfully.`), + { + id: 'mode_add_succ' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t(`An unexpected error has occurred. ${startCase(camelCasedValue)} not saved.`), + { + id: 'mode_err_succ' + }); + }) + .finally(() => { + this.set('isLoading', false); + this.set(camelCasedValue, null); + }); } -}); +} diff --git a/app/controllers/admin/content/index.js b/app/controllers/admin/content/index.js index 3c9ebd712e6..4c603fc70f3 100644 --- a/app/controllers/admin/content/index.js +++ b/app/controllers/admin/content/index.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - saveSocials() { - this.set('isLoading', true); - let settings = this.model; - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Social links have been saved successfully.'), - { - id: 'social_link_upd' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Social links not saved.'), - { - id: 'unex_social_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + saveSocials() { + this.set('isLoading', true); + let settings = this.model; + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Social links have been saved successfully.'), + { + id: 'social_link_upd' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Social links not saved.'), + { + id: 'unex_social_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/content/pages.js b/app/controllers/admin/content/pages.js index 09ac7cebeda..e1a7b032520 100644 --- a/app/controllers/admin/content/pages.js +++ b/app/controllers/admin/content/pages.js @@ -1,39 +1,41 @@ import { filterBy } from '@ember/object/computed'; import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - footerPages: filterBy('model', 'place', 'footer'), +export default class extends Controller { - eventPages: filterBy('model', 'place', 'event'), + footerPages = filterBy('model', 'place', 'footer'); - actions: { - updateCurrentPage(page, type) { - if (type === 'create') { - this.set('isCreate', true); - this.set('currentForm', this.store.createRecord('page')); - } else { - this.set('isCreate', false); - this.set('currentForm', page); - } - this.set('isFormOpen', true); - }, - savePage(page) { - page.save() - .then(() => { - if (this.isCreate) { - this.set('isFormOpen', false); - } - this.notify.success(this.l10n.t('Page details have been saved successfully.'), - { - id: 'page_detail_succ' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Page Details not saved.'), - { - id: 'page_detail_del' - }); - }); + eventPages = filterBy('model', 'place', 'event'); + + @action + updateCurrentPage(page, type) { + if (type === 'create') { + this.set('isCreate', true); + this.set('currentForm', this.store.createRecord('page')); + } else { + this.set('isCreate', false); + this.set('currentForm', page); } + this.set('isFormOpen', true); + } + @action + savePage(page) { + page.save() + .then(() => { + if (this.isCreate) { + this.set('isFormOpen', false); + } + this.notify.success(this.l10n.t('Page details have been saved successfully.'), + { + id: 'page_detail_succ' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Page Details not saved.'), + { + id: 'page_detail_del' + }); + }); } -}); +} diff --git a/app/controllers/admin/content/system-images/list.js b/app/controllers/admin/content/system-images/list.js index 7f0a2031dee..f5fcce4f57b 100644 --- a/app/controllers/admin/content/system-images/list.js +++ b/app/controllers/admin/content/system-images/list.js @@ -1,22 +1,26 @@ import Controller from '@ember/controller'; import { computed } from '@ember/object'; -export default Controller.extend({ - data: computed('model.subTopics', function() { - let topics = this.get('model.subTopics'); +import { action } from '@ember/object'; + +export default class extends Controller { + + @computed('model.subTopics') + get data() { + let topics = this.model.subTopics; topics.forEach(topic => { if (!topic.get('placeholder.content')) { topic.set('placeholder', this.store.createRecord('custom-placeholder', { - name : topic.get('name'), + name : topic.name, eventSubTopic : topic })); } }); return topics; - }), - actions: { - openModal(placeholder) { - this.set('isModalOpen', true); - this.set('selectedPlaceholder', placeholder); - } } -}); + + @action + openModal(placeholder) { + this.set('isModalOpen', true); + this.set('selectedPlaceholder', placeholder); + } +} diff --git a/app/controllers/admin/events/list.js b/app/controllers/admin/events/list.js index 9f713b83f4f..a9d2ac0ea67 100644 --- a/app/controllers/admin/events/list.js +++ b/app/controllers/admin/events/list.js @@ -13,7 +13,7 @@ export default class extends Controller.extend(EmberTableControllerMixin) { return [ { name : 'Name', - valuePath : 'id', + valuePath : 'name', extraValuePaths : ['logoUrl', 'identifier', 'deletedAt', 'name'], isSortable : true, headerComponent : 'tables/headers/sort', diff --git a/app/controllers/admin/messages.js b/app/controllers/admin/messages.js index e76fc4e662a..ba537725fb3 100644 --- a/app/controllers/admin/messages.js +++ b/app/controllers/admin/messages.js @@ -1,24 +1,23 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - - actions: { - save() { - try { - let systemMessages = this.model; - systemMessages.forEach(systemMessage => { - systemMessage.save(); +export default class extends Controller { + @action + save() { + try { + let systemMessages = this.model; + systemMessages.forEach(systemMessage => { + systemMessage.save(); + }); + this.notify.success(this.l10n.t('Changes have been saved successfully'), + { + id: 'message_success' + }); + } catch (e) { + this.notify.error(this.l10n.t(e.errors[0].detail), + { + id: 'change_error_message' }); - this.notify.success(this.l10n.t('Changes have been saved successfully'), - { - id: 'message_success' - }); - } catch (e) { - this.notify.error(this.l10n.t(e.errors[0].detail), - { - id: 'change_error_message' - }); - } } } -}); +} diff --git a/app/controllers/admin/modules.js b/app/controllers/admin/modules.js index 7aeb623d733..a7695f41a5a 100644 --- a/app/controllers/admin/modules.js +++ b/app/controllers/admin/modules.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - submit() { - this.set('isLoading', true); - let modules = this.model; - modules.save() - .then(() => { - this.notify.success(this.l10n.t('Settings have been saved successfully.'), - { - id: 'setting_change' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'setting_not_change' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + submit() { + this.set('isLoading', true); + let modules = this.model; + modules.save() + .then(() => { + this.notify.success(this.l10n.t('Settings have been saved successfully.'), + { + id: 'setting_change' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'setting_not_change' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/permissions/event-roles.js b/app/controllers/admin/permissions/event-roles.js index 0716f9ade99..560e90c4944 100644 --- a/app/controllers/admin/permissions/event-roles.js +++ b/app/controllers/admin/permissions/event-roles.js @@ -1,31 +1,34 @@ import Controller from '@ember/controller'; -import { computed } from '@ember/object'; +import { computed, action } from '@ember/object'; -export default Controller.extend({ - services: computed('model', function() { - return this.get('model.services').sortBy('name'); - }), - sortDefinition : ['serviceName'], - permissions : computed.sort('model.permissions', 'sortDefinition'), - actions : { - updatePermissions() { - this.set('isLoading', true); - this.get('model.permissions').save() - .then(() => { - this.notify.success(this.l10n.t('Admin Event role permissions have been saved successfully.'), - { - id: 'admin_event_succ' - }); - }) - .catch(err => { - this.notify.error(this.l10n.t(err), - { - id: 'admin_event_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @computed('model.services') + get services() { + return this.model.services.sortBy('name'); } -}); + @computed('model.permissions') + get permissions() { + return this.model.permissions.sortBy('serviceName'); + } + + @action + updatePermissions() { + this.set('isLoading', true); + this.model.permissions.save() + .then(() => { + this.notify.success(this.l10n.t('Admin Event role permissions have been saved successfully.'), + { + id: 'admin_event_succ' + }); + }) + .catch(err => { + this.notify.error(this.l10n.t(err), + { + id: 'admin_event_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + } +} diff --git a/app/controllers/admin/permissions/system-roles.js b/app/controllers/admin/permissions/system-roles.js index 9c6b88afc80..ae105dbdce1 100644 --- a/app/controllers/admin/permissions/system-roles.js +++ b/app/controllers/admin/permissions/system-roles.js @@ -1,100 +1,81 @@ import Controller from '@ember/controller'; -export default Controller.extend({ - actions: { - async openAddSystemRoleModal(role) { - let permissions = await this.get('model.panelPermissions'); +import { action } from '@ember/object'; - this.set('panelPermissions', permissions); - if (role) { - let roles = role.panelPermissions; - - permissions.forEach(permission => { - if (roles.includes(permission)) { - permission.set('isChecked', true); - } else { - permission.set('isChecked', false); - } - }); - this.set('role', role); - this.set('isNew', false); - } else { - this.set('role', this.store.createRecord('custom-system-role')); - permissions.forEach(permission => { - permission.set('isChecked', false); - }); - this.set('isNew', true); - } - this.set('isAddSystemRoleModalOpen', true); - }, - deleteSystemRole(role) { - this.set('isLoading', true); - role.destroyRecord() - .then(() => { - this.notify.success(this.l10n.t('System role has been deleted successfully.'), - { - id: 'system_role_update' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. System role was not deleted.'), - { - id: 'system_role_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - addSystemRole() { - this.set('isLoading', true); - let panels = this.panelPermissions; - - panels.forEach(panel => { - if (panel.isChecked) { - this.get('role.panelPermissions').addObject(panel); +export default class extends Controller { + @action + async openAddSystemRoleModal(role) { + let permissions = await this.model.panelPermissions; + this.set('panelPermissions', permissions); + if (role) { + let roles = role.panelPermissions; + permissions.forEach(permission => { + if (roles.includes(permission)) { + permission.set('isChecked', true); } else { - this.get('role.panelPermissions').removeObject(panel); + permission.set('isChecked', false); } }); - if (!this.get('role.panelPermissions').length) { - this.notify.error(this.l10n.t('Please select atleast one panel.'), + this.set('role', role); + this.set('isNew', false); + } else { + this.set('role', this.store.createRecord('custom-system-role')); + permissions.forEach(permission => { + permission.set('isChecked', false); + }); + this.set('isNew', true); + } + this.set('isAddSystemRoleModalOpen', true); + } + @action + deleteSystemRole(role) { + this.set('isLoading', true); + role.destroyRecord() + .then(() => { + this.notify.success(this.l10n.t('System role has been deleted successfully.'), { - id: 'select_panel' + id: 'system_role_update' }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. System role was not deleted.'), + { + id: 'system_role_error' + }); + }) + .finally(() => { this.set('isLoading', false); + }); + } + @action + addSystemRole() { + this.set('isLoading', true); + let panels = this.panelPermissions; + panels.forEach(panel => { + if (panel.isChecked) { + this.role.panelPermissions.addObject(panel); } else { - this.role.save() - .then(() => { - this.set('isAddSystemRoleModalOpen', false); - this.notify.success(this.l10n.t('System role have been saved successfully.'), - { - id: 'system_role_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. System role not saved.'), - { - id: 'system_save_role_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); + this.role.panelPermissions.removeObject(panel); } - }, - updatePermissions() { - this.set('isLoading', true); - this.get('model.userPermissions').save() + }); + if (!this.role.panelPermissions.length) { + this.notify.error(this.l10n.t('Please select atleast one panel.'), + { + id: 'select_panel' + }); + this.set('isLoading', false); + } else { + this.role.save() .then(() => { - this.notify.success(this.l10n.t('User permissions have been saved successfully.'), + this.set('isAddSystemRoleModalOpen', false); + this.notify.success(this.l10n.t('System role have been saved successfully.'), { - id: 'user_permission_save' + id: 'system_role_save' }); }) .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. User permissions not saved.'), + this.notify.error(this.l10n.t('An unexpected error has occurred. System role not saved.'), { - id: 'user_error_permission' + id: 'system_save_role_error' }); }) .finally(() => { @@ -102,4 +83,24 @@ export default Controller.extend({ }); } } -}); + @action + updatePermissions() { + this.set('isLoading', true); + this.model.userPermissions.save() + .then(() => { + this.notify.success(this.l10n.t('User permissions have been saved successfully.'), + { + id: 'user_permission_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. User permissions not saved.'), + { + id: 'user_error_permission' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + } +} diff --git a/app/controllers/admin/settings/analytics.js b/app/controllers/admin/settings/analytics.js index 858b7a5901a..908b4e60ea8 100644 --- a/app/controllers/admin/settings/analytics.js +++ b/app/controllers/admin/settings/analytics.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateSettings() { - this.set('isLoading', true); - let settings = this.model; - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Settings have been saved successfully.'), - { - id: 'setting_analytic_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'setting_analytic_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateSettings() { + this.set('isLoading', true); + let settings = this.model; + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Settings have been saved successfully.'), + { + id: 'setting_analytic_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'setting_analytic_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/settings/billing.js b/app/controllers/admin/settings/billing.js index 66cd5fc0b28..8dc9423bd34 100644 --- a/app/controllers/admin/settings/billing.js +++ b/app/controllers/admin/settings/billing.js @@ -1,8 +1,7 @@ import Controller from '@ember/controller'; import { timezones } from 'open-event-frontend/utils/dictionary/date-time'; import { countries } from 'open-event-frontend/utils/dictionary/demography'; -import { action } from '@ember/object'; -import { computed } from '@ember/object'; +import { action, computed } from '@ember/object'; import { paymentCountries } from 'open-event-frontend/utils/dictionary/payment'; import { orderBy, filter } from 'lodash-es'; diff --git a/app/controllers/admin/settings/images.js b/app/controllers/admin/settings/images.js index f5613294d16..feff6d88083 100644 --- a/app/controllers/admin/settings/images.js +++ b/app/controllers/admin/settings/images.js @@ -1,34 +1,34 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - saveImages() { - this.set('isLoading', true); - this.get('model.eventImageSize').save() - .then(() => { - this.get('model.speakerImageSize').save() - .then(() => { - this.notify.success(this.l10n.t('Image sizes have been saved successfully.'), - { - id: 'image_size_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Image sizes not saved.'), - { - id: 'image_size_error' - }); - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Image sizes not saved.'), - { - id: 'image_size_error_unex' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + saveImages() { + this.set('isLoading', true); + this.model.eventImageSize.save() + .then(() => { + this.model.speakerImageSize.save() + .then(() => { + this.notify.success(this.l10n.t('Image sizes have been saved successfully.'), + { + id: 'image_size_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Image sizes not saved.'), + { + id: 'image_size_error' + }); + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Image sizes not saved.'), + { + id: 'image_size_error_unex' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/settings/index.js b/app/controllers/admin/settings/index.js index d3ebdaae365..c7d71e869c5 100644 --- a/app/controllers/admin/settings/index.js +++ b/app/controllers/admin/settings/index.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateSettings() { - this.set('isLoading', true); - let settings = this.model; - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Settings have been saved successfully.'), - { - id: 'setting_index_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'setting_index_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateSettings() { + this.set('isLoading', true); + let settings = this.model; + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Settings have been saved successfully.'), + { + id: 'setting_index_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'setting_index_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/settings/microservices.js b/app/controllers/admin/settings/microservices.js index 50efd0d8736..99db64629c8 100644 --- a/app/controllers/admin/settings/microservices.js +++ b/app/controllers/admin/settings/microservices.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateSettings() { - this.set('isLoading', true); - let settings = this.model; - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Settings have been saved successfully.'), - { - id: 'setting_microservice_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'setting_microservice_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateSettings() { + this.set('isLoading', true); + let settings = this.model; + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Settings have been saved successfully.'), + { + id: 'setting_microservice_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'setting_microservice_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/settings/payment-gateway.js b/app/controllers/admin/settings/payment-gateway.js index 4220f8ac550..2e188f51127 100644 --- a/app/controllers/admin/settings/payment-gateway.js +++ b/app/controllers/admin/settings/payment-gateway.js @@ -1,26 +1,26 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateSettings() { - this.set('isLoading', true); - let settings = this.model; - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Settings have been saved successfully.'), - { - id: 'setting_payment_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'setting_payment_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateSettings() { + this.set('isLoading', true); + let settings = this.model; + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Settings have been saved successfully.'), + { + id: 'setting_payment_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'setting_payment_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/admin/settings/ticket-fees.js b/app/controllers/admin/settings/ticket-fees.js index 99e52db10e1..9221bd78961 100644 --- a/app/controllers/admin/settings/ticket-fees.js +++ b/app/controllers/admin/settings/ticket-fees.js @@ -1,37 +1,37 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateSettings() { - this.set('isLoading', true); - let settings = this.model; - let incorrect_settings = settings.filter(function(setting) { - return (!setting.get('currency') || !setting.get('country')); - }); - if (incorrect_settings.length > 0) { - this.notify.error(this.l10n.t('Please fill the required fields.'), - { - id: 'fill_req_field' - }); - this.set('isLoading', false); - } else { - settings.save() - .then(() => { - this.notify.success(this.l10n.t('Ticket Fee settings have been saved successfully.'), - { - id: 'ticket_fee_save' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), - { - id: 'ticket_fee_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateSettings() { + this.set('isLoading', true); + let settings = this.model; + let incorrect_settings = settings.filter(function(setting) { + return (!setting.currency || !setting.country); + }); + if (incorrect_settings.length > 0) { + this.notify.error(this.l10n.t('Please fill the required fields.'), + { + id: 'fill_req_field' + }); + this.set('isLoading', false); + } else { + settings.save() + .then(() => { + this.notify.success(this.l10n.t('Ticket Fee settings have been saved successfully.'), + { + id: 'ticket_fee_save' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred. Settings not saved.'), + { + id: 'ticket_fee_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } } -}); +} diff --git a/app/controllers/admin/users/view/account/contact-info.js b/app/controllers/admin/users/view/account/contact-info.js index 220df030732..620a9ab3eb7 100644 --- a/app/controllers/admin/users/view/account/contact-info.js +++ b/app/controllers/admin/users/view/account/contact-info.js @@ -1,21 +1,21 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - updateContactInfo() { - this.set('isLoading', true); - let currentUser = this.get('model.user'); - currentUser.save() - .then(() => { - this.notify.success(this.l10n.t('Your Contact Info has been updated')); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error occurred')); - }) - .finally(() => { - this.set('isLoading', false); - }); - } +export default class extends Controller { + @action + updateContactInfo() { + this.set('isLoading', true); + let currentUser = this.model.user; + currentUser.save() + .then(() => { + this.notify.success(this.l10n.t('Your Contact Info has been updated')); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error occurred')); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/create.js b/app/controllers/create.js index 8ecb3fcf66d..21fa47c4a83 100644 --- a/app/controllers/create.js +++ b/app/controllers/create.js @@ -1,20 +1,21 @@ import Controller from '@ember/controller'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; +import { action } from '@ember/object'; -export default Controller.extend(EventWizardMixin, { - - actions: { - save() { - this.saveEventDataAndRedirectTo( - 'events.view.index', - ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] - ); - }, - move() { - this.saveEventDataAndRedirectTo( - 'events.view.edit.attendee', - ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] - ); - } +export default class extends Controller.extend(EventWizardMixin) { + @action + save() { + this.saveEventDataAndRedirectTo( + 'events.view.index', + ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] + ); + } + @action + move() { + this.saveEventDataAndRedirectTo( + 'events.view.edit.attendee', + ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] + ); } -}); +} + diff --git a/app/controllers/events/import.js b/app/controllers/events/import.js index 42c5e8014da..c8a11d8b713 100644 --- a/app/controllers/events/import.js +++ b/app/controllers/events/import.js @@ -1,12 +1,14 @@ import Controller from '@ember/controller'; import { run } from '@ember/runloop'; +import { action } from '@ember/object'; + +export default class extends Controller { + importStatus = ''; + importError = ''; + isImporting = false; + file = false; + fileName = ''; -export default Controller.extend({ - importStatus : '', - importError : '', - isImporting : false, - file : false, - fileName : '', importTask(taskUrl) { run.later(() => { this.loader @@ -28,39 +30,38 @@ export default Controller.extend({ }); }); }, 3000); - }, - actions: { - uploadFile(files) { - let [file] = files; - let data = new FormData(); - let endpoint = 'import/json'; - let ext = file.name.split('.'); - ext = ext[ext.length - 1].toLowerCase(); - if (ext === 'xml') { - endpoint = 'import/pentabarf'; - } else if (ext === 'ics' || ext === 'ical') { - endpoint = 'import/ical'; - } else if (ext === 'xcal') { - endpoint = 'import/xcal'; - } - data.append('file', file); + } + @action + uploadFile(files) { + let [file] = files; + let data = new FormData(); + let endpoint = 'import/json'; + let ext = file.name.split('.'); + ext = ext[ext.length - 1].toLowerCase(); + if (ext === 'xml') { + endpoint = 'import/pentabarf'; + } else if (ext === 'ics' || ext === 'ical') { + endpoint = 'import/ical'; + } else if (ext === 'xcal') { + endpoint = 'import/xcal'; + } + data.append('file', file); - this.setProperties({ - 'importStatus' : 'Uploading file.. Please don\'t close this window', - 'importError' : '', - 'isImporting' : true, - 'file' : true - }); + this.setProperties({ + 'importStatus' : 'Uploading file.. Please don\'t close this window', + 'importError' : '', + 'isImporting' : true, + 'file' : true + }); - this.loader.post( - `/events/${endpoint}`, - data, - { isFile: true } - ).then(data => { - this.importTask(`tasks/${data.task_url.split('/')[3]}`); - }).catch(e => { - this.set('importError', e.message); - }); - } + this.loader.post( + `/events/${endpoint}`, + data, + { isFile: true } + ).then(data => { + this.importTask(`tasks/${data.task_url.split('/')[3]}`); + }).catch(e => { + this.set('importError', e.message); + }); } -}); +} diff --git a/app/controllers/events/list.js b/app/controllers/events/list.js index 6a390cbad08..7d2ca1be6c9 100644 --- a/app/controllers/events/list.js +++ b/app/controllers/events/list.js @@ -9,10 +9,10 @@ export default class extends Controller.extend(EmberTableControllerMixin) { return [ { name : 'Name', - valuePath : 'identifier', + valuePath : 'name', width : 150, isSortable : true, - extraValuePaths : ['name', 'logoUrl'], + extraValuePaths : ['identifier', 'logoUrl'], headerComponent : 'tables/headers/sort', cellComponent : 'ui-table/cell/cell-event-general', options : { diff --git a/app/controllers/events/view.js b/app/controllers/events/view.js index 38b9d7e1ecd..ea3c37b5bfa 100644 --- a/app/controllers/events/view.js +++ b/app/controllers/events/view.js @@ -1,88 +1,91 @@ import Controller from '@ember/controller'; import { isEmpty } from '@ember/utils'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - openDeleteEventModal() { - this.set('isEventDeleteModalOpen', true); - }, - togglePublishState() { - if (isEmpty(this.get('model.locationName'))) { - this.notify.error(this.l10n.t('Your event must have a location before it can be published.'), - { - id: 'event_location' - }); - return; - } - this.set('isLoading', true); - const state = this.get('model.state'); - this.set('model.state', state === 'draft' ? 'published' : 'draft'); - this.model.save() - .then(() => { - if (state === 'draft') { - this.notify.success(this.l10n.t('Your event has been published successfully.'), - { - id: 'event_publish' - }); - } else { - this.notify.success(this.l10n.t('Your event has been unpublished.'), - { - id: 'event_unpublish' - }); - } - }) - .catch(() => { - this.set('model.state', state); - this.notify.error(this.l10n.t('An unexpected error has occurred.'), - { - id: 'event_publish_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - deleteEvent() { - this.set('isLoading', true); - this.model.destroyRecord() - .then(() => { - this.transitionToRoute('events'); - this.notify.success(this.l10n.t('Event has been deleted successfully.'), - { - id: 'event_deleted_succ' - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred.'), - { - id: 'event_deleted_error' - }); - }) - .finally(() => { - this.set('isLoading', false); +export default class extends Controller { + @action + openDeleteEventModal() { + this.set('isEventDeleteModalOpen', true); + } + @action + togglePublishState() { + if (isEmpty(this.model.locationName)) { + this.notify.error(this.l10n.t('Your event must have a location before it can be published.'), + { + id: 'event_location' }); - this.set('isEventDeleteModalOpen', false); - }, - copyEvent() { - this.set('isCopying', true); - this.loader - .post(`events/${this.get('model.id')}/copy`, {}) - .then(copiedEvent => { - this.transitionToRoute('events.view.edit', copiedEvent.identifier); - this.notify.success(this.l10n.t('Event copied successfully'), + return; + } + this.set('isLoading', true); + const { state } = this.model; + this.set('model.state', state === 'draft' ? 'published' : 'draft'); + this.model.save() + .then(() => { + if (state === 'draft') { + this.notify.success(this.l10n.t('Your event has been published successfully.'), { - id: 'event_copy_succ' + id: 'event_publish' }); - }) - .catch(() => { - this.notify.error(this.l10n.t('Copying of event failed'), + } else { + this.notify.success(this.l10n.t('Your event has been unpublished.'), { - id: 'event_copy_fail' + id: 'event_unpublish' }); - }) - .finally(() => { - this.set('isCopying', false); - }); - } + } + }) + .catch(() => { + this.set('model.state', state); + this.notify.error(this.l10n.t('An unexpected error has occurred.'), + { + id: 'event_publish_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + } + @action + deleteEvent() { + this.set('isLoading', true); + this.model.destroyRecord() + .then(() => { + this.transitionToRoute('events'); + this.notify.success(this.l10n.t('Event has been deleted successfully.'), + { + id: 'event_deleted_succ' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred.'), + { + id: 'event_deleted_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + this.set('isEventDeleteModalOpen', false); + } + @action + copyEvent() { + this.set('isCopying', true); + this.loader + .post(`events/${this.model.id}/copy`, {}) + .then(copiedEvent => { + this.transitionToRoute('events.view.edit', copiedEvent.identifier); + this.notify.success(this.l10n.t('Event copied successfully'), + { + id: 'event_copy_succ' + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('Copying of event failed'), + { + id: 'event_copy_fail' + }); + }) + .finally(() => { + this.set('isCopying', false); + }); } -}); +} diff --git a/app/controllers/events/view/edit/attendee.js b/app/controllers/events/view/edit/attendee.js index 55dfae876f9..5d476bcd8e1 100644 --- a/app/controllers/events/view/edit/attendee.js +++ b/app/controllers/events/view/edit/attendee.js @@ -1,41 +1,43 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; -export default Controller.extend(EventWizardMixin, { +export default class extends Controller.extend(EventWizardMixin) { + async saveForms(data) { for (const customForm of data.customForms ? data.customForms.toArray() : []) { await customForm.save(); } return data; - }, - actions: { - async save(data) { - try { - await this.saveForms(data); - this.saveEventDataAndRedirectTo( - 'events.view.index', - ['tickets'] - ); - } catch (error) { - this.notify.error(this.l10n.t(error.message), - { - id: 'attendee_error_serv' - }); - } - }, - async move(direction, data) { - try { - await this.saveForms(data); - this.saveEventDataAndRedirectTo( - direction === 'forwards' ? 'events.view.edit.sponsors' : 'events.view.edit.basic-details', - ['tickets'] - ); - } catch (error) { - this.notify.error(this.l10n.t(error.message), - { - id: 'attendee_move_error' - }); - } + } + @action + async save(data) { + try { + await this.saveForms(data); + this.saveEventDataAndRedirectTo( + 'events.view.index', + ['tickets'] + ); + } catch (error) { + this.notify.error(this.l10n.t(error.message), + { + id: 'attendee_error_serv' + }); + } + } + @action + async move(direction, data) { + try { + await this.saveForms(data); + this.saveEventDataAndRedirectTo( + direction === 'forwards' ? 'events.view.edit.sponsors' : 'events.view.edit.basic-details', + ['tickets'] + ); + } catch (error) { + this.notify.error(this.l10n.t(error.message), + { + id: 'attendee_move_error' + }); } } -}); +} diff --git a/app/controllers/events/view/edit/basic-details.js b/app/controllers/events/view/edit/basic-details.js index 56ccc6f85d0..21fa47c4a83 100644 --- a/app/controllers/events/view/edit/basic-details.js +++ b/app/controllers/events/view/edit/basic-details.js @@ -1,19 +1,21 @@ import Controller from '@ember/controller'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; +import { action } from '@ember/object'; -export default Controller.extend(EventWizardMixin, { - actions: { - save() { - this.saveEventDataAndRedirectTo( - 'events.view.index', - ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] - ); - }, - move() { - this.saveEventDataAndRedirectTo( - 'events.view.edit.attendee', - ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] - ); - } +export default class extends Controller.extend(EventWizardMixin) { + @action + save() { + this.saveEventDataAndRedirectTo( + 'events.view.index', + ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] + ); } -}); + @action + move() { + this.saveEventDataAndRedirectTo( + 'events.view.edit.attendee', + ['tickets', 'socialLinks', 'copyright', 'tax', 'stripeAuthorization'] + ); + } +} + diff --git a/app/controllers/events/view/edit/sessions-speakers.js b/app/controllers/events/view/edit/sessions-speakers.js index fb3b0255fdc..b35b938917b 100644 --- a/app/controllers/events/view/edit/sessions-speakers.js +++ b/app/controllers/events/view/edit/sessions-speakers.js @@ -1,31 +1,31 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; -export default Controller.extend(EventWizardMixin, { +export default class extends Controller.extend(EventWizardMixin) { async saveEventData() { const event = await this._super(...arguments); - event.get('isSessionsSpeakersEnabled') - ? await this.get('model.speakersCall').save() - : await this.get('model.speakersCall').destroyRecord(); + event.isSessionsSpeakersEnabled + ? await this.model.speakersCall.save() + : await this.model.speakersCall.destroyRecord(); return event; - }, - + } - actions: { - save() { - this.saveEventDataAndRedirectTo( - 'events.view.index', - ['tracks', 'sessionTypes', 'microlocations', 'customForms', 'tickets'] - ); - }, - move(direction) { - this.saveEventDataAndRedirectTo( - direction === 'forwards' ? 'events.view.edit.sponsors' : 'events.view.edit.sponsors', - ['tracks', 'sessionTypes', 'microlocations', 'customForms', 'tickets'] - ); - } + @action + save() { + this.saveEventDataAndRedirectTo( + 'events.view.index', + ['tracks', 'sessionTypes', 'microlocations', 'customForms', 'tickets'] + ); + } + @action + move(direction) { + this.saveEventDataAndRedirectTo( + direction === 'forwards' ? 'events.view.edit.sponsors' : 'events.view.edit.sponsors', + ['tracks', 'sessionTypes', 'microlocations', 'customForms', 'tickets'] + ); } -}); +} diff --git a/app/controllers/events/view/edit/sponsors.js b/app/controllers/events/view/edit/sponsors.js index 11f21a25200..ac01b93cf79 100644 --- a/app/controllers/events/view/edit/sponsors.js +++ b/app/controllers/events/view/edit/sponsors.js @@ -1,21 +1,21 @@ import Controller from '@ember/controller'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; +import { action } from '@ember/object'; -export default Controller.extend(EventWizardMixin, { +export default class extends Controller.extend(EventWizardMixin) { - actions: { - save() { - this.saveEventDataAndRedirectTo( - 'events.view.index', - ['sponsors', 'tickets'] - ); - }, - move(direction) { - this.saveEventDataAndRedirectTo( - direction === 'forwards' ? 'events.view.edit.sessions-speakers' : 'events.view.edit.attendee', - ['sponsors', 'tickets'] - ); - } + @action + save() { + this.saveEventDataAndRedirectTo( + 'events.view.index', + ['sponsors', 'tickets'] + ); } - -}); + @action + move(direction) { + this.saveEventDataAndRedirectTo( + direction === 'forwards' ? 'events.view.edit.sessions-speakers' : 'events.view.edit.attendee', + ['sponsors', 'tickets'] + ); + } +} diff --git a/app/controllers/events/view/export.js b/app/controllers/events/view/export.js index 85d0d0917d3..b55adfb958a 100644 --- a/app/controllers/events/view/export.js +++ b/app/controllers/events/view/export.js @@ -1,15 +1,18 @@ import Controller from '@ember/controller'; import { run } from '@ember/runloop'; -export default Controller.extend({ - eventDownloadUrl : '', - eventExportStatus : 'Event export not yet started.', - isDownloadDisabled : true, - data : { +import { action } from '@ember/object'; + +export default class extends Controller { + eventDownloadUrl = ''; + eventExportStatus = 'Event export not yet started.'; + isDownloadDisabled = true; + data = { image : false, audio : false, video : false, document : false - }, + }; + requestLoop(exportJobInfo) { run.later(() => { this.loader @@ -49,23 +52,22 @@ export default Controller.extend({ this.set('isLoading', false); }); }, 3000); - }, - actions: { - startGeneration() { - this.set('isLoading', true); - let payload = this.data; - this.loader - .post(`/events/${this.get('model.id')}/export/json`, payload) - .then(exportJobInfo => { - this.requestLoop(exportJobInfo); - }) - .catch(() => { - this.set('isLoading', false); - this.notify.error(this.l10n.t('Unexpected error occurred.'), - { - id: 'event_error_export' - }); - }); - } } -}); + @action + startGeneration() { + this.set('isLoading', true); + let payload = this.data; + this.loader + .post(`/events/${this.get('model.id')}/export/json`, payload) + .then(exportJobInfo => { + this.requestLoop(exportJobInfo); + }) + .catch(() => { + this.set('isLoading', false); + this.notify.error(this.l10n.t('Unexpected error occurred.'), + { + id: 'event_error_export' + }); + }); + } +} diff --git a/app/controllers/events/view/scheduler.js b/app/controllers/events/view/scheduler.js index c6e9b1209f1..5c59e290918 100644 --- a/app/controllers/events/view/scheduler.js +++ b/app/controllers/events/view/scheduler.js @@ -1,28 +1,28 @@ import Controller from '@ember/controller'; -import { computed } from '@ember/object'; +import { computed, action } from '@ember/object'; import moment from 'moment'; -export default Controller.extend({ - isSchedulePublished: computed('model.eventDetails.schedulePublishedOn', function() { - const schedulePublishStatus = this.get('model.eventDetails.schedulePublishedOn'); +export default class extends Controller { + @computed('model.eventDetails.schedulePublishedOn') + get isSchedulePublished() { + const schedulePublishStatus = this.model.eventDetails.schedulePublishedOn; if (schedulePublishStatus != null) { return schedulePublishStatus.toISOString() !== moment(0).toISOString(); } return false; - - }), - isLoading : false, - header : { + } + isLoading = false; + header = { left : 'today prev,next', center : 'title', right : 'timelineDay,timelineThreeDays,agendaWeek,month' - }, - views: { + } + view = { timelineThreeDays: { type : 'timeline', duration : { days: 3 } } - }, + } updateSession(start, end, microlocationId, sessionId) { let payload = { data: { @@ -57,57 +57,59 @@ export default Controller.extend({ this.set('error', reason); this.notify.error(`Error: ${reason}`); }); - }, + } unscheduleSession(session) { window.$('.full-calendar').fullCalendar('removeEvents', session._id); this.updateSession(null, null, session.resourceId, session.serverId); this.target.send('refresh'); - - }, - actions: { - drop(date, jsEvent, ui, resourceId) { - let start = date; - let duration = this.get('model.defaultDuration').split(':'); - let end = start.clone().add(duration[0], 'hours').add(duration[1], 'minutes'); - this.updateSession(start, end, resourceId, window.$(ui.helper).data('serverId')); - window.$(ui.helper).remove(); - }, - eventDrop(session) { - this.updateSession(session.start, session.end, session.resourceId, session.serverId); - }, - eventResize(session) { - this.updateSession(session.start, session.end, session.resourceId, session.serverId); - }, - eventRender(session, element) { - element.append(''); - let controller = this; - element.find('.scheduled-close-btn').on('click', function() { - controller.unscheduleSession(session); + } + @action + drop(date, jsEvent, ui, resourceId) { + let start = date; + let duration = this.model.defaultDuration.split(':'); + let end = start.clone().add(duration[0], 'hours').add(duration[1], 'minutes'); + this.updateSession(start, end, resourceId, window.$(ui.helper).data('serverId')); + window.$(ui.helper).remove(); + } + @action + eventDrop(session) { + this.updateSession(session.start, session.end, session.resourceId, session.serverId); + } + @action + eventResize(session) { + this.updateSession(session.start, session.end, session.resourceId, session.serverId); + } + @action + eventRender(session, element) { + element.append(''); + let controller = this; + element.find('.scheduled-close-btn').on('click', function() { + controller.unscheduleSession(session); + }); + } + @action + togglePublishState() { + this.set('isLoading', true); + let stat = this.isSchedulePublished ? 'unpublished' : 'published'; + let publishedAt = this.isSchedulePublished ? moment(0) : moment(); + let event = this.model.eventDetails; + event.set('schedulePublishedOn', publishedAt); + event.save() + .then(() => { + this.notify.success(`The schedule has been ${stat} successfully`, + { + id: 'schedule_change_succ' + }); + }) + .catch(reason => { + this.set('error', reason); + this.notify.error(`Error: ${reason}`, + { + id: 'error_reason_scheduler' + }); + }) + .finally(() => { + this.set('isLoading', false); }); - }, - togglePublishState() { - this.set('isLoading', true); - let action = this.isSchedulePublished ? 'unpublished' : 'published'; - let publishedAt = this.isSchedulePublished ? moment(0) : moment(); - let event = this.get('model.eventDetails'); - event.set('schedulePublishedOn', publishedAt); - event.save() - .then(() => { - this.notify.success(`The schedule has been ${action} successfully`, - { - id: 'schedule_change_succ' - }); - }) - .catch(reason => { - this.set('error', reason); - this.notify.error(`Error: ${reason}`, - { - id: 'error_reason_scheduler' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } } -}); +} diff --git a/app/controllers/events/view/sessions.js b/app/controllers/events/view/sessions.js index 8cda99636aa..96803c0ccc1 100644 --- a/app/controllers/events/view/sessions.js +++ b/app/controllers/events/view/sessions.js @@ -1,67 +1,69 @@ import Controller from '@ember/controller'; -import { computed } from '@ember/object'; +import { computed, action } from '@ember/object'; import { run } from '@ember/runloop'; -export default Controller.extend({ +export default class extends Controller { - isLoading: false, + isLoading = false; - onSessionRoute: computed('session.currentRouteName', function() { - let currentRouteName = this.get('session.currentRouteName'); + @computed('session.currentRouteName') + get onSessionRoute() { + let { currentRouteName } = this.session; return currentRouteName !== 'events.view.sessions.create' && currentRouteName !== 'events.view.sessions.edit'; - }), + } - actions: { - export() { - this.set('isLoading', true); - this.loader - .load(`/events/${this.get('model.id')}/export/sessions/csv`) - .then(exportJobInfo => { - this.requestLoop(exportJobInfo); - }) - .catch(() => { - this.set('isLoading', false); - this.notify.error(this.l10n.t('An unexpected error has occurred.'), - { - id: 'session_unexp_error' - }); - }); - } - }, + @action + export() { + this.set('isLoading', true); + this.loader + .load(`/events/${this.model.id}/export/sessions/csv`) + .then(exportJobInfo => { + this.requestLoop(exportJobInfo); + }) + .catch(() => { + this.set('isLoading', false); + this.notify.error(this.l10n.t('An unexpected error has occurred.'), + { + id: 'session_unexp_error' + }); + }); + } - requestLoop(exportJobInfo) { - run.later(() => { - this.loader - .load(exportJobInfo.task_url, { withoutPrefix: true }) - .then(exportJobStatus => { - if (exportJobStatus.state === 'SUCCESS') { - window.location = exportJobStatus.result.download_url; - this.notify.success(this.l10n.t('Download Ready'), - { - id: 'download_ready' - }); - } else if (exportJobStatus.state === 'WAITING') { - this.requestLoop(exportJobInfo); - this.notify.alert(this.l10n.t('Task is going on.'), - { - id: 'task_going' - }); - } else { + + requestLoop(exportJobInfo) { + run.later(() => { + this.loader + .load(exportJobInfo.task_url, { withoutPrefix: true }) + .then(exportJobStatus => { + if (exportJobStatus.state === 'SUCCESS') { + window.location = exportJobStatus.result.download_url; + this.notify.success(this.l10n.t('Download Ready'), + { + id: 'download_ready' + }); + } else if (exportJobStatus.state === 'WAITING') { + this.requestLoop(exportJobInfo); + this.notify.alert(this.l10n.t('Task is going on.'), + { + id: 'task_going' + }); + } else { + this.notify.error(this.l10n.t('CSV Export has failed.'), + { + id: 'csv_fail' + }); + } + }) + .catch(() => { this.notify.error(this.l10n.t('CSV Export has failed.'), { - id: 'csv_fail' + id: 'csv_export_fail' }); - } - }) - .catch(() => { - this.notify.error(this.l10n.t('CSV Export has failed.'), - { - id: 'csv_export_fail' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, 3000); - } -}); + }) + .finally(() => { + this.set('isLoading', false); + }); + }, 3000); + } +} + diff --git a/app/controllers/events/view/sessions/create.js b/app/controllers/events/view/sessions/create.js index b25843facdb..77effb31718 100644 --- a/app/controllers/events/view/sessions/create.js +++ b/app/controllers/events/view/sessions/create.js @@ -1,63 +1,65 @@ import Controller from '@ember/controller'; -export default Controller.extend({ - actions: { - async save() { - 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.model.session); - this.model.session.save() - .then(() => { - this.notify.success(this.l10n.t('Your session has been saved'), - { - id: 'session_save_dash' - }); - this.transitionToRoute('events.view.sessions', this.model.event.id); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'session_crea_some_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'error_unexp_session' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } else { - this.get('model.session').save() - .then(() => { - this.notify.success(this.l10n.t('Your session has been saved'), - { - id: 'session_save' - }); - this.transitionToRoute('events.view.sessions', this.get('model.event.id')); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'session_error_wrong' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); +import { action } from '@ember/object'; + +export default class extends Controller { + @action + async save() { + await this.model.session.save(); + if (this.addNewSpeaker) { + let newSpeaker = this.model.speaker; + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); } + newSpeaker.save() + .then(() => { + newSpeaker.sessions.pushObject(this.model.session); + this.model.session.save() + .then(() => { + this.notify.success(this.l10n.t('Your session has been saved'), + { + id: 'session_save_dash' + }); + this.transitionToRoute('events.view.sessions', this.model.event.id); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'session_crea_some_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'error_unexp_session' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + } else { + this.get('model.session').save() + .then(() => { + this.notify.success(this.l10n.t('Your session has been saved'), + { + id: 'session_save' + }); + this.transitionToRoute('events.view.sessions', this.model.event.id); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'session_error_wrong' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } } -}); +} + diff --git a/app/controllers/events/view/sessions/edit.js b/app/controllers/events/view/sessions/edit.js index 4874a3fe982..3dd3daa3ff0 100644 --- a/app/controllers/events/view/sessions/edit.js +++ b/app/controllers/events/view/sessions/edit.js @@ -1,65 +1,65 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - save() { - this.set('isLoading', true); - 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.model.session); - this.model.session.save() - .then(() => { - this.notify.success(this.l10n.t('Your session has been saved'), - { - id: 'session_edit_save' - }); - this.transitionToRoute('events.view.sessions', this.model.event.id); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'session_edit_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'session_edit_wrong' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); - } else { - this.model.speaker.deleteRecord(); - this.model.session.save() - .then(() => { - this.notify.success(this.l10n.t('Your session has been saved'), - { - id: 'session_saved' - }); - this.transitionToRoute('events.view.sessions', this.model.event.id); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), - { - id: 'session_edit_error' - }); - }) - .finally(() => { - this.set('isLoading', false); - }); +export default class extends Controller { + @action + save() { + this.set('isLoading', true); + if (this.addNewSpeaker) { + let newSpeaker = this.model.speaker; + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); } + newSpeaker.save() + .then(() => { + newSpeaker.sessions.pushObject(this.model.session); + this.model.session.save() + .then(() => { + this.notify.success(this.l10n.t('Your session has been saved'), + { + id: 'session_edit_save' + }); + this.transitionToRoute('events.view.sessions', this.model.event.id); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'session_edit_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'session_edit_wrong' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); + } else { + this.model.speaker.deleteRecord(); + this.model.session.save() + .then(() => { + this.notify.success(this.l10n.t('Your session has been saved'), + { + id: 'session_saved' + }); + this.transitionToRoute('events.view.sessions', this.model.event.id); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again'), + { + id: 'session_edit_error' + }); + }) + .finally(() => { + this.set('isLoading', false); + }); } } -}); +} diff --git a/app/controllers/events/view/settings.js b/app/controllers/events/view/settings.js index 55dccf6c77d..01fd00a7652 100644 --- a/app/controllers/events/view/settings.js +++ b/app/controllers/events/view/settings.js @@ -1,45 +1,51 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ +export default class extends Controller { - actions: { - openEventTransferModal(id, name) { - this.setProperties({ - 'isEventTransferModalOpen' : true, - 'confirmEventName' : '', - 'eventId' : id, - 'eventName' : name - }); - }, - openConfirmEventTransferModal() { - const currentInvite = this.model.roleInvites.createRecord({}); - let { roles } = this.model; - for (const role of roles ? roles.toArray() : []) { - if (role.name === 'owner') { - currentInvite.set('role', role); - } + @action + openEventTransferModal(id, name) { + this.setProperties({ + 'isEventTransferModalOpen' : true, + 'confirmEventName' : '', + 'eventId' : id, + 'eventName' : name + }); + } + + @action + openConfirmEventTransferModal() { + const currentInvite = this.model.roleInvites.createRecord({}); + let { roles } = this.model; + for (const role of roles ? roles.toArray() : []) { + if (role.name === 'owner') { + currentInvite.set('role', role); } + } + + this.setProperties({ + 'isEventTransferModalOpen' : false, + 'isConfirmEventTransferModalOpen' : true, + 'checked' : false, + currentInvite + }); + } + + @action + async transferEvent() { + try { + this.set('isLoading', true); + this.currentInvite.set('roleName', 'owner'); + await this.currentInvite.save(); this.setProperties({ - 'isEventTransferModalOpen' : false, - 'isConfirmEventTransferModalOpen' : true, - 'checked' : false, - currentInvite + 'isConfirmEventTransferModalOpen' : false, + 'checked' : false }); - }, - async transferEvent() { - try { - this.set('isLoading', true); - this.currentInvite.set('roleName', 'owner'); - await this.currentInvite.save(); - this.setProperties({ - 'isConfirmEventTransferModalOpen' : false, - 'checked' : false - }); - this.notify.success(this.l10n.t('Owner Role Invite sent successfully.')); - } catch (error) { - this.notify.error(this.l10n.t(error.message)); - } - this.set('isLoading', false); + this.notify.success(this.l10n.t('Owner Role Invite sent successfully.')); + } catch (error) { + this.notify.error(this.l10n.t(error.message)); } + + this.set('isLoading', false); } -}); +} diff --git a/app/controllers/events/view/speakers.js b/app/controllers/events/view/speakers.js index 9f5a61d691c..7bd30fd2062 100644 --- a/app/controllers/events/view/speakers.js +++ b/app/controllers/events/view/speakers.js @@ -1,24 +1,24 @@ import Controller from '@ember/controller'; import { run } from '@ember/runloop'; +import { action } from '@ember/object'; -export default Controller.extend({ +export default class extends Controller { - isLoading: false, + isLoading = false; - actions: { - export() { - this.set('isLoading', true); - this.loader - .load(`/events/${this.get('model.id')}/export/speakers/csv`) - .then(exportJobInfo => { - this.requestLoop(exportJobInfo); - }) - .catch(() => { - this.set('isLoading', false); - this.notify.error(this.l10n.t('An unexpected error has occurred.')); - }); - } - }, + @action + export() { + this.set('isLoading', true); + this.loader + .load(`/events/${this.model.id}/export/speakers/csv`) + .then(exportJobInfo => { + this.requestLoop(exportJobInfo); + }) + .catch(() => { + this.set('isLoading', false); + this.notify.error(this.l10n.t('An unexpected error has occurred.')); + }); + } requestLoop(exportJobInfo) { run.later(() => { @@ -43,4 +43,4 @@ export default Controller.extend({ }); }, 3000); } -}); +} diff --git a/app/controllers/events/view/speakers/create.js b/app/controllers/events/view/speakers/create.js index dbd20da7410..077e607cf36 100644 --- a/app/controllers/events/view/speakers/create.js +++ b/app/controllers/events/view/speakers/create.js @@ -1,29 +1,32 @@ import Controller from '@ember/controller'; -export default Controller.extend({ - actions: { - async save(sessionDetails) { - try { - this.set('isLoading', true); - if (!sessionDetails) { - await this.get('model.session').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(); - } else { - this.get('model.speaker.sessions').pushObject(sessionDetails); - } - await this.get('model.speaker').save(); - this.notify.success(this.l10n.t('Your session has been saved')); - this.transitionToRoute('events.view.speakers', this.get('model.event.id')); - } catch (e) { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again')); +import { action } from '@ember/object'; + +export default class extends Controller { + @action + async save(sessionDetails) { + try { + this.set('isLoading', true); + if (!sessionDetails) { + await this.model.session.save(); } + let newSpeaker = this.model.speaker; + if (newSpeaker.isEmailOverridden) { + newSpeaker.set('email', this.authManager.currentUser.email); + } + await newSpeaker.save(); + if (!sessionDetails) { + this.model.speaker.sessions.pushObject(this.model.session); + await this.model.session.save(); + } else { + this.model.speaker.sessions.pushObject(sessionDetails); + } + + await this.model.speaker.save(); + this.notify.success(this.l10n.t('Your session has been saved')); + this.transitionToRoute('events.view.speakers', this.model.event.id); + } catch (e) { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again')); } } -}); +} + diff --git a/app/controllers/events/view/speakers/edit.js b/app/controllers/events/view/speakers/edit.js index bf666c3131a..1c781df985b 100644 --- a/app/controllers/events/view/speakers/edit.js +++ b/app/controllers/events/view/speakers/edit.js @@ -1,24 +1,24 @@ import Controller from '@ember/controller'; +import { action } from '@ember/object'; -export default Controller.extend({ - actions: { - save() { - this.set('isLoading', true); - 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'); - }) - .catch(() => { - this.notify.error(this.l10n.t('Oops something went wrong. Please try again')); - }) - .finally(() => { - this.set('isLoading', false); - }); +export default class extends Controller { + @action + save() { + this.set('isLoading', true); + let { speaker } = this.model; + 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'); + }) + .catch(() => { + this.notify.error(this.l10n.t('Oops something went wrong. Please try again')); + }) + .finally(() => { + this.set('isLoading', false); + }); } -}); +} diff --git a/app/controllers/orders/pending.js b/app/controllers/orders/pending.js index 5ce16df1a34..bf7795f559b 100644 --- a/app/controllers/orders/pending.js +++ b/app/controllers/orders/pending.js @@ -130,10 +130,17 @@ export default Controller.extend({ }) .catch(e => { console.warn(e); - this.notify.error(this.l10n.t('An unexpected error has occurred'), - { - id: 'unexpected_error_occur' - }); + if ('errors' in e) { + this.notify.error(this.l10n.tVar(e.errors[0].detail), + { + id: 'unexpected_error_occur' + }); + } else { + this.notify.error(this.l10n.tVar(e), + { + id: 'unexpected_error_occur' + }); + } }) .finally(() => { this.set('isLoading', false); diff --git a/app/controllers/public.js b/app/controllers/public.js index e0f4b9f9b62..5f5b7e183f6 100644 --- a/app/controllers/public.js +++ b/app/controllers/public.js @@ -11,6 +11,11 @@ export default Controller.extend({ displayEndDate: computed('model.startsAtDate', 'model.endsAtDate', function() { return !moment(this.model.startsAtDate).isSame(this.model.endsAtDate, 'minute'); }), + displaySideMenu: computed('session.currentRouteName', function() { + if (this.session.currentRouteName) { + return this.session.currentRouteName !== 'public.cfs.new-session' && this.session.currentRouteName !== 'public.cfs.new-speaker' && this.session.currentRouteName !== 'public.cfs.edit-speaker' && this.session.currentRouteName !== 'public.cfs.edit-session'; + } + }), actions: { toggleMenu() { this.toggleProperty('isMenuOpen'); diff --git a/app/models/event.js b/app/models/event.js index df19b08f0b0..2b87426c44f 100644 --- a/app/models/event.js +++ b/app/models/event.js @@ -48,9 +48,9 @@ export default ModelBase.extend(CustomPrimaryKeyMixin, { isMapShown : attr('boolean', { defaultValue: true }), isSponsorsEnabled : attr('boolean', { defaultValue: false }), isTicketFormEnabled : attr('boolean', { defaultValue: false }), - isTicketingEnabled : attr('boolean', { defaultValue: true }), isSessionsSpeakersEnabled : attr('boolean', { defaultValue: false }), isFeatured : attr('boolean', { defaultValue: false }), + isBillingInfoMandatory : attr('boolean', { defaultValue: false }), isTaxEnabled : attr('boolean', { defaultValue: false }), canPayByPaypal : attr('boolean', { defaultValue: false }), diff --git a/app/routes/admin/events/index.js b/app/routes/admin/events/index.js index a1ca34c8c1d..37b17d9385d 100644 --- a/app/routes/admin/events/index.js +++ b/app/routes/admin/events/index.js @@ -3,6 +3,6 @@ import Route from '@ember/routing/route'; export default Route.extend({ beforeModel() { this._super(...arguments); - this.transitionTo('admin.events.list', 'all'); + this.transitionTo('admin.events.list', 'live'); } }); diff --git a/app/routes/my-sessions/list.js b/app/routes/my-sessions/list.js index 81bb40f1027..9ad839ab89b 100644 --- a/app/routes/my-sessions/list.js +++ b/app/routes/my-sessions/list.js @@ -40,7 +40,7 @@ export default Route.extend(AuthenticatedRouteMixin, { ] } ]; - } else { + } else if (params.session_status === 'past') { filterOptions = [ { name : 'ends-at', diff --git a/app/routes/public.js b/app/routes/public.js index 291e2f836c1..ee490bf381e 100644 --- a/app/routes/public.js +++ b/app/routes/public.js @@ -8,7 +8,7 @@ export default Route.extend({ model(params) { return this.store.findRecord('event', params.event_id, { - include: 'social-links,event-copyright,speakers-call,tax' + include: 'social-links,event-copyright,speakers-call,tax,owner,organizers' }); } }); diff --git a/app/templates/admin/events.hbs b/app/templates/admin/events.hbs index 3aab6ca31de..da5029c8f48 100644 --- a/app/templates/admin/events.hbs +++ b/app/templates/admin/events.hbs @@ -2,9 +2,6 @@