1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.exoplatform.ecm.webui.component.admin.views;
19
20 import javax.jcr.Node;
21
22 import org.exoplatform.ecm.permission.info.UIPermissionInputSet;
23 import org.exoplatform.ecm.webui.core.UIPermissionFormBase;
24 import org.exoplatform.ecm.webui.core.UIPermissionManagerBase;
25 import org.exoplatform.ecm.webui.selector.UIGroupMemberSelector;
26 import org.exoplatform.ecm.webui.selector.UISelectable;
27 import org.exoplatform.ecm.webui.utils.Utils;
28 import org.exoplatform.services.security.IdentityConstants;
29 import org.exoplatform.web.application.ApplicationMessage;
30 import org.exoplatform.webui.config.annotation.ComponentConfig;
31 import org.exoplatform.webui.config.annotation.EventConfig;
32 import org.exoplatform.webui.core.UIApplication;
33 import org.exoplatform.webui.core.UIPopupContainer;
34 import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
35 import org.exoplatform.webui.event.Event;
36 import org.exoplatform.webui.event.Event.Phase;
37 import org.exoplatform.webui.event.EventListener;
38
39
40
41
42
43
44
45
46
47 @ComponentConfig(
48 lifecycle = UIFormLifecycle.class,
49 template = "app:/groovy/webui/component/admin/view/UIViewPermissionForm.gtmpl",
50 events = {
51 @EventConfig(listeners = UIViewPermissionForm.AddActionListener.class),
52 @EventConfig(phase = Phase.DECODE, listeners = UIViewPermissionForm.SelectUserActionListener.class),
53 @EventConfig(phase = Phase.DECODE, listeners = UIViewPermissionForm.SelectMemberActionListener.class),
54 @EventConfig(phase = Phase.DECODE, listeners = UIViewPermissionForm.AddAnyActionListener.class)
55 }
56 )
57 public class UIViewPermissionForm extends UIPermissionFormBase implements UISelectable{
58
59 public static final String TAB_PERMISSION = "permission";
60
61 public UIViewPermissionForm() throws Exception {
62 removeChildById(UIPermissionFormBase.PERMISSION);
63 addChild(new UIPermissionInputSet(TAB_PERMISSION));
64 UIPermissionInputSet uiPerInputset = getChildById(TAB_PERMISSION);
65 uiPerInputset.setButtonActions(new String[] {"Add"});
66 uiPerInputset.setPrimaryButtonAction("Add");
67 uiPerInputset.setActionInfo(UIPermissionInputSet.FIELD_USERORGROUP, new String[] {"SelectUser", "SelectMember"});
68 }
69
70 static public class SelectUserActionListener extends EventListener<UIViewPermissionForm> {
71 public void execute(Event<UIViewPermissionForm> event) throws Exception {
72 UIViewPermissionForm uiForm = event.getSource();
73 ((UIPermissionManagerBase)uiForm.getParent()).initUserSelector();
74 UIPopupContainer popupContainer = uiForm.getAncestorOfType(UIPopupContainer.class);
75 if (popupContainer != null) {
76 event.getRequestContext().addUIComponentToUpdateByAjax(popupContainer);
77 } else {
78 event.getRequestContext().addUIComponentToUpdateByAjax(uiForm.getParent());
79 }
80 }
81 }
82
83 static public class AddAnyActionListener extends EventListener<UIViewPermissionForm> {
84 public void execute(Event<UIViewPermissionForm> event) throws Exception {
85 UIViewPermissionForm uiForm = event.getSource();
86 UIPermissionInputSet uiInputSet = uiForm.getChildById(TAB_PERMISSION);
87 uiInputSet.getUIStringInput(UIPermissionInputSet.FIELD_USERORGROUP).setValue(IdentityConstants.ANY);
88 UIPopupContainer popupContainer = uiForm.getAncestorOfType(UIPopupContainer.class);
89 if (popupContainer != null) {
90 event.getRequestContext().addUIComponentToUpdateByAjax(popupContainer);
91 } else {
92 event.getRequestContext().addUIComponentToUpdateByAjax(uiForm.getParent());
93 }
94 }
95 }
96
97 static public class SelectMemberActionListener extends EventListener<UIViewPermissionForm> {
98 public void execute(Event<UIViewPermissionForm> event) throws Exception {
99 UIViewPermissionForm uiForm = event.getSource();
100 UIGroupMemberSelector uiGroupMemberSelector = uiForm.createUIComponent(UIGroupMemberSelector.class, null, null);
101 uiGroupMemberSelector.setShowAnyPermission(false);
102 uiGroupMemberSelector.setSourceComponent(uiForm, new String[] { UIPermissionInputSet.FIELD_USERORGROUP });
103 uiForm.getAncestorOfType(UIPermissionManagerBase.class).initPopupPermission(uiGroupMemberSelector);
104 UIPopupContainer popupContainer = uiForm.getAncestorOfType(UIPopupContainer.class);
105 if (popupContainer != null) {
106 event.getRequestContext().addUIComponentToUpdateByAjax(popupContainer);
107 } else {
108 event.getRequestContext().addUIComponentToUpdateByAjax(uiForm.getParent());
109 }
110 }
111 }
112
113 static public class AddActionListener extends EventListener<UIViewPermissionForm> {
114 public void execute(Event<UIViewPermissionForm> event) throws Exception {
115 UIViewPermissionForm uiForm = event.getSource();
116 UIViewPermissionContainer uiContainer = uiForm.getParent();
117 UIViewFormTabPane uiTabPane = uiContainer.getParent();
118 UIViewForm uiViewForm = uiTabPane.getChild(UIViewForm.class);
119 UIViewPermissionList uiList = uiContainer.getChild(UIViewPermissionList.class);
120 String permission = uiForm.getUIStringInput(UIPermissionInputSet.FIELD_USERORGROUP).getValue();
121 String strPermission = uiViewForm.getPermission();
122 if (Utils.isNameEmpty(permission)) {
123 UIApplication uiApp = uiForm.getAncestorOfType(UIApplication.class);
124 uiApp.addMessage(new ApplicationMessage("UIPermissionForm.msg.userOrGroup-required", null,
125 ApplicationMessage.WARNING));
126 event.getRequestContext().addUIComponentToUpdateByAjax(uiContainer);
127 uiTabPane.setSelectedTab(uiContainer.getId());
128 return;
129 }
130 if(strPermission.contains(permission)) {
131 UIApplication app = uiForm.getAncestorOfType(UIApplication.class);
132 Object[] args = { permission };
133 app.addMessage(new ApplicationMessage("UIViewPermissionForm.msg.permission-exist",
134 args,
135 ApplicationMessage.WARNING));
136 event.getRequestContext().addUIComponentToUpdateByAjax(uiContainer);
137 uiTabPane.setSelectedTab(uiContainer.getId());
138 return;
139 }
140 StringBuilder strBuilder = new StringBuilder(strPermission);
141 if(strPermission.length() > 0) {
142 strBuilder = strBuilder.append(",");
143 }
144 strBuilder.append(permission);
145 uiViewForm.setPermission(strBuilder.toString());
146 uiList.refresh(uiList.getUIPageIterator().getCurrentPage());
147 uiForm.getUIStringInput(UIPermissionInputSet.FIELD_USERORGROUP).setValue(null);
148 event.getRequestContext().addUIComponentToUpdateByAjax(uiContainer);
149 }
150 }
151
152 @Override
153 public void doSelect(String selectField, Object value) {
154 getUIStringInput(selectField).setValue(value.toString());
155 }
156
157 @Override
158 public Node getCurrentNode() throws Exception {
159 return null;
160 }
161
162 }