*/ function tpl_pagetitle(): void { global $ID; echo htmlspecialchars(str_replace(':', ' » ', $ID)); } /** * Подключает верхнюю часть HTML-шаблона (Шапку) */ function tpl_header(): void { if (file_exists(WIKI_TPL . 'header.php')) { include WIKI_TPL . 'header.php'; } } /** * Подключает нижнюю часть HTML-шаблона (Подвал) */ function tpl_footer(): void { if (file_exists(WIKI_TPL . 'footer.php')) { include WIKI_TPL . 'footer.php'; } } /** * Системная функция ядра для подключения панели инструментов редактора */ function tpl_extensions_toolbar(): void { if (file_exists(WIKI_ROOT . 'src/toolbar.php')) { include WIKI_ROOT . 'src/toolbar.php'; } } /** * Главный диспетчер вывода контента в шаблоне */ function tpl_content(): void { global $ACT; switch ($ACT) { case 'login': tpl_login_form(); break; case 'edit': tpl_edit_form(); break; case 'media': tpl_media_manager(); break; case 'show': default: tpl_page_body(); break; } } /** * ВЫВОД СТРАНИЦЫ: Читает файл, рендерит через Parser и выводит живой HTML */ function tpl_page_body(): void { global $ID, $wikiStorage; echo "

" . htmlspecialchars($ID) . "

"; if ($wikiStorage->exists($ID)) { $rawText = $wikiStorage->read($ID); require_once WIKI_ROOT . 'src/Parser.php'; $parser = new Parser(); $htmlContent = $parser->render($rawText); echo "
"; echo $htmlContent; echo "
"; } else { echo "
"; echo "Страницы с именем " . htmlspecialchars($ID) . " еще не существует."; echo "
"; if (auth_is_logged()) { echo "

Создать эту страницу

"; } else { echo "

Войдите в систему, чтобы иметь возможность создать её.

"; } } } /** * ФОРМА РЕДАКТИРОВАНИЯ И ПРЕДПРОСМОТРА СНИЗУ */ function tpl_edit_form(): void { global $ID, $wikiStorage; if (!auth_is_logged()) { echo "

Ошибка: Только зарегистрированные пользователи могут редактировать страницы.

"; return; } $currentText = $wikiStorage->read($ID); echo "
Отредактируйте страницу и нажмите «Сохранить».
"; echo "

Правка страницы: " . htmlspecialchars($ID) . "

"; echo '
'; echo '
'; // Системный тулбар кнопок tpl_extensions_toolbar(); // Поле ввода текста echo ''; echo '
'; // Блок нижних кнопок управления движком (В стиле DokuWiki) echo '
'; echo '
'; echo ' '; echo ' '; echo ' Отменить'; echo '
'; echo '
'; echo ' '; echo ' '; echo '
'; echo '
'; echo '
'; // БЛОК ДИНАМИЧЕСКОГО ПРЕДПРОСМОТРА СНИЗУ echo ''; } /** * ИНТЕРФЕЙС АВТОРИЗАЦИИ */ function tpl_login_form(): void { if (auth_is_logged()) { echo "

Вы уже успешно авторизованы в системе.

"; return; } if (!empty($GLOBALS['login_error'])) { echo "
"; echo $GLOBALS['login_error']; echo "
"; } echo '

Авторизация

'; } /** * ИНТЕРФЕЙС МЕДИАМЕНЕДЖЕРА */ function tpl_media_manager(): void { global $ID, $mediaManager; $currentNS = str_contains($ID, ':') ? substr($ID, 0, (int)strrpos($ID, ':')) : ''; echo "

Медиа-менеджер для пространства имен: " . htmlspecialchars($currentNS ?: '[корень]') . "

"; if (auth_is_logged()) { echo '

Загрузить файл в этот раздел

Разрешены форматы: JPG, PNG, GIF, PDF, TXT
'; } $files = $mediaManager->getFiles($currentNS); if (empty($files)) { echo "

В данном разделе файлов пока нет.

"; return; } echo '
'; foreach ($files as $file) { $webPath = 'data/media/' . ($currentNS ? str_replace(':', '/', $currentNS) . '/' : '') . $file['name']; $sizeKb = round($file['size'] / 1024, 1); echo '
'; if ($file['is_image']) { echo '
'; } else { echo '
' . htmlspecialchars($file['ext']) . '
'; } echo '
' . htmlspecialchars($file['name']) . '
'; echo '
Размер: ' . $sizeKb . ' КБ
'; if (auth_is_logged()) { $delUrl = '?id=' . urlencode($ID) . '&do=delete&file=' . urlencode($file['name']); echo 'Удалить'; } echo '
'; } echo '
'; }