Rijke tekstvelden in de Adobe Workfront API

Sommige objecten in Adobe Workfront maken het mogelijk tekst met opmaak op te slaan. In de rijke tekst van de Workfront API wordt opgeslagen als JSON met behulp van het open-sourceframework Draft.js.

Overzicht

Een aangepast veld met opmaak in RTF-indeling wordt Veld met RTF-tekst en kan de volgende waarden hebben verbonden aan het:

Voorbeeld: Een basisverzoek voor GET om de waarde van het aangepaste formulierveld op te halen Veld met RTF-tekst:

<OBJ Code><OBJ ID><OBJ Code><OBJ ID>

Voorbeeld: Dit verzoek retourneert de waarde van Veld met RTF-tekst in JSON opgeslagen in de parameterValue DE:Veld met RTF-tekst

{
data: {
    ID: "5e85e3f10000b99e8cef10af4e5c6c7b",
    name: "Zoom Integration Test",
    objCode: "PROJ",
    parameterValues: {
        "DE:Field with rich text": "{"blocks":[{"key":"dpfce","text":"This is a regular text","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}},{"key":"a9ic6","text":"Bold text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":9,"style":"BOLD"}],"entityRanges":[],"data":{}},{"key":"1b2a4","text":"Italic text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":11,"style":"ITALIC"}],"entityRanges":[],"data":{}},{"key":"4dle1","text":"Underline text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":14,"style":"UNDERLINE"}],"entityRanges":[],"data":{}},{"key":"10mip","text":"With all formating and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":18,"style":"BOLD"},{"offset":0,"length":18,"style":"ITALIC"},{"offset":0,"length":18,"style":"UNDERLINE"}],"entityRanges":[],"data":{}}],"entityMap":{}}",
        "DE:Other Type of Field": "Value",
        }
    }
}

Voorbeeld: Dit is een geformatteerde versie van de reactie die in de figuur direct boven wordt getoond

{
   "blocks":[
      {
         "key":"dpfce",
         "text":"This is a regular text",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[

         ],
         "entityRanges":[

         ],
         "data":{

         }
      },
      {
         "key":"a9ic6",
         "text":"Bold text and regular text",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[
            {
               "offset":0,
               "length":9,
               "style":"BOLD"
            }
         ],
         "entityRanges":[

         ],
         "data":{

         }
      },
      {
         "key":"1b2a4",
         "text":"Italic text and regular text",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[
            {
               "offset":0,
               "length":11,
               "style":"ITALIC"
            }
         ],
         "entityRanges":[

         ],
         "data":{

         }
      },
      {
         "key":"4dle1",
         "text":"Underline text and regular text",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[
            {
               "offset":0,
               "length":14,
               "style":"UNDERLINE"
            }
         ],
         "entityRanges":[

         ],
         "data":{

         }
      },
      {
         "key":"10mip",
         "text":"With all formating and regular text",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[
            {
               "offset":0,
               "length":18,
               "style":"BOLD"
            },
            {
               "offset":0,
               "length":18,
               "style":"ITALIC"
            },
            {
               "offset":0,
               "length":18,
               "style":"UNDERLINE"
            }
         ],
         "entityRanges":[

         ],
         "data":{

         }
      }
   ],
   "entityMap":{

   }
}

Blokken

De JSON-objecten die de RTF-inhoud opslaan, bestaan uit twee hoofdonderdelen: blokken en entiteitMaps.

Een blok is een JSON-object dat een enkele regel opgemaakte tekst vertegenwoordigt. Aangezien één aangepast veld meerdere tekstregels kan bevatten, heeft elke tekstregel een eigen blok en wordt elk blok vertegenwoordigd als een element in een bovenliggende array met de naam blokken.

Voorbeeld: Hier wordt elke tekstregel van een aangepast veld toegewezen aan een blokelement in de arrayblokken

Aangezien elk blokelement ook een JSON-object is, bestaat elk blok uit de elementen: key, text, type, diepte, inlineStyleRanges, entiteitRanges, en data. Elk van deze elementen werkt als volgt:

  • Sleutel is de unieke id voor dat blok. De sleutel wordt gebruikt om een tekstregel via entityMaps in kaart te brengen. Meer informatie over entiteitskaarten vindt u in de sectie entityMaps van dit document.
  • Tekst Dit is de regel tekstinhoud die wordt opgeslagen vanuit het aangepaste veld.
  • Type beschrijft het type tekst dat wordt vertegenwoordigd. Een tekstregel die bijvoorbeeld in een blok wordt opgeslagen, kan onderdeel zijn van een lijst. Als die tekstregel onderdeel was van een niet-geordende lijst, zou het type ervan worden gedefinieerd als: unordered-list-item.
  • Lijsten worden momenteel niet ondersteund, maar moeten binnenkort beschikbaar zijn.
  • Diepte Deze parameter bepaalt de diepte van de lijn wanneer de lijn een genesteld deel van een geordende of ongeordende lijst is.
  • inlineStyleRanges Is een array die de opmaaktypen beschrijft die zijn toegepast op de tekstregel die wordt vertegenwoordigd door het huidige blok.

Voorbeeld: Hier volgt een inlineStyleRanges-array die elke stijl op tekenniveau beschrijft. In dit geval: 9 tekens (lengte: 9) die beginnen vanaf index 0 (offset: 0) hadden de stijl Vet toegepast:

Wanneer meerdere typen opmaak zijn toegepast op één regel, worden stijlen toegewezen aan extra elementen in de ​ inlineStyleRanges-array.

Voorbeeld: Zo ziet een blok eruit wanneer u een tekstregel opslaat die de gemengde opmaak bevat: Vette tekst en cursief

{
         "key":"a9ic6",
         "text":"Bold text and Italics",
         "type":"unstyled",
         "depth":0,
         "inlineStyleRanges":[
            {
               "offset":0,
               "length":21,
               "style":"BOLD"
            },
            {
               "offset":14,
               "length":7,
               "style":"ITALIC"
            }
         ],
         ...
      },
NOTE
Alle versies na de release 20.3 bieden ondersteuning voor opties voor vette, cursieve en onderstreepte opmaak.

entiteitMaps en entiteitRanges

Een gegevensblok kan entiteiten bevatten zoals hyperlinks of andere typen gestileerde opmaak die zijn verbonden met gegevensbronnen buiten het aangepaste tekstveld.

Voorbeelden

Onbewerkte tekst ophalen van JSON

Wanneer een aangepast veld met RTF-opmaak wordt verzonden, wordt alle tekst opgeslagen in de array blokken. Elke regel van de volledige tekst wordt echter opgeslagen in de text, parameter binnen elk van de afzonderlijke blokelementen die de bovenliggende array vormen blokken. Om de volledige tekst op te halen, moet elke afzonderlijke tekstregel worden opgehaald en samen worden geparkeerd. Dit kan worden bereikt door alle elementen in blokken te herhalen en elke tekstparameter samen met een regelscheidingsteken (\n) te koppelen.

Voorbeeld: Zo ziet uw JS er mogelijk uit:

const parameterValue = JSON.parse('{"blocks":[{"key":"dpfce","text":"This is a regular text","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}},{"key":"a9ic6","text":"Bold text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":9,"style":"BOLD"}],"entityRanges":[],"data":{}},{"key":"1b2a4","text":"Italic text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":11,"style":"ITALIC"}],"entityRanges":[],"data":{}},{"key":"4dle1","text":"Underline text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":14,"style":"UNDERLINE"}],"entityRanges":[],"data":{}},{"key":"10mip","text":"With all formating and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":18,"style":"BOLD"},{"offset":0,"length":18,"style":"ITALIC"},{"offset":0,"length":18,"style":"UNDERLINE"}],"entityRanges":[],"data":{}}],"entityMap":{}}');
let plainText = "";
parameterValue.blocks.forEach((block) => {
        plainText = plainText.concat(block.text, "\n");
})
console.log(plainText)

Een RTF-waarde opslaan met de Workfront API

De volgende waarden van een RTF-veld opslaan met de Workfront API:

        Hallo Wereld!!
        Dit is mijn eerste RTF
  1. Construeer JSON die de waarde van het rijke-tekstgebied vertegenwoordigt u probeert te vangen door elke lijn van tekst in een blokelement, in de serie te organiseren blokken

    code language-none
    {
        "blocks":[
                    {
                        "key":"0",
                        "text":"Hello World!!!",
                    },
                    {
                        "key":"1",
                        "text":"This is my first Rich Text",
                    }
                ]
    }
    
    
  2. Leg de RTF-opmaak vast met de opdracht inlineStyleRanges parameter

    code language-none
    {
        "blocks":[
                    {
                        "key":"0",
                        "text":"Hello World!!!",
                        "inlineStyleRanges": [
                                                {
                                                    "offset":6,
                                                    "length":11,
                                                    "style":"BOLD"
                                                }
                                            ]
                    },
                    {
                        "key":"1",
                        "text":"This is my first Rich Text",
                    }
                ]
    }
    
  3. Als u de tweede regel wilt vastleggen, moet de tekst 'RTF' zowel vet als cursief worden opgemaakt.

    code language-none
    {
        "blocks":[
                    {
                        "key":"0",
                        "text":"Hello World!!!",
                        "inlineStyleRanges": [
                                                {
                                                    "offset":6,
                                                    "length":11,
                                                    "style":"BOLD"
                                                }
                                            ]
                    },
                    {
                        "key":"1",
                        "text":"This is my first Rich Text",
                        "inlineStyleRanges": [
                                                {
                                                    "offset":17,
                                                    "length":26,
                                                    "style":"BOLD"
                                                },
                                                {
                                                    "offset":17,
                                                    "length":26,
                                                    "style":"ITALIC"
                                                }
                                            ]
                    }
                ],
        "entityMap":{
    
                    }
    }
    
    
    note note
    NOTE
    Hoewel de functionaliteit entityMap niet tijdens de aanvankelijke versie wordt gesteund, is het nog een vereist gebied om deze JSON in een verzoek over te gaan
  4. Gebruik de aanscherpen op de hierboven beschreven JSON-methode om een PUT aanvragen en updates verzenden

    <OBJ Code><OBJ ID>
    
recommendation-more-help
5f00cc6b-2202-40d6-bcd0-3ee0c2316b43