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 en OSGI-tjänst skapas som implementerar ListInfoProvider
-gränssnittet. En sådan tjänst ändrar JSON-objektet som skickas till klienten för att bygga konsolen.
I den här steg-för-steg-självstudiekursen beskrivs hur du visar en ny kolumn i administrationskonsolen för webbplatser genom att implementera gränssnittet ListInfoProvider
. Det består av följande steg:
- Skapar OSGI-tjänsten och distribuerar det paket som innehåller den till AEM.
- (valfritt) Testar 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.
- Visar den nya kolumnen genom att utöka nodstrukturen för konsolen i databasen.
- Assets Digital Console
- Community-konsolen
Skapa OSGI-tjänsten creating-the-osgi-service
Gränssnittet ListInfoProvider
definierar två metoder:
updateListGlobalInfo
, om du vill uppdatera globala egenskaper för listan,updateListItemInfo
, om du vill uppdatera ett listobjekt.
Argumenten för båda metoderna är:
request
, det associerade Sling HTTP-begäranobjektet,info
, JSON-objektet som ska uppdateras, vilket är den globala listan eller det aktuella listobjektet,resource
, en Sling-resurs.
Exempelimplementeringen är nedan:
-
Lägger till en stjärnröd-egenskap för varje objekt, vilket är
true
om sidnamnet börjar med e ochfalse
i annat fall. -
Lägger till en starredCount -egenskap som är global för listan och innehåller antalet stjärnlistobjekt.
Så här skapar du OSGI-tjänsten:
- I CRXDE Lite skapar du 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 implementeringen av
ListInfoProvider
definierar en egenskap som finns i svarsobjektet skrivs dess värde över av den egenskap du anger.Du kan använda tjänstrankning för att hantera körningsordningen för flera
ListInfoProvider
-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 mappen /content/geometrixx
skickas följande begäran till AEM för att skapa konsolen:
https://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:
https://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:
-
I CRXDE Lite skapar du nodstrukturen
/apps/wcm/core/content
med noder av typensling:Folder
för att spegla strukturen/libs/wcm/core/content
. -
Kopiera noden
/libs/wcm/core/content/siteadmin
och klistra in den under/apps/wcm/core/content
. -
Kopiera noden
/apps/wcm/core/content/siteadmin/grid/assets
till/apps/wcm/core/content/siteadmin/grid/geometrixx
och ändra dess egenskaper:-
Ta bort pageText
-
Ange pathRegex till
/content/geometrixx(/.*)?
Detta gör att stödrasterkonfigurationen är aktiv för alla Geometrixx. -
Ange storeProxySuffix till
.pages.json
-
Redigera flervärdesegenskapen storeReaderFields och lägg till värdet
starred
. -
Om du vill aktivera MSM-funktioner lägger du till följande MSM-parametrar i multi-String-egenskapen storeReaderFields:
- msm:isSource
- msm:isInBlueprint
- msm:isLiveCopy
-
-
Lägg till en
starred
-nod (av typen nt:unsigned) nedanför/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
-
-
(valfritt) Släpp de kolumner som du inte vill visa på
/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
-
/siteadmin
är en vanlighetssökväg som som standard pekar på/libs/wcm/core/content/siteadmin
.
Om du vill omdirigera detta till din version av platsadmin på/apps/wcm/core/content/siteadmin
definierar du egenskapensling:vanityOrder
så att den har ett högre värde ä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:
https://localhost:4502/siteadmin#/content/geometrixx. -
Den nya kolumnen Starred är tillgänglig och visar anpassad information enligt följande:
Exempelpaket sample-package
Resultatet av den här självstudiekursen finns i Anpassa paketet Administrationskonsol för webbplatser på paketresursen.