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"
}
],
...
},
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
-
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", } ] }
-
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", } ] }
-
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 -
Gebruik de aanscherpen op de hierboven beschreven JSON-methode om een PUT aanvragen en updates verzenden
<OBJ Code><OBJ ID>