Show Menu
ARGOMENTI×

Personalizzazione della console Siti Web (interfaccia classica)

Aggiunta di una colonna personalizzata alla console Siti Web (siteadmin)

La console Amministrazione siti Web può essere estesa per visualizzare colonne personalizzate. La console è basata su un oggetto JSON che può essere esteso creando un servizio OSGI che implementa l' ListInfoProvider interfaccia. Tale servizio modifica l'oggetto JSON inviato al client per creare la console.
Questa esercitazione passo-passo spiega come visualizzare una nuova colonna nella console Amministrazione siti Web implementando l’ ListInfoProvider interfaccia. È costituito dai seguenti passaggi:
  1. Creazione del servizio OSGI e implementazione del bundle che lo contiene nel server AEM.
  2. (facoltativo) Verifica del nuovo servizio mediante una chiamata JSON per richiedere l’oggetto JSON utilizzato per creare la console.
  3. Visualizzazione della nuova colonna estendendo la struttura dei nodi della console nella directory archivio.
Questa esercitazione può essere utilizzata anche per estendere le seguenti console di amministrazione:
  • la console Risorse digitali
  • la console Community

Creazione del servizio OSGI

L' ListInfoProvider interfaccia definisce due metodi:
  • updateListGlobalInfo , per aggiornare le proprietà globali dell'elenco,
  • updateListItemInfo , per aggiornare una singola voce di elenco.
Gli argomenti di entrambi i metodi sono:
  • request , l'oggetto di richiesta Sling HTTP associato,
  • info , l'oggetto JSON da aggiornare, che è rispettivamente l'elenco globale o la voce di elenco corrente,
  • resource , una risorsa Sling.
Esempio di implementazione:
  • Aggiunge una proprietà Starred per ogni elemento, ossia true se il nome della pagina inizia con un e , false altrimenti.
  • Aggiunge una proprietà starredCount , che è globale per l'elenco e contiene il numero di elementi dell'elenco di destinazione.
Per creare il servizio OSGI:
  1. In CRXDE Lite, create un bundle .
  2. Aggiungete il codice di esempio seguente.
  3. Create il bundle.
Il nuovo servizio è attivo e funzionante.
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"));
        }
    }

}

  • In base alla richiesta e/o alla risorsa fornita, l'implementazione deve decidere se aggiungere o meno le informazioni all'oggetto JSON.
  • Se l' ListInfoProvider implementazione definisce una proprietà già esistente nell'oggetto response, il relativo valore verrà sovrascritto da quello fornito. Potete utilizzare la classificazione del servizio per gestire l'ordine di esecuzione di più ListInfoProvider implementazioni.

Verifica del nuovo servizio

Quando aprite la console di amministrazione dei siti Web e sfogliate il sito, il browser esegue una chiamata ajax per ottenere l’oggetto JSON utilizzato per creare la console. Ad esempio, quando individuate la /content/geometrixx cartella, la seguente richiesta viene inviata al server AEM per creare la console:
Per essere certi che il nuovo servizio sia in esecuzione dopo aver distribuito il pacchetto che lo contiene:
  1. La risposta deve visualizzare le nuove proprietà come segue:

Visualizzazione della nuova colonna

L’ultimo passaggio consiste nell’adattare la struttura dei nodi della console Amministrazione siti Web per visualizzare la nuova proprietà per tutte le pagine Geometrixx sovrapponendo /libs/wcm/core/content/siteadmin . Procedere come segue:
  1. In CRXDE Lite, create la struttura dei nodi /apps/wcm/core/content con nodi di tipo sling:Folder per riflettere la struttura /libs/wcm/core/content .
  2. Copiare il nodo /libs/wcm/core/content/siteadmin e incollarlo sotto /apps/wcm/core/content .
  3. Copia il nodo /apps/wcm/core/content/siteadmin/grid/assets in /apps/wcm/core/content/siteadmin/grid/geometrixx e ne modifica le proprietà:
    • Rimuovi pageText
    • Impostate pathRegex su /content/geometrixx(/.*)? Questo rende attiva la configurazione della griglia per tutti i siti Web geometrixx.
    • Imposta storeProxySuffix su .pages.json
    • Modificare la proprietà multivalore storeReaderFields e aggiungere il starred valore.
    • Per attivare la funzionalità MSM, aggiungere i seguenti parametri MSM alla proprietà multi-String storeReaderFields :
      • msm:isSource
      • msm:isInBlueprint
      • msm:isLiveCopy
  4. Aggiungi un starred nodo (di tipo nt:unstructure ) di seguito /apps/wcm/core/content/siteadmin/grid/geometrixx/columns con le seguenti proprietà:
    • dataIndex : starred di tipo String
    • intestazione : Starred di tipo String
    • xtype : gridcolumn di tipo String
  5. (facoltativo) Rilasciare le colonne sulle quali non si desidera visualizzare /apps/wcm/core/content/siteadmin/grid/geometrixx/columns
  6. /siteadmin è un percorso personalizzato che, come impostazione predefinita, punta a /libs/wcm/core/content/siteadmin . Per reindirizzare questa opzione alla versione dell'amministratore del sito, /apps/wcm/core/content/siteadmin definire la proprietà sling:vanityOrder con un valore superiore a quello definito in /libs/wcm/core/content/siteadmin . Il valore predefinito è 300, quindi è adatto qualsiasi valore superiore.
  7. Passate alla console Amministrazione siti Web e andate al sito Geometrixx: https://localhost:4502/siteadmin#/content/geometrixx .
  8. È disponibile la nuova colonna Starred , con le seguenti informazioni personalizzate:
Se più configurazioni della griglia corrispondono al percorso richiesto definito dalla proprietà pathRegex , verrà utilizzato il primo, e non il più specifico, il che significa che l'ordine delle configurazioni è importante.

Pacchetto di esempio

Il risultato di questa esercitazione è disponibile nel pacchetto Personalizzazione della console di amministrazione dei siti Web su Condivisione pacchetti.