/** * Вставляет кнопку «Комментировать» под каждым , * собирая точный оригинальный сниппет. */ 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) direct /_media/... elseif(strpos($srcRaw,'/_media/')!==false){ // путь после /_media/ $path = parse_url($srcRaw, PHP_URL_PATH); $sub = substr($path, strlen('/_media/')); // namespace: replace slashes with colons $media = str_replace('/', ':', $sub); // get width from attribute, if present if(preg_match('/\bwidth="(\d+)"/i',$attrs,$wm)){ $width = $wm[1]; } } if(!$media) return $m[0]; // caption from alt="", if exists $label = ''; if(preg_match('/\balt="([^"]*)"/i',$attrs,$am)){ $label = $am[1]; } // build exact wikitext snippet $snippet = '{{:' . $media; if($width) $snippet .= '?' . $width; $snippet .= '|' . $label . '}}'; // link to our action $url = DOKU_URL . 'doku.php?do=mediacomment&snippet=' . rawurlencode($snippet); // button HTML $btn = '
' . '' . 'Комментировать
'; return '' . $btn; }, $html ); $event->data = $html; } archive-orlyonok.ru [archive-orlyonok.ru]

Карта сайта

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