Skip to content

Commit da2a0bc

Browse files
committed
FEATURE: Refactor edit template to AFX
1 parent 3646341 commit da2a0bc

File tree

7 files changed

+166
-74
lines changed

7 files changed

+166
-74
lines changed

Neos.Workspace.Ui/Classes/Controller/WorkspaceController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,14 +288,14 @@ public function editAction(WorkspaceName $workspaceName): void
288288
* @param WorkspaceName $workspaceName
289289
* @param WorkspaceTitle $title Human friendly title of the workspace, for example "Christmas Campaign"
290290
* @param WorkspaceDescription $description A description explaining the purpose of the new workspace
291-
* @param string $workspaceOwner Id of the owner of the workspace
291+
* @param string|null $workspaceOwner Id of the owner of the workspace
292292
* @return void
293293
*/
294294
public function updateAction(
295295
WorkspaceName $workspaceName,
296296
WorkspaceTitle $title,
297297
WorkspaceDescription $description,
298-
?string $workspaceOwner
298+
?string $workspaceOwner = null
299299
): void {
300300
$contentRepositoryId = SiteDetectionResult::fromRequest($this->request->getHttpRequest())
301301
->contentRepositoryId;

Neos.Workspace.Ui/Configuration/Views.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
- 'resource://Neos.Workspace.Ui/Private/Partials'
66
- 'resource://Neos.Neos/Private/Partials'
77

8-
- requestFilter: 'isPackage("Neos.Workspace.Ui") && isController("Workspace") && isFormat("html") && (isAction("index") || isAction("new"))'
8+
- requestFilter: 'isPackage("Neos.Workspace.Ui") && isController("Workspace") && isFormat("html") && (isAction("index") || isAction("new") || isAction("edit"))'
99
viewObjectName: 'Neos\Fusion\View\FusionView'
1010
options:
1111
fusionPathPatterns:

Neos.Workspace.Ui/Resources/Private/Fusion/Components/WorkspaceTableRow.fusion

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ prototype(Neos.Workspace.Ui:Component.WorkspaceTableRow) < prototype(Neos.Fusion
5050
workspace = ${props.workspaceName}
5151
}
5252
}
53+
editWorkspaceUri = Neos.Fusion:UriBuilder {
54+
action = 'edit'
55+
arguments {
56+
workspaceName = ${props.workspaceName}
57+
}
58+
}
5359
}
5460

5561
renderer = afx`
@@ -81,15 +87,14 @@ prototype(Neos.Workspace.Ui:Component.WorkspaceTableRow) < prototype(Neos.Fusion
8187
<i
8288
class="fas fa-review"></i> {I18n.translate('table.column.action.show', 'Show', [], 'Main', 'Neos.Workspace.Ui')}
8389
</a>
84-
<button
90+
<a
8591
class="neos-button"
86-
type="button"
8792
title={I18n.translate('table.column.action.edit', 'Edit workspace ' + workspace.title, {workspace: workspace.title}, 'Main', 'Neos.Workspace.Ui')}
88-
onClick=""
89-
disabled={!props.canManage || props.workspaceData.changesCounts == null}
93+
href={private.editWorkspaceUri}
94+
@if={!props.canManage || props.workspaceData.changesCounts == null}
9095
>
9196
<i class="fas fa-pencil-alt"></i>
92-
</button>
97+
</a>
9398
<button
9499
class="neos-button neos-button-danger"
95100
title={I18n.translate('workspaces.deleteWorkspace', 'Delete workspace', [], 'Main', 'Neos.Workspace.Ui')}
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
Neos.Workspace.Ui.WorkspaceController.edit = Neos.Fusion:Component {
2+
flashMessages = ${flashMessages}
3+
baseWorkspaceOptions = ${baseWorkspaceOptions}
4+
showOwnerSelector = ${showOwnerSelector}
5+
ownerOptions = ${ownerOptions}
6+
workspace = ${workspace}
7+
i18n = ${I18n.id('').source('Main').package('Neos.Workspace.Ui')}
8+
9+
prototype(Neos.Fusion.Form:LabelRenderer) {
10+
translationPackage = 'Neos.Workspace.Ui'
11+
translationSource = 'Main'
12+
}
13+
14+
prototype(Neos.Fusion.Form:Neos.BackendModule.FieldContainer) {
15+
translation.label {
16+
package = 'Neos.Workspace.Ui'
17+
source = 'Main'
18+
}
19+
}
20+
21+
renderer = afx`
22+
<Neos.Workspace.Ui:Component.FlashMessages flashMessages={props.flashMessages}/>
23+
<main>
24+
<h2>{props.i18n.id('workspaces.editWorkspace').arguments([props.workspace.workspaceTitle.value])}</h2>
25+
<Neos.Fusion.Form:Form form.target.action="update">
26+
<Neos.Fusion.Form:Hidden
27+
field.name="workspaceName"
28+
field.value={props.workspace.workspaceName.value}
29+
/>
30+
<fieldset>
31+
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer
32+
field.name="title"
33+
field.value={props.workspace.workspaceTitle.value}
34+
label="workspaces.workspace.title"
35+
class="neos-control-group"
36+
>
37+
<Neos.Fusion.Form:Textfield
38+
attributes.required
39+
attributes.pattern="/^[\p{L}\p{P}\d \.]{1,200}$/u"
40+
attributes.autofocus
41+
/>
42+
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
43+
44+
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer
45+
field.name="description"
46+
field.value={props.workspace.workspaceDescription.value}
47+
label="workspaces.workspace.description"
48+
class="neos-control-group"
49+
>
50+
<Neos.Fusion.Form:Textfield
51+
attributes.pattern="/^[\p{L}\p{P}\d \.]{0,500}$/u"
52+
/>
53+
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
54+
55+
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer
56+
field.name="baseWorkspace"
57+
field.value={props.workspace.baseWorkspaceName.value}
58+
label="workspaces.workspace.baseWorkspace"
59+
class="neos-control-group"
60+
>
61+
<Neos.Fusion.Form:Select
62+
attributes.disabled
63+
>
64+
<Neos.Fusion:Loop items={props.baseWorkspaceOptions} itemName="workspaceTitle" itemKey="workspaceName">
65+
<Neos.Fusion.Form:Select.Option
66+
option.value={workspaceName}
67+
attributes.selected={workspaceName == props.workspace.baseWorkspaceName.value}
68+
>
69+
{workspaceTitle}
70+
</Neos.Fusion.Form:Select.Option>
71+
</Neos.Fusion:Loop>
72+
</Neos.Fusion.Form:Select>
73+
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
74+
75+
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer
76+
field.name="workspaceOwner"
77+
field.value={props.workspace.baseWorkspaceName.value}
78+
label="workspaces.workspace.owner"
79+
class="neos-control-group"
80+
@if={props.showOwnerSelector}
81+
>
82+
<Neos.Fusion.Form:Select
83+
field.value={props.workspace.baseWorkspaceName.value}
84+
>
85+
<Neos.Fusion:Loop items={props.ownerOptions} itemName="ownerTitle" itemKey="ownerName">
86+
<Neos.Fusion.Form:Select.Option option.value={ownerName}>
87+
{ownerTitle}
88+
</Neos.Fusion.Form:Select.Option>
89+
</Neos.Fusion:Loop>
90+
</Neos.Fusion.Form:Select>
91+
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
92+
</fieldset>
93+
<fieldset>
94+
<Neos.Fusion:Fragment
95+
@if={Security.hasAccess('Neos.Workspace.Ui:Backend.Module.Management.Workspace.ManageInternalWorkspaces')}>
96+
<h3 class="neos-control-label">
97+
{props.i18n.id('workspaces.workspace.visibility')}
98+
</h3>
99+
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer
100+
class="neos-control-group"
101+
>
102+
<Neos.Fusion.Form:Radio
103+
id="visibility.private"
104+
field.value="private"
105+
attributes.disabled
106+
attributes.checked={props.workspace.privateWorkspace}
107+
>
108+
<span></span>
109+
<span>
110+
{props.i18n.id('workspaces.workspace.visibility.private')}
111+
<span class="neos-help-inline">
112+
{props.i18n.id('workspaces.workspace.visibility.private.help')}
113+
</span>
114+
</span>
115+
</Neos.Fusion.Form:Radio>
116+
<br/>
117+
<Neos.Fusion.Form:Radio
118+
id="visibility.internal"
119+
field.value="internal"
120+
attributes.disabled
121+
attributes.checked={props.workspace.internalWorkspace}
122+
>
123+
<span></span>
124+
<span>
125+
{props.i18n.id('workspaces.workspace.visibility.internal')}
126+
<span class="neos-help-inline">
127+
{props.i18n.id('workspaces.workspace.visibility.internal.help')}
128+
</span>
129+
</span>
130+
</Neos.Fusion.Form:Radio>
131+
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
132+
</Neos.Fusion:Fragment>
133+
134+
<Neos.Fusion.Form:Button attributes.class="neos-button neos-button-primary">
135+
{props.i18n.id('applyChanges')}
136+
</Neos.Fusion.Form:Button>
137+
</fieldset>
138+
</Neos.Fusion.Form:Form>
139+
140+
<Neos.Workspace.Ui:Component.Footer>
141+
<Neos.Fusion:Link.Action href.action="index" class="neos-button">
142+
{props.i18n.id('cancel')}
143+
</Neos.Fusion:Link.Action>
144+
</Neos.Workspace.Ui:Component.Footer>
145+
</main>
146+
`
147+
}

Neos.Workspace.Ui/Resources/Private/Fusion/Views/New.fusion

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ Neos.Workspace.Ui.WorkspaceController.new = Neos.Fusion:Component {
3939
label="workspaces.workspace.description"
4040
class="neos-control-group"
4141
>
42-
<Neos.Fusion.Form:Textarea attributes.rows={3} />
42+
<Neos.Fusion.Form:Textfield
43+
attributes.pattern="/^[\p{L}\p{P}\d \.]{0,500}$/u"
44+
/>
4345
</Neos.Fusion.Form:Neos.BackendModule.FieldContainer>
4446

4547
<Neos.Fusion.Form:Neos.BackendModule.FieldContainer

Neos.Workspace.Ui/Resources/Private/Templates/Workspace/Edit.html

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

Neos.Workspace.Ui/Resources/Private/Translations/en/Main.xlf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
<trans-unit id="cancel" xml:space="preserve">
99
<source>Cancel</source>
1010
</trans-unit>
11+
<trans-unit id="applyChanges" xml:space="preserve">
12+
<source>Apply changes</source>
13+
</trans-unit>
1114
<trans-unit id="pathCaption" xml:space="preserve">
1215
<source>Path</source>
1316
</trans-unit>

0 commit comments

Comments
 (0)