1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.ecm.webui.component.admin.taxonomy.info;
18
19 import javax.jcr.Node;
20
21 import org.exoplatform.ecm.permission.info.UIPermissionInputSet;
22 import org.exoplatform.ecm.webui.core.UIPermissionManagerBase;
23 import org.exoplatform.ecm.utils.lock.LockUtil;
24 import org.exoplatform.ecm.webui.utils.PermissionUtil;
25 import org.exoplatform.ecm.webui.utils.Utils;
26 import org.exoplatform.services.log.ExoLogger;
27 import org.exoplatform.services.log.Log;
28 import org.exoplatform.webui.config.annotation.ComponentConfig;
29 import org.exoplatform.webui.config.annotation.EventConfig;
30 import org.exoplatform.webui.core.UIComponent;
31 import org.exoplatform.webui.core.UIGrid;
32 import org.exoplatform.webui.core.UIPopupComponent;
33 import org.exoplatform.webui.core.UIPopupWindow;
34 import org.exoplatform.webui.event.Event;
35 import org.exoplatform.webui.event.EventListener;
36 import org.exoplatform.webui.organization.account.UIUserSelector;
37
38
39
40
41
42
43
44
45
46
47
48 @ComponentConfig(template = "classpath:groovy/wcm/webui/core/UIPermissionManager.gtmpl",
49 events = { @EventConfig(listeners = UIPermissionManager.CloseActionListener.class) })
50 public class UIPermissionManager extends UIPermissionManagerBase implements UIPopupComponent{
51 private static final Log LOG = ExoLogger.getLogger(UIPermissionManager.class.getName());
52
53 public UIPermissionManager() throws Exception {
54 addChild(UIPermissionInfo.class, null, null);
55 addChild(UIPermissionForm.class, null, null);
56 }
57
58 public void initPopupPermission(UIComponent uiSelector) throws Exception {
59 removeChildById(UIPermissionForm.POPUP_SELECT);
60 UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, UIPermissionForm.POPUP_SELECT);
61 uiPopup.setShowMask(true);
62 uiPopup.setWindowSize(560, 300);
63 uiPopup.setRendered(true);
64 uiPopup.setUIComponent(uiSelector);
65 uiPopup.setShow(true);
66 uiPopup.setResizable(true);
67 }
68
69 public void initUserSelector() throws Exception {
70 UIPopupWindow uiPopup = getChildById("PopupUserSelector") ;
71 if(uiPopup == null) {
72 uiPopup = addChild(UIPopupWindow.class, null, "PopupUserSelector");
73 uiPopup.setShowMask(true);
74 }
75 uiPopup.setWindowSize(790, 400);
76 UIUserContainer uiUserContainer = createUIComponent(UIUserContainer.class, null, null);
77 uiPopup.setUIComponent(uiUserContainer);
78 uiPopup.setShow(true) ;
79 uiPopup.setResizable(true) ;
80 }
81
82 public void activate() {
83 try {
84 getChild(UIPermissionInfo.class).updateGrid();
85 } catch (Exception e) {
86 if (LOG.isErrorEnabled()) {
87 LOG.error("Unexpected error!", e.getMessage());
88 }
89 }
90 }
91
92 public void checkPermissonInfo(Node node) throws Exception {
93 if(node.isLocked()){
94 String lockToken = LockUtil.getLockToken(node);
95 if(lockToken != null) node.getSession().addLockToken(lockToken);
96 if(!Utils.isLockTokenHolder(node)) {
97 getChild(UIPermissionInfo.class).getChild(UIGrid.class)
98 .configure("usersOrGroups",
99 UIPermissionInfo.PERMISSION_BEAN_FIELD,
100 new String[] {});
101 getChild(UIPermissionForm.class).setRendered(false) ;
102 }
103 } else {
104 if(!PermissionUtil.canChangePermission(node)) {
105 getChild(UIPermissionInfo.class).getChild(UIGrid.class)
106 .configure("usersOrGroups",
107 UIPermissionInfo.PERMISSION_BEAN_FIELD,
108 new String[] {});
109 getChild(UIPermissionForm.class).setRendered(false) ;
110 }
111 }
112 }
113 public void deActivate() {}
114
115 static public class AddUserActionListener extends EventListener<UIUserSelector> {
116 public void execute(Event<UIUserSelector> event) throws Exception {
117 UIUserSelector uiForm = event.getSource();
118 UIPermissionManager uiParent = uiForm.getAncestorOfType(UIPermissionManager.class);
119 UIPermissionForm uiPermissionForm = uiParent.getChild(UIPermissionForm.class);
120 uiPermissionForm.doSelect(UIPermissionInputSet.FIELD_USERORGROUP, uiForm.getSelectedUsers());
121 UIPopupWindow uiPopup = uiParent.getChild(UIPopupWindow.class);
122 uiPopup.setUIComponent(null);
123 uiPopup.setShow(false);
124 event.getRequestContext().addUIComponentToUpdateByAjax(uiParent);
125 }
126 }
127
128 static public class CloseActionListener extends EventListener<UIPermissionManager> {
129 public void execute(Event<UIPermissionManager> event) throws Exception {
130 UIPopupWindow popupAction = event.getSource().getAncestorOfType(UIPopupWindow.class);
131 popupAction.setRendered(false);
132 popupAction.setShow(false);
133 event.getRequestContext().addUIComponentToUpdateByAjax(popupAction);
134 }
135 }
136 }