Anpassa webbplatskonsolen (Classic UI) customizing-the-websites-console-classic-ui
Lägga till en anpassad kolumn i webbplatskonsolen (siteadmin) adding-a-custom-column-to-the-websites-siteadmin-console
Konsolen Administrera webbplatser kan utökas till att visa anpassade kolumner. Konsolen byggs baserat på ett JSON-objekt som kan utökas genom att skapa en OSGI-tjänst som implementerar ListInfoProvider
gränssnitt. En sådan tjänst ändrar JSON-objektet som skickas till klienten för att bygga konsolen.
I den här stegvisa självstudiekursen beskrivs hur du visar en ny kolumn i administrationskonsolen för webbplatser genom att implementera ListInfoProvider
gränssnitt. Det består av följande steg:
- Skapa OSGI-tjänsten och distribuera paketet som innehåller det till AEM.
- (valfritt) Testa den nya tjänsten genom att utfärda ett JSON-anrop för att begära JSON-objektet som används för att skapa konsolen.
- Visa den nya kolumnen genom att utöka nodstrukturen för konsolen i databasen.
- Digital Assets-konsolen
- Community-konsolen
Skapa OSGI-tjänsten creating-the-osgi-service
The ListInfoProvider
gränssnittet definierar två metoder:
updateListGlobalInfo
, för att uppdatera globala egenskaper för listan,updateListItemInfo
, för att uppdatera ett listobjekt.
Argumenten för båda metoderna är:
request
, det associerade Sling HTTP-begäranobjektet,info
, det JSON-objekt som ska uppdateras, som är den globala listan eller det aktuella listobjektet.resource
, en Sling-resurs.
Exempelimplementeringen nedan:
-
Lägger till en stjärnad egenskapen för varje objekt, som
true
om sidnamnet börjar med e ochfalse
i annat fall. -
Lägger till en starredCount som är global för listan och innehåller antalet stjärnlistobjekt.
Så här skapar du OSGI-tjänsten:
- I CRXDE Lite skapa ett paket.
- Lägg till exempelkoden nedan.
- Bygg paketet.
Den nya tjänsten körs.
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"));
}
}
}
- Implementeringen bör, baserat på den angivna begäran och/eller resursen, avgöra om den ska lägga till informationen till JSON-objektet eller inte.
- Om
ListInfoProvider
implementeringen definierar en egenskap som redan finns i svarsobjektet. Dess värde skrivs över av den som du anger.
Du kan använda rangordning av tjänster för att hantera körningsordningen för fleraListInfoProvider
implementeringar.
Testa den nya tjänsten testing-the-new-service
När du öppnar administrationskonsolen för webbplatser och bläddrar igenom webbplatsen skickar webbläsaren ett ajax-anrop för att hämta JSON-objektet som används för att skapa konsolen. Om du till exempel bläddrar till /content/geometrixx
mapp skickas följande begäran till AEM server för att bygga konsolen:
http://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin
Så här kontrollerar du att den nya tjänsten körs efter att du har distribuerat paketet som innehåller den:
-
Peka webbläsaren på följande URL:
http://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin
-
Svaret ska visa de nya egenskaperna enligt följande:
Visa den nya kolumnen displaying-the-new-column
Det sista steget består i att anpassa nodstrukturen i administrationskonsolen för webbplatser så att den nya egenskapen för alla Geometrixx visas genom att täcka över /libs/wcm/core/content/siteadmin
. Gör så här:
-
Skapa nodstrukturen i CRXDE Lite
/apps/wcm/core/content
med noder av typensling:Folder
återspegla strukturen/libs/wcm/core/content
. -
Kopiera noden
/libs/wcm/core/content/siteadmin
och klistra in den nedan/apps/wcm/core/content
. -
Kopiera noden
/apps/wcm/core/content/siteadmin/grid/assets
till/apps/wcm/core/content/siteadmin/grid/geometrixx
och ändrar dess egenskaper:-
Ta bort pageText
-
Ange pathRegex till
/content/geometrixx(/.*)?
Detta gör att stödrasterkonfigurationen blir aktiv för alla geometrixx-webbplatser.
-
Ange storeProxySuffix till
.pages.json
-
Redigera storeReaderFields flervärdesegenskap och lägg till
starred
värde. -
Om du vill aktivera MSM-funktioner lägger du till följande MSM-parametrar i egenskapen multi-String storeReaderFields:
- msm:isSource
- msm:isInBlueprint
- msm:isLiveCopy
-
-
Lägg till en
starred
nod (av typ nt:ostrukturerad) nedan/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
med följande egenskaper:- dataIndex:
starred
av typen String - header:
Starred
av typen String - xtype:
gridcolumn
av typen String
- dataIndex:
-
(valfritt) Släpp de kolumner som du inte vill visa vid
/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
-
/siteadmin
är en mållös bana som som standard pekar på/libs/wcm/core/content/siteadmin
.Om du vill dirigera om den här till din version av siteadmin på
/apps/wcm/core/content/siteadmin
definiera egenskapensling:vanityOrder
att ha ett värde som är högre än det som definierats på/libs/wcm/core/content/siteadmin
. Standardvärdet är 300, så allt högre är lämpligt. -
Gå till administrationskonsolen för webbplatser och navigera till Geometrixx:
-
Den nya kolumnen anropades Started är tillgängligt och visar anpassad information enligt följande:
Exempelpaket sample-package
Resultatet av den här självstudiekursen finns i Anpassa administrationskonsolen för webbplatser paket på paketresurs.