From 0a8f03d88cd0597d1317cf5164383dea2ae29ca4 Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Fri, 12 Jul 2013 19:53:46 +0200
Subject: [PATCH] add TEMPLATE_DOKUWIKI_PAGETOOLFLOAT_DISPLAY event to template

This adds a custom event to the 'dokuwiki' template that allows plugin
authors to easily integrate custom pagetool buttons into the template.
---
 lib/tpl/dokuwiki/detail.php | 22 +++++++++++++++++-----
 lib/tpl/dokuwiki/main.php   | 23 +++++++++++++++++------
 2 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
index d2ed530a3..1768b665e 100644
--- a/lib/tpl/dokuwiki/detail.php
+++ b/lib/tpl/dokuwiki/detail.php
@@ -109,16 +109,28 @@ header('X-UA-Compatible: IE=edge,chrome=1');
                     <h3 class="a11y"><?php echo $lang['page_tools']; ?></h3>
                     <div class="tools">
                         <ul>
-                            <?php // View in media manager; @todo: transfer logic to backend
+                            <?php
+                                $data = array();
+
+                                // View in media manager; @todo: transfer logic to backend
                                 $imgNS = getNS($IMG);
                                 $authNS = auth_quickaclcheck("$imgNS:*");
                                 if (($authNS >= AUTH_UPLOAD) && function_exists('media_managerURL')) {
                                     $mmURL = media_managerURL(array('ns' => $imgNS, 'image' => $IMG));
-                                    echo '<li><a href="'.$mmURL.'" class="mediaManager"><span>'.$lang['img_manager'].'</span></a></li>';
+                                    $data['mediaManager'] = '<li><a href="'.$mmURL.'" class="mediaManager"><span>'.$lang['img_manager'].'</span></a></li>';
                                 }
-                            ?>
-                            <?php // Back to [ID]; @todo: transfer logic to backend
-                                echo '<li><a href="'.wl($ID).'" class="back"><span>'.$lang['img_backto'].' '.$ID.'</span></a></li>';
+
+                                // Back to [ID]; @todo: transfer logic to backend
+                                $data['img_backto'] = '<li><a href="'.wl($ID).'" class="back"><span>'.$lang['img_backto'].' '.$ID.'</span></a></li>';
+
+                                // the page tools can be ammended through a custom plugin hook
+                                $evt = new Doku_Event('TEMPLATE_DOKUWIKI_PAGETOOLFLOAT_DISPLAY', $data);
+                                if($evt->advise_before()){
+                                    foreach($evt->data as $k => $html) echo $html;
+                                }
+                                $evt->advise_after();
+                                unset($data);
+                                unset($evt);
                             ?>
                         </ul>
                     </div>
diff --git a/lib/tpl/dokuwiki/main.php b/lib/tpl/dokuwiki/main.php
index 43a0c0da7..30cd4dda9 100644
--- a/lib/tpl/dokuwiki/main.php
+++ b/lib/tpl/dokuwiki/main.php
@@ -75,12 +75,23 @@ $showSidebar = $hasSidebar && ($ACT=='show');
                 <div class="tools">
                     <ul>
                         <?php
-                            tpl_action('edit',      1, 'li', 0, '<span>', '</span>');
-                            tpl_action('revert',    1, 'li', 0, '<span>', '</span>');
-                            tpl_action('revisions', 1, 'li', 0, '<span>', '</span>');
-                            tpl_action('backlink',  1, 'li', 0, '<span>', '</span>');
-                            tpl_action('subscribe', 1, 'li', 0, '<span>', '</span>');
-                            tpl_action('top',       1, 'li', 0, '<span>', '</span>');
+                            $data = array(
+                                'edit'      => tpl_action('edit',      1, 'li', 1, '<span>', '</span>'),
+                                'revert'    => tpl_action('revert',    1, 'li', 1, '<span>', '</span>'),
+                                'revisions' => tpl_action('revisions', 1, 'li', 1, '<span>', '</span>'),
+                                'backlink'  => tpl_action('backlink',  1, 'li', 1, '<span>', '</span>'),
+                                'subscribe' => tpl_action('subscribe', 1, 'li', 1, '<span>', '</span>'),
+                                'top'       => tpl_action('top',       1, 'li', 1, '<span>', '</span>')
+                            );
+
+                            // the page tools can be ammended through a custom plugin hook
+                            $evt = new Doku_Event('TEMPLATE_DOKUWIKI_PAGETOOLFLOAT_DISPLAY', $data);
+                            if($evt->advise_before()){
+                                foreach($evt->data as $k => $html) echo $html;
+                            }
+                            $evt->advise_after();
+                            unset($data);
+                            unset($evt);
                         ?>
                     </ul>
                 </div>
-- 
GitLab