Skip to content

Commit b252f6d

Browse files
committed
API Use new class_description configuration
1 parent b77d664 commit b252f6d

File tree

9 files changed

+35
-52
lines changed

9 files changed

+35
-52
lines changed

client/dist/js/bundle.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/dist/styles/bundle.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/src/components/ElementEditor/Header.js

+16-30
Original file line numberDiff line numberDiff line change
@@ -114,38 +114,24 @@ class Header extends Component {
114114
);
115115
}
116116

117-
renderStatusBadge() {
118-
const {
119-
element: { isLiveVersion, isPublished },
120-
} = this.props;
121-
122-
// No indication required for published elements
123-
if (isPublished && isLiveVersion) {
117+
renderStatusFlagBadges() {
118+
const statusFlags = this.props.element.statusFlags;
119+
if (!statusFlags) {
124120
return null;
125121
}
126-
127-
let versionStateTitle = '';
128-
let versionStateButtonTitle = '';
129-
const stateClassNames = ['badge'];
130-
131-
if (!isPublished) {
132-
versionStateTitle = i18n._t('ElementHeader.BADGE_DRAFT', 'Draft');
133-
versionStateButtonTitle = i18n._t('ElementHeader.STATE_DRAFT', 'Item has not been published yet');
134-
stateClassNames.push('status-addedtodraft');
135-
} else if (!isLiveVersion) {
136-
versionStateTitle = i18n._t('ElementHeader.BADGE_MODIFIED', 'Modified');
137-
versionStateButtonTitle = i18n._t('ElementHeader.STATE_MODIFIED', 'Item has unpublished changes');
138-
stateClassNames.push('status-modified');
122+
const badges = [];
123+
// eslint-disable-next-line no-restricted-syntax
124+
for (let [cssClasses, data] of Object.entries(statusFlags)) {
125+
cssClasses = `badge status-${cssClasses}`;
126+
if (typeof data === 'string') {
127+
data = { text: data };
128+
}
129+
if (!data.title) {
130+
data.title = '';
131+
}
132+
badges.push(<span key={cssClasses} className={cssClasses} title={data.title}>{data.text}</span>);
139133
}
140-
141-
return (
142-
<span
143-
className={classNames(stateClassNames)}
144-
title={versionStateButtonTitle}
145-
>
146-
{versionStateTitle}
147-
</span>
148-
);
134+
return badges;
149135
}
150136

151137
render() {
@@ -209,7 +195,7 @@ class Header extends Component {
209195
</Tooltip>}
210196
</div>
211197
<h3 className={titleClasses}>{title}</h3>
212-
{this.renderStatusBadge()}
198+
{this.renderStatusFlagBadges()}
213199
</div>
214200
{!simple && <div className="element-editor-header__actions">
215201
<div role="none" onClick={(event) => event.stopPropagation()}>

client/src/components/ElementEditor/Header.scss

-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
max-width: calc(100% - 60px);
3030

3131
.badge {
32-
color: $state-draft;
33-
background-color: $state-modified-bg;
3432
padding: 2px 3px 2px 4px;
3533
margin-left: 0.5rem;
3634
}

client/src/components/ElementEditor/tests/Header-test.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,13 @@ test('Header should render a versioned draft badge when the element is not publi
225225
element: {
226226
id: 14,
227227
isPublished: false,
228-
liveVersion: false
228+
liveVersion: false,
229+
statusFlags: {
230+
addedtodraft: {
231+
text: 'Draft',
232+
title: 'Item has not been published yet'
233+
}
234+
}
229235
}
230236
})}
231237
/>);
@@ -242,7 +248,13 @@ test('Header should render a versioned modified badge when the element is modifi
242248
element: {
243249
id: 14,
244250
isPublished: true,
245-
isLiveVersion: false
251+
isLiveVersion: false,
252+
statusFlags: {
253+
modified: {
254+
text: 'Modified',
255+
title: 'Item has unpublished changes'
256+
}
257+
}
246258
}
247259
})}
248260
/>);

docs/en/04_defining-you-own-elements.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class MyElement extends BaseElement
2222

2323
private static $plural_name = 'my elements';
2424

25-
private static $description = 'What my custom element does';
25+
private static $class_description = 'What my custom element does';
2626

2727
public function getCMSFields()
2828
{

src/Controllers/ElementalAreaController.php

+1
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ public function apiReadElements(HTTPRequest $request): HTTPResponse
205205
'canPublish' => $element->canPublish(),
206206
'canUnpublish' => $element->canUnpublish(),
207207
'canCreate' => $element->canCreate(),
208+
'statusFlags' => $element->getStatusFlags(),
208209
];
209210
}
210211
$this->extend('updateApiReadElementalArea', $data, $request);

src/Models/BaseElement.php

+1-10
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,7 @@ class BaseElement extends DataObject implements CMSPreviewable
6060

6161
/**
6262
* Describe the purpose of this element
63-
*
64-
* @config
65-
* @var string
66-
* @deprecated 5.4.0 use class_description instead.
6763
*/
68-
private static $description = 'Base element class';
69-
7064
private static $class_description = 'Base element class';
7165

7266
/**
@@ -1122,10 +1116,7 @@ public function getIcon()
11221116
*/
11231117
public function getTypeNice()
11241118
{
1125-
$description = $this->config()->uninherited('description');
1126-
if ($description) {
1127-
$description = _t(__CLASS__ . '.Description', $description);
1128-
}
1119+
$description = $this->i18n_classDescription();
11291120
$markup = ($description) ? ' <span class="element__note"> &mdash; ' . $description . '</span>' : '';
11301121

11311122
return DBField::create_field(

src/Models/ElementContent.php

-5
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ class ElementContent extends BaseElement
2323

2424
private static $plural_name = 'content blocks';
2525

26-
/**
27-
* @deprecated 5.4.0 use class_description instead.
28-
*/
29-
private static $description = 'HTML text block';
30-
3126
private static $class_description = 'HTML text block';
3227

3328
/**

0 commit comments

Comments
 (0)