Обновлена логика центральных блоков: теперь поддерживается несколько блоков
This commit is contained in:
@@ -15,22 +15,19 @@ function savePageCenterBlock($params) {
|
||||
|
||||
$saveContentIdXml = $path . $_SESSION['page_url'] . ".page.php";
|
||||
$saveContentIdData = $params['saveContentIdData'] ?? '';
|
||||
$file = @simplexml_load_file($saveContentIdXml);
|
||||
$node = $file->content->{$_SESSION['lng']};
|
||||
|
||||
$file->content->{$_SESSION['lng']} = '';
|
||||
$node = dom_import_simplexml($node);
|
||||
$doc = $node->ownerDocument;
|
||||
$appended = $node->appendChild($doc->createCDATASection("\n" . $saveContentIdData . "\n"));
|
||||
$saved = $file->asXML($saveContentIdXml);
|
||||
$xml = file_get_contents($saveContentIdXml);
|
||||
$xml = preg_replace('#<' . $_SESSION['lng'] . '>.*?</' . $_SESSION['lng'] . '>#s', '<' . $_SESSION['lng'] . '></' . $_SESSION['lng'] . '>', $xml);
|
||||
|
||||
if ($appended && $saved) {
|
||||
return 'true';
|
||||
if (preg_match('#<' . $_SESSION['lng'] . '>#', $xml, $pos)) {
|
||||
$xml = preg_replace('#(<' . $_SESSION['lng'] . '>)#', '$1' . "\n" . $saveContentIdData . "\n", $xml, 1);
|
||||
}
|
||||
|
||||
if (file_put_contents($saveContentIdXml, $xml) !== false) return 'true';
|
||||
throw new Exception("Problem saving content", -32003);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Сохраняет левый и правый блоки страницы
|
||||
* @param array $params Массив с данными блоков, ключ 'floatsBlock' содержит массив левых и правых блоков
|
||||
@@ -130,39 +127,33 @@ function saveHowPageContent($params) {
|
||||
|
||||
$_SESSION['page_url'] = $params['page_url'] . str_replace('.page.php', '', $params['nameFile']);
|
||||
$filePath = $path . $params['page_url'] . $params['nameFile'];
|
||||
$contentData = $params['saveContentIdData'] ?? '';
|
||||
$file = simplexml_load_file($filePath);
|
||||
$langNode = $file->content->{$_SESSION['lng']};
|
||||
$file->content->{$_SESSION['lng']} = '';
|
||||
$node = dom_import_simplexml($langNode);
|
||||
$doc = $node->ownerDocument;
|
||||
$node->appendChild($doc->createCDATASection("\n" . $contentData . "\n"));
|
||||
$contentData = html_entity_decode($params['saveContentIdData'] ?? '', ENT_QUOTES, 'UTF-8');
|
||||
|
||||
$xml = file_get_contents($filePath);
|
||||
$xml = preg_replace('#<' . $_SESSION['lng'] . '>.*?</' . $_SESSION['lng'] . '>#s', '<' . $_SESSION['lng'] . '></' . $_SESSION['lng'] . '>', $xml);
|
||||
$xml = preg_replace('#(<' . $_SESSION['lng'] . '>)#', "$1\n" . $contentData . "\n", $xml, 1);
|
||||
|
||||
$xml = preg_replace('#<rblock>.*?</rblock>#s', '<rblock></rblock>', $xml);
|
||||
$xml = preg_replace('#<lblock>.*?</lblock>#s', '<lblock></lblock>', $xml);
|
||||
|
||||
$file->rblock = '';
|
||||
$file->lblock = '';
|
||||
$blocks = $params['floatsBlock'] ?? [];
|
||||
$titles = $params['title'] ?? [];
|
||||
$urls = $params['pluginUrl'] ?? [];
|
||||
$tclasses = $params['tclass'] ?? [];
|
||||
$bclasses = $params['bclass'] ?? [];
|
||||
|
||||
foreach ($blocks as $i => $blockName) {
|
||||
$newBlock = $file->$blockName->addChild('block');
|
||||
$newBlock->addAttribute('url', htmlspecialchars($urls[$i] ?? '', ENT_QUOTES,'UTF-8'));
|
||||
$newBlock->addAttribute('title', htmlspecialchars($titles[$i] ?? '', ENT_QUOTES,'UTF-8'));
|
||||
$newBlock->addAttribute('tclass',htmlspecialchars($tclasses[$i] ?? '',ENT_QUOTES,'UTF-8'));
|
||||
$newBlock->addAttribute('bclass',htmlspecialchars($bclasses[$i] ?? '',ENT_QUOTES,'UTF-8'));
|
||||
$url = htmlspecialchars($urls[$i] ?? '', ENT_QUOTES, 'UTF-8');
|
||||
$title = htmlspecialchars($titles[$i] ?? '', ENT_QUOTES, 'UTF-8');
|
||||
$tclass = htmlspecialchars($tclasses[$i] ?? '', ENT_QUOTES, 'UTF-8');
|
||||
$bclass = htmlspecialchars($bclasses[$i] ?? '', ENT_QUOTES, 'UTF-8');
|
||||
|
||||
$blockXml = '<block url="' . $url . '" title="' . $title . '" tclass="' . $tclass . '" bclass="' . $bclass . '"/>';
|
||||
$xml = preg_replace('#<' . $blockName . '>#', '<' . $blockName . '>' . "\n" . $blockXml, $xml, 1);
|
||||
}
|
||||
|
||||
$dom = new DOMDocument('1.0','UTF-8');
|
||||
$dom->preserveWhiteSpace = false;
|
||||
$dom->formatOutput = true;
|
||||
$dom->loadXML($file->asXML());
|
||||
|
||||
$saved = $dom->save($filePath);
|
||||
if ($saved === false) {
|
||||
throw new Exception("Failed to save content", -32003);
|
||||
}
|
||||
return 'true';
|
||||
if (file_put_contents($filePath, $xml) !== false) return 'true';
|
||||
throw new Exception("Failed to save content", -32003);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,11 +175,12 @@ function createNewPage($params) {
|
||||
}
|
||||
|
||||
$file = simplexml_load_file($saveContentIdXml);
|
||||
$node = $file->content->{$_SESSION['lng']};
|
||||
$file->content->{$_SESSION['lng']} = '';
|
||||
$node = dom_import_simplexml($node);
|
||||
$no = $node->ownerDocument;
|
||||
$node->appendChild($no->createCDATASection("\n" . $saveContentIdData . "\n"));
|
||||
foreach ($file->content->{$_SESSION['lng']} as $node) {
|
||||
$node = dom_import_simplexml($node);
|
||||
$no = $node->ownerDocument;
|
||||
while ($node->firstChild) $node->removeChild($node->firstChild);
|
||||
$node->appendChild($no->createCDATASection("\n" . $saveContentIdData . "\n"));
|
||||
}
|
||||
|
||||
$saved = $file->asXML($saveContentIdXml);
|
||||
if ($saved === false) {
|
||||
|
||||
Reference in New Issue
Block a user