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.module.admininterface.AbstractTreeConfiguration;
44
45 import javax.servlet.http.HttpServletRequest;
46
47
48
49
50
51
52 public class WebsiteTreeConfiguration extends AbstractTreeConfiguration {
53
54
55
56
57
58 @Override
59 public void prepareTree(final Tree tree, boolean browseMode, HttpServletRequest request) {
60 final Messages msgs = getMessages();
61
62 tree.setIconOndblclick("mgnlTreeMenuItemOpen(" + tree.getJavascriptTree() + ");");
63
64 tree.addItemType(ItemType.CONTENT.getSystemName(), false);
65 tree.addIcon(ItemType.DELETED_NODE_MIXIN, "/.resources/icons/16/document_deleted.gif");
66
67 TreeColumn column0 = TreeColumn.createLabelColumn(tree, msgs.get("tree.web.page"), true);
68 column0.setWidth(3);
69
70 TreeColumn columnIcons = TreeColumn.createActivationColumn(tree, msgs.get("tree.web.status"));
71 columnIcons.setIconsPermission(true);
72
73 TreeColumn column1 = TreeColumn.createNodeDataColumn(tree, msgs.get("tree.web.title"), "title", true);
74 column1.setWidth(2);
75
76 TreeColumn column2 = new TemplateColumn(tree.getJavascriptTree(), request);
77 column2.setName(MetaData.TEMPLATE);
78 column2.setIsMeta(true);
79 column2.setWidth(2);
80 column2.setTitle(msgs.get("tree.web.template"));
81
82 column2.setHtmlRenderer(new TemplateTreeColumnHtmlRenderer());
83
84
85
86
87 TreeColumn column3 = TreeColumn.createMetaDataColumn(tree, msgs.get("tree.web.date"), MetaData.LAST_MODIFIED, "yy-MM-dd, HH:mm");
88 column3.setWidth(2);
89
90 tree.addColumn(column0);
91
92 if (!browseMode) {
93 tree.addColumn(column1);
94 if (isAdminInstance() || hasAnyActiveSubscriber()) {
95 tree.addColumn(columnIcons);
96 }
97 tree.addColumn(column2);
98 tree.addColumn(column3);
99 }
100
101 }
102
103
104
105
106
107 @Override
108 public void prepareContextMenu(Tree tree, boolean browseMode, HttpServletRequest request) {
109 final Messages msgs = getMessages();
110 ContextMenuItem menuOpen = new ContextMenuItem("open");
111 menuOpen.setLabel(msgs.get("tree.web.menu.open"));
112 menuOpen.setIcon(request.getContextPath() + "/.resources/icons/16/document_plain_earth.gif");
113 menuOpen.setOnclick("mgnlTreeMenuItemOpen(" + tree.getJavascriptTree() + ");");
114 menuOpen.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
115 + tree.getJavascriptTree()
116 + ")");
117
118 ContextMenuItem menuNewPage = new ContextMenuItem("new");
119 menuNewPage.setLabel(msgs.get("tree.web.menu.new"));
120 menuNewPage.setIcon(request.getContextPath() + "/.resources/icons/16/document_plain_earth_add.gif");
121
122 menuNewPage.setOnclick(tree.getJavascriptTree() + ".createNode('" + ItemType.PAGE.getSystemName() + "');");
123 menuNewPage.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
124 + tree.getJavascriptTree()
125 + ")");
126 menuNewPage.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
127
128 ContextMenuItem menuDelete = new ContextMenuItem("delete");
129 menuDelete.setLabel(msgs.get("tree.web.menu.delete"));
130 menuDelete.setIcon(request.getContextPath() + "/.resources/icons/16/delete2.gif");
131 menuDelete.setOnclick(tree.getJavascriptTree() + ".deleteNode("+(!isEnableDeleteConfirmation()) +");");
132 menuDelete.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
133 + tree.getJavascriptTree()
134 + ")");
135 menuDelete.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
136 + tree.getJavascriptTree()
137 + ")");
138 menuDelete.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
139
140 ContextMenuItem menuMove = new ContextMenuItem("move");
141 menuMove.setLabel(msgs.get("tree.web.menu.move"));
142 menuMove.setIcon(request.getContextPath() + "/.resources/icons/16/up_down.gif");
143 menuMove.setOnclick(tree.getJavascriptTree() + ".cutNode();");
144 menuMove.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
145 + tree.getJavascriptTree()
146 + ")");
147 menuMove.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
148 + tree.getJavascriptTree()
149 + ")");
150 menuMove.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
151
152 ContextMenuItem menuCopy = new ContextMenuItem("copy");
153 menuCopy.setLabel(msgs.get("tree.web.menu.copy"));
154 menuCopy.setIcon(request.getContextPath() + "/.resources/icons/16/copy.gif");
155 menuCopy.setOnclick(tree.getJavascriptTree() + ".copyNode();");
156 menuCopy.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
157 + tree.getJavascriptTree()
158 + ")");
159 menuCopy.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
160
161 ContextMenuItem menuVersions = new ContextMenuItem("versions");
162 menuVersions.setLabel(msgs.get("versions"));
163 menuVersions.setIcon(request.getContextPath() + "/.resources/icons/16/elements1.gif");
164 menuVersions.setOnclick("mgnl.admininterface.WebsiteTree.showVersions(" + tree.getJavascriptTree() + ");");
165 menuVersions.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
166 + tree.getJavascriptTree()
167 + ")");
168
169 ContextMenuItem menuActivateExcl = new ContextMenuItem("activate");
170 menuActivateExcl.setLabel(msgs.get("tree.web.menu.activate"));
171 menuActivateExcl.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_right_green.gif");
172
173 menuActivateExcl.setOnclick(tree.getJavascriptTree() + ".activateNode(" + Tree.ACTION_ACTIVATE + ",false);");
174 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
175 + tree.getJavascriptTree()
176 + ")");
177 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
178 + tree.getJavascriptTree()
179 + ")");
180
181 ContextMenuItem menuActivateIncl = new ContextMenuItem("activateInclSubs");
182 menuActivateIncl.setLabel(msgs.get("tree.web.menu.activateInclSubs"));
183 menuActivateIncl.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_right_green_double.gif");
184 menuActivateIncl.setOnclick(tree.getJavascriptTree() + ".activateNode(" + Tree.ACTION_ACTIVATE + ",true);");
185 menuActivateIncl.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
186 + tree.getJavascriptTree()
187 + ")");
188 menuActivateIncl.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
189 + tree.getJavascriptTree()
190 + ")");
191 menuActivateIncl.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
192
193 ContextMenuItem menuDeactivate = new ContextMenuItem("deactivate");
194 menuDeactivate.setLabel(msgs.get("tree.web.menu.deactivate"));
195 menuDeactivate.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_left_red.gif");
196 menuDeactivate.setOnclick(tree.getJavascriptTree() + ".deactivateNode(" + Tree.ACTION_DEACTIVATE + ");");
197 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
198 + tree.getJavascriptTree()
199 + ")");
200 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
201 + tree.getJavascriptTree()
202 + ")");
203 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
204
205 ContextMenuItem menuExport = new ContextMenuItem("export");
206 menuExport.setLabel(msgs.get("tree.menu.export"));
207 menuExport.setIcon(request.getContextPath() + "/.resources/icons/16/export1.gif");
208 menuExport.setOnclick(tree.getJavascriptTree() + ".exportNode();");
209
210 ContextMenuItem menuImport = new ContextMenuItem("import");
211 menuImport.setLabel(msgs.get("tree.menu.import"));
212 menuImport.setIcon(request.getContextPath() + "/.resources/icons/16/import2.gif");
213 menuImport.setOnclick(tree.getJavascriptTree() + ".importNode(this);");
214
215
216 if (!hasAnyActiveSubscriber()) {
217 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
218 menuActivateIncl.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
219 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
220 }
221
222 menuImport.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
223 + tree.getJavascriptTree()
224 + ")");
225 menuImport.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
226
227 menuExport.addJavascriptCondition("new mgnlTreeMenuItemConditionPermissionWrite("
228 + tree.getJavascriptTree()
229 + ")");
230 menuExport.addJavascriptCondition("new mgnlTreeMenuItemConditionNotDeleted(" + tree.getJavascriptTree() + ")");
231
232 if (!browseMode) {
233 tree.addMenuItem(menuOpen);
234 tree.addMenuItem(menuNewPage);
235
236 tree.addSeparator();
237 tree.addMenuItem(menuDelete);
238
239 tree.addSeparator();
240 tree.addMenuItem(menuMove);
241 tree.addMenuItem(menuCopy);
242
243 tree.addSeparator();
244 tree.addMenuItem(menuVersions);
245
246 tree.addSeparator();
247 tree.addMenuItem(menuActivateExcl);
248 tree.addMenuItem(menuActivateIncl);
249 tree.addMenuItem(menuDeactivate);
250
251 tree.addSeparator();
252 tree.addMenuItem(menuExport);
253 tree.addMenuItem(menuImport);
254 }
255 else {
256 tree.addMenuItem(ContextMenuItem.getRefreshMenuItem(tree, msgs, request));
257 }
258
259 }
260
261
262
263
264
265 @Override
266 public void prepareFunctionBar(Tree tree, boolean browseMode, HttpServletRequest request) {
267 tree.addFunctionBarItemFromContextMenu("open");
268 tree.addFunctionBarItemFromContextMenu("new");
269 tree.addFunctionBarItem(null);
270 tree.addFunctionBarItemFromContextMenu("activate");
271 tree.addFunctionBarItemFromContextMenu("deactivate");
272 tree.addFunctionBarItem(null);
273
274 tree.addFunctionBarItem(FunctionBarItem.getRefreshFunctionBarItem(tree, getMessages(), request));
275
276 tree.getFunctionBar().setSearchable(true);
277 tree.getFunctionBar().setOnSearchFunction("mgnl.admininterface.WebsiteTree.search");
278 }
279 }