Hallo zusammen,
ich bin gerade dabei ein Script zu schreiben, welches dem Redakteur ermöglicht zwei Strings einzugeben, welche dann anschließend für ein Search & Replace verwendet werden.
Ich durchsuche rekursiv alle Kind-Elemente des Elements, auf dem der Redakteur das Script gestartet hat und möchte dort innerhalb des Contents nach dem Search String suchen und mit dem Replace String ersetzen.
Bei "einfachen" CMS_INPUT_TEXT-Feldern ist das auch kein Thema. Ich bin allerdings nun an der Stelle, wo ich ein CMS_INPUT_DOM-Feld habe..
Meine "replace"-Funktion bekommt ein FormField übergeben.
Bisher habe ich folgendes:
Object fieldVal = field.get();
if(fieldVal instanceof String) {
...
} else if(fieldVal instanceof DomElement) {
if(!field.isEmpty()) {
DefaultDomNode root = ((DomElement) fieldVal).getRoot();
Iterable<DomNode> children;
children = root.getChildren(true);
for(DomNode child : children) {
FormatTemplate formatTemplate = child.getFormatTemplate();
DomNodeType nodeType = child.getNodeType();
if(nodeType.equals(DomNodeType.TEXT)) {
TextDomNode tempNode = (TextDomNode) child;
String nodeTextContent = tempNode.getText();
}
}
}
}
Ich müsste nun in jedem Kind-Element den Text extrahieren und nach meinem "Search"-String suchen. Wenn etwas gefunden wurde, muss der Text mit meinem "Replace"-String ersetzt werden.
Anschließend muss dann das ursprüngliche Element entfernt werden und ein neues (mit dem replaced Text) an dessen Stelle platziert werden (replaceChild() ?).
Ist das der richtige Ansatz? Falls jemand andere Lösungsvorschläge hat, bitte gerne posten 