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 douanegebied met rijk-text het formatteren wordt genoemd Gebied met rijke tekst en kan de volgende waarden verbonden aan het hebben:
Voorbeeld: een basisverzoek van de GET om de waarde van het gebied van de douanevorm Gebied met rijke tekst terug te winnen:
<OBJ Code><OBJ ID><OBJ Code><OBJ ID>
Voorbeeld: Dit verzoek zal de waarde van Gebied met rijke teksten in JSON terugkeren die in wordt opgeslagen parameterValue DE:Gebied met rijke teksten
{
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 het cijfer direct hierboven wordt vermeld
{
"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 voorwerpen JSON die de rijk-tekstinhoud opslaan zijn samengesteld uit twee belangrijkste delen: blokken en entityMaps.
Een blok is een JSON-object dat een enkele regel opgemaakte tekst vertegenwoordigt. Aangezien één enkel douanegebied meer dan één lijn van tekst kan hebben, heeft elke lijn van tekst zijn eigen blok, en elk blok wordt vertegenwoordigd als element in een ouderserie genoemd blokken.
Voorbeeld: hier, wijst elke lijn van tekst van een douanegebied aan een blokelement in de serieblokken toe
Aangezien elk blokelement ook een voorwerp JSON is, is elk blok samengesteld uit de elementen: sleutel, tekst, type, diepte, inlineStyleRanges, entityRanges, en gegevens. Elk van deze elementen werkt als volgt:
- Sleutel is het unieke herkenningsteken 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 is de lijn van tekstinhoud die van het douanegebied wordt opgeslagen.
- Type beschrijft het type van 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 genest deel van een bevolen of ongeordende lijst is.
- inlineStyleRanges is een serie die het type (de soorten) van het formatteren beschrijft die werden toegepast op de lijn van tekst die door het huidige blok wordt vertegenwoordigd.
Voorbeeld: hier is een array inlineStyleRanges die elke stijl op het karakterniveau beschrijft. In dit geval: 9 karakters (lengte: 9) die van index 0 (offset: 0) beginnen 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: hier is wat een blok als wanneer het opslaan van een lijn van tekst zou kijken die het gemengde formatteren bevat: Vette tekst en Cursieve teksten
{
"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 douanegebied met rijk-text het formatteren wordt voorgelegd, wordt al tekst opgeslagen in de serie blokken. Nochtans, wordt elke lijn van de volledige tekst opgeslagen in de tekstparameter binnen elk van de afzonderlijke blokelementen die omhoog de ouderserie blokken maken. 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: hier is wat uw JS als zou kunnen kijken:
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 Rijke Tekst
-
Construeer JSON die de waarde van het rijk-tekstgebied vertegenwoordigt u probeert te vangen door elke lijn van tekst in een blokelement, in de serie blokken te organiseren
code language-none { "blocks":[ { "key":"0", "text":"Hello World!!!", }, { "key":"1", "text":"This is my first Rich Text", } ] }
-
Vang het rijk-tekst formatteren gebruikend de 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 stringify methode op JSON hierboven geschetst om a PUT verzoek te maken en updates te verzenden
<OBJ Code><OBJ ID>