AEM 6 - Touch UI Add new Action to Assets Action Bar

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.$);

1 comment:

  1. 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