xref: /plugin/include/syntax/footer.php (revision b68e5bd3c93341c0d7602b96bfe8701499a5c582)
16f0ad9d7SMichael Klier<?php
26f0ad9d7SMichael Klier/**
3*b68e5bd3SMichael Klier * Include plugin (footer component)
46f0ad9d7SMichael Klier *
56f0ad9d7SMichael Klier * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
66f0ad9d7SMichael Klier * @author  Michael Klier <chi@chimeric.de>
76f0ad9d7SMichael Klier */
86f0ad9d7SMichael Klier
96f0ad9d7SMichael Klierif (!defined('DOKU_INC'))
106f0ad9d7SMichael Klier    define('DOKU_INC', realpath(dirname(__FILE__) . '/../../') . '/');
116f0ad9d7SMichael Klierif (!defined('DOKU_PLUGIN'))
126f0ad9d7SMichael Klier    define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
136f0ad9d7SMichael Klierrequire_once (DOKU_PLUGIN . 'syntax.php');
146f0ad9d7SMichael Klier
156f0ad9d7SMichael Klierclass syntax_plugin_include_footer extends DokuWiki_Syntax_Plugin {
166f0ad9d7SMichael Klier
176f0ad9d7SMichael Klier    function getInfo() {
186f0ad9d7SMichael Klier        return array (
196f0ad9d7SMichael Klier            'author' => 'Gina Häußge, Michael Klier',
206f0ad9d7SMichael Klier            'email' => 'dokuwiki@chimeric.de',
216f0ad9d7SMichael Klier            'date' => @file_get_contents(DOKU_PLUGIN . 'blog/VERSION'),
22*b68e5bd3SMichael Klier            'name' => 'Include Plugin (footer component)',
236f0ad9d7SMichael Klier            'desc' => 'Provides a header instruction which renders a permalink to the included page',
246f0ad9d7SMichael Klier            'url' => 'http://wiki.splitbrain.org/plugin:include',
256f0ad9d7SMichael Klier        );
266f0ad9d7SMichael Klier    }
276f0ad9d7SMichael Klier
286f0ad9d7SMichael Klier    function getType() {
296f0ad9d7SMichael Klier        return 'formatting';
306f0ad9d7SMichael Klier    }
316f0ad9d7SMichael Klier
326f0ad9d7SMichael Klier    function getSort() {
336f0ad9d7SMichael Klier        return 300;
346f0ad9d7SMichael Klier    }
356f0ad9d7SMichael Klier
366f0ad9d7SMichael Klier    function handle($match, $state, $pos, &$handler) {
376f0ad9d7SMichael Klier        // this is a syntax plugin that doesn't offer any syntax, so there's nothing to handle by the parser
386f0ad9d7SMichael Klier    }
396f0ad9d7SMichael Klier
406f0ad9d7SMichael Klier    /**
416f0ad9d7SMichael Klier     * Renders a permalink header.
426f0ad9d7SMichael Klier     *
436f0ad9d7SMichael Klier     * Code heavily copied from the header renderer from inc/parser/xhtml.php, just
446f0ad9d7SMichael Klier     * added an href parameter to the anchor tag linking to the wikilink.
456f0ad9d7SMichael Klier     */
466f0ad9d7SMichael Klier    function render($mode, &$renderer, $data) {
476f0ad9d7SMichael Klier
486f0ad9d7SMichael Klier        list($page, $sect, $sect_title, $flags, $redirect_id, $footer_lvl) = $data;
496f0ad9d7SMichael Klier
506f0ad9d7SMichael Klier        if ($mode == 'xhtml') {
516f0ad9d7SMichael Klier            $renderer->doc .= $this->html_footer($page, $sect, $sect_title, $flags, $footer_lvl, $renderer);
526f0ad9d7SMichael Klier	        return true;
536f0ad9d7SMichael Klier        }
546f0ad9d7SMichael Klier        return false;
556f0ad9d7SMichael Klier    }
566f0ad9d7SMichael Klier
576f0ad9d7SMichael Klier    /**
586f0ad9d7SMichael Klier     * Returns the meta line below the included page
596f0ad9d7SMichael Klier     */
606f0ad9d7SMichael Klier    function html_footer($page, $sect, $sect_title, $flags, $footer_lvl, &$renderer) {
616f0ad9d7SMichael Klier        global $conf, $ID;
626f0ad9d7SMichael Klier
636f0ad9d7SMichael Klier        if(!$flags['footer']) return '';
646f0ad9d7SMichael Klier
656f0ad9d7SMichael Klier        $meta  = p_get_metadata($page);
666f0ad9d7SMichael Klier        $xhtml = array();
676f0ad9d7SMichael Klier
686f0ad9d7SMichael Klier        // permalink
69*b68e5bd3SMichael Klier        if ($flags['permalink']) {
706f0ad9d7SMichael Klier            $class = (page_exists($page) ? 'wikilink1' : 'wikilink2');
71d53221c4SMichael Klier            $url   = ($sect) ? wl($page) . '#' . $sect : wl($page);
72d53221c4SMichael Klier            $name  = ($sect) ? $sect_title : $page;
73d53221c4SMichael Klier            $title = ($sect) ? $page . '#' . $sect : $page;
746f0ad9d7SMichael Klier            if (!$title) $title = str_replace('_', ' ', noNS($page));
756f0ad9d7SMichael Klier            $link = array(
76d53221c4SMichael Klier                    'url'    => $url,
77d53221c4SMichael Klier                    'title'  => $title,
78d53221c4SMichael Klier                    'name'   => $name,
796f0ad9d7SMichael Klier                    'target' => $conf['target']['wiki'],
806f0ad9d7SMichael Klier                    'class'  => $class . ' permalink',
816f0ad9d7SMichael Klier                    'more'   => 'rel="bookmark"',
826f0ad9d7SMichael Klier                    );
836f0ad9d7SMichael Klier            $xhtml[] = $renderer->_formatLink($link);
846f0ad9d7SMichael Klier        }
856f0ad9d7SMichael Klier
866f0ad9d7SMichael Klier        // date
876f0ad9d7SMichael Klier        if ($flags['date']) {
886f0ad9d7SMichael Klier            $date = $meta['date']['created'];
896f0ad9d7SMichael Klier            if ($date) {
906f0ad9d7SMichael Klier                $xhtml[] = '<abbr class="published" title="'.strftime('%Y-%m-%dT%H:%M:%SZ', $date).'">'
916f0ad9d7SMichael Klier                       . strftime($conf['dformat'], $date)
926f0ad9d7SMichael Klier                       . '</abbr>';
936f0ad9d7SMichael Klier            }
946f0ad9d7SMichael Klier        }
956f0ad9d7SMichael Klier
966f0ad9d7SMichael Klier        // author
976f0ad9d7SMichael Klier        if ($flags['user']) {
986f0ad9d7SMichael Klier            $author   = $meta['creator'];
996f0ad9d7SMichael Klier            if ($author) {
1006f0ad9d7SMichael Klier                $userpage = cleanID($this->getConf('usernamespace').':'.$author);
1016f0ad9d7SMichael Klier                resolve_pageid(getNS($ID), $userpage, $exists);
1026f0ad9d7SMichael Klier                $class = ($exists ? 'wikilink1' : 'wikilink2');
1036f0ad9d7SMichael Klier                $link = array(
1046f0ad9d7SMichael Klier                        'url'    => wl($userpage),
1056f0ad9d7SMichael Klier                        'title'  => $userpage,
1066f0ad9d7SMichael Klier                        'name'   => hsc($author),
1076f0ad9d7SMichael Klier                        'target' => $conf['target']['wiki'],
1086f0ad9d7SMichael Klier                        'class'  => $class.' url fn',
1096f0ad9d7SMichael Klier                        'pre'    => '<span class="vcard author">',
1106f0ad9d7SMichael Klier                        'suf'    => '</span>',
1116f0ad9d7SMichael Klier                        );
1126f0ad9d7SMichael Klier                $xhtml[]    = $renderer->_formatLink($link);
1136f0ad9d7SMichael Klier            }
1146f0ad9d7SMichael Klier        }
1156f0ad9d7SMichael Klier
1166f0ad9d7SMichael Klier        // comments - let Discussion Plugin do the work for us
1177a09d26bSMichael Klier        if (empty($sect) && $flags['comments'] && (!plugin_isdisabled('discussion')) && ($discussion =& plugin_load('helper', 'discussion'))) {
1186f0ad9d7SMichael Klier            $disc = $discussion->td($page);
1196f0ad9d7SMichael Klier            if ($disc) $xhtml[] = '<span class="comment">' . $disc . '</span>';
1206f0ad9d7SMichael Klier        }
1216f0ad9d7SMichael Klier
1226f0ad9d7SMichael Klier        // linkbacks - let Linkback Plugin do the work for us
1236f0ad9d7SMichael Klier        if (empty($sect) && $flags['linkbacks'] && (!plugin_isdisabled('linkback')) && ($linkback =& plugin_load('helper', 'linkback'))) {
1247a09d26bSMichael Klier            $link = $linkback->td($page);
1256f0ad9d7SMichael Klier            if ($link) $xhtml[] = '<span class="linkback">' . $link . '</span>';
1266f0ad9d7SMichael Klier        }
1276f0ad9d7SMichael Klier
1286f0ad9d7SMichael Klier        $xhtml = implode(DOKU_LF . DOKU_TAB . '&middot; ', $xhtml);
1296f0ad9d7SMichael Klier
1306f0ad9d7SMichael Klier        // tags - let Tag Plugin do the work for us
1317a09d26bSMichael Klier        if (empty($sect) && $flags['tags'] && (!plugin_isdisabled('tag')) && ($tag =& plugin_load('helper', 'tag'))) {
1327a09d26bSMichael Klier            $tags = '<div class="tags"><span>' . DOKU_LF
1337a09d26bSMichael Klier                          . DOKU_TAB . $tag->td($page) . DOKU_LF
1346f0ad9d7SMichael Klier                          . DOKU_TAB . '</span></div>' . DOKU_LF;
1357a09d26bSMichael Klier            $xhtml .= $tags . DOKU_TAB;
1366f0ad9d7SMichael Klier        }
1376f0ad9d7SMichael Klier
1386f0ad9d7SMichael Klier        if (!$xhtml) $xhtml = '&nbsp;';
1396f0ad9d7SMichael Klier        $class = 'inclmeta';
1406f0ad9d7SMichael Klier        $class .= ' level' . $footer_lvl;
1416f0ad9d7SMichael Klier        return '<div class="' . $class . '">' . DOKU_LF . DOKU_TAB . $xhtml . DOKU_LF . '</div>' . DOKU_LF;
1426f0ad9d7SMichael Klier    }
1436f0ad9d7SMichael Klier}
1446f0ad9d7SMichael Klier// vim:ts=4:sw=4:et:enc=utf-8:
145