2017-05-30 4 views
1

Wir arbeiten in einer AEM 6.1-Umgebung und haben eine Aktivierung Preprocessor erstellt, die Seiten zu deaktivieren aktiviert werden, wenn bestimmte Attribute nicht festgelegt sind. Das funktioniert gut, aber wir möchten auch die Fehlermeldung ändern, die beim Aktivierungsprozess angezeigt wird, wenn der Präprozessor eine ReplicationException auslöst. Kann mir jemand auf den Code verweisen, der die Fehlermeldung tatsächlich anzeigt?AEM - Wie Aktivierung Aktivierung Fehlermeldung

+0

Könnten Sie bitte weitere Details hinzufügen, was Sie getan haben –

+0

Ich habe eine Klasse erstellt, die die Schnittstelle com.day.cq.replication.Preprocessor implementiert. Es wird von AEM als Teil des Aktivierungsprozesses aufgerufen und löst eine RepositoryException aus, wenn es keine bestimmten Attribute findet. Dies stoppt die Aktivierung und zeigt dem Benutzer eine Nachricht an, aber ich möchte die angezeigte Nachricht ändern und weiß nicht, wo sie tatsächlich generiert wurde. – rnolen

Antwort

0

Wir haben einige Funktionen in SiteAdmin.Actions.js übersteuert. Kopieren Sie es aus libs Ordner /apps/cq/ui/widgets/source/widgets/wcm/SiteAdmin.Actions.js oder verwenden CQ.Ext.override

Wir CQ.wcm.SiteAdmin.scheduleForActivation und CQ.wcm.SiteAdmin.internalActivatePage Methoden außer Kraft setzen müssen.

Wir tun es mit dem folgenden Code

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 
    ); 
}; 

Dieser Weg /apps/sling/servlet/content/preActivateValidator.html (Sie anderen Link und Erweiterung verwenden können) gibt json mit einigen Informationen über Nachrichten, die in benutzerdefinierter Methode analysiert werden und erzeugen individuelle Fehler CQ.wcm.SiteAdmin.preactivateMessage Nachrichten:

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)); 
} 

So können Sie Komponente oder Servlet implementieren, die Ihre Attribute überprüfen und wird JSON generieren.

+0

Ich schaue mir das an. Danke für die Antwort! – rnolen