1
1
import { H6El } from '@enonic/lib-admin-ui/dom/H6El' ;
2
- import { showWarning } from '@enonic/lib-admin-ui/notify/MessageBus' ;
2
+ import { showFeedback , showWarning } from '@enonic/lib-admin-ui/notify/MessageBus' ;
3
3
import { TaskId } from '@enonic/lib-admin-ui/task/TaskId' ;
4
4
import { TaskState } from '@enonic/lib-admin-ui/task/TaskState' ;
5
5
import { i18n } from '@enonic/lib-admin-ui/util/Messages' ;
@@ -15,14 +15,11 @@ import {GetDescendantsOfContentsRequest} from '../../resource/GetDescendantsOfCo
15
15
import { DefaultErrorHandler } from '@enonic/lib-admin-ui/DefaultErrorHandler' ;
16
16
import { SummaryStep } from './steps/SummaryStep' ;
17
17
import { StrategyStep } from './steps/StrategyStep' ;
18
- import { MenuButton , MenuButtonConfig } from '@enonic/lib-admin-ui/ui/button/MenuButton' ;
19
- import { DropdownButtonRow } from '@enonic/lib-admin-ui/ui/dialog/DropdownButtonRow' ;
20
18
import { Action } from '@enonic/lib-admin-ui/ui/Action' ;
21
19
import { PermissionsData } from './PermissionsData' ;
22
20
import { DialogStep } from '@enonic/lib-admin-ui/ui/dialog/multistep/DialogStep' ;
23
21
import { AccessControlEntry } from '../../access/AccessControlEntry' ;
24
22
import { AccessControlHelper } from '../../wizard/AccessControlHelper' ;
25
- import { ConfirmationDialog } from '@enonic/lib-admin-ui/ui/dialog/ConfirmationDialog' ;
26
23
27
24
export class EditPermissionsDialog
28
25
extends MultiStepDialog
@@ -40,26 +37,18 @@ export class EditPermissionsDialog
40
37
41
38
private summaryStep : SummaryStep ;
42
39
43
- private menuButton : MenuButton ;
44
-
45
- private secondaryAction : Action ;
46
-
47
40
private backActionMirror : Action ;
48
41
49
42
private originalValues : AccessControlEntry [ ] ;
50
43
51
44
private totalChildren : number ;
52
45
53
- private confirmOverwriteDialog : ConfirmationDialog ;
54
-
55
46
constructor ( ) {
56
47
super ( {
57
48
steps : [ new MainAccessStep ( ) , new StrategyStep ( ) , new SummaryStep ( ) ] ,
58
49
confirmation : {
59
50
yesCallback : ( ) => this . submit ( ) ,
60
- noCallback : ( ) => this . close ( ) ,
61
51
} ,
62
- buttonRow : new EditPermissionsDialogButtonRow ( ) ,
63
52
title : i18n ( 'dialog.permissions.step.title' ) ,
64
53
class : 'edit-permissions-dialog'
65
54
} as MultiStepDialogConfig ) ;
@@ -70,6 +59,7 @@ export class EditPermissionsDialog
70
59
71
60
this . mainStep = this . steps [ 0 ] as MainAccessStep ;
72
61
this . strategyStep = this . steps [ 1 ] as StrategyStep ;
62
+ this . strategyStep . setResetConfirmedHandler ( ( ) => this . showStep ( this . summaryStep ) ) ;
73
63
this . summaryStep = this . steps [ 2 ] as SummaryStep ;
74
64
75
65
this . backActionMirror = this . getBackAction ( ) ; // using the back action as a reset button on the first step
@@ -80,13 +70,6 @@ export class EditPermissionsDialog
80
70
} ) ;
81
71
82
72
this . subTitle = new H6El ( 'sub-title' ) . setHtml ( `${ i18n ( 'dialog.permissions.applying' ) } ...` ) ;
83
-
84
- this . secondaryAction = new Action ( i18n ( 'dialog.permissions.step.action.overwrite' ) ) . setEnabled ( false ) ;
85
-
86
- this . menuButton = this . getButtonRow ( ) . makeActionMenu ( {
87
- defaultAction : this . getButtonRow ( ) . getActions ( ) [ 2 ] ,
88
- menuActions : [ this . secondaryAction ]
89
- } ) ;
90
73
}
91
74
92
75
protected postInitElements ( ) : void {
@@ -102,35 +85,28 @@ export class EditPermissionsDialog
102
85
this . subTitle . hide ( ) ;
103
86
} ) ;
104
87
105
- this . secondaryAction . onExecuted ( ( ) => {
106
- this . confirmOverwriteDialog = this . confirmOverwriteDialog ?? new ConfirmationDialog ( )
107
- . setQuestion ( i18n ( 'dialog.permissions.confirm.overwrite.question' ) )
108
- . setYesCallback ( ( ) => {
109
- this . doSubmit ( true ) ;
110
- } ) ;
111
-
112
- this . confirmOverwriteDialog . open ( ) ;
113
- } ) ;
114
-
115
88
this . mainStep . onDataChanged ( ( ) => {
116
89
const isChanged = this . mainStep . isAnyPermissionChanged ( ) ;
117
- this . menuButton . setEnabled ( isChanged ) ;
118
90
this . backActionMirror . setEnabled ( isChanged ) ;
119
- this . secondaryAction . setEnabled ( isChanged ) ;
120
91
} ) ;
121
92
}
122
93
123
- protected doSubmit ( overwrite : boolean ) : void {
94
+ protected doSubmit ( data : PermissionsData ) : void {
124
95
this . subTitle . show ( ) ;
125
- const data = this . collectData ( ) ;
126
96
const permissions = new AccessControlList ( data . permissions ) ;
127
97
128
98
const req = new ApplyContentPermissionsRequest ( ) . setId ( this . contentId ) . setScope ( data . applyTo ) ;
129
99
130
- if ( overwrite ) {
100
+ if ( data . reset ) {
131
101
req . setPermissions ( permissions ) ;
132
102
} else {
133
103
const { added, removed} = AccessControlHelper . calcMergePermissions ( this . originalValues , data . permissions ) ;
104
+
105
+ if ( added . getEntries ( ) . length === 0 && removed . getEntries ( ) . length === 0 ) {
106
+ showFeedback ( i18n ( 'dialog.permissions.step.action.noChanges' ) ) ;
107
+ return ;
108
+ }
109
+
134
110
req . setAddPermissions ( added ) ;
135
111
req . setRemovePermissions ( removed ) ;
136
112
}
@@ -141,7 +117,7 @@ export class EditPermissionsDialog
141
117
}
142
118
143
119
protected submit ( ) : void {
144
- this . doSubmit ( false ) ;
120
+ this . doSubmit ( this . collectData ( ) ) ;
145
121
}
146
122
147
123
private collectData ( ) : PermissionsData {
@@ -150,6 +126,7 @@ export class EditPermissionsDialog
150
126
return {
151
127
permissions : this . mainStep . getData ( ) ,
152
128
applyTo : strategyData . applyTo ,
129
+ reset : strategyData . reset ,
153
130
}
154
131
}
155
132
@@ -234,15 +211,19 @@ export class EditPermissionsDialog
234
211
}
235
212
}
236
213
237
- getButtonRow ( ) : EditPermissionsDialogButtonRow {
238
- return super . getButtonRow ( ) as EditPermissionsDialogButtonRow ;
239
- }
240
-
241
214
private getBackAction ( ) : Action {
242
215
return this . getButtonRow ( ) . getActions ( ) [ 1 ] ;
243
216
}
244
217
245
218
protected getSubmitActionLabel ( ) : string {
219
+ if ( this . strategyStep . getData ( ) . reset ) {
220
+ return i18n ( 'dialog.permissions.step.action.overwrite' , this . getTotalItemsToApplyTo ( ) ) ;
221
+ }
222
+
223
+ if ( ! this . isDirty ( ) ) {
224
+ return i18n ( 'dialog.permissions.step.action.noChanges' ) ;
225
+ }
226
+
246
227
return i18n ( 'dialog.permissions.step.action.submitNow' , this . getTotalItemsToApplyTo ( ) ) ;
247
228
}
248
229
@@ -288,14 +269,3 @@ export class EditPermissionsDialog
288
269
this . progressManager . setProcessingLabel ( processingLabel ) ;
289
270
}
290
271
}
291
-
292
- class EditPermissionsDialogButtonRow
293
- extends DropdownButtonRow {
294
-
295
- makeActionMenu ( menuButtonConfig : MenuButtonConfig , useDefault : boolean = true ) : MenuButton {
296
- super . makeActionMenu ( menuButtonConfig , useDefault ) ;
297
-
298
- return this . actionMenu . addClass ( 'edit-permissions-dialog-menu' ) as MenuButton ;
299
- }
300
-
301
- }
0 commit comments