Goal
Register a fileuploadsuccess listener in Touch UI Assets console to add dc:title metadata with filename - user, after successfully uploading a file (Drag & Drop or Upload button)
Demo | Package Install
Solution
1) Login to CRXDE Lite, create folder (nt:folder) /apps/touchui-asset-drop-listener
2) Create clientlib (type cq:ClientLibraryFolder) /apps/touchui-asset-drop-listener/clientlib and set a property categories of String type to cq.gui.damadmin.admin
3) Create file ( type nt:file ) /apps/touchui-asset-drop-listener/clientlib/js.txt, add the following
add-file-name.js
4) Create file ( type nt:file ) /apps/touchui-asset-drop-listener/clientlib/add-file-name.js, add the following code
(function ($, $document) {
"use strict";
$(document).on("fileuploadsuccess", "span.coral-FileUpload", addTitle);
function addTitle(event){
try{
var options = event.fileUpload.options,
folderPath = options.uploadUrl.replace(".createasset.html", ""),
assetMetadataPath = folderPath + "/" + event.item.fileName + "/jcr:content/metadata";
var data = {
"dc:title" : event.item.fileName + " - " + getCurrentUser()
};
$.ajax({
type : 'POST',
url : assetMetadataPath,
data : data
}).done(function(){
showAlert(true, data["dc:title"]);
})
}catch(err){
showAlert(false, err.message);
}
}
function showAlert(isSuccessful, data){
var fui = $(window).adaptTo("foundation-ui"), message, options;
if(isSuccessful){
message = "Title added - '" + data + "'";
options = [{
text: "Refresh",
primary: true,
handler: function() {
location.reload();
}
}]
}else{
message = "Error - " + data;
options = [{
text: "OK",
warning: true
}]
}
fui.prompt("Asset Title", message, "notice", options);
}
function getCurrentUser(){
//is there a better way like classic UI? - CQ.User.getCurrentUser()
return $(".endor-Account-caption").html();
}
})(jQuery, $(document));