1438421f5Salexdraconian<?php 2438421f5Salexdraconian/** 3438421f5Salexdraconian * ImageBox's action component for supporting Move plugin. 4438421f5Salexdraconian * 5438421f5Salexdraconian * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6438421f5Salexdraconian * @author FFTiger <fftiger@wikisquare.com>, myst6re <myst6re@wikisquare.com> 7438421f5Salexdraconian */ 8438421f5Salexdraconian 9438421f5Salexdraconianclass action_plugin_imagebox extends DokuWiki_Action_Plugin { 10438421f5Salexdraconian 11438421f5Salexdraconian function register(Doku_Event_handler $controller) { 12438421f5Salexdraconian $controller->register_hook('PLUGIN_MOVE_HANDLERS_REGISTER', 'BEFORE', $this, 'handle_move_register'); 13438421f5Salexdraconian } 14438421f5Salexdraconian 15438421f5Salexdraconian public function handle_move_register(Doku_Event $event, $params) { 16438421f5Salexdraconian $event->data['handlers']['imagebox'] = array($this, 'rewrite_imagebox'); 17438421f5Salexdraconian } 18438421f5Salexdraconian 19438421f5Salexdraconian public function rewrite_imagebox($match, $state, $pos, $plugin, helper_plugin_move_handler $handler) { 20438421f5Salexdraconian 21438421f5Salexdraconian // Only work on enter pattern. (Do not change description and exit pattern.) 22438421f5Salexdraconian if (substr($match, 0, 3) != '[{{') return $match; 23438421f5Salexdraconian 24438421f5Salexdraconian // Get pure syntax without markup. 25438421f5Salexdraconian if (substr($match, -1) == '|') { 26438421f5Salexdraconian $syntax = substr($match, 3, -1); 27438421f5Salexdraconian } else { 28438421f5Salexdraconian $syntax = substr($match, 3); 29438421f5Salexdraconian } 30438421f5Salexdraconian 31*d376f198Salexdraconian $left_blank = false; 32*d376f198Salexdraconian $right_blank = false; 33*d376f198Salexdraconian if (substr($syntax, 0, 1) == ' ') { 34*d376f198Salexdraconian $left_blank = true; 35*d376f198Salexdraconian $syntax = substr($syntax, 1); 36*d376f198Salexdraconian } 37*d376f198Salexdraconian if (substr($syntax, -1) == ' ') { 38*d376f198Salexdraconian $right_blank = true; 39*d376f198Salexdraconian $syntax = substr($syntax, 0, -1); 40*d376f198Salexdraconian } 41*d376f198Salexdraconian 42438421f5Salexdraconian list($src, $option) = array_pad(explode('?', $syntax, 2), 2, ''); 43438421f5Salexdraconian 44438421f5Salexdraconian // Resolve new source. 45438421f5Salexdraconian if (method_exists($handler, 'adaptRelativeId')) { 46438421f5Salexdraconian $new_src = $handler->adaptRelativeId($src); 47438421f5Salexdraconian } else { 48438421f5Salexdraconian $new_src = $handler->resolveMoves($src, 'media'); 49438421f5Salexdraconian $new_src = $handler->relativeLink($src, $new_src, 'media'); 50438421f5Salexdraconian } 51438421f5Salexdraconian 52438421f5Salexdraconian if ($src == $new_src) { 53438421f5Salexdraconian return $match; 54438421f5Salexdraconian } else { 55438421f5Salexdraconian // Construct result. 56*d376f198Salexdraconian $result = '[{{'; 57*d376f198Salexdraconian if ($left_blank) $result .= ' '; 58*d376f198Salexdraconian $result .= $new_src; 59438421f5Salexdraconian if ($option) $result .= "?".$option; 60*d376f198Salexdraconian if ($right_blank) $result .= ' '; 61438421f5Salexdraconian $result .= "|"; 62438421f5Salexdraconian 63438421f5Salexdraconian return $result; 64438421f5Salexdraconian } 65438421f5Salexdraconian 66438421f5Salexdraconian } 67438421f5Salexdraconian 68438421f5Salexdraconian} 69438421f5Salexdraconian?>