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.setup;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.core.ItemType;
38 import info.magnolia.cms.util.ContentUtil;
39 import info.magnolia.cms.util.NodeDataUtil;
40 import info.magnolia.module.InstallContext;
41 import info.magnolia.module.delta.AbstractTask;
42 import info.magnolia.module.delta.TaskExecutionException;
43
44 import javax.jcr.RepositoryException;
45
46
47
48
49
50
51 public class AddMainMenuItemTask extends AbstractTask {
52 private final String menuName;
53 private final String label;
54 private final String i18nBasename;
55 private final String onClick;
56 private final String icon;
57 private final String orderBefore;
58
59
60
61
62
63 public AddMainMenuItemTask(String menuName, String label, String i18nBasename, String onClick, String icon, String orderBefore) {
64 super("Menu", "Adds or updates an item in the admin interface menu for " + menuName);
65 this.menuName = menuName;
66 this.label = label;
67 this.i18nBasename = i18nBasename;
68 this.onClick = onClick;
69 this.icon = icon;
70 this.orderBefore = orderBefore;
71 }
72
73 public void execute(InstallContext ctx) throws TaskExecutionException {
74 try {
75 final Content parent = getParentNode(ctx);
76 final Content menu = ContentUtil.getOrCreateContent(parent, menuName, ItemType.CONTENTNODE);
77 NodeDataUtil.getOrCreateAndSet(menu, "icon", icon);
78 NodeDataUtil.getOrCreateAndSet(menu, "onclick", onClick);
79 NodeDataUtil.getOrCreateAndSet(menu, "label", label);
80 if (i18nBasename != null) {
81 NodeDataUtil.getOrCreateAndSet(menu, "i18nBasename", i18nBasename);
82 }
83
84 if (orderBefore != null){
85 parent.orderBefore(menuName, orderBefore);
86 }
87 } catch (RepositoryException e) {
88 throw new TaskExecutionException("Could not create or place " + menuName + " menu item.", e);
89 }
90 }
91
92 protected Content getParentNode(InstallContext ctx) throws RepositoryException {
93 return ctx.getConfigHierarchyManager().getContent("/modules/adminInterface/config/menu");
94 }
95 }