De Bulk-editor ontwikkelen

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.

Parameters voor query-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 het gebied van de Weg aangezien hrp=true het gebied verbergt. Met de parameter hrp=false wordt het veld weergegeven (de standaardwaarde).

Hier volgt een lijst met de queryparameters voor bulkeditors:

OPMERKING

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

Parameter

(lange naam / korte naam)

Type
Beschrijving
rootPath / rp
Tekenreeks zoekhoofdpad
queryParams / qp
Tekenreeks zoekquery
contentMode / cm
Boolean wanneer waar (true), wordt de inhoudsmodus ingeschakeld
colsValue / cv
Tekenreeks[] gezochte eigenschappen (gecontroleerde waarden van colsSelection weergegeven als checkboxes)
extraCols / ec
Tekenreeks[] extra gezochte eigenschappen (die in een komma-gescheiden tekstgebied worden getoond)
initialSearch / is
Boolean wanneer waar (true), wordt de query uitgevoerd op paginading
colsSelection / cs
Tekenreeks[] selectie van gezochte eigenschappen (weergegeven als selectievakjes)
showGridOnly / sgo
Boolean Indien waar (true), wordt alleen het raster weergegeven en niet het deelvenster Zoeken
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, dat 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-rendering: wordt de rendering uitgevoerd in een JSP-bestand (/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 HTML- lijst.
  • 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 bulkbewerkingsconfiguratieeigenschappen 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 configuratie-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 metagegevens van kolommen

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 HTML-stijl die aan elke cel van de geconfigureerde 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 (/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 aangevinkt vakje verzendt true naar de server Save servlet, anders false. In het kopbalmenu kunt u ook all of select none 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 <aantal kolommen>-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

Door gebrek, kan servlet van de Vraag bij /libs/wcm/core/components/bulkeditor/json.java worden gevonden. 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 sparen klikt, wordt een vraag van de POST verzonden naar elke 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. Alle parameters van de aanvraag (met de indeling <jcr path>/<property name>) worden gebruikt en eigenschappen op knooppunten worden geschreven met de JCR API. Er wordt ook een knooppunt gemaakt als deze niet bestaan (raster ingevoegde rijen).

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

Op deze pagina