Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich bräuchte für unsere Redaktions-Szenarien innerhalb der Fremdanwendung etwas Unterstützung bezüglich Navigation und Suche von Inhalten im ContentCreator.
Aktuell haben sowohl in der OCM Demo Page als auch im Salesforce Frontend bei uns Klicks auf Inhalte innerhalb der Menüstruktur und innerhalb der Suche keinerlei Effekt auf die im Frame geladene Seite. Dies ist auch vollkommen logisch, da FirstSpirit die Struktur der Fremdanwendung natürlich nicht kennt.
Meine Idee wäre nun die Seiteneinstellung in FirstSpirit um einen entsprechenden "Identifier" zu erweitern, der eine Zuordnung zwischen FirstSpirit DocumentId und dem Ziel-URL der im Frame geladenen Seite ermöglichen würde. Meine Frage wäre wie es am einfachsten möglich ist das Frame mit der entsprechend ermittelten Zieladresse neu zu laden. Aus der Dokumentation habe ich das folgende Event-Handler Beispiel gefunden:
onRequestPreviewElement(handler)
If the user navigates via the ContentCreator Frame, e.g. by clicking on a search result, this handler is called. The FrontEnd application should now translate the PreviewId to a route, and follow it. After setting the new route always inform FirstSpirit by calling #setPreviewElement to set the context e.g. for workflow actions.
Das SPA Beispiel in der Doku rendert den Inhalt der Seite im Container lediglich auf Basis des zurückgelieferten JSON neu. Ist es auch möglich die Seite auf Basis einer URL oder URL-Parameters aus dem Frontend heraus neu zu laden und hat jemand ggf. einen kurzen Beispiel-Code dafür?
Update:
Ich habe das hinterlegte Beispiel mal auf meinen Anwendungsfall angepasst.
// error handling omitted for brevity
const json = await TPP_SNAP.renderElement(previewId);
const urlIdentifier = json.formData.pt_sfIdentifier.value;
// map page attribute to relative URL
//console.dir(json);
if (urlIdentifier != null)
window.location.href = '/' + urlIdentifier;
history.pushState(json.uid, json.displayName, json.uid);
await TPP_SNAP.setPreviewElement(previewId);
});
In der Zeile window.historyPushState(json.uid, json.displayName, json.uid);
laut Dokumentation: fs-tpp-api/snap 1.2.24 | Documentation erhalte ich einen Fehler TypeError: window.historyPushState is not a function
Ich habe die Funktion daher durch: history.pushState(json.uid, json.displayName, json.uid); ersetzt.
Prinzipiell funktioniert das navigieren innerhalb der FirstSpirit Seiten, die einen relativen Pfad im Attribut pt_sfIdentifier gesetzt haben.
Es kommen allerdings einige Fehler in der Browser-Console:
util.ts:64 POST https://stodev.e-spirit.hosting/fs5webedit_915/s=09Di/widgets/request/cc-tree/getChildren 500
CxtElement request cc-tree/getChildren failed:
null
Uncaught (in promise) null
de.espirit.firstspirit.webedit.Main-0.js:11348 Tue May 12 13:19:31 GMT+200 2020 de.espirit.firstspirit.webedit.client.report.HtmlReportServiceAsyncProxy
SEVERE: [getNext] failed (in 70 ms)!
java.lang.NullPointerException
Ich vermute daher, dass ich noch etwas an Code + error handler ergänzen muss, damit es sauber ist.
Hallo Andre,
"onRequestPreviewElement" ist genau die richtige Stelle für diese Anforderung. Der fehlende Punkt in der Dokumentation an der Stelle wurde mittlerweile ergänzt und geht mit dem nächsten Release online. Danke für den Hinweis!
Der Fehler auf der Konsole ist ein Zusammenspiel von neuen ContentCreator Design und dem Workflow-Status-Provider von BasicWorkflows. Da wird es voraussichtlich mit dem FirstSpirit Juni Release einen Fix für geben. Soweit wir das sehen gibt es aber keine negativen Auswirkungen.
Liebe Grüße!
Hallo Andre,
"onRequestPreviewElement" ist genau die richtige Stelle für diese Anforderung. Der fehlende Punkt in der Dokumentation an der Stelle wurde mittlerweile ergänzt und geht mit dem nächsten Release online. Danke für den Hinweis!
Der Fehler auf der Konsole ist ein Zusammenspiel von neuen ContentCreator Design und dem Workflow-Status-Provider von BasicWorkflows. Da wird es voraussichtlich mit dem FirstSpirit Juni Release einen Fix für geben. Soweit wir das sehen gibt es aber keine negativen Auswirkungen.
Liebe Grüße!