Реализовано открытие и закрытие вкладок на нажатие трех полосок, добавлена вкладка структуры страницы с возможностью вставки плагинов, подключена библиотека MarkedJS, исправлены баги, управление центральными блоками через CDATA.

This commit is contained in:
2025-11-17 22:57:36 +02:00
parent 5c3e28fd55
commit 68e516b45c
25 changed files with 1315 additions and 178 deletions

View File

@@ -11,23 +11,20 @@
* @throws Exception В случае проблем с сохранением контента
*/
function savePageCenterBlock($params) {
global $config, $path, $_SESSION;
global $config, $path, $_SESSION;
$saveContentIdXml = $path . $_SESSION['page_url'] . ".page.php";
$saveContentIdData = $params['saveContentIdData'] ?? '';
$saveContentIdData = html_entity_decode($params['saveContentIdData'] ?? '', ENT_QUOTES, 'UTF-8');
$xml = file_get_contents($saveContentIdXml);
$xml = file_get_contents($saveContentIdXml);
$xml = preg_replace('#<' . $_SESSION['lng'] . '>.*?</' . $_SESSION['lng'] . '>#s', '<' . $_SESSION['lng'] . '></' . $_SESSION['lng'] . '>', $xml);
$xml = preg_replace('#(<' . $_SESSION['lng'] . '>)#', "$1\n" . $saveContentIdData . "\n", $xml, 1);
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);
if (file_put_contents($saveContentIdXml, $xml) !== false) return 'true';
throw new Exception("Problem saving content", -32003);
}
/**
* @brief Сохраняет левый и правый блоки страницы
* @param array $params Массив с данными блоков, ключ 'floatsBlock' содержит массив левых и правых блоков
@@ -255,6 +252,20 @@ function getPlugin($params) {
return ob_get_clean();
}
/**
* Возвращает список доступных плагинов в виде JSON
* @param array $params Входные параметры запроса (не используются)
* @return string JSON-массив с названиями плагинов
* @throws Exception Если глобальная переменная $pluginBlocks не определена или пуста
*/
function getPluginBlocks($params) {
global $pluginBlocks;
if (!isset($pluginBlocks) || !is_array($pluginBlocks) || empty($pluginBlocks)) {
throw new Exception("Нет доступных плагинов", -1);
}
return $pluginBlocks;
}
/**
* @brief Загружает изображение пользователя из Base64 и сохраняет на сервер
* @param array $params Массив с данными изображения, включая 'userImgBase64' и 'userImgName'