2017-05-30 2 views
1

AEM 6.1環境で作業しており、特定の属性が設定されていない場合にページがアクティブになるのを停止するアクティベーションプリプロセッサを作成しました。これは素晴らしいことですが、プリプロセッサがReplicationExcdeptionをスローするときに、アクティベーションプロセスによって表示されるエラーメッセージも変更したいと思います。誰も実際にエラーメッセージを表示するコードに私を指摘できますか?AEM - アクティベーションエラーメッセージを調整する方法

+0

あなたは何をしたのですか?詳細を追加してください。 –

+0

com.day.cq.replication.Preprocessorインターフェイスを実装するクラスを作成しました。アクティベーションプロセスの一環としてAEMによって呼び出され、特定の属性が見つからない場合はRepositoryExceptionがスローされます。これにより、アクティブ化が停止され、ユーザーにメッセージが表示されますが、表示されているメッセージを変更したいのですが、実際にどこに生成されたのか分かりません。 – rnolen

答えて

0

SiteAdmin.Actions.jsのいくつかの機能をオーバーライドしました。 libsフォルダからコピーする/apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.jsまたはCQ.Ext.override

CQ.wcm.SiteAdmin.scheduleForActivationCQ.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を生成するコンポーネントやサーブレットを実装することができます。

+0

私はこれを見ています。レスポンスありがとう! – rnolen

関連する問題