Anpassen der Websites-Konsole (klassische Benutzeroberfläche) customizing-the-websites-console-classic-ui
Hinzufügen einer benutzerdefinierten Spalte zur Websites-(SiteAdmin)-Konsole. adding-a-custom-column-to-the-websites-siteadmin-console
Die Websites-Administrationskonsole kann um die Anzeige benutzerdefinierter Spalten erweitert werden. Die Konsole basiert auf einem JSON-Objekt, das erweitert werden kann, indem ein OSGi-Dienst erstellt wird, der die Schnittstelle ListInfoProvider implementiert. Ein solcher Dienst modifiziert das JSON-Objekt, das an den Client gesendet wird, um die Konsole zu erstellen.
In diesem Schritt-für-Schritt-Tutorial wird erläutert, wie Sie eine neue Spalte in der Websites-Administrationskonsole anzeigen, indem Sie die Schnittstelle ListInfoProvider implementieren. Es besteht aus folgenden Schritten:
- Erstellen des OSGi-Dienstes und Bereitstellen des Pakets, das ihn enthält, auf dem AEM-Server.
- (Optional) Testen des neuen Dienstes durch Ausgabe eines JSON-Aufrufs, um das JSON-Objekt anzufordern, das zum Erstellen der Konsole verwendet wird.
- Anzeigen der neuen Spalte durch Erweitern der Knotenstruktur der Konsole im Repository
- die Digital Assets-Konsole
- die Community-Konsole
Erstellen von OSGi-Diensten creating-the-osgi-service
Die Schnittstelle ListInfoProvider definiert zwei Methoden:
updateListGlobalInfo, um die globalen Eigenschaften der Liste zu aktualisieren,updateListItemInfo, um ein einzelnes Listenelement zu aktualisieren.
Die Argumente für beide Methoden lauten:
request, das zugeordnete Sling-HTTP-Anforderungsobjekt,info, das zu aktualisierende JSON-Objekt, bei dem es sich um die globale Liste bzw. das aktuelle Listenelement handelt,resource, eine Sling-Ressource.
Es folgt eine Beispielimplementierung unten:
-
Es wird eine Eigenschaft starred für jedes Element hinzugefügt, deren Wert auf
truefestgelegt ist, wenn der Seitenname mit e beginnt. Andernfalls ist der Wert auffalsefestgelegt. -
Es wird die Eigenschaft starredCount hinzugefügt, die für die Liste global ist und die Anzahl der markierten Listenelemente enthält.
So erstellen Sie den OSGi-Dienst:
- Erstellen Sie ein Bundle in CRXDE Lite.
- Fügen Sie den Beispiel-Code unten hinzu.
- Erstellen Sie das Bundle.
Der neue Dienste wird ordnungsgemäß ausgeführt.
package com.test;
import com.day.cq.commons.ListInfoProvider;
import com.day.cq.i18n.I18n;
import com.day.cq.wcm.api.Page;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
@Component(metatype = false)
@Service(value = ListInfoProvider.class)
public class StarredListInfoProvider implements ListInfoProvider {
private int count = 0;
public void updateListGlobalInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
info.put("starredCount", count);
count = 0; // reset for next execution
}
public void updateListItemInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
Page page = resource.adaptTo(Page.class);
if (page != null) {
// Consider starred if page name starts with 'e'
boolean starred = page.getName().startsWith("e");
if (starred) {
count++;
}
I18n i18n = new I18n(request);
info.put("starred", starred ? i18n.get("Yes") : i18n.get("No"));
}
}
}
- Ihre Implementierung sollte anhand der bereitgestellten Anforderung und/oder Ressource bestimmen, ob die Informationen zum JSON-Objekt hinzugefügt werden sollen.
- Wenn Ihre
ListInfoProvider-Implementierung eine Eigenschaft definiert, die bereits im Antwortobjekt vorhanden ist, wird ihr Wert durch den von Ihnen angegebenen Wert überschrieben.
ListInfoProvider Implementierungen zu verwalten.Testen des neuen Dienstes testing-the-new-service
Wenn Sie die Websites-Administrationskonsole öffnen und Ihre Site durchsuchen, gibt der Browser einen Ajax-Aufruf aus, um das JSON-Objekt abzurufen, das zum Erstellen der Konsole verwendet wird. Wenn Sie beispielsweise zum Ordner /content/geometrixx navigieren, wird die folgende Anforderung an den AEM-Server gesendet, um die Konsole zu erstellen:
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=SiteAdmin
Gehen Sie wie folgt vor, um sicherzustellen, dass der neue Dienst nach der Bereitstellung des Bundles, das ihn enthält, ausgeführt wird:
-
Lassen Sie Ihren Browser auf die folgende URL verweisen:
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=SiteAdmin -
Die Antwort sollte die neuen Eigenschaften wie folgt anzeigen:
Anzeigen neuer Spalten displaying-the-new-column
Der letzte Schritt besteht darin, die Knotenstruktur der Websites-Administrationskonsole so anzupassen, dass die neue Eigenschaft für alle Geometrixx-Seiten durch Überlagerung von /libs/wcm/core/content/siteadmin angezeigt wird. Gehen Sie wie folgt vor:
-
Erstellen Sie in CRXDE Lite die Knotenstruktur
/apps/wcm/core/contentmit Knoten des Typssling:Folder, um die Struktur/libs/wcm/core/contentwiderzuspiegeln. -
Kopieren Sie den Knoten
/libs/wcm/core/content/siteadminund fügen Sie ihn unter/apps/wcm/core/contentein. -
Kopieren Sie den Knoten
/apps/wcm/core/content/siteadmin/grid/assetsnach/apps/wcm/core/content/siteadmin/grid/geometrixxund ändert seine Eigenschaften:-
Entfernen Sie pageText.
-
Legen pathRegex auf fest.
/content/geometrixx(/.*)?
Dadurch ist die Rasterkonfiguration für alle Geometrixx-Websites aktiviert. -
Legen Sie storeProxySuffix auf
.pages.jsonfest -
Bearbeiten Sie die mehrwertige Eigenschaft storeReaderFields und fügen Sie den Wert
starredhinzu. -
Um die MSM-Funktion zu aktivieren, fügen Sie die folgenden MSM-Parameter zu der aus mehreren Zeichenfolgen bestehenden Eigenschaft storeReaderFields hinzu:
- MSM:isSource
- MSM:isInBlueprint
- MSM:isLiveCopy
-
-
Fügen Sie einen
starredKnoten (vom Typ nt:unstructured) unter/apps/wcm/core/content/siteadmin/grid/geometrixx/columnsmit den folgenden Eigenschaften hinzu:-
dataIndex:
starreddes Typs „String“ -
header:
Starreddes Typs „String“ -
xtype:
gridcolumndes Typs „String“
-
-
(optional) Verschieben Sie die Spalten, die Sie nicht anzeigen möchten, per Drag-and-Drop nach
/apps/wcm/core/content/siteadmin/grid/geometrixx/columns -
/siteadminist ein Vanity-Pfad, der standardmäßig auf/libs/wcm/core/content/siteadminverweist.
Um diesen an Ihre Version von siteadmin auf/apps/wcm/core/content/siteadminumzuleiten, definieren Sie die Eigenschaftsling:vanityOrderso, dass sie einen höheren Wert aufweist, als auf/libs/wcm/core/content/siteadmindefiniert. Der Standardwert ist 300, daher sind alle höheren Werte geeignet. -
Wechseln Sie zu Websites-Administrationskonsole und navigieren Sie zur folgenden Geometrixx-Website:
https://localhost:4502/siteadmin#/content/geometrixx. -
Die neue Spalte Starred ist nun verfügbar und zeigt benutzerdefinierte Informationen wie folgt an:
Beispielpaket sample-package
Das Ergebnis dieses Tutorials ist im Paket Anpassen der Website-Administrationskonsole bei Package Share verfügbar.