Goal
Add Delete the selected assets functionality in Assets Create Review Task
Demo | Package Install | Github
Solution
1) Login to CRXDE Lite, create folder (nt:folder) /apps/eaem-touchui-delete-in-review-task
2) Create Delete button UI node /apps/eaem-touchui-delete-in-review-task/ui/delete-button add the following code
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:granite="http://www.adobe.com/jcr/granite/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
granite:rel="eaem-project-admin-actions-delete-asset"
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/collection/action"
icon="delete"
text="Delete"
title="Delete"
variant="actionBar"/>
3) Create clientlib (type cq:ClientLibraryFolder) /apps/eaem-touchui-delete-in-review-task/clientlib and set property categories of String[] type to cq.inbox.itemdetails and dependencies String[] to lodash
4) Create file ( type nt:file ) /apps/eaem-touchui-delete-in-review-task/clientlib/js.txt, add the following
review-task-delete.js
5) Create file (type nt:file) /apps/eaem-touchui-delete-in-review-task/clientlib/review-task-delete.js, add the following code
(function ($, $document) {
"use strict";
var REVIEW_TASK_PAYLOAD_PAGE = "/mnt/overlay/cq/core/content/projects/showtasks/reviewtd/payload.html",
DELETE_BUTTON = "/apps/eaem-touchui-delete-in-review-task/ui/delete-button.html",
COMMAND_URL = Granite.HTTP.externalize("/bin/wcmcommand"),
TD_ACTION_BAR = ".review-taskdetail-action-bar",
$deleteButton = null;
if(!isReviewTaskPayloadPage()){
return;
}
$document.on("foundation-selections-change", addDelete);
function addDelete(event){
var $collection = $(event.target),
selectApi = $collection.adaptTo("foundation-selections");
if(!_.isEmpty($deleteButton)){
( (selectApi.count() == 0) ? $deleteButton.hide() : $deleteButton.show());
return;
}
$.ajax(DELETE_BUTTON).done(function(html){
var $titleBar = $(TD_ACTION_BAR).find("betty-titlebar-primary");
$deleteButton = $(html).appendTo($titleBar).click(deleteAction);
$deleteButton.hide();
});
}
function deleteAction(){
var $collection = $(".foundation-collection"),
$items = $collection.find(".foundation-selections-item"),
paths = [];
$items.each(function(index, item) {
paths.push($(item).data("foundation-collection-item-id"));
});
if(_.isEmpty(paths)){
return;
}
var data = {
_charset_: "UTF-8",
cmd: "deletePage",
path: paths,
force: true
};
$.post(COMMAND_URL, data).done(function(){
$(".foundation-content").adaptTo("foundation-content").refresh();
showAlert("Selected assets deleted", "Delete");
$deleteButton = null;
});
}
function showAlert(message, title, callback){
var fui = $(window).adaptTo("foundation-ui"),
options = [{
id: "ok",
text: "OK",
primary: true
}];
message = message || "Unknown Error";
title = title || "Error";
fui.prompt(title, message, "warning", options, callback);
}
function isReviewTaskPayloadPage() {
return (window.location.pathname.indexOf(REVIEW_TASK_PAYLOAD_PAGE) >= 0);
}
})(jQuery, jQuery(document));