08. Sep 2016
Mit dem neuen Ereignis onAfterCreateDraft lassen sich Inhalte vor der Bearbeitung beliebig anpassen.
Mit dem neuen Ereignis onAfterCreateDraft lassen sich Inhalte vor der Bearbeitung beliebig anpassen. Dieser Artikel zeigt Beispiele für den praktischen Einsatz.
Falls es ausreicht, wenn Daten erst dann angepasst werden müssen, bevor sie im Editor bearbeitet werden, können Sie dafür das Ereignis onAfterCreateDraft nutzen. Es wird beim Öffnen des Editors nach dem Erstellen einer Arbeitskopie gefeuert.
$path = $eventData['filePath'];
$domPage = wDOM::parseFile($path);
$domPage->encoding = 'utf-8';
$pictureItems = wDOM::executeXPath($domPage, "//wd:item[@type = 'picture.standard']");
$hasChanged = false;
foreach($pictureItems as $pictureItem){
$fragmentTitle = wDOM::executeXPath($domPage, "wd:fragment[@id = 'title']", array('context' => $pictureItem))->item(0);
if($fragmentTitle){
if($fragmentTitle->textContent == ''){
$fragmentTitle->appendChild($domPage->createTextNode('Bildtitel'));
$hasChanged = true;
}
}
}
if($hasChanged){
$xmlStrNew = wStringconverter::removePrologXml($domPage->saveXML());
wReadWrite::writeFile($path, $xmlStrNew);
}
$path = $eventData['filePath'];
$domVariables = wDOM::parseFile($path);
$domVariables->encoding = 'utf-8';
$variableNodes = wDOM::executeXPath($domVariables, "/wVariables/variable");
$hasChanged = false;
foreach($variableNodes as $variableNode){
$key = $variableNode->getAttribute('key');
if($key == 'variable_to_delete'){
$variableNode->parentNode->removeChild($variableNode);
$hasChanged = true;
}
}
if($hasChanged){
$xmlStrNew = wStringconverter::removePrologXml($domVariables->saveXML());
wReadWrite::writeFile($path, $xmlStrNew);
}