Skip to content

Commit 7d38728

Browse files
authored
fix: Revamp session-speaker custom forms, fix URLs (#3333)
1 parent b46df94 commit 7d38728

File tree

5 files changed

+46
-19
lines changed

5 files changed

+46
-19
lines changed

app/components/forms/session-speaker-form.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export default Component.extend(FormMixin, {
110110
},
111111
{
112112
type : 'regExp',
113-
value : compulsoryProtocolValidUrlPattern,
113+
value : protocolLessValidUrlPattern,
114114
prompt : this.l10n.t('Please enter a valid url')
115115
}
116116
]
@@ -121,7 +121,7 @@ export default Component.extend(FormMixin, {
121121
rules : [
122122
{
123123
type : 'regExp',
124-
value : compulsoryProtocolValidUrlPattern,
124+
value : protocolLessValidUrlPattern,
125125
prompt : this.l10n.t('Please enter a valid url')
126126
}
127127
]
@@ -135,7 +135,7 @@ export default Component.extend(FormMixin, {
135135
},
136136
{
137137
type : 'regExp',
138-
value : compulsoryProtocolValidUrlPattern,
138+
value : protocolLessValidUrlPattern,
139139
prompt : this.l10n.t('Please enter a valid url')
140140
}
141141
]
@@ -146,7 +146,7 @@ export default Component.extend(FormMixin, {
146146
rules : [
147147
{
148148
type : 'regExp',
149-
value : compulsoryProtocolValidUrlPattern,
149+
value : protocolLessValidUrlPattern,
150150
prompt : this.l10n.t('Please enter a valid url')
151151
}
152152
]
@@ -160,7 +160,7 @@ export default Component.extend(FormMixin, {
160160
},
161161
{
162162
type : 'regExp',
163-
value : compulsoryProtocolValidUrlPattern,
163+
value : protocolLessValidUrlPattern,
164164
prompt : this.l10n.t('Please enter a valid url')
165165
}
166166
]
@@ -171,7 +171,7 @@ export default Component.extend(FormMixin, {
171171
rules : [
172172
{
173173
type : 'regExp',
174-
value : compulsoryProtocolValidUrlPattern,
174+
value : protocolLessValidUrlPattern,
175175
prompt : this.l10n.t('Please enter a valid url')
176176
}
177177
]
@@ -437,7 +437,7 @@ export default Component.extend(FormMixin, {
437437
rules : [
438438
{
439439
type : 'empty',
440-
prompt : this.l10n.t('Please enter GitHub link')
440+
prompt : this.l10n.t('Please enter your GitHub profile url')
441441
},
442442
{
443443
type : 'regExp',
@@ -462,12 +462,12 @@ export default Component.extend(FormMixin, {
462462
rules : [
463463
{
464464
type : 'empty',
465-
prompt : this.l10n.t('Please enter linkedin link')
465+
prompt : this.l10n.t('Please enter Linkedin profile url')
466466
},
467467
{
468468
type : 'regExp',
469469
value : validLinkedinProfileUrlPattern,
470-
prompt : this.l10n.t('Please enter a valid linkedin profile url')
470+
prompt : this.l10n.t('Please enter a valid Linkedin profile url')
471471
}
472472
]
473473
},
@@ -478,7 +478,7 @@ export default Component.extend(FormMixin, {
478478
{
479479
type : 'regExp',
480480
value : validLinkedinProfileUrlPattern,
481-
prompt : this.l10n.t('Please enter a valid linkedin profile url')
481+
prompt : this.l10n.t('Please enter a valid Linkedin profile url')
482482
}
483483
]
484484
}

app/models/custom-form.js

+9
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,15 @@ export default ModelBase.extend({
102102
}
103103
}),
104104

105+
isUrlField: computed('type', 'fieldIdentifier', function() {
106+
return this.type === 'text'
107+
&& (['website', 'twitter', 'github', 'facebook', 'linkedin', 'slidesUrl', 'videoUrl', 'audioUrl'].includes(this.fieldIdentifier));
108+
}),
109+
110+
segmentedLinkName: computed('fieldIdentifier', function() {
111+
return `segmentedLink${this.fieldIdentifier.charAt(0).toUpperCase() + this.fieldIdentifier.slice(1)}`;
112+
}),
113+
105114
isRequiredObserver: observer('isRequired', function() {
106115
if (!this.isIncluded && this.isRequired) {
107116
this.set('isIncluded', true);

app/models/session.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import attr from 'ember-data/attr';
22
import moment from 'moment';
33
import ModelBase from 'open-event-frontend/models/base';
44
import { belongsTo, hasMany } from 'ember-data/relationships';
5-
import { computedDateTimeSplit } from 'open-event-frontend/utils/computed-helpers';
5+
import { computedDateTimeSplit, computedSegmentedLink } from 'open-event-frontend/utils/computed-helpers';
66
import { computed } from '@ember/object';
77

88
const detectedTimezone = moment.tz.guess();
@@ -51,5 +51,12 @@ export default ModelBase.extend({
5151
startAtDate : computedDateTimeSplit.bind(this)('startsAt', 'date'),
5252
startAtTime : computedDateTimeSplit.bind(this)('startsAt', 'time'),
5353
endsAtDate : computedDateTimeSplit.bind(this)('endsAt', 'date'),
54-
endsAtTime : computedDateTimeSplit.bind(this)('endsAt', 'time')
54+
endsAtTime : computedDateTimeSplit.bind(this)('endsAt', 'time'),
55+
56+
segmentedLinkSlidesUrl : computedSegmentedLink.bind(this)('slidesUrl'),
57+
segmentedLinkAudioUrl : computedSegmentedLink.bind(this)('audioUrl'),
58+
segmentedLinkVideoUrl : computedSegmentedLink.bind(this)('videoUrl'),
59+
segmentedLinkSignUpUrl : computedSegmentedLink.bind(this)('signUpUrl')
60+
61+
5562
});

app/models/speaker.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ export default ModelBase.extend({
3333
gender : attr('string'),
3434
heardFrom : attr('string'),
3535

36-
segmentedLinkWebsite : computedSegmentedLink.bind(this)('website'),
37-
segmentedLinkTwitter : computedSegmentedLink.bind(this)('twitter'),
38-
36+
segmentedLinkWebsite : computedSegmentedLink.bind(this)('website'),
37+
segmentedLinkTwitter : computedSegmentedLink.bind(this)('twitter'),
38+
segmentedLinkGithub : computedSegmentedLink.bind(this)('github'),
39+
segmentedLinkFacebook : computedSegmentedLink.bind(this)('facebook'),
40+
segmentedLinkLinkedIn : computedSegmentedLink.bind(this)('linkedin'),
3941
/**
4042
* Relationships
4143
*/

app/templates/components/forms/session-speaker-form.hbs

+13-4
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,17 @@
1414
{{widgets/forms/rich-text-editor value=(mut (get data.session field.fieldIdentifier))
1515
textareaId=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}}
1616
{{else}}
17-
{{input type=field.type value=(mut (get data.session field.fieldIdentifier))
18-
id=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}}
17+
{{#if field.isUrlField}}
18+
{{widgets/forms/link-input
19+
fixedName=true
20+
inputId=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))
21+
segmentedLink=(get data.session field.segmentedLinkName)
22+
canRemoveItem=false
23+
}}
24+
{{else}}
25+
{{input type=field.type value=(mut (get data.session field.fieldIdentifier))
26+
id=(if field.isRequired (concat 'session_' field.fieldIdentifier '_required') (concat 'session_' field.fieldIdentifier))}}
27+
{{/if}}
1928
{{/if}}
2029
{{/if}}
2130
{{#if (eq field.type 'image')}}
@@ -177,11 +186,11 @@
177186
{{widgets/forms/rich-text-editor value=(mut (get data.speaker field.fieldIdentifier))
178187
textareaId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))}}
179188
{{else}}
180-
{{#if (or (eq field.name 'Website') (eq field.name 'Twitter'))}}
189+
{{#if field.isUrlField}}
181190
{{widgets/forms/link-input
182191
fixedName=true
183192
inputId=(if field.isRequired (concat 'speaker_' field.fieldIdentifier '_required') (concat 'speaker_' field.fieldIdentifier))
184-
segmentedLink=(if (eq field.name 'Website') data.speaker.segmentedLinkWebsite data.speaker.segmentedLinkTwitter)
193+
segmentedLink=(get data.speaker field.segmentedLinkName)
185194
canRemoveItem=false
186195
}}
187196
{{else}}

0 commit comments

Comments
 (0)