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