Goal
Adding a new menu item to the Assets console Action bar, for creating unique folders
Demo | Package Install
Solution
1) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/create-random-asset-folder
2 Create node /apps/create-random-asset-folder/clientlib of type cq:ClientLibraryFolder and add a String property categories with value cq.gui.damadmin.admin
3) Create file (nt:file) /apps/create-random-asset-folder/clientlib/js.txt and add
create-folder.js
4) Create file (nt:file) /apps/create-random-asset-folder/clientlib/create-folder.js and add the following code.
(function (document, $) {
"use strict";
var CREATE_FOLDER_ACTIVATOR = ".cq-damadmin-admin-actions-createfolder-activator";
var UNIQUE_FOLDER_ELEMENT_ID = "experience-aem-unique-folder-create";
//code picked up from the internet
var getUniqueFolderName = function(){
var d = new Date().getTime();
return 'xxxx-xxxx-xxxx-xxxx'.replace(/[x]/g, function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
});
};
var createFolder = function(parentPath) {
var options = {
"./jcr:primaryType": "sling:OrderedFolder",
"./jcr:content/jcr:primaryType": "nt:unstructured",
"_charset_": "utf-8"
};
return $.ajax({
url: parentPath + "/" + getUniqueFolderName(),
data: options,
type: 'POST'
});
};
$(document).on("foundation-contentloaded", function(e){
if($("#" + UNIQUE_FOLDER_ELEMENT_ID).length > 0 ){
return;
}
var $cFolder = $(CREATE_FOLDER_ACTIVATOR);
if($cFolder.length == 0){
return;
}
$cFolder.after($($cFolder[0].outerHTML).attr("id", UNIQUE_FOLDER_ELEMENT_ID)
.css("opacity", ".5").removeAttr("href").attr("title", "Create Unique Folder").click(function(){
var parentPath = $(".foundation-content-path").data("foundationContentPath");
createFolder(parentPath).done(function(){
$(".foundation-content").adaptTo("foundation-content").refresh();
});
}));
})
})(document, Granite.$);

This was a very informative and engaging post, and I appreciate the effort you put into sharing such valuable insights with your readers. The content is clearly presented, easy to understand, and offers useful information that readers from different backgrounds can appreciate. While exploring educational resources online, I often come across java assignment help as a useful option for students seeking reliable academic guidance and programming support. Thank you for sharing such excellent content, and I look forward to reading more of your future posts!
ReplyDelete