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.module.admininterface.trees;
35
36 import info.magnolia.cms.core.ItemType;
37 import info.magnolia.cms.core.MetaData;
38 import info.magnolia.cms.gui.control.ContextMenuItem;
39 import info.magnolia.cms.gui.control.FunctionBarItem;
40 import info.magnolia.cms.gui.control.Tree;
41 import info.magnolia.cms.gui.control.TreeColumn;
42 import info.magnolia.cms.i18n.Messages;
43 import info.magnolia.cms.util.NodeNameComparator;
44 import info.magnolia.module.admininterface.AbstractTreeConfiguration;
45
46 import javax.servlet.http.HttpServletRequest;
47
48
49
50
51
52 public class UsersTreeConfiguration extends AbstractTreeConfiguration {
53
54
55
56
57
58 @Override
59 public void prepareTree(Tree tree, boolean browseMode, HttpServletRequest request) {
60 tree.setSortComparator(new NodeNameComparator());
61
62 tree.setDrawShifter(true);
63
64
65 tree.setIcon(ItemType.USER.getSystemName(), Tree.ICONDOCROOT + "pawn_glass_yellow.gif");
66 tree.setIconOndblclick("mgnlTreeMenuOpenDialog(" + tree.getJavascriptTree()
67
68 + ",'.magnolia/dialogs/useredit.html');");
69 tree.addItemType(ItemType.USER);
70
71 tree.addItemType("nt:folder", Tree.ICONDOCROOT + "folder_inactive.gif");
72 tree.addItemType(ItemType.NT_FOLDER, Tree.ICONDOCROOT + "folder.gif");
73
74 final Messages msgs = getMessages();
75 TreeColumn column0 = TreeColumn.createLabelColumn(tree, msgs.get("tree.users.name"), !browseMode);
76 column0.setWidth(2);
77
78 TreeColumn column1 = TreeColumn.createNodeDataColumn(tree, msgs.get("tree.users.fullname"), "title", !browseMode);
79 column1.setWidth(2);
80
81 TreeColumn columnIcons = TreeColumn.createActivationColumn(tree, msgs.get("tree.users.status"));
82
83 TreeColumn column2 = TreeColumn.createMetaDataColumn(tree, msgs.get("tree.users.date"), MetaData.LAST_MODIFIED, "yyyy-MM-dd, HH:mm");
84 column2.setWidth(2);
85
86 tree.addColumn(column0);
87 if (!browseMode) {
88 tree.addColumn(column1);
89 if (isAdminInstance() || hasAnyActiveSubscriber()) {
90 tree.addColumn(columnIcons);
91 }
92 tree.addColumn(column2);
93 }
94 }
95
96
97
98
99
100 @Override
101 public void prepareContextMenu(Tree tree, boolean browseMode, HttpServletRequest request) {
102 final Messages msgs = getMessages();
103
104
105 ContextMenuItem menuNewFolder = new ContextMenuItem("newFolder");
106 menuNewFolder.setLabel(msgs.get("tree.users.menu.newFolder"));
107 menuNewFolder.setIcon(request.getContextPath() + "/.resources/icons/16/folder_add.gif");
108 menuNewFolder.setOnclick(tree.getJavascriptTree() + ".createNode('"
109 + ItemType.NT_FOLDER + "');");
110
111 menuNewFolder.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotItemType("
112 + tree.getJavascriptTree()
113 + ", '" + ItemType.USER.getSystemName() + "')");
114
115
116 ContextMenuItem menuOpen = new ContextMenuItem("edit");
117 menuOpen.setLabel(msgs.get("tree.users.menu.edit"));
118 menuOpen.setIcon(request.getContextPath() + "/.resources/icons/16/pawn_glass_yellow.gif");
119 menuOpen.setOnclick("mgnlTreeMenuOpenDialog("
120 + tree.getJavascriptTree()
121 + ",'.magnolia/dialogs/useredit.html');");
122 menuOpen.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedItemType("
123 + tree.getJavascriptTree()
124 + ",'mgnl:user')");
125
126 ContextMenuItem menuNew = new ContextMenuItem("new");
127 menuNew.setLabel(msgs.get("tree.users.menu.new"));
128 menuNew.setIcon(request.getContextPath() + "/.resources/icons/16/pawn_glass_yellow_add.gif");
129 menuNew.setOnclick(tree.getJavascriptTree() + ".createNode('"
130 + ItemType.USER.getSystemName()
131 + "');");
132 menuNew.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotItemType("
133 + tree.getJavascriptTree() + ","
134 + "'" + ItemType.USER.getSystemName() + "'"
135 + ")");
136
137 ContextMenuItem menuDelete = new ContextMenuItem("delete");
138 menuDelete.setLabel(msgs.get("tree.users.menu.delete"));
139 menuDelete.setIcon(request.getContextPath() + "/.resources/icons/16/delete2.gif");
140 menuDelete.setOnclick(tree.getJavascriptTree() + ".deleteNode();");
141 menuDelete.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
142 + tree.getJavascriptTree()
143 + ")");
144
145 ContextMenuItem menuMove = new ContextMenuItem("move");
146 menuMove.setLabel(msgs.get("tree.users.menu.move"));
147 menuMove.setIcon(request.getContextPath() + "/.resources/icons/16/up_down.gif");
148 menuMove.setOnclick(tree.getJavascriptTree() + ".cutNode();");
149 menuMove.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
150 + tree.getJavascriptTree()
151 + ")");
152
153 ContextMenuItem menuCopy = new ContextMenuItem("copy");
154 menuCopy.setLabel(msgs.get("tree.users.menu.copy"));
155 menuCopy.setIcon(request.getContextPath() + "/.resources/icons/16/copy.gif");
156 menuCopy.setOnclick(tree.getJavascriptTree() + ".copyNode();");
157 menuCopy.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
158 + tree.getJavascriptTree()
159 + ")");
160
161 ContextMenuItem menuActivateExcl = new ContextMenuItem("activate");
162 menuActivateExcl.setLabel(msgs.get("tree.users.menu.activate"));
163 menuActivateExcl.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_right_green.gif");
164 menuActivateExcl.setOnclick(tree.getJavascriptTree() + ".activateNode(" + Tree.ACTION_ACTIVATE + ",false);");
165 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
166 + tree.getJavascriptTree()
167 + ")");
168
169 ContextMenuItem menuDeactivate = new ContextMenuItem("deactivate");
170 menuDeactivate.setLabel(msgs.get("tree.users.menu.deactivate"));
171 menuDeactivate.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_left_red.gif");
172 menuDeactivate.setOnclick(tree.getJavascriptTree() + ".deactivateNode(" + Tree.ACTION_DEACTIVATE + ");");
173 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
174 + tree.getJavascriptTree()
175 + ")");
176
177 if (!hasAnyActiveSubscriber()) {
178 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
179 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
180 }
181
182 if (!browseMode) {
183 tree.addMenuItem(menuOpen);
184 if(!tree.getRootPath().equals("/system")){
185 tree.addMenuItem(menuNew);
186 tree.addMenuItem(menuNewFolder);
187 tree.addMenuItem(null);
188 tree.addMenuItem(menuDelete);
189 }
190 tree.addMenuItem(null);
191 tree.addMenuItem(menuActivateExcl);
192 tree.addMenuItem(menuDeactivate);
193 }
194 else {
195 tree.addMenuItem(ContextMenuItem.getRefreshMenuItem(tree, msgs, request));
196 }
197 }
198
199
200
201
202
203 @Override
204 public void prepareFunctionBar(Tree tree, boolean browseMode, HttpServletRequest request) {
205 tree.addFunctionBarItemFromContextMenu("edit");
206 if(tree.getRootPath() != null && !tree.getRootPath().equals("/system")) {
207 tree.addFunctionBarItemFromContextMenu("new");
208 tree.addFunctionBarItemFromContextMenu("newFolder");
209 }
210 tree.addFunctionBarItem(null);
211 tree.addFunctionBarItemFromContextMenu("activate");
212 tree.addFunctionBarItemFromContextMenu("deactivate");
213 tree.addFunctionBarItem(null);
214
215 tree.addFunctionBarItem(FunctionBarItem.getRefreshFunctionBarItem(tree, getMessages(), request));
216 }
217
218 }