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.resources.app.setup;
35
36 import info.magnolia.jcr.util.NodeTypes;
37 import info.magnolia.module.InstallContext;
38 import info.magnolia.module.delta.AbstractCondition;
39 import info.magnolia.module.delta.AbstractRepositoryTask;
40 import info.magnolia.module.delta.AbstractTask;
41 import info.magnolia.module.delta.ArrayDelegateTask;
42 import info.magnolia.module.delta.BootstrapSingleModuleResource;
43 import info.magnolia.module.delta.BootstrapSingleResource;
44 import info.magnolia.module.delta.ChangeNodeTypeTask;
45 import info.magnolia.module.delta.CheckAndModifyPropertyValueTask;
46 import info.magnolia.module.delta.CheckOrCreatePropertyTask;
47 import info.magnolia.module.delta.Condition;
48 import info.magnolia.module.delta.CreateNodePathTask;
49 import info.magnolia.module.delta.DeltaBuilder;
50 import info.magnolia.module.delta.ModuleDependencyBootstrapTask;
51 import info.magnolia.module.delta.NodeExistsDelegateTask;
52 import info.magnolia.module.delta.OrderNodeAfterTask;
53 import info.magnolia.module.delta.PartialBootstrapTask;
54 import info.magnolia.module.delta.PathExistenceDelegateTask;
55 import info.magnolia.module.delta.RemoveNodeTask;
56 import info.magnolia.module.delta.RemoveNodesTask;
57 import info.magnolia.module.delta.RemovePropertiesTask;
58 import info.magnolia.module.delta.RenameNodeTask;
59 import info.magnolia.module.delta.SetPropertyTask;
60 import info.magnolia.module.delta.Task;
61 import info.magnolia.module.delta.TaskExecutionException;
62 import info.magnolia.module.resources.setup.ResourcesVersionHandler;
63 import info.magnolia.repository.RepositoryConstants;
64 import info.magnolia.ui.admincentral.setup.ConvertAclToAppPermissionTask;
65 import info.magnolia.ui.contentapp.setup.for5_3.ContentAppMigrationTask;
66 import info.magnolia.ui.framework.setup.AddIsPublishedRuleToAllDeactivateActionsTask;
67
68 import java.util.ArrayList;
69 import java.util.List;
70
71 import javax.jcr.RepositoryException;
72
73 import com.google.common.collect.ImmutableList;
74 import com.google.common.collect.Lists;
75
76
77
78
79 public class ResourcesAppModuleVersionHandler extends ResourcesVersionHandler {
80
81 public ResourcesAppModuleVersionHandler() {
82 register(DeltaBuilder.update("2.0", "")
83 .addTask(new ConvertAclToAppPermissionTask("Convert permissions for 'resources' app", "Convert ACL permissions for old 'Templating-kit/Resources' menu to new 'resources' app permission",
84 "/modules/adminInterface/config/menu/templating-kit/resources ", "/modules/resources/apps/resources", true)));
85
86 register(DeltaBuilder.update("2.2", "")
87 .addTask(new BootstrapSingleResource("Bootstrap Resources app", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.apps.xml"))
88 .addTask(new BootstrapSingleResource("Add the app to the app launcher", "Adds the app to the app launcher menu.", "/mgnl-bootstrap/resources-app/config.modules.ui-admincentral.config.appLauncherLayout.groups.stk.apps.resources.xml"))
89 .addTask(new BootstrapSingleResource("Bootstrap new resources dialogs", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.dialogs.xml")));
90
91 register(DeltaBuilder.update("2.2.1", "")
92 .addTask(new ArrayDelegateTask("Add duplicate action", "Adds duplicate resource action.",
93 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/browser/actions/duplicateResource"),
94 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/browser/actionbar/sections/resource/groups/editActions/items/duplicateResource"))));
95
96 register(DeltaBuilder.update("2.2.3", "")
97 .addTask(new ArrayDelegateTask("Add editTemplate action", "Adds editTemplate of resource action.",
98 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.apps.xml",
99 "/apps/resources/subApps/browser/actions/editTemplate"),
100 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_3/resources/app/config.modules.resources.apps.xml",
101 "/apps/resources/subApps/browser/actionbar/sections/resource/groups/editActions/items/editTemplate"),
102 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.dialogs.xml",
103 "/dialogs/editTemplate")
104 )));
105
106 register(DeltaBuilder.update("2.2.4", "")
107 .addTask(
108 new ArrayDelegateTask("Add support for extension handling",
109 new NodeExistsDelegateTask("", "/modules/resources/apps/resources/subApps/binary/editor/form/tabs/content/fields/binary",
110 new ArrayDelegateTask("",
111 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/resources/apps/resources/subApps/binary/editor/form/tabs/content/fields/binary",
112 "editFileFormat", Boolean.TRUE),
113 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/resources/apps/resources/subApps/binary/editor/form/tabs/content/fields/binary",
114 "editFileName", Boolean.TRUE))),
115 new PartialBootstrapTask("Add extension field", "Add extension field to the resource subapps.", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.apps.xml",
116 "/apps/resources/subApps/generic/code/editor/form/tabs/advanced/fields/extension"),
117 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/URI2RepositoryMapping/mappings/resources", "class",
118 "info.magnolia.module.resources.mapping.URI2ResourcesRepositoryMapping")))
119 );
120
121 register(DeltaBuilder.update("2.3", "")
122
123
124
125 .addTask(new ContentAppMigrationTask("/modules/resources", new Class[]{})));
126
127
128 register(DeltaBuilder.update("2.3.1", "")
129 .addTask(new NodeExistsDelegateTask("Replace ruleClass with rule", "Replaces editTemplate action availability rule.", RepositoryConstants.CONFIG, "/modules/resources/apps/resources/subApps/browser/actions/editTemplate/availability/ruleClass",
130 new ArrayDelegateTask("",
131 new RemoveNodeTask("", "/modules/resources/apps/resources/subApps/browser/actions/editTemplate/availability/ruleClass"),
132 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/browser/actions/editTemplate/availability/rules")))));
133
134
135 register(DeltaBuilder.update("2.3.2", "")
136 .addTask(new NodeExistsDelegateTask("Change nodeType of generic subapp", "", RepositoryConstants.CONFIG, "/modules/resources/apps/resources/subApps/generic",
137 new ChangeNodeTypeTask("/modules/resources/apps/resources/subApps/generic", RepositoryConstants.CONFIG, NodeTypes.ContentNode.NAME)))
138 .addTask(new PathExistenceDelegateTask("Add app for editing html resources", "", null,
139 new String[]{"/modules/resources/dialogs/newResource/form/tabs/content/fields/mgnl-template/options", "/modules/resources/apps/resources/subApps/browser/actions/editResource/subAppMapping", "/modules/resources/templates"},
140 new ArrayDelegateTask("",
141 new BootstrapSingleResource("", "", "/mgnl-bootstrap/resources/templates/config.modules.resources.templates.html.xml"),
142 new BootstrapSingleResource("", "", "/mgnl-bootstrap/resources/templates/config.modules.resources.templates.processedHtml.xml"),
143 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/html"),
144 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template/options/html"),
145 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.apps.xml", "/apps/resources/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template/options/processedHtml"),
146 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.dialogs.xml", "/dialogs/newResource/form/tabs/content/fields/mgnl-template/options/html"),
147 new PartialBootstrapTask("", "", "/mgnl-bootstrap-prior-2_4/resources/app/config.modules.resources.dialogs.xml", "/dialogs/newResource/form/tabs/content/fields/mgnl-template/options/processedHtml"),
148 new CheckOrCreatePropertyTask("", "/modules/resources/apps/resources/subApps/browser/actions/editResource/subAppMapping", "html", "html"),
149 new CheckOrCreatePropertyTask("", "/modules/resources/apps/resources/subApps/browser/actions/editResource/subAppMapping", "processedHtml", "html")))));
150
151 register(DeltaBuilder.update("2.3.3", "")
152 .addTask(new AddIsPublishedRuleToAllDeactivateActionsTask("", "/modules/resources/apps/")));
153
154 register(DeltaBuilder.update("2.4", "")
155 .addTask(new AbstractRepositoryTask("Create module node", "This is the first version where resources-app module is extracted from resources module; makes sure the module node gets created.") {
156 @Override
157 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
158 installContext.getOrCreateCurrentModuleNode();
159 }
160 })
161 .addTask(new UpdateResourcesAppConfigurationTask())
162
163 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/dialogs/editTemplate/form/tabs/tabTemplate/fields/template",
164 new CheckAndModifyPropertyValueTask("/modules/resources-app/dialogs/editTemplate/form/tabs/tabTemplate/fields/template", "extends", "/modules/resources/apps/resources/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template", "/modules/resources-app/apps/resources-legacy/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template")))
165 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources-legacy/subApps/browser/actions/addResource",
166 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources-legacy/subApps/browser/actions/addResource", "dialogName", "resources:newResource", "resources-app:newResource")))
167 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources-legacy/subApps/browser/actions/renameResource",
168 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources-legacy/subApps/browser/actions/renameResource", "dialogName", "resources:renameResource", "resources-app:renameResource")))
169 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources-legacy/subApps/browser/actions/renameResource",
170 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources-legacy/subApps/browser/actions/editTemplate", "dialogName", "resources:editTemplate", "resources-app:editTemplate")))
171 .addTask(new NodeExistsDelegateTask("Yaml files sub-app", "/modules/resources-app/apps/resources-legacy/subApps",
172 new PartialBootstrapTask("", "/mgnl-bootstrap-prior-2_4_3/config.modules.resources-app.apps.resources-legacy.xml", "/resources-legacy/subApps/yaml")))
173 .addTask(new NodeExistsDelegateTask("Yaml type dialog option", "/modules/resources-app/dialogs/newResource/form/tabs/content/fields/mgnl-template/options",
174 new PartialBootstrapTask("", "/mgnl-bootstrap-prior-2_4_3/config.modules.resources-app.dialogs.newResource.xml", "/newResource/form/tabs/content/fields/mgnl-template/options/yaml")))
175 .addTask(new NodeExistsDelegateTask("Yaml option in template list", "/modules/resources-app/apps/resources-legacy/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template/options",
176 new PartialBootstrapTask("", "/mgnl-bootstrap-prior-2_4_3/config.modules.resources-app.apps.resources-legacy.xml", "/resources-legacy/subApps/generic/base/editor/form/tabs/content/fields/mgnl-template/options/yaml")))
177 .addTask(new NodeExistsDelegateTask("Yaml mapping for editResource action", "/modules/resources-app/apps/resources-legacy/subApps/browser/actions/editResource/subAppMapping",
178 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/resources-app/apps/resources-legacy/subApps/browser/actions/editResource/subAppMapping", "yaml", "yaml")))
179
180 .addTask(new BootstrapSingleModuleResource("config.modules.resources-app.apps.resources.xml"))
181 );
182
183 register(DeltaBuilder.update("2.4.2", "")
184 .addTask(new PartialBootstrapTask("Bootstrap new activationStatus view", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/workbench/contentViews/views/columns/activationStatus"))
185
186 .addTask(new PartialBootstrapTask("Bootstrap activate action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/activate"))
187 .addTask(new PartialBootstrapTask("Bootstrap deactivate action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/deactivate"))
188
189 .addTask(new AbstractTask("Add/Remove resource actions", "Install Add/Remove resource actions") {
190
191 private String appBootstrapFile = "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml";
192 private String subAppPath = "/resources/subApps/browser/%s";
193 private String absoluteAppPath = "/modules/resources-app/apps";
194
195 private ArrayDelegateTask delegateTask = new ArrayDelegateTask("",
196 new RemoveNodeTask("Remove 'deleteHotfix' action", String.format(absoluteAppPath + subAppPath, "actions/removeHotfix")),
197 new RemoveNodeTask("Remove 'hotfixResource' action", String.format(absoluteAppPath + subAppPath, "actions/hotfixResource")),
198 new RemoveNodeTask("Remove whole group of hotfix actions from action bar", String.format(absoluteAppPath + subAppPath, "actionbar/sections/main/groups/hotfixActions")),
199 new BootstrapSingleModuleResource("Install 'addFile' dialog", "", "config.modules.resources-app.dialogs.addFile.xml"),
200 new PartialBootstrapTask("Install 'addFile' action", appBootstrapFile, String.format(subAppPath, "actions/addFile")),
201 new PartialBootstrapTask("Install 'deleteFile' action", appBootstrapFile, String.format(subAppPath, "actions/markFileAsDeleted")),
202 new PartialBootstrapTask("Install 'confirmFileDeletion' action", appBootstrapFile, String.format(subAppPath, "actions/confirmFileDeletion")),
203 new ArrayDelegateTask("Setup 'addFile' action in action bar",
204 new CreateNodePathTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/addActions/items/addFile"), NodeTypes.ContentNode.NAME),
205 new NodeExistsDelegateTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/editActions/items/previewResource"),
206 new OrderNodeAfterTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/editActions/items/previewResource"), "addFile"))),
207 new ArrayDelegateTask("Setup 'deleteFile' action in action bar",
208 new CreateNodePathTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/editActions/items/confirmFileDeletion"), NodeTypes.ContentNode.NAME),
209 new NodeExistsDelegateTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/editActions/items/editFile"),
210 new OrderNodeAfterTask("", String.format(absoluteAppPath + subAppPath, "actionbar/sections/file/groups/editActions/items/confirmFileDeletion"), "editFile"))));
211
212 @Override
213 public void execute(InstallContext installContext) throws TaskExecutionException {
214 delegateTask.execute(installContext);
215 }
216 })
217
218 .addTask(new PartialBootstrapTask("Bootstrap new upload action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/uploadFile"))
219 .addTask(new PartialBootstrapTask("Bootstrap upload action in actionbar", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/file/groups/uploadActions/items/uploadFile"))
220 .addTask(new BootstrapSingleModuleResource("Install 'uploadFile' dialog", "", "config.modules.resources-app.dialogs.uploadFile.xml"))
221
222 .addTask(new PartialBootstrapTask("Bootstrap imageProvider", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/imageProvider"))
223
224 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources/subApps/browser/actionbar/sections/main",
225 new RemoveNodeTask("Remove existing main actionbar", "/modules/resources-app/apps/resources/subApps/browser/actionbar/sections/main")))
226
227 .addTask(new ArrayDelegateTask("",
228 new PartialBootstrapTask("Bootstrap new deletion activation action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/activateDeletion"),
229 new PartialBootstrapTask("Bootstrap new restore version action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/restoreVersion"),
230 new PartialBootstrapTask("Bootstrap new restore previous version action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/restorePreviousVersion"),
231 new PartialBootstrapTask("Bootstrap new show versions action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/showVersions"),
232 new PartialBootstrapTask("Bootstrap new deleted file actionbar", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/deletedFile")))
233
234 .addTask(new PartialBootstrapTask("Bootstrap new mark folder as deleted action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/markFolderAsDeleted"))
235 .addTask(new PartialBootstrapTask("Bootstrap new confirm folder as deleted action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/confirmFolderDeletion"))
236 .addTask(new PartialBootstrapTask("Bootstrap new confirm folder as deleted action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/addFolder"))
237
238 .addTask(new PartialBootstrapTask("Bootstrap mark folder as deleted action in actionbar", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/editableFolder/groups/addActions/items/confirmFolderDeletion"))
239 .addTask(new ArrayDelegateTask("Adjust actionbar",
240 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/file"),
241 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/deletedFile"),
242 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/nonEditableFolder"),
243 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/editableFolder"),
244 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/deletedFolder"),
245 new PartialBootstrapTask("", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/main")
246 ))
247
248 .addTask(new ArrayDelegateTask("Adjusting columns",
249 new PartialBootstrapTask("Adding editable column", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/workbench/contentViews/views/columns/editable"),
250 new NodeExistsDelegateTask("Adjusting overriding column width", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/overriding",
251 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/overriding", "width", "71", "90")),
252 new NodeExistsDelegateTask("Adjusting originName column width", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/originName",
253 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/originName", "expandRatio", "0.25", "0.15")),
254 new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/editable",
255 new OrderNodeAfterTask("Moving editable column after name", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/editable", "name")),
256 new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/format",
257 new OrderNodeAfterTask("Moving format column after overriding", "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/format", "overriding"))))
258 .addTask(new BootstrapSingleModuleResource("Install 'addFolder' dialog", "", "config.modules.resources-app.dialogs.addFolder.xml"))
259
260 .addTask(new ArrayDelegateTask("Bootstrapping overriddenFiles",
261 new PartialBootstrapTask("Adding overridingFile to actionbar", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actionbar/sections/overridingFile"),
262 new OrderNodeAfterTask("Move 'overridingFile' section after 'file' section", "/modules/resources-app/apps/resources/subApps/browser/actionbar/sections/overridingFile", "file"),
263 new PartialBootstrapTask("Adding overridingFile action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/confirmOverriddenFileDeletion")))
264
265 .addTask(new ArrayDelegateTask("Renaming actions from 'resource' to 'file'",
266 new NodeExistsDelegateTask("Changing defaultAction name in actionbar", "/modules/resources-app/apps/resources/subApps/browser/actionbar",
267 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources/subApps/browser/actionbar", "defaultAction", "openResource", "openFile")),
268 new NodeExistsDelegateTask("Renaming from openResource to openFile", "/modules/resources-app/apps/resources/subApps/browser/actions/openResource",
269 new RenameNodeTask("", RepositoryConstants.CONFIG, "/modules/resources-app/apps/resources/subApps/browser/actions", "openResource", "openFile", true)),
270 new NodeExistsDelegateTask("Renaming from viewResource to viewFile", "/modules/resources-app/apps/resources/subApps/browser/actions/viewResource",
271 new RenameNodeTask("", RepositoryConstants.CONFIG, "/modules/resources-app/apps/resources/subApps/browser/actions", "viewResource", "viewFile", true))))
272
273 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources/subApps/browser/actions/editResource",
274 new ArrayDelegateTask("",
275 new RenameNodeTask("Renaming editResource to editFile", RepositoryConstants.CONFIG, "/modules/resources-app/apps/resources/subApps/browser/actions", "editResource", "editFile", true),
276 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources/subApps/browser/actions/editFile", "class", "info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition", "info.magnolia.resources.app.action.EditResourceActionDefinition"),
277 new RemoveNodeTask("", "/modules/resources-app/apps/resources/subApps/browser/actions/editFile/availability/rules/IsEditableRule"),
278 new PartialBootstrapTask("Adjusting availability rules of editFile action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/editFile/availability/rules/IsNotDeletedRule"))))
279
280 .addTask(new NodeExistsDelegateTask("", "/modules/resources-app/apps/resources/subApps/browser/actions/",
281 new ArrayDelegateTask("Disabling preview/edit actions for binary resources",
282 new PartialBootstrapTask("Adjusting availability rules of viewFile action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/viewFile/availability/rules/IsNotBinaryFileRule"),
283 new PartialBootstrapTask("Adjusting availability rules of openFile action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/openFile/availability/rules/IsNotBinaryFileRule"),
284 new PartialBootstrapTask("Adjusting availability rules of editFile action", "/mgnl-bootstrap/resources-app/config.modules.resources-app.apps.resources.xml", "/resources/subApps/browser/actions/editFile/availability/rules/IsNotBinaryFileRule"))))
285 );
286
287 register(DeltaBuilder.update("2.4.3", "")
288 .addTask(new RemoveNodeTask("Remove legacy resources app", "/modules/resources-app/apps/resources-legacy"))
289 .addTask(new RemoveNodesTask("Remove legacy resources app dialogs", RepositoryConstants.CONFIG, Lists.newArrayList(
290 "/modules/resources-app/dialogs/editTemplate",
291 "/modules/resources-app/dialogs/renameResource",
292 "/modules/resources-app/dialogs/newResource"
293 ), true)));
294
295 register(DeltaBuilder.update("2.4.6", "")
296 .addTask(new ModuleDependencyBootstrapTask("activation"))
297 );
298
299 register(DeltaBuilder.update("2.5.1", "")
300 .addTask(new RemovePropertiesTask("Remove legacy properties from configuration", RepositoryConstants.CONFIG, ImmutableList.of(
301 "/modules/resources-app/apps/resources/subApps/browser/actions/addFile/appName",
302 "/modules/resources-app/apps/resources/subApps/browser/workbench/contentViews/views/columns/originName/styleClass"
303 ), true))
304 );
305
306 register(DeltaBuilder.update("2.5.3", "")
307 .addTask(new NodeExistsDelegateTask("Change viewFile action definition", "/modules/resources-app/apps/resources/subApps/browser/actions/viewFile",
308 new CheckAndModifyPropertyValueTask("/modules/resources-app/apps/resources/subApps/browser/actions/viewFile", "class", "info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition", "info.magnolia.resources.app.action.ViewResourceActionDefinition")
309 ))
310 );
311
312 register(DeltaBuilder.update("2.6", "")
313 .addTask(new ModuleDependencyBootstrapTask("publishing-core"))
314 );
315 }
316
317 @Override
318 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
319 List<Task> tasks = new ArrayList<>(super.getExtraInstallTasks(installContext));
320 tasks.add(new ModuleDependencyBootstrapTask("publishing-core"));
321 tasks.add(new ModuleDependencyBootstrapTask("activation"));
322 return tasks;
323 }
324
325 @Override
326 protected List<Condition> getInstallConditions() {
327 List<Condition> conditions = new ArrayList<>();
328 conditions.add(new PublishingOrActivationInstalledCondition());
329 return conditions;
330 }
331
332 private class PublishingOrActivationInstalledCondition extends AbstractCondition {
333
334 public PublishingOrActivationInstalledCondition() {
335 super("Publishing or Activation module is installed condition.", "Resources app module requires Publishing(recommended) or Activation module installed.");
336 }
337
338 @Override
339 public boolean check(InstallContext installContext) {
340 return installContext.isModuleRegistered("publishing-core") || installContext.isModuleRegistered("activation");
341 }
342 }
343 }