diff --git a/plugin.info.txt b/plugin.info.txt --- a/plugin.info.txt +++ b/plugin.info.txt @@ -1,7 +1,7 @@ base linksenhanced author Andreas Boehler email dev@aboehler.at -date 2019-05-28 +date 2019-05-29 name linksenhanced plugin desc Enhanced Link Syntax url http://www.aboehler.at diff --git a/syntax/table.php b/syntax/table.php --- a/syntax/table.php +++ b/syntax/table.php @@ -1,132 +1,137 @@ FontAwesome Code]] * [[render^http://www.dokuwiki.org|//Formatted Output, probably within a paragraph//]] * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Andreas Böhler */ if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'syntax.php'); /** * All DokuWiki plugins to extend the parser/rendering mechanism * need to inherit from this class */ class syntax_plugin_linksenhanced_table extends DokuWiki_Syntax_Plugin { function getType() { return 'substition'; } function getPType() { return 'normal'; } function getAllowedTypes() { return array('container','substition','protected','disabled','paragraphs','formatting'); } function getSort() { return 202; } function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{linksenhanced>[^}]*\}\}',$mode,'plugin_linksenhanced_table'); } /** * Handle the match. Use either the standard linking mechanism or, when enabled, * pass the title through the parser */ function handle($match, $state, $pos, Doku_Handler $handler) { $options = trim(substr($match,16,-2)); $options = explode(',', $options); $data = array('links' => array(), - 'namespace' => '' + 'namespace' => false ); foreach($options as $option) { list($key, $val) = explode('=', $option); $key = strtolower(trim($key)); $val = trim($val); $data[$key] = $val; } $data['links'] = $this->getPagesAndLinks($data['namespace']); return $data; } /** * Create output */ function getPagesAndLinks($namespace) { global $conf; $opts = array( 'depth' => 0, 'listfiles' => true, 'listdirs' => false, 'pagesonly' => true, 'firsthead' => true, 'sneakyacl' => $conf['sneaky_index'], ); - $namespace = explode(';', $namespace); + if($namespace !== false) + $namespace = explode(';', $namespace); $data = array(); $retData = array(); search($data, $conf['datadir'],'search_universal',$opts); foreach($data as $k => $pdata) { - if(!in_array(getNS($pdata['id']), $namespace)) + $ns = getNS($pdata['id']); + if($ns === false) + $ns = ''; + + if($namespace !== false && !in_array($ns, $namespace)) continue; $meta = p_get_metadata($pdata['id']); if(is_array($meta['plugin_linksenhanced']['links'])) { $retData[$pdata['id']] = $meta['plugin_linksenhanced']['links']; } } return $retData; } function render($format, Doku_Renderer $R, $data) { if($format == 'metadata') { $R->meta['plugin_linksenhanced']['nocache'] = true; return true; } if($format != 'xhtml') return false; echo '

Link Overview

'; echo ''; echo ''; foreach($data['links'] as $page => $links) { echo ''; $first = true; foreach($links as $link) { if(!$first) echo ''; else $first = false; echo ''; echo ''; } } echo ''; echo '
PageLink Status
'.$page.'
'.$link.'
'; } }