De Bulk-editor ontwikkelen developing-the-bulk-editor

In deze sectie wordt beschreven hoe u het gereedschap Bulk-editor kunt ontwikkelen en hoe u de component Productlijst kunt uitbreiden. Deze component is gebaseerd op de Bulk-editor.

Query-parameters voor de bulkeditor bulk-editor-query-parameters

Wanneer het werken met de Redacteur van het Bulk, zijn er verscheidene vraagparameters die u aan URL kunt toevoegen om de Redacteur van het Bulk met een specifieke configuratie te roepen. Als u de Redacteur van het Bulk altijd met een bepaalde configuratie wilt gebruiken, bijvoorbeeld, zoals in de component van de Lijst van het Product, dan moet u uitgeven bulkeditor.jsp (in /libs/wcm/core/components/bulkeditor) of maak een component met de specifieke configuratie. Wijzigingen die zijn aangebracht met behulp van queryparameters zijn niet permanent.

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

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

De bulkeditor wordt zonder de Hoofdpad het veld verborgen als hrp=true. Met de parameter hrp=false wordt het veld weergegeven (de standaardwaarde).

Hieronder volgt een lijst met queryparameters voor de Bulk Editor:

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 true, wordt de knop Opslaan verborgen
hideExportButton / hexpb
Boolean
indien true, wordt de knop Exporteren verborgen
hideImportButton / hib
Boolean
indien true, wordt de knop Importeren verborgen
hideResultNumber / hrn
Boolean
indien waar (true), wordt de tekst van het rasterzoekresultaatnummer 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 Rasterverwijdering verborgen
hidePathCol / hpc
Boolean
indien waar (true), wordt de rasterkolom "pad" verborgen

Een op Bulk Editor gebaseerde component ontwikkelen: de component Productlijst developing-a-bulk-editor-based-component-the-product-list-component

Deze sectie biedt een overzicht van het gebruik van de Bulk-editor en een beschrijving van de bestaande Geometrixx-component op basis van de Bulk-editor: 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 hetzelfde als de editor die beschikbaar is via /etc/importers/bulkeditor.html of via het menu Gereedschappen.) De component van de Lijst van het Product is gevormd voor specifieke, beperkte functionaliteit van de Redacteur van het Bulk. Elk deel van de Redacteur van het Bulk (of componenten die uit de Redacteur van het Bulk worden afgeleid) kan worden gevormd.

Met de Bulk-editor 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 om te tonen; het onderzoekspad wordt bepaald als instantie van de Lijst van het Product.

De broncode van de component Product List is beschikbaar in de gegevensopslagruimte op /apps/geometrixx/components/productlist en bestaat uit verschillende onderdelen, zoals alle Adobe Experience Manager-componenten (AEM):

  • HTML-rendering: de rendering wordt 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 het voldoet aan de behoeften van de component: beschikbare kolommen en mogelijke acties die op het raster of op de zoekopdracht worden uitgevoerd. Zie Eigenschappen voor de configuratie van de Bulkeditor 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 de Bulkeditor bulk-editor-configuration-properties

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

Eigenschapnaam
Definitie
rootPath
Hoofdpad zoeken
queryParams
Zoekquery
contentMode
True to enable content mode: properties are read on jcr:content node and not on search result node
colsValue
Gezocht eigenschappen (controleerden waarden van colsSelection die als checkboxes worden getoond)
extraCols
Extra gezochte eigenschappen (weergegeven in een komma-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: true om waarde niet te kunnen wijzigen

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

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

Configuratie van kolommetagegevens columns-metadata-configuration

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 Bulkeditor heeft drie kolomconfiguraties:

  • CSS-klassenaam van cel (cellCls): een CSS-klassenaam die aan elke cel van de geconfigureerde kolom wordt toegevoegd.
  • Celstijl (cellStyle): een HTML-stijl die aan elke cel van de geconfigureerde kolom wordt toegevoegd.
  • Alleen-lezen (readOnly): alleen-lezen wordt ingesteld voor elke cel van de geconfigureerde 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 met de notatie forcePosition="0".

Query-server query-servlet

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.

Het 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 Redacteur van het Bulk 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"

De JSON-stream wordt als volgt geretourneerd:

{
  "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 save-servlet

In de standaardconfiguratie van de Redacteur van het Meerdere is elke rij een knoop en de weg van deze knoop wordt opgeslagen in het rijverslag. De Bulk-editor zorgt ervoor dat de koppeling tussen de rij en het knooppunt door het jcr-pad wordt verbroken. 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 niet ongewijzigd gebruiken omdat deze bijimplementeert wat de server zelf 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 kan beheren.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2