DocumentatieAEM 6.4Handleiding voor ontwikkeling

De Bulk-editor ontwikkelen

Last update: Thu May 04 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
  • Onderwerpen:
  • Developing

Gemaakt voor:

  • Developer
CAUTION
AEM 6.4 heeft het einde van de uitgebreide ondersteuning bereikt en deze documentatie wordt niet meer bijgewerkt. Raadpleeg voor meer informatie onze technische ondersteuningsperioden. Ondersteunde versies zoeken hier.

Deze sectie beschrijft hoe te om het bulkredacteurshulpmiddel te ontwikkelen en hoe te om de component van de Lijst van het Product uit te breiden, die op de bulkredacteur gebaseerd is.

Query-parameters voor de bulkeditor

Wanneer het werken met de bulkredacteur, zijn er verscheidene vraagparameters die u aan URL kunt toevoegen om de bulkredacteur met een specifieke configuratie te roepen. Als u de bulkredacteur altijd met een bepaalde configuratie wilt worden gebruikt, bijvoorbeeld, zoals in de component van de Lijst van het Product, dan moet u bulkeditor.jsp (die in /libs/wcm/core/components/bulkeditor wordt gevestigd) wijzigen of een component met de specifieke configuratie tot stand brengen. Wijzigingen die zijn aangebracht met behulp van queryparameters zijn niet permanent.

Als u bijvoorbeeld het volgende in de URL van uw browser typt:

https://<servername><port_number>/etc/importers/bulkeditor.html?rootPath=/content/geometrixx/en&queryParams=geometrixx&initialSearch=true&hrp=true

de bulkredacteur toont zonder Hoofdpad veld als hrp=true verbergt het veld. Met de parameter hrp=false wordt het veld weergegeven (de standaardwaarde).

Hier volgt een lijst met de queryparameters voor bulkeditors:

NOTE
Elke parameter kan een lange en een korte naam hebben. De lange naam voor het hoofdpad van de zoekopdracht is bijvoorbeeld rootPathDe korte is rp. Als de lange naam niet wordt bepaald, wordt korte gelezen van het verzoek.

Parameter

(lange naam / korte naam)

Type
Beschrijving
rootPath / rp
String
zoekhoofdpad
queryParams / qp
String
zoekquery
contentMode / cm
Boolean
indien waar (true), wordt de inhoudsmodus ingeschakeld
colsValue / cv
String[]
gezochte eigenschappen (gecontroleerde waarden van colsSelection weergegeven als checkboxes)
extraCols / ec
String[]
extra gezochte eigenschappen (die in een komma-gescheiden tekstgebied worden getoond)
initialSearch / is
Boolean
indien waar (true), wordt de query uitgevoerd bij het laden van de pagina
colsSelection / cs
String[]
selectie van gezochte eigenschappen (weergegeven als selectievakjes)
showGridOnly / sgo
Boolean
indien waar (true), alleen het raster en niet het deelvenster Zoeken wordt weergegeven
searchPanelCollapsed / spc
Boolean
indien waar (true), wordt het zoekvenster samengevouwen tijdens het laden
hideRootPath / hrp
Boolean
indien waar (true), wordt het veld van het hoofdpad verborgen
hideQueryParams / hqp
Boolean
indien waar (true), wordt het queryveld verborgen
hideContentMode / hcm
Boolean
indien waar (true), wordt het veld voor de inhoudsmodus verborgen
hideColsSelection / hcs
Boolean
indien waar (true), wordt het selectieveld voor kolommen verborgen
hideExtraCols / hec
Boolean
indien waar (true), wordt het veld Extra kolommen verborgen
hideSearchButton
Boolean
indien waar (true), wordt de zoekknop verborgen
hideSaveButton / hsavep
Boolean
indien waar (true), wordt de knop Opslaan verborgen
hideExportButton / hexpb
Boolean
indien waar (true), wordt de knop Exporteren verborgen
hideImportButton / hib
Boolean
indien waar (true), wordt de knop Importeren verborgen
hideResultNumber / hrn
Boolean
indien waar (true), wordt de tekst van het rasterzoekresultaat verborgen
hideInsertButton / hinsertB
Boolean
indien waar (true), wordt de knop voor het invoegen van het raster verborgen
hideDeleteButton / hdelb
Boolean
indien waar (true), wordt de knop voor het verwijderen van het raster verborgen
hidePathCol / hpc
Boolean
indien waar (true), wordt de rasterkolom "pad" verborgen

Een op Bulk Editor gebaseerde component ontwikkelen: de component Productlijst

Deze sectie verstrekt een overzicht van hoe te om de bulkredacteur te gebruiken en geeft een beschrijving van de bestaande die component van de Geometrixx op de bulkredacteur wordt gebaseerd: de component Productlijst.

Met de component Productlijst kunnen gebruikers een tabel met gegevens weergeven en bewerken. U kunt bijvoorbeeld de component Productlijst gebruiken om producten in een catalogus te vertegenwoordigen. De informatie wordt weergegeven in een standaard HTML-tabel en alle bewerkingen worden uitgevoerd in het dialoogvenster Bewerken , die een BulkEditor-widget bevat. (Deze Bulk-editor is precies hetzelfde als de editor die u kunt openen via /etc/importers/bulkeditor.html of via het menu Gereedschappen). De component van de Lijst van het Product is gevormd voor specifieke, beperkte bulkredacteursfunctionaliteit. Elk deel van de bulkredacteur (of componenten die uit de bulkredacteur worden afgeleid) kan worden gevormd.

Met de bulkeditor kunt u de rijen toevoegen, wijzigen, verwijderen, filteren en exporteren, wijzigingen opslaan en een set rijen importeren. Elke rij wordt opgeslagen als een knoop onder de de componenteninstantie van de Lijst van het Product zelf. Elke cel is een eigenschap van elk knooppunt. Dit is een ontwerpkeuze die eenvoudig kan worden gewijzigd. U kunt knooppunten bijvoorbeeld ergens anders in de opslagplaats opslaan. De rol van de vraagserver is de lijst van de knopen terug te keren aan vertoning; het zoekpad wordt gedefinieerd als een instantie van de productlijst.

De broncode van de component Product List is beschikbaar in de gegevensopslagruimte op /apps/geometrixx/components/productlist en bestaat uit verschillende onderdelen, zoals alle AEM:

  • HTML renderen: wordt de rendering uitgevoerd in een JSP-bestand (https://experienceleague.adobe.com/apps/geometrixx/components/productlist/productlist.jsp?lang=nl). JSP leest subnodes van de huidige component van de Lijst van het Product en toont elk van hen als rij van een lijst van HTML.
  • Het dialoogvenster Bewerken waarin u de configuratie van de Bulk-editor definieert. Configureer het dialoogvenster zodat dit voldoet aan de behoeften van de component: beschikbare kolommen en mogelijke acties die worden uitgevoerd op het raster of op de zoekopdracht. Zie configuratieeigenschappen van bulkeditors voor informatie over alle configuratieeigenschappen.

Hier volgt een XML-weergave van de subknooppunten van het dialoogvenster:

        <editor
            jcr:primaryType="cq:Widget"
            colsSelection="[ProductId,ProductName,Color,CatalogCode,SellingSku]"
            colsValue="[ProductId,ProductName,Color,CatalogCode,SellingSku]"
            contentMode="false"
            exportURL="/etc/importers/bulkeditor/export.tsv"
            extraCols="Selection"
            hideColsSelection="false"
            hideContentMode="true"
            hideDeleteButton="false"
            hideExportButton="false"
            hideExtraCols="true"
            hideImportButton="false"
            hideInsertButton="false"
            hideMoveButtons="false"
            hidePathCol="true"
            hideRootPath="true"
            hideSaveButton="false"
            hideSearchButton="false"
            importURL="/etc/importers/bulkeditor/import"
            initialSearch="true"
            insertedResourceType="geometrixx/components/productlist/sku"
            queryParams=""
            queryURL="/etc/importers/bulkeditor/query.json"
            saveURL="/etc/importers/bulkeditor/save"
            xtype="bulkeditor">
            <saveButton
                jcr:primaryType="nt:unstructured"
                text="Save modifications"/>
            <searchButton
                jcr:primaryType="nt:unstructured"
                text="Apply filter"/>
            <queryParamsInput
                jcr:primaryType="nt:unstructured"
                fieldDescription="Enter here your filters"
                fieldLabel="Filters"/>
            <searchPanel
                jcr:primaryType="nt:unstructured"
                height="200">
                <defaults
                    jcr:primaryType="nt:unstructured"
                    labelWidth="150"/>
            </searchPanel>
            <grid
                jcr:primaryType="nt:unstructured"
                height="275"/>
            <store jcr:primaryType="nt:unstructured">
                <sortInfo
                    jcr:primaryType="nt:unstructured"
                    direction="ASC"
                    field="CatalogCode"/>
            </store>
            <colModel
                jcr:primaryType="nt:unstructured"
                width="150"/>
            <colsMetadata jcr:primaryType="nt:unstructured">
                <Selection
                    jcr:primaryType="nt:unstructured"
                    checkbox="true"
                    forcedPosition="0"
                    headerText=""/>
                <ProductId
                    jcr:primaryType="nt:unstructured"
                    cellCls="productlist-cell-productid"
                    headerText="Product Id"/>
                <ProductName
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #FFCC99;"
                    headerText="Product Name"/>
                <CatalogCode
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #EDEDED;"
                    headerText="Catalog Code"/>
                <Color jcr:primaryType="nt:unstructured">
                    <editor
                        jcr:primaryType="nt:unstructured"
                        store="[Blue,Red,Yellow]"
                        triggerAction="all"
                        typeAhead="true"
                        xtype="combo"/>
                </Color>
                <SellingSku
                    jcr:primaryType="nt:unstructured"
                    headerText="Sku Id"/>
            </colsMetadata>
        </editor>

Eigenschappen van Bulkeditor

Elk deel van de bulkredacteur kan worden gevormd. De volgende lijst maakt een lijst van alle configuratieeigenschappen voor de bulkredacteur.

Eigenschapnaam
Definitie
rootPath
Hoofdpad zoeken
queryParams
Zoekquery
contentMode
True to enable content mode: eigenschappen worden gelezen op jcr:content node en niet op search result node
colsValue
Gezochte eigenschappen (gecontroleerde waarden van colsSelection weergegeven als checkboxes)
extraCols
Extra gezochte eigenschappen (weergegeven in een door komma's gescheiden tekstveld)
initialSearch
True to perform query on page load
colsSelection
Selectie van gezochte eigenschappen (weergegeven als selectievakjes)
showGridOnly
True om alleen het raster en niet het zoekdeelvenster weer te geven (vergeet niet om de initialSearch in te stellen op true)
searchPanelCollapsed
Waar (true) om het zoekdeelvenster samen te vouwen, standaard
hideRootPath
Veld van hoofdpad verbergen
hideQueryParams
Zoekveld verbergen
hideContentMode
Veld inhoudsmodus verbergen
hideColsSelection
Selectieveld Kleuren verbergen
hideExtraCols
Extra kolommen verbergen, veld
hideSearchButton
Zoekknop verbergen
hideSaveButton
Knop Opslaan verbergen
hideExportButton
De knop Exporteren verbergen
hideImportButton
Knop Importeren verbergen
hideResultNumber
Tekst van het rasterzoekresultaatnummer verbergen
hideInsertButton
Knop voor rasterinvoeging verbergen
hideDeleteButton
Knop Raster verwijderen verbergen
hidePathCol
Rasterkolom "pad" verbergen
queryURL
Pad naar queryserver
exportURL
Pad naar exportserver
importURL
Pad naar importservlet
insertResourceType
Het type van middel dat aan knoop wordt toegevoegd wanneer een rij wordt opgenomen
saveButton
Knopwidgetconfiguratie opslaan
searchButton
Widget-config voor zoekknop
exportButton
Knopwidget configureren
importButton
Knopwidgetconfiguratie importeren
searchPanel
Widget-configuratie van deelvenster Zoeken
raster
Configuratie van rasterwidget
winkel
Winkelconfiguratie
colModel
Configuratie van rasterkolommodel
rootPathInput
config van hoofdpad-widget
queryParamsInput
queryParams-widget config
contentModeInput
contentMode widget config
colsSelectionInput
colsSelection widget config
extraColsInput
ExtraCols-widget config
colsMetadata

Configuratie van kolommetagegevens. Mogelijke eigenschappen zijn (toegepast op alle cellen van de kolom):

  • cellStyle: html-stijl

  • cellCls: css, klasse

  • readOnly: waar (true) om waarde niet te kunnen wijzigen

  • selectievakje: true om alle cellen van de kolom als selectievakjes te definiëren (waarden true/false)

  • forcePosition: gehele waarde om op te geven waar de kolom in het raster moet worden geplaatst (tussen 0 en het aantal kolommen-1)

Configuratie van kolommetagegevens

U kunt voor elke kolom vormen:

  • weergave-eigenschappen: html-stijl, CSS-klasse en alleen-lezen

  • een selectievakje

  • een geforceerde positie

CSS- en alleen-lezen kolommen

De bulkredacteur heeft drie kolomconfiguraties:

  • CSS-klassenaam van cel (cellCls): een CSS klassennaam die aan elke cel van de gevormde kolom wordt toegevoegd.
  • Celstijl (cellStyle): een stijl van HTML die aan elke cel van de gevormde kolom wordt toegevoegd.
  • Alleen-lezen (alleen-lezen): read only wordt geplaatst voor elke cel van de gevormde kolom.

De configuratie moet als volgt worden gedefinieerd:

"colsMetadata": {
"Column name": {
     "cellStyle": "html style",
     "cellCls": "CSS class",
     "readOnly": true/false
}
}

Het volgende voorbeeld is te vinden in de component productlist (https://experienceleague.adobe.com/apps/geometrixx/components/productlist/dialog/items/editor/colsMetadata?lang=nl):

            <colsMetadata jcr:primaryType="nt:unstructured">
                <Selection
                    jcr:primaryType="nt:unstructured"
                    checkbox="true"
                    forcedPosition="0"
                    headerText=""/>
                <ProductId
                    jcr:primaryType="nt:unstructured"
                    cellCls="productlist-cell-productid"
                    headerText="Product Id"/>
                <ProductName
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #FFCC99;"
                    headerText="Product Name"/>
                <CatalogCode
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #EDEDED;"
                    headerText="Catalog Code"/>
                <Color jcr:primaryType="nt:unstructured">
                    <editor
                        jcr:primaryType="nt:unstructured"
                        store="[Blue,Red,Yellow]"
                        triggerAction="all"
                        typeAhead="true"
                        xtype="combo"/>
                </Color>
                <SellingSku
                    jcr:primaryType="nt:unstructured"
                    headerText="Sku Id"/>
            </colsMetadata>

Selectievakje

Als het checkbox configuratiebezit aan waar wordt geplaatst, worden alle cellen van de kolom teruggegeven als checkboxes. Een selectievakje verzendt true naar de server Save servlet, false anders. In het koptekstmenu kunt u ook alles selecteren of geen selecteren. Deze opties worden ingeschakeld als de geselecteerde koptekst de koptekst van een kolom in het selectievakje is.

In het eerste voorbeeld bevat de selectiekolom alleen selectievakjes als checkbox="true".

Geforceerde positie

Met de metagegevens voor geforceerde positie kunt u opgeven waar de kolom in het raster wordt geplaatst: 0 is de eerste plaats en <number of="" columns="">-1 is de laatste positie. Eventuele andere waarden worden genegeerd.

In het eerste voorbeeld is de selectiekolom de eerste kolom zoals forcePosition="0".

Query-server

Standaard kunt u de Query-server vinden op /libs/wcm/core/components/bulkeditor/json.java. U kunt een ander pad configureren om de gegevens op te halen.

De servlet van de Vraag werkt als volgt: het ontvangt een vraag GQL en de kolommen om terug te keren, verwerkt de resultaten, en verzendt de resultaten terug naar de bulkredacteur als stroom JSON.

In het de componentengeval van de Lijst van het Product, zijn de twee parameters die naar servlet van de Vraag worden verzonden als volgt:

  • query: "path:/content/geometrixx/nl/customer/jcr:content/par/productlist Cube"
  • kolommen: "Selection,ProductId,ProductName,Color,CatalogCode,SellingSku"

en de geretourneerde JSON-stream is als volgt:

{
  "hits": [{
      "jcr:path": "/content/geometrixx/en/products/jcr:content/par/productlist/1258674828905",
      "ProductId": "21",
      "ProductName": "Cube",
      "Color": "Blue",
      "CatalogCode": "43244",
      "SellingSku": "32131"
    }
  ],
  "results": 1
}

Elke hit komt overeen met één knooppunt en de bijbehorende eigenschappen en wordt weergegeven als een rij in het raster.

U kunt de server van de Vraag uitbreiden om een complex overervingsmodel terug te keren of knopen terug te keren die op een specifieke logische plaats worden opgeslagen. De server van de Vraag kan worden gebruikt om het even welk soort complexe berekening te doen. Het raster kan vervolgens rijen weergeven die een aggregaat zijn van verschillende knooppunten in de repository. De wijziging en het opslaan van deze rijen moeten in dat geval door sparen Servlet worden beheerd.

Servlet opslaan

In de standaardconfiguratie van de bulkredacteur is elke rij een knoop en de weg van deze knoop wordt opgeslagen in het rijverslag. De bulkredacteur houdt het verband tussen de rij en de knoop door de jcr weg. Wanneer een gebruiker het raster bewerkt, wordt een lijst met alle wijzigingen gemaakt. Wanneer een gebruiker klikt Opslaan, wordt een vraag van de POST verzonden naar elk weg met de bijgewerkte eigenschappen waarden. Dit is de basis van het Sling-concept en het werkt goed als elke cel een eigenschap van het knooppunt is. Maar als servlet van de Vraag wordt uitgevoerd om overervingsberekening uit te voeren, kan dit model niet als bezit werken dat door servlet van de Vraag is teruggekeerd kan van een andere knoop worden geërft.

Het serverconcept Opslaan is dat de wijzigingen niet rechtstreeks naar elk knooppunt worden gepost, maar naar één servlet die de opslagtaak uitvoert. Dit geeft servlet de mogelijkheid om de wijzigingen te analyseren en de eigenschappen op de juiste knoop te bewaren.

Elke bijgewerkte eigenschap wordt in de volgende indeling naar de servlet verzonden:

  • Parameternaam: <jcr path="">/<property name="">

    Voorbeeld: /content/geometrixx/nl/products/jcr:content/par/productlist/1258674859000/SellingSku

  • Waarde: <value>

    Voorbeeld: 12123

servlet moet weten waar het catalogCode bezit wordt opgeslagen.

Een standaard Save servlet implementatie is beschikbaar in /libs/wcm/bulkeditor/save/POST.jsp en wordt gebruikt in de component van de Lijst van het Product. Het neemt alle parameters van het verzoek (met a <jcr path="">/<property name=""> en schrijft eigenschappen op knooppunten die de JCR API gebruiken. Er wordt ook een knooppunt gemaakt als deze niet bestaan (raster ingevoegde rijen).

De standaardcode zou niet moeten worden gebruikt zoals het is herimplementeert wat de server native doet (een POST op <jcr path="">/<property name="">) en is daarom slechts een goed uitgangspunt voor de bouw van sparen servlet die een model van de bezitsovererving zal beheren.

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e