diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95bb36ef0..2bb629d03 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
#### v1.6.0
-- show tree search even if all child elements fit on one page (according to `tree_paging_limit`) - if there are at least 30 children in total
+- Show tree search even if all child elements fit on one page (according to `tree_paging_limit`) - if there are at least 30 children in total
+- Prevent accidental deletion of folder if items get selected in grid and then the "Delete folder" button gets clicked. Instead: If grid items are selected, delete button asks if the selected items should be deleted. If no grid items are selected, the folder gets deleted (after confirmation).
#### v1.5.0
- [Assets] Metadata can be now displayed as a read-only tab when the user is granted `view` permissions to the asset.
diff --git a/public/js/pimcore/asset/folder.js b/public/js/pimcore/asset/folder.js
index e6261a408..516b670d4 100644
--- a/public/js/pimcore/asset/folder.js
+++ b/public/js/pimcore/asset/folder.js
@@ -247,10 +247,19 @@ pimcore.asset.folder = Class.create(pimcore.asset.asset, {
}
this.toolbarButtons.remove = new Ext.Button({
- tooltip: t('delete_folder'),
+ tooltip: t('delete'),
iconCls: "pimcore_material_icon_delete pimcore_material_icon",
scale: "medium",
- handler: this.remove.bind(this)
+ handler: function () {
+ var options = this.listfolder.onRawDeleteSelectedRows();
+ if (!options) {
+ options = {
+ "elementType" : "asset",
+ "id": this.id
+ };
+ }
+ pimcore.elementservice.deleteElement(options);
+ }.bind(this)
});
this.toolbarButtons.rename = new Ext.Button({
diff --git a/public/js/pimcore/asset/listfolder.js b/public/js/pimcore/asset/listfolder.js
index 6ef8cb948..e443345da 100644
--- a/public/js/pimcore/asset/listfolder.js
+++ b/public/js/pimcore/asset/listfolder.js
@@ -460,6 +460,29 @@ pimcore.asset.listfolder = Class.create(pimcore.asset.helpers.gridTabAbstract, {
return config;
},
+ onRawDeleteSelectedRows: function () {
+ if(typeof this.grid === "undefined") {
+ return null;
+ }
+
+ let ids = [];
+ var selectedRows = this.grid.getSelectionModel().getSelection();
+ for (var i = 0; i < selectedRows.length; i++) {
+ ids.push(selectedRows[i].data.id);
+ }
+ ids = ids.join(',');
+
+ var options = {
+ "elementType" : "asset",
+ "id": ids,
+ "success": function() {
+ this.store.reload();
+ }.bind(this)
+ };
+
+ return ids.length ? options : null;
+ },
+
onRowContextmenu: function (grid, record, tr, rowIndex, e, eOpts ) {
var menu = new Ext.menu.Menu();
diff --git a/public/js/pimcore/elementservice.js b/public/js/pimcore/elementservice.js
index 5ed77bd4e..9df30dcd5 100644
--- a/public/js/pimcore/elementservice.js
+++ b/public/js/pimcore/elementservice.js
@@ -83,9 +83,23 @@ pimcore.elementservice.deleteElementsComplete = function(options, response) {
pimcore.elementservice.deleteElementCheckDependencyComplete = function (window, res, options) {
try {
- let message = res.batchDelete ? t('delete_message_batch') : t('delete_message');
+ let message = '';
+ if (res.batchDelete) {
+ message += sprintf(t('delete_message_batch'), res.itemResults.length) + "