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