1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.admincentral.usermenu.action;
35
36 import info.magnolia.cms.security.MgnlUser;
37 import info.magnolia.cms.security.User;
38 import info.magnolia.context.MgnlContext;
39 import info.magnolia.event.EventBus;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.jcr.util.SessionUtil;
42 import info.magnolia.repository.RepositoryConstants;
43 import info.magnolia.ui.api.action.AbstractAction;
44 import info.magnolia.ui.api.action.ActionExecutionException;
45 import info.magnolia.ui.api.context.UiContext;
46 import info.magnolia.ui.api.event.AdmincentralEventBus;
47 import info.magnolia.ui.dialog.callback.DefaultEditorCallback;
48 import info.magnolia.ui.dialog.formdialog.FormDialogPresenter;
49 import info.magnolia.ui.dialog.formdialog.FormDialogPresenterFactory;
50 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
51 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
52
53 import javax.inject.Inject;
54 import javax.inject.Named;
55
56 import org.apache.commons.lang3.StringUtils;
57
58
59
60
61 public class EditUserProfileDialogAction extends AbstractAction<EditUserProfileDialogActionDefinition>{
62
63 private final FormDialogPresenterFactory formDialogPresenterFactory;
64 private final UiContext uiContext;
65 private final EventBus eventBus;
66 private final SimpleTranslator i18n;
67
68 @Inject
69 public EditUserProfileDialogAction(EditUserProfileDialogActionDefinition definition, FormDialogPresenterFactory formDialogPresenterFactory, UiContext uiContext, @Named(AdmincentralEventBus.NAME) EventBus eventBus, SimpleTranslator i18n) {
70 super(definition);
71 this.formDialogPresenterFactory = formDialogPresenterFactory;
72 this.uiContext = uiContext;
73 this.eventBus = eventBus;
74 this.i18n = i18n;
75 }
76
77 @Override
78 public void execute() throws ActionExecutionException {
79 final String dialogName = getDefinition().getDialogName();
80 if(StringUtils.isBlank(dialogName)){
81 uiContext.openNotification(MessageStyleTypeEnum.ERROR, false, i18n.translate("ui-framework.actions.no.dialog.definition", getDefinition().getName()));
82 return;
83
84 }
85 final FormDialogPresenter formDialogPresenter = formDialogPresenterFactory.createFormDialogPresenter(dialogName);
86 if(formDialogPresenter == null){
87 uiContext.openNotification(MessageStyleTypeEnum.ERROR, false, i18n.translate("ui-framework.actions.dialog.not.registered", dialogName));
88 return;
89 }
90
91 User user = MgnlContext.getUser();
92 if (!(user instanceof MgnlUser)){
93 uiContext.openNotification(MessageStyleTypeEnum.ERROR, false, i18n.translate("actions.editUserProfile.not.available", dialogName));
94 return;
95 }
96 final JcrNodeAdapter itemToEdit = new JcrNodeAdapter(SessionUtil.getNode(RepositoryConstants.USERS, ((MgnlUser)user).getPath()));
97 formDialogPresenter.start(itemToEdit, dialogName, uiContext, new DefaultEditorCallback(formDialogPresenter));
98 }
99 }