Карта сайта
Перед вами список доступных страниц, упорядоченный по пространствам имён.
/**
* Вставляет кнопку «Комментировать» под каждым и правильно собирает snippet.
*/
public function injectButtons(Doku_Event $event, $param) {
global $ID;
if (!is_string($event->data)) return;
$html = $event->data;
$html = preg_replace_callback(
'#
]*\bsrc="([^"]+)"[^>]*)>#i',
function($m) use($ID) {
$attrs = $m[1];
$srcRaw = html_entity_decode($m[2]);
$media = '';
$width = '';
// 1) fetch.php?media=…&width=…
if (strpos($srcRaw, 'fetch.php?') !== false) {
$parts = parse_url($srcRaw);
parse_str($parts['query'] ?? '', $qs);
$media = $qs['media'] ?? '';
$width = $qs['width'] ?? '';
}
// 2) прямой /_media/namespace:path:file.jpg?600
elseif (strpos($srcRaw, '/_media/') !== false) {
$path = parse_url($srcRaw, PHP_URL_PATH);
// Вся строка после «/_media/»
$media = substr($path, strpos($path, '/_media/') + strlen('/_media/'));
$width = parse_url($srcRaw, PHP_URL_QUERY) ?? '';
}
if (!$media) return $m[0];
// ALT-подпись
$label = '';
if (preg_match('/alt="([^"]*)"/i', $attrs, $am)) {
$label = $am[1];
}
// Составляем точный wikitext-сниппет
$snippet = '{{:' . $media;
if ($width) $snippet .= '?' . $width;
$snippet .= '|' . $label . '}}';
// Ссылка на создание страницы с этим snippet
$url = DOKU_URL . 'doku.php?do=mediacomment&snippet=' . rawurlencode($snippet);
// Кнопка
$btn = '