Show Menu
ARGOMENTI×

Extend Asset Editor

Editor risorse è la pagina che si apre quando si fa clic su una risorsa reperibile tramite Condivisione risorse per consentire all’utente di modificare tali aspetti della risorsa come metadati, miniature, titoli e tag.
La configurazione dell’editor mediante i componenti di modifica predefiniti è descritta in Creazione e configurazione di una pagina Editor risorse.
Oltre a utilizzare componenti editor preesistenti, gli sviluppatori Adobe Experience Manager possono anche creare i propri componenti.

Creare un modello di Editor risorse

In Geometrixx sono incluse le seguenti pagine di esempio:
  • Pagina campione Geometrixx: /content/geometrixx/en/press/asseteditor.html
  • Modello di esempio: /apps/geometrixx/templates/asseteditor
  • Esempio di componente pagina: /apps/geometrixx/components/asseteditor

Configura Clientlib

I componenti Assets utilizzano un'estensione della clientlib di modifica WCM. I clientlibs solitamente sono caricati in init.jsp .
Rispetto al caricamento clientlib predefinito (nei core init.jsp ), un modello di risorse deve avere i seguenti elementi:
  • Il modello deve includere la cq.dam.edit clientlib (invece di cq.wcm.edit ).
  • Per poter eseguire il rendering di predicati, azioni e obiettivi, clientlib deve essere incluso anche in modalità WCM disabilitata (ad esempio, caricata al momento della pubblicazione ).
Nella maggior parte dei casi, la copia del campione esistente init.jsp ( /apps/geometrixx/components/asseteditor/init.jsp ) deve soddisfare tali esigenze.

Configurare le azioni JS

Alcuni dei componenti Risorse richiedono funzioni JS definite in component.js . Copiate questo file nella directory dei componenti e collegatelo.
<script type="text/javascript" src="<%= component.getPath() %>/component.js"></script>

L'esempio carica questa origine javascript in head.jsp ( /apps/geometrixx/components/asseteditor/head.jsp ).

Fogli di stile aggiuntivi

Alcuni dei componenti Risorse utilizzano la libreria widget. Per poter eseguire correttamente il rendering nel contesto del contenuto, è necessario caricare un foglio di stile aggiuntivo. Il componente azione tag richiede un altro componente.
<link href="/etc/designs/geometrixx/ui.widgets.css" rel="stylesheet" type="text/css">

Foglio di stile Geometrixx

I componenti della pagina di esempio richiedono che tutti i selettori inizino con .asseteditor il static.css ( /etc/designs/geometrixx/static.css ). Procedura consigliata: Copiare tutti .asseteditor i selettori nel foglio di stile e regolare le regole come desiderato.

FormChooser: Adeguamenti delle risorse eventualmente caricate

L’Editor risorse utilizza il Selettore moduli, che consente di modificare le risorse, in questo caso le risorse, nella stessa pagina del modulo semplicemente aggiungendo all’URL della risorsa un selettore di modulo e il percorso del modulo.
Ad esempio:
Le maniglie del campione in head.jsp ( /apps/geometrixx/components/asseteditor/head.jsp ) eseguono le seguenti operazioni:
  • Rilevano se una risorsa è caricata o se è necessario visualizzare il modulo normale.
  • Se una risorsa viene caricata, questa disattiva la modalità WCM come parsys e può essere modificata solo in una pagina di modulo normale.
  • Se una risorsa viene caricata, utilizza il titolo invece di quello nella pagina del modulo.
 List<Resource> resources = FormsHelper.getFormEditResources(slingRequest);
    if (resources != null) {
        if (resources.size() == 1) {
            // single resource
            FormsHelper.setFormLoadResource(slingRequest, resources.get(0));
        } else if (resources.size() > 1) {
            // multiple resources
            // not supported by CQ 5.3
        }
    }
    Resource loadResource = (Resource) request.getAttribute("cq.form.loadresource");
    String title;
    if (loadResource != null) {
        // an asset is loaded: disable WCM
        WCMMode.DISABLED.toRequest(request);

        String path = loadResource.getPath();
        Asset asset = loadResource.adaptTo(Asset.class);
        try {
            // it might happen that the adobe xmp lib creates an array
            Object titleObj = asset.getMetadata("dc:title");
            if (titleObj instanceof Object[]) {
                Object[] titleArray = (Object[]) titleObj;
                title = (titleArray.length > 0) ? titleArray[0].toString() : "";
            } else {
                title = titleObj.toString();
            }
        }
        catch (NullPointerException e) {
            title = path.substring(path.lastIndexOf("/") + 1);
        }
    }
    else {
        title = currentPage.getTitle() == null ? currentPage.getName() : currentPage.getTitle();
    }

Nella parte HTML, utilizzate il set di titoli precedente (risorsa o titolo della pagina):
<title><%= title %></title>

Creare un componente Campo modulo semplice

Questo esempio descrive come creare un componente che mostri e visualizzi i metadati di una risorsa caricata.
  1. Create una cartella di componenti nella directory dei progetti, ad esempio /apps/geometrixx/components/samplemeta .
  2. Aggiungi content.xml con il seguente snippet:
    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="https://sling.apache.org/jcr/sling/1.0" xmlns:cq="https://www.day.com/jcr/cq/1.0" xmlns:jcr="https://www.jcp.org/jcr/1.0"
        jcr:primaryType="cq:Component"
        jcr:title="Image Dimension"
        sling:resourceSuperType="foundation/components/parbase"
        allowedParents="[*/parsys]"
        componentGroup="Asset Editor"/>
    
    
  3. Aggiungi samplemeta.jsp con il seguente snippet:
    <%--
    
      Sample metadata field component
    
    --%><%@ page import="com.day.cq.dam.api.Asset,
                     java.security.AccessControlException" %><%
    %><%@include file="/libs/foundation/global.jsp"%><%
    
        String value = "";
        String name = "dam:sampleMetadata";
        boolean readOnly = false;
    
        // If the form page is requested for an asset loadResource will be the asset.
        Resource loadResource = (Resource) request.getAttribute("cq.form.loadresource");
    
        if (loadResource != null) {
    
            // Determine if the loaded asset is read only.
            Session session = slingRequest.getResourceResolver().adaptTo(Session.class);
            try {
                session.checkPermission(loadResource.getPath(), "set_property");
                readOnly = false;
            }
            catch (AccessControlException ace) {
                // checkPermission throws exception if asset is read only
                readOnly = true;
            }
            catch (RepositoryException re) {}
    
            // Get the value of the metadata.
            Asset asset = loadResource.adaptTo(Asset.class);
            try {
                value = asset.getMetadata(name).toString();
            }
            catch (NullPointerException npe) {
                // no metadata dc:description available
            }
        }
    %>
    <div class="form_row">
        <div class="form_leftcol">
            <div class="form_leftcollabel">Sample Metadata</div>
        </div>
        <div class="form_rightcol">
            <%
            if (readOnly) {
                %><c:out value="<%= value %>"/><%
            }
            else {
                %><input class="text" type="text" name="./jcr:content/metadata/<%= name %>" value="<c:out value="<%= value %>" />"><%
            }%>
        </div>
    </div>
    
    
  4. Per rendere disponibile il componente, devi essere in grado di modificarlo. To make a component editable, in CRXDE Lite, add a node cq:editConfig of primary type cq:EditConfig . Per rimuovere i paragrafi, aggiungi una proprietà con più valori cq:actions che presenta un singolo valore DELETE .
  5. Passate al browser e sulla pagina di esempio (ad esempio, asseteditor.html ) passate alla modalità di progettazione e attivate il nuovo componente per il sistema di paragrafi.
  6. Nella modalità Modifica , il nuovo componente, ad esempio, Metadati campione , è ora disponibile nella barra laterale (gruppo Editor risorse ). Inserisci il componente. Per memorizzare i metadati, è necessario aggiungerli al modulo relativo.

Modificare le opzioni di metadati

È possibile modificare gli spazi dei nomi disponibili nel modulo di metadati.
I metadati attualmente disponibili sono definiti in /libs/dam/options/metadata :
  • Il primo livello all'interno di questa directory contiene gli spazi dei nomi.
  • Gli elementi all'interno di ogni namespace rappresentano un metadati, ad esempio un elemento parte locale.
  • Il contenuto dei metadati contiene le informazioni relative al tipo e alle opzioni multivalore.
Le opzioni possono essere sovrascritte in /apps/dam/options/metadata :
  1. Copiate la directory da /libs a /apps .
  2. Rimuovere, modificare o aggiungere elementi.
Se si aggiungono nuovi spazi dei nomi, questi devono essere registrati nella directory archivio/CRX. In caso contrario, l'invio del modulo di metadati causerà un errore.