AEM-如何调整激活错误消息

AEM-如何调整激活错误消息,aem,Aem,我们在AEM 6.1环境中工作,并创建了一个激活预处理器,如果未设置某些属性,该处理器将停止激活页面。这非常有效,但我们还希望更改当预处理器抛出ReplicationExcdeption时激活过程显示的错误消息。有人能告诉我实际显示错误消息的代码吗?我们覆盖了SiteAdmin.Actions.js中的几个函数。从libs文件夹/apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.js中复制它,或者使用 我们需要重写CQ.wcm.Sit

我们在AEM 6.1环境中工作,并创建了一个激活预处理器,如果未设置某些属性,该处理器将停止激活页面。这非常有效,但我们还希望更改当预处理器抛出ReplicationExcdeption时激活过程显示的错误消息。有人能告诉我实际显示错误消息的代码吗?

我们覆盖了SiteAdmin.Actions.js中的几个函数。从libs文件夹
/apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.js中复制它,或者使用

我们需要重写
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));
}
CQ.wcm.SiteAdmin.preactivateMessage=函数(responseObj){
var message=“”;
var不正确项=响应bj.不正确项;
如果(responseObj.countOfIncorrectItems>1)消息=消息+“s”;
if(responseObj.missingMetadata){
message=message+“请为下一个视频设置\“编程类型\:
”; var missingmatapath=responseObj.missingmatadata; 对于(var i=0;i”; } 消息+=“
”; } 如果(消息==“”){ message=“未知错误。”; } CQ.Ext.Msg.alert( CQ.I18n.getMessage(“错误”),CQ.I18n.getMessage(消息)); }

所以您可以实现组件或servlet,它将验证您的属性并生成JSON

我们覆盖了SiteAdmin.Actions.js中的几个函数。从libs文件夹
/apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.js中复制它,或者使用

我们需要重写
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));
}
CQ.wcm.SiteAdmin.preactivateMessage=函数(responseObj){
var message=“”;
var不正确项=响应bj.不正确项;
如果(responseObj.countOfIncorrectItems>1)消息=消息+“s”;
if(responseObj.missingMetadata){
message=message+“请为下一个视频设置\“编程类型\:
”; var missingmatapath=responseObj.missingmatadata; 对于(var i=0;i”; } 消息+=“
”; } 如果(消息==“”){ message=“未知错误。”; } CQ.Ext.Msg.alert( CQ.I18n.getMessage(“错误”),CQ.I18n.getMessage(消息)); }

所以您可以实现组件或servlet,它将验证您的属性并生成JSON

请您添加更多详细信息,我创建了一个实现com.day.cq.replication.Preprocessor接口的类。AEM在激活过程中调用它,如果找不到特定属性,则抛出RepositoryException。这将停止激活并向用户显示消息,但我想更改显示的消息,但我不知道它实际生成的位置。请添加更多详细信息,您所做的我创建了一个实现com.day.cq.replication.Preprocessor接口的类。AEM在激活过程中调用它,如果找不到特定属性,则抛出RepositoryException。这将停止激活并向用户显示一条消息,但我想更改显示的消息,但我不知道它实际生成的位置。我将查看此消息。谢谢你的回复!我来看看这个。谢谢你的回复!