From 396c218f61d8626a516941cd6cd66f09e528e32c Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Fri, 27 Aug 2010 10:37:07 +0200
Subject: [PATCH] make use of tpl_get_action in tpl_actiondropdown FS#2005

---
 inc/actions.php  |  2 ++
 inc/template.php | 71 +++++++++++++++++-------------------------------
 2 files changed, 27 insertions(+), 46 deletions(-)

diff --git a/inc/actions.php b/inc/actions.php
index 914ff1ce6..3e0cb1207 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -185,6 +185,8 @@ function act_clean($act){
     if($act == 'export_html') $act = 'export_xhtml';
     if($act == 'export_htmlbody') $act = 'export_xhtmlbody';
 
+    if($act === '') $act = 'show';
+
     // check if action is disabled
     if(!actionOK($act)){
         msg('Command disabled: '.htmlspecialchars($act),-1);
diff --git a/inc/template.php b/inc/template.php
index f1995b6ba..003febe46 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -491,7 +491,7 @@ function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){
     return true;
 }
 
- /**
+/**
  * Check the actions and get data for buttons and links
  *
  * Available actions are
@@ -1147,7 +1147,7 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
     global $auth;
 
     echo '<form method="post" accept-charset="utf-8">'; #FIXME action
-        echo '<input type="hidden" name="id" value="'.$ID.'" />';
+    echo '<input type="hidden" name="id" value="'.$ID.'" />';
     if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />';
     echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />';
 
@@ -1155,60 +1155,39 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
     echo '<option value="">'.$empty.'</option>';
 
     echo '<optgroup label=" &mdash; ">';
-    // 'edit' - most complicated type, we need to decide on current action
-    if($ACT == 'show' || $ACT == 'search'){
-        if($INFO['writable']){
-            if(!empty($INFO['draft'])) {
-                echo '<option value="edit">'.$lang['btn_draft'].'</option>';
-            } else {
-                if($INFO['exists']){
-                    echo '<option value="edit">'.$lang['btn_edit'].'</option>';
-                }else{
-                    echo '<option value="edit">'.$lang['btn_create'].'</option>';
-                }
-            }
-        }else if(actionOK('source')) { //pseudo action
-            echo '<option value="edit">'.$lang['btn_source'].'</option>';
-        }
-    }else{
-        echo '<option value="show">'.$lang['btn_show'].'</option>';
-    }
+        $act = tpl_get_action('edit');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
 
-    echo '<option value="revisions">'.$lang['btn_revs'].'</option>';
-    if($INFO['ismanager'] && $REV && $INFO['writable'] && actionOK('revert')){
-        echo '<option value="revert">'.$lang['btn_revert'].'</option>';
-    }
-    echo '<option value="backlink">'.$lang['btn_backlink'].'</option>';
+        $act = tpl_get_action('revisions');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+
+        $act = tpl_get_action('revert');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+
+        $act = tpl_get_action('backlink');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
     echo '</optgroup>';
 
     echo '<optgroup label=" &mdash; ">';
-    echo '<option value="recent">'.$lang['btn_recent'].'</option>';
-    echo '<option value="index">'.$lang['btn_index'].'</option>';
+        $act = tpl_get_action('recent');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
+
+        $act = tpl_get_action('index');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
     echo '</optgroup>';
 
     echo '<optgroup label=" &mdash; ">';
-    if($conf['useacl'] && $auth){
-        if($_SERVER['REMOTE_USER']){
-            echo '<option value="logout">'.$lang['btn_logout'].'</option>';
-        }else{
-            echo '<option value="login">'.$lang['btn_login'].'</option>';
-        }
-    }
+        $act = tpl_get_action('login');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
 
-    if($conf['useacl'] && $auth && $_SERVER['REMOTE_USER'] &&
-            $auth->canDo('Profile') && ($ACT!='profile')){
-        echo '<option value="profile">'.$lang['btn_profile'].'</option>';
-    }
+        $act = tpl_get_action('profile');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
 
-    if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers']){
-        if($_SERVER['REMOTE_USER']){
-            echo '<option value="subscribe">'.$lang['btn_subscribe'].'</option>';
-        }
-    }
+        $act = tpl_get_action('subscribe');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
 
-    if($INFO['ismanager']){
-        echo '<option value="admin">'.$lang['btn_admin'].'</option>';
-    }
+        $act = tpl_get_action('admin');
+        if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>';
     echo '</optgroup>';
 
     echo '</select>';
-- 
GitLab