Skip to content

Commit a76744d

Browse files
author
Łukasz Serwatka
authored
Merge pull request #63 from dew326/cotf-config
EZP-28936/EZP-29000/EZP-29001/EZP-29002/EZP-29003/EZP-29004/EZP-29005/EZP-29007 - Content on the Fly configuration
2 parents ad193a6 + 64b9230 commit a76744d

22 files changed

+578
-187
lines changed

Resources/public/js/MultiFileUpload.module.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/MultiFileUpload.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/SubItems.module.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/SubItems.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/UniversalDiscovery.module.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Resources/public/js/UniversalDiscovery.module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/modules/universal-discovery/components/content-creator/css/content.creator.component.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
}
66

77
.c-content-creator .m-ud__content {
8-
padding: 0
8+
padding: 0;
9+
background: #eee;
910
}
1011

1112
.c-content-creator .m-ud__actions {

src/modules/universal-discovery/components/create/create.choose.content.type.component.js renamed to src/modules/universal-discovery/components/create/choose.content.type.component.js

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,57 @@
11
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33

4-
import './css/create.choose.content.type.component.css';
4+
import './css/choose.content.type.component.css';
55

66
export default class ChooseContentTypeComponent extends Component {
77
constructor(props) {
88
super(props);
99

10+
let selectedContentType = {};
11+
const isForcedContentType = props.allowedContentTypes.length === 1;
12+
const hasPreselectedAllowedContentType = !props.allowedContentTypes.length || props.allowedContentTypes.includes(props.preselectedContentType);
13+
const isPreselectedContentType = props.preselectedContentType && hasPreselectedAllowedContentType;
14+
1015
this._filterTimeout = null;
1116

1217
this.updateFilterQuery = this.updateFilterQuery.bind(this);
1318
this.renderGroup = this.renderGroup.bind(this);
1419
this.renderItem = this.renderItem.bind(this);
1520

21+
if (isForcedContentType) {
22+
selectedContentType = this.findContentType(props.allowedContentTypes[0]);
23+
} else if (isPreselectedContentType) {
24+
selectedContentType = this.findContentType(props.preselectedContentType);
25+
}
26+
1627
this.state = {
17-
selected: {},
28+
selectedContentType,
1829
filterQuery: ''
1930
};
2031
}
2132

22-
updateSelectedItem(item) {
23-
this.props.onContentTypeSelected(item);
33+
componentDidMount() {
34+
this.props.onContentTypeSelected(this.state.selectedContentType);
35+
}
36+
37+
findContentType(identifier) {
38+
let contentType = null;
39+
40+
Object.values(this.props.contentTypes).forEach(group => {
41+
const result = group.find(contentType => contentType.identifier === identifier);
42+
43+
if (result) {
44+
contentType = result;
45+
}
46+
});
47+
48+
return contentType;
49+
}
50+
51+
updateSelectedItem(selectedContentType) {
52+
this.props.onContentTypeSelected(selectedContentType);
2453

25-
this.setState(state => Object.assign({}, state, {selected: item}));
54+
this.setState(state => Object.assign({}, state, { selectedContentType }));
2655
}
2756

2857
updateFilterQuery(event) {
@@ -36,16 +65,24 @@ export default class ChooseContentTypeComponent extends Component {
3665
}
3766

3867
renderItem(item, index) {
68+
const isNotSelectable = this.props.allowedContentTypes.length && !this.props.allowedContentTypes.includes(item.identifier);
3969
const attrs = {
4070
className: 'c-choose-content-type__group-item',
41-
onClick: this.updateSelectedItem.bind(this, item),
4271
key: index
4372
};
4473

45-
if (this.state.selected.identifier === item.identifier) {
74+
if (this.state.selectedContentType.identifier === item.identifier) {
4675
attrs.className = `${attrs.className} is-selected`;
4776
}
4877

78+
if (isNotSelectable) {
79+
attrs.className = `${attrs.className} is-not-selectable`;
80+
}
81+
82+
if (!isNotSelectable) {
83+
attrs.onClick = this.updateSelectedItem.bind(this, item);
84+
}
85+
4986
if (this.state.filterQuery && !item.name.toLowerCase().includes(this.state.filterQuery)) {
5087
attrs.hidden = true;
5188
}
@@ -96,5 +133,7 @@ ChooseContentTypeComponent.propTypes = {
96133
maxHeight: PropTypes.number.isRequired,
97134
labels: PropTypes.object.isRequired,
98135
contentTypes: PropTypes.object.isRequired,
99-
onContentTypeSelected: PropTypes.func.isRequired
136+
onContentTypeSelected: PropTypes.func.isRequired,
137+
preselectedContentType: PropTypes.string.isRequired,
138+
allowedContentTypes: PropTypes.array.isRequired
100139
};
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import React, { Component } from 'react';
2+
import PropTypes from 'prop-types';
3+
4+
import './css/choose.language.component.css';
5+
6+
export default class ChooseLanguageComponent extends Component {
7+
constructor(props) {
8+
super(props);
9+
10+
this.updateSelection = this.updateSelection.bind(this);
11+
this.renderOption = this.renderOption.bind(this);
12+
13+
let selectedLanguageCode = props.allowedLanguages.length ? props.allowedLanguages[0] : props.languages.priority[0];
14+
15+
if (props.preselectedLanguage) {
16+
selectedLanguageCode = props.preselectedLanguage;
17+
}
18+
19+
if (props.forcedLanguage) {
20+
console.warn('[DEPRECATED] cotfForcedLanguage parameter is deprecated');
21+
console.warn('[DEPRECATED] it will be removed from ezplatform-admin-ui-modules 2.0');
22+
console.warn('[DEPRECATED] use cotfAllowedLanguages instead');
23+
24+
selectedLanguageCode = props.forcedLanguage;
25+
}
26+
27+
if (props.allowedLanguages.length === 1) {
28+
selectedLanguageCode = props.allowedLanguages[0];
29+
}
30+
31+
this.state = {
32+
selectedLanguage: props.languages.mappings[selectedLanguageCode]
33+
};
34+
}
35+
36+
componentDidMount() {
37+
this.props.onLanguageSelected(this.state.selectedLanguage);
38+
}
39+
40+
updateSelection(event) {
41+
const languageCode = event.target.value;
42+
const selectedLanguage = this.props.languages.mappings[languageCode];
43+
44+
this.props.onLanguageSelected(selectedLanguage);
45+
46+
this.setState(state => Object.assign({}, state, { selectedLanguage }));
47+
}
48+
49+
renderOption(languageCode, index) {
50+
const language = this.props.languages.mappings[languageCode];
51+
const attrs = {
52+
key: index,
53+
value: language.languageCode
54+
};
55+
56+
if (this.state.selectedLanguage.languageCode === languageCode) {
57+
attrs.selected = true;
58+
}
59+
60+
return (
61+
<option {...attrs}>{language.name}</option>
62+
);
63+
}
64+
65+
renderOptions() {
66+
const { allowedLanguages, languages } = this.props;
67+
const languagesList = allowedLanguages.length ? allowedLanguages : languages.priority;
68+
69+
return (
70+
languagesList.map(this.renderOption)
71+
);
72+
}
73+
74+
render() {
75+
const selectAttrs = {
76+
className: 'form-control',
77+
onChange: this.updateSelection
78+
};
79+
80+
if (this.props.forcedLanguage) {
81+
console.warn('[DEPRECATED] forcedLanguage parameter is deprecated');
82+
console.warn('[DEPRECATED] it will be removed from ezplatform-admin-ui-modules 2.0');
83+
console.warn('[DEPRECATED] use allowedLanguages instead');
84+
}
85+
86+
// @Deprecated - `forcedLanguage` will be removed in 2.0
87+
if (this.props.allowedLanguages.length === 1 || this.props.forcedLanguage) {
88+
selectAttrs.disabled = true;
89+
}
90+
91+
return (
92+
<div className="c-choose-language">
93+
<p className="c-choose-language__title">{this.props.labels.contentOnTheFly.selectLanguage}</p>
94+
<div className="c-choose-lagauge__select-wrapper">
95+
<select {...selectAttrs}>
96+
{this.renderOptions()}
97+
</select>
98+
</div>
99+
</div>
100+
);
101+
}
102+
}
103+
104+
ChooseLanguageComponent.propTypes = {
105+
maxHeight: PropTypes.number.isRequired,
106+
labels: PropTypes.object.isRequired,
107+
languages: PropTypes.object.isRequired,
108+
onLanguageSelected: PropTypes.func.isRequired,
109+
forcedLanguage: PropTypes.string.isRequired,
110+
allowedLanguages: PropTypes.array.isRequired,
111+
preselectedLanguage: PropTypes.string.isRequired
112+
};

src/modules/universal-discovery/components/create/create.choose.language.component.js

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)