/** * Вставляет кнопку «Комментировать» под каждым и правильно собирает 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 = '
' . 'Комментировать' . '
'; // Возвращаем оригинальный тег + кнопку return '' . $btn; }, $html ); $event->data = $html; } archive-orlyonok.ru [archive-orlyonok.ru]

Карта сайта

Перед вами список доступных страниц, упорядоченный по пространствам имён.