Anpassa webbplatskonsolen (Classic UI)

Lägga till en anpassad kolumn i webbplatskonsolen (siteadmin)

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 gränssnittet ListInfoProvider. 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 gränssnittet ListInfoProvider. Det består av följande steg:

  1. Skapa OSGI- tjänsten och distribuera paketet som innehåller det till AEM.
  2. (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.
  3. Visa den nya kolumnen genom att utöka nodstrukturen för konsolen i databasen.
OBSERVERA

Den här självstudiekursen kan även användas för att utöka följande administrationskonsoler:

  • Digital Assets-konsolen
  • Community-konsolen

Skapar OSGI-tjänsten

Gränssnittet ListInfoProvider 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 startad-egenskap för varje objekt, vilket är true om sidnamnet börjar med e och i annat fall false.

  • 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:

  1. I CRXDE Lite skapar du ett paket.
  2. Lägg till exempelkoden nedan.
  3. 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"));
        }
    }

}
FÖRSIKTIGHET
  • 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 din ListInfoProvider-implementering definierar en egenskap som redan finns i svarsobjektet, skrivs dess värde över av den du anger.

    Du kan använda rankning för att hantera körningsordningen för flera ListInfoProvider-implementeringar.

Testar den nya tjänsten

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 den AEM servern 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:

  1. Peka webbläsaren på följande URL:
    https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin

  2. Svaret ska visa de nya egenskaperna enligt följande:

screen_shot_2012-02-13at163046

Visar den nya kolumnen

Det sista steget är att anpassa nodstrukturen i administrationskonsolen för webbplatser så att den nya egenskapen för alla Geometrixx visas genom att åsidosätta /libs/wcm/core/content/siteadmin. Gör så här:

  1. I CRXDE Lite skapar du nodstrukturen /apps/wcm/core/content med noder av typen sling:Folder så att strukturen /libs/wcm/core/content återspeglas.

  2. Kopiera noden /libs/wcm/core/content/siteadmin och klistra in den under /apps/wcm/core/content.

  3. 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 blir aktiv för alla geometrixx-webbplatser.

    • 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 egenskapen multi-String storeReaderFields:

      • msm:isSource
      • msm:isInBlueprint
      • msm:isLiveCopy
  4. 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

  5. (valfritt) Släpp de kolumner som du inte vill visa på /apps/wcm/core/content/siteadmin/grid/geometrixx/columns

  6. /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 siteadmin på /apps/wcm/core/content/siteadmin måste du definiera egenskapen sling: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.

  7. Gå till administrationskonsolen för webbplatser och navigera till Geometrixx:
    https://localhost:4502/siteadmin#/content/geometrixx.

  8. Den nya kolumnen Starred är tillgänglig och visar anpassad information enligt följande:

screen_shot_2012-02-14at104602

FÖRSIKTIGHET

Om flera rutnätskonfigurationer matchar den begärda sökvägen som definieras av egenskapen pathRegex, används den första, och inte den mest specifika, vilket betyder att ordningen på konfigurationerna är viktig.

Exempelpaket

Resultatet av den här självstudiekursen finns i Customizing the Websites Administration Console package on Package Share.

På denna sida