diff --git a/app/components/forms/session-speaker-form.js b/app/components/forms/session-speaker-form.js index 54327a6b737..a6e15b98cf7 100644 --- a/app/components/forms/session-speaker-form.js +++ b/app/components/forms/session-speaker-form.js @@ -110,7 +110,7 @@ export default Component.extend(FormMixin, { }, { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -121,7 +121,7 @@ export default Component.extend(FormMixin, { rules : [ { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -135,7 +135,7 @@ export default Component.extend(FormMixin, { }, { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -146,7 +146,7 @@ export default Component.extend(FormMixin, { rules : [ { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -160,7 +160,7 @@ export default Component.extend(FormMixin, { }, { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -171,7 +171,7 @@ export default Component.extend(FormMixin, { rules : [ { type : 'regExp', - value : compulsoryProtocolValidUrlPattern, + value : protocolLessValidUrlPattern, prompt : this.l10n.t('Please enter a valid url') } ] @@ -437,7 +437,7 @@ export default Component.extend(FormMixin, { rules : [ { type : 'empty', - prompt : this.l10n.t('Please enter GitHub link') + prompt : this.l10n.t('Please enter your GitHub profile url') }, { type : 'regExp', @@ -462,12 +462,12 @@ export default Component.extend(FormMixin, { rules : [ { type : 'empty', - prompt : this.l10n.t('Please enter linkedin link') + prompt : this.l10n.t('Please enter Linkedin profile url') }, { type : 'regExp', value : validLinkedinProfileUrlPattern, - prompt : this.l10n.t('Please enter a valid linkedin profile url') + prompt : this.l10n.t('Please enter a valid Linkedin profile url') } ] }, @@ -478,7 +478,7 @@ export default Component.extend(FormMixin, { { type : 'regExp', value : validLinkedinProfileUrlPattern, - prompt : this.l10n.t('Please enter a valid linkedin profile url') + prompt : this.l10n.t('Please enter a valid Linkedin profile url') } ] } diff --git a/app/models/custom-form.js b/app/models/custom-form.js index c87f8e897f0..71cf3b47c09 100644 --- a/app/models/custom-form.js +++ b/app/models/custom-form.js @@ -102,6 +102,15 @@ export default ModelBase.extend({ } }), + isUrlField: computed('type', 'fieldIdentifier', function() { + return this.type === 'text' + && (['website', 'twitter', 'github', 'facebook', 'linkedin', 'slidesUrl', 'videoUrl', 'audioUrl'].includes(this.fieldIdentifier)); + }), + + segmentedLinkName: computed('fieldIdentifier', function() { + return `segmentedLink${this.fieldIdentifier.charAt(0).toUpperCase() + this.fieldIdentifier.slice(1)}`; + }), + isRequiredObserver: observer('isRequired', function() { if (!this.isIncluded && this.isRequired) { this.set('isIncluded', true); diff --git a/app/models/session.js b/app/models/session.js index 418efbc7933..2b44633eb52 100644 --- a/app/models/session.js +++ b/app/models/session.js @@ -2,7 +2,7 @@ import attr from 'ember-data/attr'; import moment from 'moment'; import ModelBase from 'open-event-frontend/models/base'; import { belongsTo, hasMany } from 'ember-data/relationships'; -import { computedDateTimeSplit } from 'open-event-frontend/utils/computed-helpers'; +import { computedDateTimeSplit, computedSegmentedLink } from 'open-event-frontend/utils/computed-helpers'; import { computed } from '@ember/object'; const detectedTimezone = moment.tz.guess(); @@ -51,5 +51,12 @@ export default ModelBase.extend({ startAtDate : computedDateTimeSplit.bind(this)('startsAt', 'date'), startAtTime : computedDateTimeSplit.bind(this)('startsAt', 'time'), endsAtDate : computedDateTimeSplit.bind(this)('endsAt', 'date'), - endsAtTime : computedDateTimeSplit.bind(this)('endsAt', 'time') + endsAtTime : computedDateTimeSplit.bind(this)('endsAt', 'time'), + + segmentedLinkSlidesUrl : computedSegmentedLink.bind(this)('slidesUrl'), + segmentedLinkAudioUrl : computedSegmentedLink.bind(this)('audioUrl'), + segmentedLinkVideoUrl : computedSegmentedLink.bind(this)('videoUrl'), + segmentedLinkSignUpUrl : computedSegmentedLink.bind(this)('signUpUrl') + + }); diff --git a/app/models/speaker.js b/app/models/speaker.js index 97c160e113f..e850240b371 100644 --- a/app/models/speaker.js +++ b/app/models/speaker.js @@ -33,9 +33,11 @@ export default ModelBase.extend({ gender : attr('string'), heardFrom : attr('string'), - segmentedLinkWebsite : computedSegmentedLink.bind(this)('website'), - segmentedLinkTwitter : computedSegmentedLink.bind(this)('twitter'), - + segmentedLinkWebsite : computedSegmentedLink.bind(this)('website'), + segmentedLinkTwitter : computedSegmentedLink.bind(this)('twitter'), + segmentedLinkGithub : computedSegmentedLink.bind(this)('github'), + segmentedLinkFacebook : computedSegmentedLink.bind(this)('facebook'), + segmentedLinkLinkedIn : computedSegmentedLink.bind(this)('linkedin'), /** * Relationships */ diff --git a/app/templates/components/forms/session-speaker-form.hbs b/app/templates/components/forms/session-speaker-form.hbs index 2805090a329..ae8f9ed97de 100644 --- a/app/templates/components/forms/session-speaker-form.hbs +++ b/app/templates/components/forms/session-speaker-form.hbs @@ -14,8 +14,17 @@ {{widgets/forms/rich-text-editor value=(mut (get data.session field.fieldIdentifier)) textareaId=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}} {{else}} - {{input type=field.type value=(mut (get data.session field.fieldIdentifier)) - id=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}} + {{#if field.isUrlField}} + {{widgets/forms/link-input + fixedName=true + inputId=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier)) + segmentedLink=(get data.session field.segmentedLinkName) + canRemoveItem=false + }} + {{else}} + {{input type=field.type value=(mut (get data.session field.fieldIdentifier)) + id=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}} + {{/if}} {{/if}} {{/if}} {{#if (eq field.type 'image')}} @@ -177,11 +186,11 @@ {{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 (or (eq field.name 'Website') (eq field.name 'Twitter'))}} + {{#if field.isUrlField}} {{widgets/forms/link-input fixedName=true inputId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier)) - segmentedLink=(if (eq field.name 'Website') data.speaker.segmentedLinkWebsite data.speaker.segmentedLinkTwitter) + segmentedLink=(get data.speaker field.segmentedLinkName) canRemoveItem=false }} {{else}}