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.dam.app.setup;
35
36 import static info.magnolia.nodebuilder.Ops.*;
37
38 import info.magnolia.dam.app.assets.editor.AssetDetailSubApp;
39 import info.magnolia.dam.app.commands.ImportAssetZipCommand;
40 import info.magnolia.dam.app.commands.MarkAssetFolderAsDeletedCommand;
41 import info.magnolia.dam.app.setup.for2_0.UpdateDamAppConfigurationTask;
42 import info.magnolia.dam.app.setup.for2_0.UpdateDamAssetFileNamePropertiesTask;
43 import info.magnolia.dam.app.setup.migration.DamControlMigrator;
44 import info.magnolia.dam.app.setup.migration.DamLinkControlMigrator;
45 import info.magnolia.dam.app.ui.field.DamFilePreviewComponent;
46 import info.magnolia.dam.app.ui.field.configuration.icon.IconThumbnailComponentProvider;
47 import info.magnolia.dam.app.ui.field.configuration.image.ImagePreviewComponentProvider;
48 import info.magnolia.dam.app.ui.field.configuration.image.ImageThumbnailComponentProvider;
49 import info.magnolia.dam.app.ui.field.definition.DamUploadFieldDefinition;
50 import info.magnolia.dam.app.ui.field.factory.AssetsEnabledRichTextFieldFactory;
51 import info.magnolia.dam.app.ui.field.factory.DamUploadFieldFactory;
52 import info.magnolia.dam.core.setup.DamVersionHandler;
53 import info.magnolia.i18nsystem.setup.RemoveHardcodedI18nPropertiesFromDialogsTask;
54 import info.magnolia.i18nsystem.setup.RemoveHardcodedI18nPropertiesFromSubappsTask;
55 import info.magnolia.jcr.util.NodeTypes;
56 import info.magnolia.module.InstallContext;
57 import info.magnolia.module.delta.AddPermissionTask;
58 import info.magnolia.module.delta.ArrayDelegateTask;
59 import info.magnolia.module.delta.BootstrapConditionally;
60 import info.magnolia.module.delta.BootstrapSingleModuleResource;
61 import info.magnolia.module.delta.ChangeAllPropertiesWithCertainValueTask;
62 import info.magnolia.module.delta.CheckAndModifyPartOfPropertyValueTask;
63 import info.magnolia.module.delta.CheckAndModifyPropertyValueTask;
64 import info.magnolia.module.delta.CheckOrCreatePropertyTask;
65 import info.magnolia.module.delta.CreateNodeTask;
66 import info.magnolia.module.delta.DeltaBuilder;
67 import info.magnolia.module.delta.IsAuthorInstanceDelegateTask;
68 import info.magnolia.module.delta.IsModuleInstalledOrRegistered;
69 import info.magnolia.module.delta.NewPropertyTask;
70 import info.magnolia.module.delta.NodeExistsDelegateTask;
71 import info.magnolia.module.delta.OrderNodeAfterTask;
72 import info.magnolia.module.delta.OrderNodeBeforeTask;
73 import info.magnolia.module.delta.PartialBootstrapTask;
74 import info.magnolia.module.delta.PropertyExistsDelegateTask;
75 import info.magnolia.module.delta.RemoveNodeTask;
76 import info.magnolia.module.delta.RemovePropertyTask;
77 import info.magnolia.module.delta.RenameNodesTask;
78 import info.magnolia.module.delta.SetPropertyTask;
79 import info.magnolia.module.delta.Task;
80 import info.magnolia.nodebuilder.task.ErrorHandling;
81 import info.magnolia.nodebuilder.task.NodeBuilderTask;
82 import info.magnolia.repository.RepositoryConstants;
83 import info.magnolia.ui.admincentral.setup.AppLauncherReorderingTask;
84 import info.magnolia.ui.admincentral.setup.AppLauncherReorderingTask.Order;
85 import info.magnolia.ui.admincentral.setup.ConvertAclToAppPermissionTask;
86 import info.magnolia.ui.contentapp.setup.for5_3.ContentAppMigrationTask;
87 import info.magnolia.ui.dialog.setup.migration.ControlMigratorsRegistry;
88 import info.magnolia.ui.form.field.definition.StaticFieldDefinition;
89 import info.magnolia.ui.form.field.definition.TextFieldDefinition;
90 import info.magnolia.ui.framework.action.DownloadBinaryActionDefinition;
91 import info.magnolia.ui.framework.availability.IsNotDeletedRule;
92 import info.magnolia.ui.framework.setup.AddIsPublishedRuleToAllDeactivateActionsTask;
93 import info.magnolia.ui.framework.setup.SetWritePermissionForActionsTask;
94
95 import java.util.ArrayList;
96 import java.util.List;
97
98 import javax.inject.Inject;
99 import javax.jcr.ImportUUIDBehavior;
100
101 import org.apache.jackrabbit.JcrConstants;
102
103
104
105
106 public class DamAppVersionHandler extends DamVersionHandler {
107
108 @Inject
109 public DamAppVersionHandler(ControlMigratorsRegistry controlMigratorsRegistry) {
110
111 controlMigratorsRegistry.register("dam", new DamControlMigrator());
112
113 controlMigratorsRegistry.register("link", new DamLinkControlMigrator());
114
115 register(DeltaBuilder.update("1.0.1", "")
116
117 .addTask(new NodeExistsDelegateTask("Remove link dialog Node", "Remove dialog definition in dam/dialogs/link", RepositoryConstants.CONFIG, "/modules/dam/dialogs/link",
118 new RemoveNodeTask("Remove link dialog Node", "Remove dialog definition in dam/dialogs/link", RepositoryConstants.CONFIG, "/modules/dam/dialogs/link")))
119 .addTask(new NodeExistsDelegateTask("Remove dialog folder Node", "Remove dialog definition in dam/dialogs/folder", RepositoryConstants.CONFIG, "/modules/dam/dialogs/folder",
120 new RemoveNodeTask("Remove dialog folder Node", "Remove dialog definition in dam/dialogs/folder", RepositoryConstants.CONFIG, "/modules/dam/dialogs/folder")))
121 .addTask(new PartialBootstrapTask("Add renameAsset dialog", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.dialogs.xml", "/dialogs/renameAsset"))
122
123 .addTask(new NodeExistsDelegateTask("Change folder action to reference ui-framework", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/editFolder",
124 new CheckAndModifyPartOfPropertyValueTask("Change rename-folder dialog reference", "Change rename-folder action to reference 'ui-framework:folder'", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/editFolder", "dialogName", "dam:folder", "ui-framework:folder")))
125
126 .addTask(new NodeBuilderTask("Add new control to editor subapp", "Adds a new edit control 'caption' to the asset editor subapp.", ErrorHandling.logging, RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields",
127 addNode("caption", NodeTypes.ContentNode.NAME).then(
128 addProperty("class", TextFieldDefinition.class.getName()),
129 addProperty("description", "A caption to display next to asset"),
130 addProperty("label", "Caption"),
131 addProperty("name", "caption")
132 )
133 ))
134 .addTask(new OrderNodeAfterTask("Move caption control", "Move caption control after the resource control in the asset editor subapp", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/caption", "resource"))
135
136 .addTask(new PartialBootstrapTask("Add renameAsset action", "Adds the renameAsset action in assets browser subApp", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/renameAsset"))
137 .addTask(new CreateNodeTask("Add renameAsset to asset actionBar section", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items", "renameAsset", NodeTypes.Content.NAME))
138 .addTask(new OrderNodeAfterTask("Move renameAsset action to proper location", "Move it to after editAsset", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items/renameAsset", "editAsset"))
139 .addTask(new CreateNodeTask("Add renameAsset to assetDeleted actionBar section", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/deletedAsset/groups/editActions/items", "renameAsset", NodeTypes.Content.NAME))
140 .addTask(new OrderNodeAfterTask("Move renameAsset action to proper location", "Move it to after editAsset", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/deletedAsset/groups/editActions/items/renameAsset", "editAsset"))
141
142 .addTask(new NodeExistsDelegateTask("Change label of foldercreation action to 'Add folder'", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/addFolder",
143 new CheckAndModifyPartOfPropertyValueTask("Change label of foldercreation action to 'Add folder'", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/addFolder", "label", "New folder", "Add folder"))));
144
145 register(DeltaBuilder.update("1.0.2", "")
146
147 .addTask(new PartialBootstrapTask("Add new confirmDeleteAsset action definition", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/confirmDeleteAsset"))
148 .addTask(new PartialBootstrapTask("Add new confirmDeleteFolder action definition", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/confirmDeleteFolder"))
149
150 .addTask(new NodeExistsDelegateTask("Remove action availability from deleteAsset action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset",
151 new RemoveNodeTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset/availability")))
152 .addTask(new PropertyExistsDelegateTask("Remove label for deleteAsset action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset", "label",
153 new RemovePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset", "label")))
154 .addTask(new PropertyExistsDelegateTask("Remove icon for deleteAsset action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset", "icon",
155 new RemovePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteAsset", "icon")))
156
157 .addTask(new NodeExistsDelegateTask("Remove action availability from deleteFolder action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder",
158 new RemoveNodeTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder/availability")))
159 .addTask(new PropertyExistsDelegateTask("Remove label for deleteFolder action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder", "label",
160 new RemovePropertyTask("Remove label for deleteFolder action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder", "label")))
161 .addTask(new PropertyExistsDelegateTask("Remove icon for deleteFolder action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder", "icon",
162 new RemovePropertyTask("Remove icon for deleteFolder action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder", "icon")))
163
164
165 .addTask(new NodeExistsDelegateTask("update actionbar mappings", "update actionbar mappings", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar",
166 new RenameNodesTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar", "deleteAsset", "confirmDeleteAsset", NodeTypes.ContentNode.NAME)))
167
168 .addTask(new NodeExistsDelegateTask("update actionbar mappings", "update actionbar mappings", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar",
169 new RenameNodesTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar", "deleteFolder", "confirmDeleteFolder", NodeTypes.ContentNode.NAME))));
170
171 register(DeltaBuilder.update("1.1", "")
172 .addTask(new PartialBootstrapTask("Bootstrap new actionbar section in Assets app.", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/multiple"))
173 .addTask(new NewPropertyTask("Set Delete actions multi-item", "Sets multiple=true in ConfirmDelete actions' availability, i.e. Delete action now supports multiple items.", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/confirmDeleteAsset/availability", "multiple", "true"))
174
175 .addTask(new PropertyExistsDelegateTask("Rename the metadataStandard field type ", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "class",
176 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "class", StaticFieldDefinition.class.getName())))
177 .addTask(new PropertyExistsDelegateTask("Remove default value of the metadataStandard field Definition ", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "defaultValue",
178 new RemovePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "defaultValue")))
179 .addTask(new PropertyExistsDelegateTask("Set value property of the static metadataStandard field ", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "defaultValue",
180 new SetPropertyTask("Set value of the static metadataStandard field ", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard", "value", "Simple Dublin Core Metadata Element Set (DCMES)")))
181
182
183 .addTask(new NodeExistsDelegateTask("Add catalog 'versioned' to activate action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activate",
184 new CheckOrCreatePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activate", "catalog", "versioned")))
185 .addTask(new NodeExistsDelegateTask("Add catalog 'versioned' to deactivate action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deactivate",
186 new CheckOrCreatePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deactivate", "catalog", "versioned")))
187 .addTask(new NodeExistsDelegateTask("Add catalog 'versioned' to activateDeleted action", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activateDeleted",
188 new CheckOrCreatePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activateDeleted", "catalog", "versioned")))
189
190
191 .addTask(new PartialBootstrapTask("Bootstrap availability rule for commit action in detail form", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/detail/actions/commit/availability"))
192 .addTask(new PartialBootstrapTask("Bootstrap showVersions action in browser", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/showVersions"))
193 .addTask(new PartialBootstrapTask("Bootstrap actionbar section group in browser", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/asset/groups/versionsActions"))
194
195
196 .addTask(new RemoveHardcodedI18nPropertiesFromDialogsTask("dam"))
197 .addTask(new RemoveHardcodedI18nPropertiesFromSubappsTask("dam"))
198
199 .addTask(new PropertyExistsDelegateTask("Replace DetailSubApp by AssetDetailSubApp ", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail", "subAppClass",
200 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/detail", "subAppClass", AssetDetailSubApp.class.getName())))
201
202 .addTask(new PartialBootstrapTask("Bootstrap move action in Assets app", "",
203 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/move"))
204 .addTask(new PartialBootstrapTask("Bootstrap moveFolder action in Assets app", "",
205 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/moveFolder"))
206 .addTask(new PartialBootstrapTask("Bootstrap move action to Assets app actionbar", "Adds action move to assets/editActions actionbar.",
207 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items/move"))
208 .addTask(new PartialBootstrapTask("Bootstrap moveFolder action to Assets app actionbar", "Adds action moveFolder to folder/editActions actionbar.",
209 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/editActions/items/moveFolder")));
210
211 register(DeltaBuilder.update("1.1.1", "")
212 .addTask(new NodeExistsDelegateTask("Rename action deleteAsset to delete", "So that it is standardized.", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions",
213 new RenameNodesTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions", "deleteAsset", "delete", NodeTypes.ContentNode.NAME)))
214 .addTask(new NodeExistsDelegateTask("Remove label of the moveFolder action", "So that it is standardized.", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/moveFolder",
215 new RemovePropertyTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/moveFolder", "label")))
216 .addTask(new NodeExistsDelegateTask("In confirmDeleteAsset: Rename action deleteAsset to delete", "So that it is standardized.", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/confirmDeleteAsset",
217 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/confirmDeleteAsset", "successActionName", "delete")))
218 .addTask(new NodeExistsDelegateTask("Set a valid text voter expression for text documents", "", RepositoryConstants.CONFIG, "/modules/dam/config/mediaTypes/document/voter/text_voter",
219 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/config/mediaTypes/document/voter/text_voter", "pattern", "text/.*")))
220 .addTask(new NodeExistsDelegateTask("Set a valid factory class for rich-text fields", "", RepositoryConstants.CONFIG, "/modules/ui-framework/fieldTypes/textArea",
221 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/ui-framework/fieldTypes/textArea", "factoryClass", AssetsEnabledRichTextFieldFactory.class.getName())))
222 .addTask(new ConvertAclToAppPermissionTask("Convert permissions for 'assets' app", "Convert ACL permissions to dms to new 'assets' app permissions", "/modules/adminInterface/config/menu/dms", "/modules/dam/apps/assets", true)));
223
224 register(DeltaBuilder.update("1.2", "")
225 .addTask(new PartialBootstrapTask("Bootstrap upload asset zip command in DAM", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.commands.xml", "/commands/dam/importAssetZip"))
226 .addTask(new PartialBootstrapTask("Bootstrap upload asset zip dialog in DAM", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.dialogs.xml", "/dialogs/importZip"))
227 .addTask(new PartialBootstrapTask("Bootstrap upload zip action in Assets app", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/importZip"))
228
229 .addTask(new PartialBootstrapTask("Bootstrap upload zip action to Assets app actionbar", "Adds action move to root/addActions actionbar.",
230 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/root/groups/addActions/items/importZip"))
231 .addTask(new NodeExistsDelegateTask("Reorder actions in actionbar", "Puts 'import zip' action before 'add folder' action in root/addActions", RepositoryConstants.CONFIG,
232 "/modules/dam/apps/assets/subApps/browser/actionbar/sections/root/groups/addActions/items/addFolder",
233 new OrderNodeBeforeTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/root/groups/addActions/items/importZip", "addFolder")))
234
235 .addTask(new PartialBootstrapTask("Bootstrap upload zip action to Assets app actionbar", "Adds action upload zip to folder/addActions actionbar.",
236 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/addActions/items/importZip"))
237 .addTask(new NodeExistsDelegateTask("Reorder actions in actionbar", "Puts 'import zip' action before 'add folder' action in folder/addActions", RepositoryConstants.CONFIG,
238 "/modules/dam/apps/assets/subApps/browser/actionbar/sections/folder/groups/addActions/items/addFolder",
239 new OrderNodeBeforeTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/folder/groups/addActions/items/importZip", "addFolder")))
240
241 .addTask(new PartialBootstrapTask("Bootstrap upload zip action to Assets app actionbar", "Adds action upload zip to deletedFolder/addActions actionbar.",
242 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/deletedFolder/groups/addActions/items/importZip"))
243 .addTask(new NodeExistsDelegateTask("Reorder actions in actionbar", "Puts 'import zip' action before 'add folder' action in deletedFolder/addActions", RepositoryConstants.CONFIG,
244 "/modules/dam/apps/assets/subApps/browser/actionbar/sections/deletedFolder/groups/addActions/items/addFolder",
245 new OrderNodeBeforeTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/deletedFolder/groups/addActions/items/importZip", "addFolder"))));
246
247 register(DeltaBuilder.update("1.2.1", "")
248 .addTask(new PartialBootstrapTask("Replace renameAsset configuration", "Replaces buggy renameAsset configuration.", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.dialogs.xml", "/dialogs/renameAsset", ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING))
249
250 .addTask(new PartialBootstrapTask("Bootstrap activate recursive action in Assets app", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/activateRecursive"))
251
252 .addTask(new PartialBootstrapTask("Bootstrap action activate recursive to folder actionbar.", "",
253 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/activationActions/items/activateRecursive"))
254 .addTask(new NodeExistsDelegateTask("Reorder actions in actionbar", "Puts 'activate recursive' action after 'activate' action in folder", RepositoryConstants.CONFIG,
255 "/modules/dam/apps/assets/subApps/browser/actionbar/sections/folder/groups/activationActions/items/activate",
256 new OrderNodeAfterTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/folder/groups/activationActions/items/activateRecursive", "activate"))));
257
258 register(DeltaBuilder.update("1.2.2", "")
259 .addTask(new NodeExistsDelegateTask("Bootstrap activate recursive action in Assets app if not yet done", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activateRecursive", null,
260 new PartialBootstrapTask("Bootstrap activate recursive action in Assets app", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/activateRecursive")))
261 .addTask(new NodeExistsDelegateTask("Bootstrap action activate recursive to folder actionbar if not yet done", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/folder/groups/activationActions/items/activateRecursive", null,
262 new PartialBootstrapTask("Bootstrap action activate recursive to folder actionbar", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/activationActions/items/activateRecursive")))
263
264 .addTask(new PropertyExistsDelegateTask("Remove obsolete 'categoryName' if exists", "Remove '/modules/dam/apps/assets/categoryName' if exists.",
265 RepositoryConstants.CONFIG, "/modules/dam/apps/assets/", "categoryName",
266 new RemovePropertyTask("Remove obsolete 'categoryName'", "Remove '/modules/dam/apps/assets/categoryName'", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/", "categoryName")))
267 .addTask(new PartialBootstrapTask("Bootstrap 'chooseDialog'", "Bootstrap chooseDialog into 'assets' app",
268 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/chooseDialog"))
269 .addTask(new PartialBootstrapTask("Rebootstrap 'metadataStandard'", "Rebootstrap 'config:modules/dam/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard'.",
270 "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/detail/editor/form/tabs/asset/fields/metadataStandard"))
271 .addTask(new BootstrapConditionally("Bootstrap ZIP archive import action field types", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.fieldTypes.xml"))
272 .addTask(new PartialBootstrapTask("Bootstrap restore version action", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actions/restoreVersion"))
273 .addTask(new NodeExistsDelegateTask("Bootstrap restore version action to actionbar", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/versionsActions/items",
274 new ArrayDelegateTask("",
275 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/asset/groups/versionsActions/items/restoreVersion"),
276 new NodeExistsDelegateTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/versionsActions/items/showVersions",
277 new OrderNodeAfterTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/versionsActions/items/restoreVersion", "showVersions"))))));
278
279 register(DeltaBuilder.update("1.2.4", "")
280 .addTask(new PartialBootstrapTask("Bootstrap new Type column", "", "/mgnl-bootstrap/dam-app-1-x/config.modules.dam.apps.assets.xml", "/assets/subApps/browser/workbench/contentViews/list/columns/type"))
281 .addTask(new OrderNodeAfterTask("", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/workbench/contentViews/list/columns/type", "title")));
282
283 register(DeltaBuilder.update("1.2.5", "")
284 .addTask(new ArrayDelegateTask("Register download action for assets.", "",
285 new NodeBuilderTask("", "", ErrorHandling.strict, RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions",
286 addNode("downloadAsset", NodeTypes.ContentNode.NAME).then(
287 addNode("availibility").then(
288 addNode("rules").then(
289 addNode(IsNotDeletedRule.class.getSimpleName()).then(
290 addProperty("implementationClass", IsNotDeletedRule.class.getName())
291 )
292 )
293 ),
294 addProperty("class", DownloadBinaryActionDefinition.class.getName()),
295 addProperty("icon", "icon-download"),
296 addProperty("binaryNodeName", JcrConstants.JCR_CONTENT)
297 )),
298 new NodeBuilderTask("Add downloadActions", "Add downloadActions section to actionbar", ErrorHandling.strict, RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups",
299 addNode("downloadActions", NodeTypes.ContentNode.NAME).then(
300 addNode("items", NodeTypes.ContentNode.NAME).then(
301 addNode("downloadAsset", NodeTypes.ContentNode.NAME)
302 ))),
303 new OrderNodeAfterTask("", "/modules/dam/apps/assets/subApps/browser/actionbar/sections/asset/groups/downloadActions", "activationActions")))
304
305 .addTask(configureActionsAsAsynchronous()));
306
307 register(DeltaBuilder.update("1.2.6", "")
308 .addTask(new ArrayDelegateTask("Configure icons for assets app",
309 new PropertyExistsDelegateTask("", "/modules/dam/apps/assets/subApps/browser/workbench/nodeTypes/mainNodeType", "icon",
310 new RemovePropertyTask("", "/modules/dam/apps/assets/subApps/browser/workbench/nodeTypes/mainNodeType", "icon")),
311 new NodeExistsDelegateTask("", "/modules/dam/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset",
312 new CheckAndModifyPropertyValueTask("Change asset name column definition class", "", RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset", "class", "info.magnolia.ui.workbench.column.definition.PropertyColumnDefinition", "info.magnolia.dam.app.assets.column.AssetNameColumnDefinition")),
313 new NodeExistsDelegateTask("", "/modules/dam/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset",
314 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset", "formatterClass", "info.magnolia.dam.app.assets.column.AssetNameColumnFormatter")),
315 new BootstrapSingleModuleResource("config.server.MIMEMapping.audio.xml"),
316 new BootstrapSingleModuleResource("config.server.MIMEMapping.video.xml"),
317 new BootstrapSingleModuleResource("config.server.MIMEMapping.image.xml"),
318 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
319 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/txt", "iconStyle", "icon-file-text")),
320 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
321 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/doc", "iconStyle", "icon-file-word")),
322 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
323 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/docx", "iconStyle", "icon-file-word")),
324 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
325 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/xls", "iconStyle", "icon-file-excel")),
326 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
327 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/xlsx", "iconStyle", "icon-file-excel")),
328 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
329 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/ppt", "iconStyle", "icon-file-powerpoint")),
330 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
331 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/pptx", "iconStyle", "icon-file-powerpoint")),
332 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
333 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/pdf", "iconStyle", "icon-file-pdf")),
334 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
335 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/htm", "iconStyle", "icon-file-webpage")),
336 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
337 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/html", "iconStyle", "icon-file-webpage")))));
338
339 register(DeltaBuilder.update("2.0", "")
340 .addTask(new UpdateDamAppConfigurationTask("Move and update dam module configuration to dam-app module configuration", "Update configuration form 1.x to 2.0"))
341 .addTask(new UpdateDamAssetFileNamePropertiesTask("Update the Asset fileName property", "Asset fileName property now has to contain the filename and the file extension"))
342 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.DamFilePreviewComponent", DamFilePreviewComponent.class.getName()))
343 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.definition.DamUploadFieldDefinition", DamUploadFieldDefinition.class.getName()))
344 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.factory.DamUploadFieldFactory", DamUploadFieldFactory.class.getName()))
345 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.configuration.image.ImagePreviewComponentProvider", ImagePreviewComponentProvider.class.getName()))
346 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.commands.MarkAssetFolderAsDeletedCommand", MarkAssetFolderAsDeletedCommand.class.getName()))
347 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.factory.AssetsEnabledRichTextFieldFactory", AssetsEnabledRichTextFieldFactory.class.getName()))
348 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.configuration.icon.IconThumbnailComponentProvider", IconThumbnailComponentProvider.class.getName()))
349 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.asset.field.configuration.image.ImageThumbnailComponentProvider", ImageThumbnailComponentProvider.class.getName()))
350 .addTask(new ChangeAllPropertiesWithCertainValueTask("info.magnolia.dam.commands.ImportAssetZipCommand", ImportAssetZipCommand.class.getName()))
351 .addTask(new ContentAppMigrationTask("/modules/dam-app"))
352 .addTask(new NodeExistsDelegateTask("Change the reference of the renameAsset dialog name", "/modules/dam-app/apps/assets/subApps/browser/actions/renameAsset",
353 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/actions/renameAsset", "dialogName", "dam-app:renameAsset")))
354 .addTask(new NodeExistsDelegateTask("Change the reference of the importZip dialog name", "/modules/dam-app/apps/assets/subApps/browser/actions/importZip",
355 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/actions/importZip", "dialogName", "dam-app:importZip")))
356
357 .addTask(new NodeExistsDelegateTask("Bootstrap new name field", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/detail/editor/form/tabs/asset/fields/name",
358 new ArrayDelegateTask("",
359 new RemoveNodeTask("", "/modules/dam-app/apps/assets/subApps/detail/editor/form/tabs/asset/fields/name"),
360 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/detail/editor/form/tabs/asset/fields/name"),
361 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/detail/editor/form/tabs/asset/fields/name", "resource"))))
362 .addTask(new NodeExistsDelegateTask("Bootstrap new column name formater", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset",
363 new ArrayDelegateTask("",
364 new RemoveNodeTask("", "/modules/dam-app/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset"),
365 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/workbench/contentViews/list/columns/asset"),
366 new OrderNodeBeforeTask("/modules/dam-app/apps/assets/subApps/browser/workbench/contentViews/list/columns/asset", "path"))))
367 .addTask(new NodeExistsDelegateTask("Bootstrap new renameAsset dialog definition", "", RepositoryConstants.CONFIG, "/modules/dam-app/dialogs/renameAsset",
368 new ArrayDelegateTask("",
369 new RemoveNodeTask("", "/modules/dam-app/dialogs/renameAsset"),
370 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.dialogs.xml", "/dialogs/renameAsset"))))
371 .addTask(new NodeExistsDelegateTask("Bootstrap new detail sub app image providerdefinition", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/detail",
372 new ArrayDelegateTask("",
373 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/detail/imageProvider"),
374 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/detail/imageProvider", "contentConnector"))))
375 .addTask(new NodeExistsDelegateTask("Bootstrap download asset avalability", "/modules/dam-app/apps/assets/subApps/browser/actions/downloadAsset/availability", null,
376 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/downloadAsset/availability")))
377 .addTask(new RemovePropertyTask("Remove icon property", "/modules/dam-app/apps/assets/subApps/browser/contentConnector/nodeTypes/mainNodeType", "icon"))
378
379 .addTask(new NodeExistsDelegateTask("Bootstrap new detail sub app contentConnector", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/detail/contentConnector",
380 new ArrayDelegateTask("",
381 new RemoveNodeTask("", "/modules/dam-app/apps/assets/subApps/detail/contentConnector"),
382 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/detail/contentConnector"),
383 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/detail/contentConnector", "actions")))));
384
385 register(DeltaBuilder.update("2.0.1", "")
386 .addTask(new SetWritePermissionForActionsTask("/modules/dam-app/apps/assets/subApps/browser/actions/", "importZip", "restoreVersion", "move", "activateDeleted", "restorePreviousVersion", "deactivate", "activateRecursive", "activate", "import", "uploadAsset", "addFolder", "editFolder", "editAsset", "renameAsset", "confirmDeleteAsset", "createVariant")));
387
388 register(DeltaBuilder.update("2.0.2", "")
389 .addTask(new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/detail/editor/form/tabs/asset/fields/resource",
390 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/detail/editor/form/tabs/asset/fields/resource", "editFileFormat", "false"))));
391
392 register(DeltaBuilder.update("2.0.4", "")
393 .addTask(new ArrayDelegateTask("Bootstrap new 'Upload & edit' action",
394 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.dialogs.xml", "/dialogs/uploadAndEdit"),
395 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/chooseDialog/actions/uploadAndEdit"),
396 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/chooseDialog/actionArea/secondaryActions/uploadAndEdit"),
397 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/chooseDialog/actionArea/actionRenderers/uploadAndEdit"))));
398
399 register(DeltaBuilder.update("2.0.5", "")
400 .addTask(new ArrayDelegateTask("Bootstrap new 'Download' action",
401 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/detail/actions/downloadVersion"),
402 new PartialBootstrapTask("", "", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/detail/editor/actions/downloadVersion"),
403 new NodeExistsDelegateTask("", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/detail/editor/actions/cancel",
404 new OrderNodeBeforeTask("/modules/dam-app/apps/assets/subApps/detail/editor/actions/downloadVersion", "cancel")))));
405
406 register(DeltaBuilder.update("2.0.6", "")
407 .addTask(new AddIsPublishedRuleToAllDeactivateActionsTask("", "/modules/dam-app/apps/")));
408 register(DeltaBuilder.update("2.0.8", "")
409 .addTask(new PartialBootstrapTask("Edit asset configuration for SVGs", "Prevents SVGs from being edited within the Dam app.", "/mgnl-bootstrap/dam-app/config.modules.dam-app.config.editAssetAppConfigurations.xml", "/editAssetAppConfigurations/svgUploadConfig")));
410 register(DeltaBuilder.update("2.0.9", "")
411 .addTask(new NodeExistsDelegateTask("Modify configuration of restorePreviousVersion action", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion",
412 new ArrayDelegateTask("",
413 new CheckAndModifyPropertyValueTask("/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion", "class", "info.magnolia.ui.contentapp.detail.action.RestorePreviousVersionActionDefinition", "info.magnolia.ui.contentapp.browser.action.RestoreItemPreviousVersionActionDefinition"),
414 new NodeExistsDelegateTask("Configure availability for multiple items", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion/availability",
415 new PropertyExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion/availability", "multiple", null,
416 new SetPropertyTask("", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion/availability", "multiple", "true"))))))
417 .addTask(new NodeExistsDelegateTask("Configure IsPublishableRule for availability of activate action", "/modules/dam-app/apps/assets/subApps/browser/actions/activate/availability/rules",
418 new NodeExistsDelegateTask("","/modules/dam-app/apps/assets/subApps/browser/actions/activate/availability/rules/IsPublishableRule", null,
419 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/activate/availability/rules/IsPublishableRule"))))
420 .addTask(new NodeExistsDelegateTask("Configure IsPublishableRule for availability of activateRecursive action", "/modules/dam-app/apps/assets/subApps/browser/actions/activateRecursive/availability/rules",
421 new NodeExistsDelegateTask("","/modules/dam-app/apps/assets/subApps/browser/actions/activateRecursive/availability/rules/IsPublishableRule", null,
422 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/activateRecursive/availability/rules/IsPublishableRule"))))
423 .addTask(new PartialBootstrapTask("Edit dialog configuration for form", "Add two fields in dialog renameAsset.", "/mgnl-bootstrap/dam-app/config.modules.dam-app.dialogs.xml", "/dialogs/renameAsset/form")));
424
425 register(DeltaBuilder.update("2.1.1", "")
426 .addTask(new RemovePropertyTask("Remove obsolete permission demo-project-base", "/modules/dam-app/apps/assets/permissions/roles", "demo-project-base")));
427 register(DeltaBuilder.update("2.1.2", "")
428 .addTask(new PartialBootstrapTask("Edit asset configuration for TIFF, WEPB, ICO, CRW and PSD", "Prevents TIFF, WEPB, ICO, CRW and PSD from being edited within the Dam app.", "/mgnl-bootstrap/dam-app/config.modules.dam-app.config.editAssetAppConfigurations.xml", "/editAssetAppConfigurations/imageUploadConfigWithoutEdit")));
429 register(DeltaBuilder.update("2.1.6", "")
430 .addTask(new ArrayDelegateTask("Configure actions for restoring deleted assets and folders", "Configure actions for restoring previous versions of assets and folders",
431 new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion",
432 new ArrayDelegateTask("",
433 new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersion/params", null,
434 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/restorePreviousVersion/params")))),
435 new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/deletedFolder/groups/deletedActions/items/restorePreviousVersion",
436 new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/deletedFolder/groups/deletedActions/items/restorePreviousVersionIncludingChildren", null,
437 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/deletedFolder/groups/deletedActions/items/restorePreviousVersionIncludingChildren"))),
438 new NodeExistsDelegateTask("", "/modules/dam-app/apps/assets/subApps/browser/actions/restorePreviousVersionIncludingChildren", null,
439 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/restorePreviousVersionIncludingChildren")))));
440
441 register(DeltaBuilder.update("2.1.7", "")
442 .addTask(new NodeExistsDelegateTask("Set mgnl:folder for nodeType property", "", RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/actions/importZip",
443 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam-app/apps/assets/subApps/browser/actions/importZip", "nodeType", NodeTypes.Folder.NAME))));
444 register(DeltaBuilder.update("2.2", "")
445 .addTask(new ArrayDelegateTask("Add copy and paste functionality into the asset browser.", "Add ability to copy and paste the components in the asset browser.",
446 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/copy"),
447 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actions/paste"),
448 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/root/groups/editActions/items/copy"),
449 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/root/groups/editActions/items/paste"),
450 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/root/groups/editActions/items/paste", "copy"),
451 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items/copy"),
452 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items/paste"),
453 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/asset/groups/editActions/items/paste", "copy"),
454 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/editActions/items/copy"),
455 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/folder/groups/editActions/items/paste"),
456 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/folder/groups/editActions/items/paste", "copy"),
457 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/multiple/groups/editActions/items/copy"),
458 new PartialBootstrapTask("", "/mgnl-bootstrap/dam-app/config.modules.dam-app.apps.assets.xml", "/assets/subApps/browser/actionbar/sections/multiple/groups/editActions/items/paste"),
459 new OrderNodeAfterTask("", "/modules/dam-app/apps/assets/subApps/browser/actionbar/sections/multiple/groups/editActions/items/paste", "copy"))));
460 }
461
462 private Task configureActionsAsAsynchronous() {
463 return new IsModuleInstalledOrRegistered("Configure actions as asynchronous", "Configure actions as asynchronous if scheduler module is installed", "scheduler", new ArrayDelegateTask("", "",
464 new NodeExistsDelegateTask("Configure activation as asynchronous", "/modules/dam/apps/assets/subApps/browser/actions/activate",
465 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activate", "asynchronous", "true")),
466 new NodeExistsDelegateTask("Configure recursive activation as asynchronous", "/modules/dam/apps/assets/subApps/browser/actions/activateRecursive",
467 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/activateRecursive", "asynchronous", "true")),
468 new NodeExistsDelegateTask("Configure deletion as asynchronous", "/modules/dam/apps/assets/subApps/browser/actions/delete",
469 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/delete", "asynchronous", "true")),
470 new NodeExistsDelegateTask("Configure deletion of folder as asynchronous", "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder",
471 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/dam/apps/assets/subApps/browser/actions/deleteFolder", "asynchronous", "true"))
472 ));
473 }
474
475 @Override
476 protected List<Task> getExtraInstallTasks(InstallContext ctx) {
477
478 final List<Task> tasks = new ArrayList<Task>();
479
480 tasks.add(new IsAuthorInstanceDelegateTask("Add permissions only for public instance", "", null,
481 new AddPermissionTask("Add read on dam for anonymous role", "", "anonymous", "dam", "/", info.magnolia.cms.security.Permission.READ, true)
482 ));
483 tasks.add(new NodeExistsDelegateTask("Set a valid factory class for rich-text fields", "", RepositoryConstants.CONFIG, "/modules/ui-framework/fieldTypes/textArea",
484 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/ui-framework/fieldTypes/textArea", "factoryClass", AssetsEnabledRichTextFieldFactory.class.getName()))
485 );
486 tasks.add(new AppLauncherReorderingTask("assets", "edit", Order.AFTER, "pages"));
487 tasks.add(new ArrayDelegateTask("Configure icons for assets app",
488 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
489 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/txt", "iconStyle", "icon-file-text")),
490 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
491 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/doc", "iconStyle", "icon-file-word")),
492 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
493 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/docx", "iconStyle", "icon-file-word")),
494 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
495 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/xls", "iconStyle", "icon-file-excel")),
496 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
497 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/xlsx", "iconStyle", "icon-file-excel")),
498 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
499 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/ppt", "iconStyle", "icon-file-powerpoint")),
500 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
501 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/pptx", "iconStyle", "icon-file-powerpoint")),
502 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
503 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/pdf", "iconStyle", "icon-file-pdf")),
504 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
505 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/htm", "iconStyle", "icon-file-webpage")),
506 new NodeExistsDelegateTask("", "/server/MIMEMapping/txt",
507 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/MIMEMapping/html", "iconStyle", "icon-file-webpage"))
508 ));
509 tasks.add(new ConvertAclToAppPermissionTask("Convert permissions for 'assets' app", "Convert ACL permissions to dms to new 'assets' app permissions", "/modules/adminInterface/config/menu/dms", "/modules/dam-app/apps/assets", true));
510 return tasks;
511 }
512 }