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
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies