From 8df3db566a3a937b45ebf11adb90d265e6f5e2d4 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 17 Nov 2019 20:45:02 +0100 Subject: initial checking of customized version 1.0rc9 --- .../dokuwiki/lib/plugins/changelinks/syntax.php | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 plugins/dokuwiki/lib/plugins/changelinks/syntax.php (limited to 'plugins/dokuwiki/lib/plugins/changelinks/syntax.php') diff --git a/plugins/dokuwiki/lib/plugins/changelinks/syntax.php b/plugins/dokuwiki/lib/plugins/changelinks/syntax.php new file mode 100644 index 0000000..263e066 --- /dev/null +++ b/plugins/dokuwiki/lib/plugins/changelinks/syntax.php @@ -0,0 +1,157 @@ + 'Florian Schmitz', + 'email' => 'floele@gmail.com', + 'date' => '2005-12-18', + 'name' => 'Change-Interwikilinks Plugin', + 'desc' => 'Changes the functionality of interwikilinks', + 'url' => 'http://flyspray.org/', + ); + } + + /** + * What kind of syntax are we? + */ + function getType(){ + return 'substition'; + } + + /** + * Where to sort in? + */ + function getSort(){ + return 299; + } + + /** + * Connect pattern to lexer + */ + + function connectTo($mode) { + // Word boundaries? + $this->Lexer->addSpecialPattern("\[\[.+?\]\]",$mode,'plugin_changelinks'); + } + + /** + * Handle the match + */ + function handle($match, $state, $pos, &$handler){ + // Strip the opening and closing markup + $link = preg_replace(array('/^\[\[/','/\]\]$/u'),'',$match); + + // Split title from URL + $link = preg_split('/\|/u',$link,2); + if ( !isset($link[1]) ) { + $link[1] = NULL; + } else if ( preg_match('/^\{\{[^\}]+\}\}$/',$link[1]) ) { + // If the title is an image, convert it to an array containing the image details + $link[1] = Doku_Handler_Parse_Media($link[1]); + } + $link[0] = trim($link[0]); + + //decide which kind of link it is + + if ( preg_match('/^[a-zA-Z]+>{1}.*$/u',$link[0]) ) { + // Interwiki + $interwiki = preg_split('/>/u',$link[0]); + $handler->_addCall( + 'interwikilink', + array($link[0],$link[1],strtolower($interwiki[0]),$interwiki[1]), + $pos + ); + } elseif ( preg_match('/^\\\\\\\\[\w.:?\-;,]+?\\\\/u',$link[0]) ) { + // Windows Share + $handler->_addCall( + 'windowssharelink', + array($link[0],$link[1]), + $pos + ); + } elseif ( preg_match('#^([a-z0-9\-\.+]+?)://#i',$link[0]) ) { + // external link (accepts all protocols) + $handler->_addCall( + 'externallink', + array($link[0],$link[1]), + $pos + ); + } elseif ( preg_match('#([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i',$link[0]) ) { + // E-Mail + $handler->_addCall( + 'emaillink', + array($link[0],$link[1]), + $pos + ); + } elseif ( preg_match('!^#.+!',$link[0]) ){ + // local link + $handler->_addCall( + 'locallink', + array(substr($link[0],1),$link[1]), + $pos + ); + } else { + return array($link[0],$link[1]); + } + } + + /** + * Create output + */ + function render($mode, &$renderer, $data) { + if($mode == 'xhtml') { + global $conf; + $id = $data[0]; + $name = $data[1]; + + //prepare for formating + $link['target'] = $conf['target']['wiki']; + $link['style'] = ''; + $link['pre'] = ''; + $link['suf'] = ''; + $link['more'] = ''; + $link['class'] = 'internallink'; + $link['url'] = DOKU_INTERNAL_LINK . $id; + + if(is_array($name)){ + $link['name'] = (isset($name['title'])) ? hsc($name['title']) : hsc($id); + $link['title'] = $id; + } else{ + $link['name'] = ($name) ? hsc($name) : hsc($id); + $link['title'] = ($name) ? $name : $id; + } + + //add search string + if($search){ + ($conf['userewrite']) ? $link['url'].='?s=' : $link['url'].='&s='; + $link['url'] .= urlencode($search); + } + + //output formatted + $renderer->doc .= $renderer->_formatLink($link); + } + return true; + } + +} + +//Setup VIM: ex: et ts=4 enc=utf-8 : +?> -- cgit v1.2.3-54-g00ecf