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.pages.app.setup;
35
36 import info.magnolia.jcr.util.NodeTypes;
37 import info.magnolia.module.DefaultModuleVersionHandler;
38 import info.magnolia.module.InstallContext;
39 import info.magnolia.module.delta.ArrayDelegateTask;
40 import info.magnolia.module.delta.CheckOrCreatePropertyTask;
41 import info.magnolia.module.delta.CreateNodeTask;
42 import info.magnolia.module.delta.DeltaBuilder;
43 import info.magnolia.module.delta.HasPropertyDelegateTask;
44 import info.magnolia.module.delta.IsModuleInstalledOrRegistered;
45 import info.magnolia.module.delta.NodeExistsDelegateTask;
46 import info.magnolia.module.delta.OrderNodeToFirstPositionTask;
47 import info.magnolia.module.delta.RemoveNodeTask;
48 import info.magnolia.module.delta.RemovePropertyTask;
49 import info.magnolia.module.delta.Task;
50
51 import java.util.ArrayList;
52 import java.util.List;
53
54 import org.apache.commons.lang3.StringUtils;
55
56
57
58
59 public class PagesAppModuleVersionHandler extends DefaultModuleVersionHandler {
60 public static final String PAGES_APP_ID = "pages-app";
61 public static final String OLD_PAGES_APP_ID = "pages";
62 public static final String EDIT_APPS_PATH = "/modules/ui-admincentral/config/appLauncherLayout/groups/edit/apps/";
63 public static final String HIDDEN_APPS_PATH = "/modules/ui-admincentral/config/appLauncherLayout/hiddenApps";
64
65 public PagesAppModuleVersionHandler() {
66 super();
67 register(DeltaBuilder.update("6.2", "Configuration update for Pages app 6.2")
68 .addTask(addPagesAppToFirstPositionOfEditApps())
69 .addTask(hideM5PagesApp())
70 );
71 }
72
73 @Override
74 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
75 List<Task> tasks = new ArrayList<>(super.getExtraInstallTasks(installContext));
76 tasks.add(addPagesAppToFirstPositionOfEditApps());
77 tasks.add(hideM5PagesApp());
78 return tasks;
79 }
80
81 private ArrayDelegateTask addPagesAppToFirstPositionOfEditApps() {
82 ArrayDelegateTask addToFirstTask = new ArrayDelegateTask("Add Pages App to first position of Edit Apps Group");
83
84
85 addToFirstTask.addTask(new NodeExistsDelegateTask("Add " + EDIT_APPS_PATH + PAGES_APP_ID +" if missing", EDIT_APPS_PATH + PAGES_APP_ID, null, new CreateNodeTask(EDIT_APPS_PATH + PAGES_APP_ID + " is missing", EDIT_APPS_PATH, PAGES_APP_ID, NodeTypes.ContentNode.NAME)));
86
87
88 addToFirstTask.addTask(new OrderNodeToFirstPositionTask("Move " + PAGES_APP_ID + " to first position of " + EDIT_APPS_PATH, StringUtils.removeStart(EDIT_APPS_PATH + PAGES_APP_ID, "/")));
89
90 return addToFirstTask;
91 }
92
93 private IsModuleInstalledOrRegistered hideM5PagesApp(){
94 return new IsModuleInstalledOrRegistered("Hide M5 Pages app", OLD_PAGES_APP_ID,
95
96 new CheckOrCreatePropertyTask("Move " + OLD_PAGES_APP_ID + " to Admin Central Launcher - Hidden Apps Group", HIDDEN_APPS_PATH, OLD_PAGES_APP_ID, OLD_PAGES_APP_ID),
97
98 new ArrayDelegateTask("Remove " + OLD_PAGES_APP_ID + " from AppLauncher if existing",
99 new NodeExistsDelegateTask("Remove " + OLD_PAGES_APP_ID + " from Edit Apps Group if existing", EDIT_APPS_PATH + OLD_PAGES_APP_ID, new RemoveNodeTask("", EDIT_APPS_PATH + OLD_PAGES_APP_ID)
100 ),
101 new HasPropertyDelegateTask("Remove " + OLD_PAGES_APP_ID + " property from Hidden Apps Group if existing", HIDDEN_APPS_PATH, OLD_PAGES_APP_ID, new RemovePropertyTask("", HIDDEN_APPS_PATH, OLD_PAGES_APP_ID)
102 )
103 )
104 );
105 }
106 }