Developing the Bulk Editor developing-the-bulk-editor

I det här avsnittet beskrivs hur du utvecklar verktyget Gruppredigerare och hur du utökar komponenten Produktlista, som baseras på gruppredigeraren.

Frågeparametrar för gruppredigerare bulk-editor-query-parameters

När du arbetar med gruppredigeraren finns det flera frågeparametrar som du kan lägga till i URL:en för att anropa gruppredigeraren med en viss konfiguration. Om du vill att gruppredigeraren alltid ska användas med en viss konfiguration, till exempel som i produktlistkomponenten, måste du redigera bulkeditor.jsp (i /libs/wcm/core/components/bulkeditor) eller skapa en komponent med den specifika konfigurationen. Ändringar som görs med frågeparametrar är inte permanenta.

Om du t.ex. skriver följande i webbläsarens URL:

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

Massredigeraren visas utan Rotsökväg fältet as hrp=true döljs. Med parametern hrp=false visas fältet (standardvärdet).

Här följer en lista med frågeparametrar för gruppredigeraren:

NOTE
Varje parameter kan ha ett långt och ett kort namn. Det långa namnet för sökrotsökvägen är till exempel rootPath, den korta är rp. Om det långa namnet inte är definierat läses det korta av begäran.

Parameter

(långt namn/kort namn)

Typ
Beskrivning
rootPath / rp
Sträng
sökrotsökväg
queryParams / qp
Sträng
sökfråga
contentMode / cm
Boolean
när true aktiveras innehållsläget
colValue / cv
Sträng[]
sökta egenskaper (markerade värden från colSelection visas som kryssrutor)
extraCols / ec
Sträng[]
extra sökta egenskaper (visas i ett kommaseparerat textfält)
initialSearch / is
Boolean
om true utförs frågan vid sidinläsning
minutesSelection / cs
Sträng[]
sökbar egenskapsmarkering (visas som kryssrutor)
showGridOnly / go
Boolean
om true visas endast stödrastret och inte sökpanelen
searchPanelCollapsed/spc
Boolean
när true är sökpanelen komprimerad vid inläsning
hideRootPath / hrp
Boolean
om true döljs rotsökvägsfältet
hideQueryParams / hqp
Boolean
om true döljs frågefältet
hideContentMode / hcm
Boolean
när true döljs fältet för innehållsläge
hideColsSelection / hcs
Boolean
om true döljs kolumnmarkeringsfältet
hideExtraCols / hec
Boolean
om true döljs fältet för extra kolumner
hideSearchButton
Boolean
om true döljs sökknappen
hideSaveButton / hsavep
Boolean
om true döljs knappen Spara
hideExportButton / hexpb
Boolean
när true döljs exportknappen
hideImportButton / hib
Boolean
om true döljs importknappen
hideResultNumber / hrn
Boolean
om true döljs texten för stödrastrets sökresultatnummer
hideInsertButton / hinsertb
Boolean
om true döljs infogningsknappen för stödrastret
hideDeleteButton / hdelb
Boolean
om true döljs knappen för att ta bort stödraster
hidePathCol / hpc
Boolean
om true döljs stödrastrets "sökvägskolumn"

Utveckla en gruppredigeringsbaserad komponent: produktlistkomponenten developing-a-bulk-editor-based-component-the-product-list-component

I det här avsnittet finns en översikt över hur du använder gruppredigeraren och en beskrivning av den befintliga Geometrixx baserat på gruppredigeraren: produktlistekomponenten.

Med komponenten Produktlista kan användare visa och redigera en datatabell. Du kan till exempel använda komponenten Produktlista för att representera produkter i en katalog. Informationen visas i en HTML-tabell och redigering utförs i Redigera som innehåller en BulkEditor-widget. (Den här gruppredigeraren är samma som den som finns på /etc/importers/bulkeditor.html eller via Verktyg-menyn). Komponenten Produktlista har konfigurerats för specifika, begränsade funktioner i gruppredigeraren. Alla delar av gruppredigeraren (eller komponenter som härletts från gruppredigeraren) kan konfigureras.

Med gruppredigeraren kan du lägga till, ändra, ta bort, filtrera och exportera raderna, spara ändringar och importera en uppsättning rader. Varje rad lagras som en nod under själva produktlistkomponentinstansen. Varje cell är en egenskap för varje nod. Det här är ett designalternativ och kan enkelt ändras. Du kan till exempel lagra noder någon annanstans i databasen. Frågeserverns roll är att returnera listan med noder som ska visas. Sökvägen definieras som en produktlistinstans.

Källkoden för produktlistkomponenten finns i databasen i /apps/geometrixx/components/productlist och består av flera delar som alla Adobe Experience Manager-komponenter (AEM):

  • HTML: Återgivningen görs i en JSP-fil (https://experienceleague.adobe.com/apps/geometrixx/components/productlist/productlist.jsp?lang=sv). JSP läser delnoderna för den aktuella produktlistkomponenten och visar var och en av dem som en rad i en HTML-tabell.
  • Dialogrutan Redigera, där du definierar konfigurationen för gruppredigeraren. Konfigurera dialogrutan så att den matchar komponentens behov: tillgängliga kolumner och möjliga åtgärder som utförs i rutnätet eller i sökningen. Se Konfigurationsegenskaper för gruppredigeraren för information om alla konfigurationsegenskaper.

Här är en XML-representation av delnoderna i dialogrutan:

        <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>

Konfigurationsegenskaper för gruppredigeraren bulk-editor-configuration-properties

Alla delar av gruppredigeraren kan konfigureras. I följande tabell visas alla konfigurationsegenskaper för gruppredigeraren.

Egenskapsnamn
Definition
rootPath
Sökrotsökväg
queryParams
Sökfråga
contentMode
True to enable content mode: properties are read on jcr:content node and not on search result node
colValue
Sökda egenskaper (markerade värden från colSelection visas som kryssrutor)
extraCols
Extra sökta egenskaper (visas i ett textfält med kommaseparerad)
initialSearch
True to perform query on page load
colSelection
Markering av sökta egenskaper (visas som kryssrutor)
showGridOnly
True to show only the grid and not the search panel (glöm inte att ställa in initialSearch på true)
searchPanelCollapsed
Sant att komprimera sökpanelen som standard
hideRootPath
Dölj rotsökvägsfält
hideQueryParams
Dölj frågefält
hideContentMode
Dölj fältet för innehållsläge
hideColsSelection
Dölj fältet för val av protokoll
hideExtraCols
Dölj extra protokollfält
hideSearchButton
Dölj sökknapp
hideSaveButton
Dölj knappen Spara
hideExportButton
Dölj exportknapp
hideImportButton
Dölj importknapp
hideResultNumber
Dölj text för sökresultat för stödraster
hideInsertButton
Dölj infogningsknapp för stödraster
hideDeleteButton
Knappen Ta bort stödraster
hidePathCol
Dölj kolumnen "bana" för stödraster
queryURL
Sökväg till frågeservice
exportURL
Sökväg till exportserver
importURL
Sökväg till importservlet
insertResourceType
Resurstypen läggs till i noden när en rad infogas
saveButton
Spara konfiguration för knappwidget
searchButton
Widget-konfiguration för sökknapp
exportButton
Konfigurera knappwidget
importButton
Konfigurera knappwidget
searchPanel
Widgetkonfiguration för sökpanel
rutnät
Konfiguration för stödrasterwidget
store
Butikskonfiguration
colModel
Modellkonfiguration för stödrasterkolumn
rootPathInput
rootPath widget config
queryParamsInput
queryParams widget config
contentModeInput
contentMode widget config
colSelectionInput
formsSelection widget config
extraColsInput
extraCols widget, konfiguration
ProtokollMetadata

Kolumnens metadatakonfiguration. Möjliga egenskaper används (används på alla celler i kolumnen):

  • cellStyle: html-format

  • cellCls: css-klass

  • readOnly: true to not able change value

  • kryssruta: true om du vill definiera alla celler i kolumnen som kryssrutor (true/false-värden)

  • forcerad position: heltalsvärde som anger var kolumnen måste placeras i rutnätet (mellan 0 och antal kolumner-1)

Metadatakonfiguration för kolumner columns-metadata-configuration

Du kan konfigurera för varje kolumn:

  • visningsegenskaper: html-format, CSS-klass och skrivskyddad

  • en kryssruta

  • en fast position

CSS och skrivskyddade kolumner

Gruppredigeraren har tre kolumnkonfigurationer:

  • Cell-CSS-klassnamn (cellCls): ett CSS-klassnamn som läggs till i varje cell i den konfigurerade kolumnen.
  • Cellformat (cellStyle): ett HTML-format som läggs till i varje cell i den konfigurerade kolumnen.
  • Skrivskyddad (readOnly): skrivskyddad anges för varje cell i den konfigurerade kolumnen.

Konfigurationen måste definieras som följande:

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

Följande exempel finns i produktlistekomponenten (https://experienceleague.adobe.com/apps/geometrixx/components/productlist/dialog/items/editor/colMetadata?lang=sv):

            <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>

Kryssruta

Om konfigurationsegenskapen för kryssrutan är true återges alla celler i kolumnen som kryssrutor. En kryssruta skickar true till serverns Spara-server, false annars. På rubrikmenyn kan du även markera alla eller välj ingen. De här alternativen aktiveras om den valda rubriken är rubriken för en kryssrutekolumn.

I det tidigare exemplet innehåller markeringskolumnen bara kryssrutor som checkbox="true".

Tvingad position

Metadata för tvingad position med metoden forcerad position kan du ange var kolumnen ska placeras i rutnätet: 0 är den första platsen och <number of="" columns="">-1 är den sista positionen. Alla andra värden ignoreras.

I det tidigare exemplet är markeringskolumnen den första kolumnen som forceradPosition="0".

Frågeservlet query-servlet

Som standard finns frågeservern på /libs/wcm/core/components/bulkeditor/json.java. Du kan konfigurera en annan sökväg för att hämta data.

Frågeservern fungerar så här: den tar emot en GQL-fråga och de kolumner som ska returneras, beräknar resultaten och skickar tillbaka resultaten till gruppredigeraren som en JSON-ström.

I produktlistekomponenterna är de två parametrar som skickas till frågeservern följande:

  • fråga: "path:/content/geometrixx/en/customers/jcr:content/par/productlist Cube"
  • Protokoll: "Selection,ProductId,ProductName,Color,CatalogCode,SellingSku"

Och JSON-strömmen returneras enligt följande:

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

Varje träff motsvarar en nod och dess egenskaper, och visas som en rad i rutnätet.

Du kan utöka frågeservern för att returnera en komplex arvsmodell eller returnera noder som lagras på en viss logisk plats. Frågeservern kan användas för alla typer av komplex beräkning. Rutnätet kan sedan visa rader som är en sammanställning av flera noder i databasen. Ändringen och sparandet av dessa rader måste i så fall hanteras av Spara server.

Spara server save-servlet

I standardkonfigurationen för gruppredigeraren är varje rad en nod och sökvägen för den här noden lagras i radposten. Med gruppredigeraren behålls länken mellan raden och noden genom jcr-sökvägen. När en användare redigerar stödrastret skapas en lista över alla ändringar. När en användare klickar Spara skickas en POST till varje sökväg med de uppdaterade egenskapsvärdena. Detta är grunden för Sling-konceptet och fungerar bra om varje cell är en nodegenskap. Men om frågeservern implementeras för arvsberäkning kan modellen inte fungera som en egenskap som returneras av frågeservern kan ärvas från en annan nod.

Konceptet Spara serverlet är att ändringarna inte publiceras direkt till varje nod, utan att de bokförs på en server som utför sparandet. Detta ger den här servern möjlighet att analysera ändringarna och spara egenskaperna på rätt nod.

Varje uppdaterad egenskap skickas till servern i följande format:

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

    Exempel: /content/geometrixx/en/products/jcr:content/par/productlist/1258674859000/SellingSku

  • Värde: <value>

    Exempel: 12123

Servern behöver veta var egenskapen catalogCode lagras.

En standardserverimplementering för Spara finns på /libs/wcm/bulkeditor/save/POST.jsp och används i produktlistkomponenten. Den tar alla parametrar från begäran (med en <jcr path="">/<property name=""> format) och skriver egenskaper på noder med JCR-API:t. Noden skapas också om den inte finns (rutnätsinfogade rader).

Använd inte standardkoden som den är eftersom den återimplementerar det som servern själv gör (en POST på <jcr path="">/<property name="">) och är därför bara en bra utgångspunkt för att skapa en Spara-server som kan hantera en egenskapsarvsmodell.

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