I have a requirement to extend the functionality of the Quick Publish button. Currently, when a user clicks it, the page and its references are published, and a version of the page is created.
I want to customize this functionality so that after the version is created, an email is sent to specific people in a particular user group.
Additionally, this new functionality should apply only to a few selected user groups.
I am considering two options and would appreciate any guidance:
Solved! Go to Solution.
Views
Replies
Total Likes
Hi,
You may try steps mentioned in https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/send-email-after-page-gets...
However if you want to extends the behaviour you may follow then https://myaemlearnings.blogspot.com/2020/09/customization-in-aem-asset-quick.html?m=1
To add a custom button you may follow https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/aem-how-to-add-a-custom-bu...
Thanks
Hi,
You may try steps mentioned in https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/send-email-after-page-gets...
However if you want to extends the behaviour you may follow then https://myaemlearnings.blogspot.com/2020/09/customization-in-aem-asset-quick.html?m=1
To add a custom button you may follow https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/aem-how-to-add-a-custom-bu...
Thanks
Hi @SRC_AEM_DEV
You can create a new button and hide the OOTB for the users who should receive the email. You should reverse the visibility for remaining users.
Please write a logic to include references as well.
OOTB quick publish logic example :
var REPLICATE_URL = Granite.HTTP.externalize("/bin/replicate");
var QUICKPUBLISH_TITLE = Granite.I18n.get("Quick Publish");
var PUBLISH_TEXT = Granite.I18n.get("Publish");
var CANCEL_TEXT = Granite.I18n.get("Cancel");
var ERROR_TEXT = Granite.I18n.get("Error");
var DEFAULT_REPLICATION_AGENT_ID = "publish";
$(window).adaptTo("foundation-registry").register("foundation.collection.action.action", {
name: "cq.wcm.quickpublish",
handler: function(name, el, config, collection, selections) {
var message = createEl("div");
var intro = createEl("p").appendTo(message);
if (selections.length === 1)
intro.text(Granite.I18n.get("The page and their references will be published."));
else
intro.text(Granite.I18n.get("The {0} pages and their references will be published.", selections.length));
var ui = $(window).adaptTo("foundation-ui");
ui.prompt(QUICKPUBLISH_TITLE, message.html(), "notice", [{
text: CANCEL_TEXT
}, {
text: PUBLISH_TEXT,
primary: true,
handler: function() {
activatePagesAndItsReferences(config, collection, selections)
}
}])
}
})
}
)(window, document, Granite.$, Granite);
(function(window, document, $, URITemplate) {
var replicateURL = Granite.HTTP.externalize("/bin/replicate");
var successMessage = Granite.I18n.get("The item has been published");
var DEFAULT_REPLICATION_AGENT_ID = "publish";
$(window).adaptTo("foundation-registry").register("foundation.collection.action.action", {
name: "cq.wcm.publish",
handler: function(name, el, config, collection, selections) {
var ui = $(window).adaptTo("foundation-ui");
ui.wait();
var paths = selections.map(function(v) {
var item = $(v);
var refPath = item.data("checkReferencesPath");
if (!refPath)
refPath = item.children().data("checkReferencesPath");
if (refPath)
return refPath.split(",");
return item.data("foundationCollectionItemId")
});
if (!paths.length)
return;
paths = [].concat.apply([], paths);
config.data.referencesrc=config.data.referenceSrc.startsWith("/") ? config.data.referenceSrc : "/" + config.data.referenceSrc;
var referencePromise = $.ajax({
url: URITemplate.expand(config.data.referenceSrc, {
path: paths
}),
"type": "POST",
cache: false,
dataType: "json"
});
referencePromise.done(function(json) {
if (json.assets.length === 0)
$.ajax({
url: replicateURL,
type: "POST",
data: {
_charset_: "utf-8",
cmd: "Activate",
path: paths,
agentId: DEFAULT_REPLICATION_AGENT_ID
}
}).always(function() {
ui.clearWait()
}).done(function() {
var api = $(collection).adaptTo("foundation-collection");
if (api && "reload"in api) {
api.reload();
ui.notify(null, successMessage);
return
}
var contentApi = $(".foundation-content").adaptTo("foundation-content");
if (contentApi)
contentApi.refresh();
ui.notify(null, successMessage)
}).fail(function(xhr) {
var title = Granite.I18n.get("Error");
var message = Granite.I18n.getVar($(xhr.responseText).find("#Message").html());
ui.alert(title, message, "error")
});
else {
sessionStorage.setItem("document.referrer", window.location.href);
window.location.href = URITemplate.expand(config.data.wizardSrc, {
item: paths
})
}
});
referencePromise.fail(function(xhr) {
ui.clearWait();
var title = Granite.I18n.get("Error");
var message = Granite.I18n.get("Failed to retrieve references for selected items.");
ui.alert(title, message, "error")
})
}
});
$(document).on("foundation-contentloaded", function(e) {
var message = sessionStorage.getItem("cq-page-published-message");
if (message !== null) {
sessionStorage.removeItem("cq-page-published-message");
var ui = $(window).adaptTo("foundation-ui");
ui.notify(null, Granite.I18n.getVar(message))
}
})
}
Note: Above code is copied from AEMaaCS SDK.
@SRC_AEM_DEV Did you find the suggestions helpful? Please let us know if you require more information. Otherwise, please mark the answer as correct for posterity. If you've discovered a solution yourself, we would appreciate it if you could share it with the community. Thank you!
Views
Replies
Total Likes