我们正在AEM 6.1环境中工作,并创建了一个激活预处理器,如果未设置某些属性,将停止激活页面。这很好但我们还希望在预处理器抛出ReplicationExcdeption时更改激活过程显示的错误消息。有人能指出我实际显示错误消息的代码吗?
答案 0 :(得分:0)
我们覆盖了SiteAdmin.Actions.js中的几个函数。从libs文件夹/apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.js
复制它或使用CQ.Ext.override
我们需要覆盖CQ.wcm.SiteAdmin.scheduleForActivation
和CQ.wcm.SiteAdmin.internalActivatePage
方法。
我们使用以下代码
CQ.wcm.SiteAdmin.internalActivatePage = function(paths, callback) {
if (callback == undefined) {
// assume scope is admin and reload grid
var admin = this;
callback = function(options, success, response) {
if (success) admin.reloadPages();
else admin.unmask();
};
}
preActionCallback = function(options, success, response) {
if (success) {
var responseObj = CQ.Util.eval(response);
if (responseObj.activation) {
CQ.HTTP.post(
CQ.shared.HTTP.externalize("/bin/replicate.json"),
callback,
{ "_charset_":"utf-8", "path":paths, "cmd":"Activate" }
);
} else {
CQ.wcm.SiteAdmin.preactivateMessage(responseObj);
}
}else{
CQ.Ext.Msg.alert(
CQ.I18n.getMessage("Error"), CQ.I18n.getMessage("Could not activate page."));
}
admin.unmask();
};
CQ.HTTP.get(
"/apps/sling/servlet/content/preActivateValidator.html?path=" + paths,
preActionCallback
);
};
此路径/apps/sling/servlet/content/preActivateValidator.html
(您可以使用任何其他链接和扩展名)返回json以及有关消息的一些信息,这些信息在自定义方法中解析并生成自定义错误消息CQ.wcm.SiteAdmin.preactivateMessage
:
CQ.wcm.SiteAdmin.preactivateMessage = function(responseObj) {
var message = "";
var incorrectItems = responseObj.incorrectItems;
if (responseObj.countOfIncorrectItems > 1) message = message + "s";
if (responseObj.missingMetadata) {
message = message + "Please, set \"Programming Type\" for next videos:<br/>";
var missingMetadataPaths = responseObj.missingMetadata;
for(var i = 0; i < missingMetadataPaths.length; i++){
message = message + "<a href=\""+missingMetadataPaths[i].path+".html\">"+missingMetadataPaths[i].path+"</a><br/>";
}
message += "<br/>";
}
if(message == ""){
message = "Unknown error.";
}
CQ.Ext.Msg.alert(
CQ.I18n.getMessage("Error"), CQ.I18n.getMessage(message));
}
因此,您可以实现将验证属性并生成JSON的组件或servlet。