From 10271ce404f0c9bef254b22ad4258ac6355e22cc Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Sat, 6 Jun 2009 12:10:45 +0200
Subject: [PATCH] Redesigned admin screen
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Ignore-this: a0d2db2839de9eacbd6a853c39ed592c

This patch reorders the admin screen to make the main tasks better accessible.
This was inspired by a similar plugin by HÃ¥kan Sandell [1]

[1] http://www.dokuwiki.org/plugin:adminhomepage

darcs-hash:20090606101045-7ad00-83fbb0dd3af288f66801b796387e4ec3d411d4c9.gz
---
 inc/html.php                     | 111 +++++++++++++++++++++++--------
 inc/lang/en/adminplugins.txt     |   2 +
 lib/images/admin/README          |   2 +
 lib/images/admin/acl.png         | Bin 0 -> 1336 bytes
 lib/images/admin/config.png      | Bin 0 -> 1761 bytes
 lib/images/admin/plugin.png      | Bin 0 -> 1415 bytes
 lib/images/admin/popularity.png  | Bin 0 -> 1420 bytes
 lib/images/admin/revert.png      | Bin 0 -> 1598 bytes
 lib/images/admin/usermanager.png | Bin 0 -> 1850 bytes
 lib/tpl/default/_admin.css       |  43 ++++++++++++
 lib/tpl/default/style.ini        |   1 +
 11 files changed, 130 insertions(+), 29 deletions(-)
 create mode 100644 inc/lang/en/adminplugins.txt
 create mode 100644 lib/images/admin/README
 create mode 100644 lib/images/admin/acl.png
 create mode 100644 lib/images/admin/config.png
 create mode 100644 lib/images/admin/plugin.png
 create mode 100644 lib/images/admin/popularity.png
 create mode 100644 lib/images/admin/revert.png
 create mode 100644 lib/images/admin/usermanager.png
 create mode 100644 lib/tpl/default/_admin.css

diff --git a/inc/html.php b/inc/html.php
index 8c555bbbe..72af8f18a 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1332,40 +1332,93 @@ function html_debug(){
   print '</body></html>';
 }
 
+/**
+ * List available Administration Tasks
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author HÃ¥kan Sandell <hakan.sandell@home.se>
+ */
 function html_admin(){
-  global $ID;
-  global $INFO;
-  global $lang;
-  global $conf;
-
-  print p_locale_xhtml('admin');
-
-  // build menu of admin functions from the plugins that handle them
-  $pluginlist = plugin_list('admin');
-  $menu = array();
-  foreach ($pluginlist as $p) {
-    if($obj =& plugin_load('admin',$p) === NULL) continue;
-
-    // check permissions
-    if($obj->forAdminOnly() && !$INFO['isadmin']) continue;
-
-    $menu[] = array('plugin' => $p,
-                    'prompt' => $obj->getMenuText($conf['lang']),
-                    'sort' => $obj->getMenuSort()
-                   );
-  }
+    global $ID;
+    global $INFO;
+    global $lang;
+    global $conf;
+    global $auth;
 
-  usort($menu, 'p_sort_modes');
+    // build menu of admin functions from the plugins that handle them
+    $pluginlist = plugin_list('admin');
+    $menu = array();
+    foreach ($pluginlist as $p) {
+        if($obj =& plugin_load('admin',$p) === NULL) continue;
 
-  // output the menu
-  ptln('<ul>');
+        // check permissions
+        if($obj->forAdminOnly() && !$INFO['isadmin']) continue;
 
-  foreach ($menu as $item) {
-    if (!$item['prompt']) continue;
-    ptln('  <li><div class="li"><a href="'.wl($ID, 'do=admin&amp;page='.$item['plugin']).'">'.$item['prompt'].'</a></div></li>');
-  }
+        $menu[$p] = array('plugin' => $p,
+                          'prompt' => $obj->getMenuText($conf['lang']),
+                          'sort' => $obj->getMenuSort()
+                         );
+    }
 
-  ptln('</ul>');
+    print p_locale_xhtml('admin');
+
+    // Admin Tasks
+    if($INFO['isadmin']){
+        ptln('<ul class="admin_tasks">');
+
+        if($auth && $auth->canDo('getUsers')){
+            ptln('  <li class="admin_usermanager"><div class="li">'.
+                    '<a href="'.wl($ID, array('do' => 'admin','page' => 'usermanager')).'">'.
+                    $menu['usermanager']['prompt'].'</a></div></li>');
+        }
+        unset($menu['usermanager']);
+
+        ptln('  <li class="admin_acl"><div class="li">'.
+                '<a href="'.wl($ID, array('do' => 'admin','page' => 'acl')).'">'.
+                $menu['acl']['prompt'].'</a></div></li>');
+        unset($menu['acl']);
+
+        ptln('  <li class="admin_plugin"><div class="li">'.
+                '<a href="'.wl($ID, array('do' => 'admin','page' => 'plugin')).'">'.
+                $menu['plugin']['prompt'].'</a></div></li>');
+        unset($menu['plugin']);
+
+        ptln('  <li class="admin_config"><div class="li">'.
+                '<a href="'.wl($ID, array('do' => 'admin','page' => 'config')).'">'.
+                $menu['config']['prompt'].'</a></div></li>');
+        unset($menu['config']);
+    }
+    ptln('</ul>');
+
+    // Manager Tasks
+    ptln('<ul class="admin_tasks">');
+
+    ptln('  <li class="admin_revert"><div class="li">'.
+            '<a href="'.wl($ID, array('do' => 'admin','page' => 'revert')).'">'.
+            $menu['revert']['prompt'].'</a></div></li>');
+    unset($menu['revert']);
+
+    ptln('  <li class="admin_popularity"><div class="li">'.
+            '<a href="'.wl($ID, array('do' => 'admin','page' => 'popularity')).'">'.
+            $menu['popularity']['prompt'].'</a></div></li>');
+    unset($menu['popularity']);
+
+    ptln('</ul>');
+
+
+    // print the rest as sorted list
+    if(count($menu)){
+        usort($menu, 'p_sort_modes');
+        // output the menu
+        ptln('<div class="clearer"></div>');
+        print p_locale_xhtml('adminplugins');
+        ptln('<ul>');
+        foreach ($menu as $item) {
+            if (!$item['prompt']) continue;
+            ptln('  <li><div class="li"><a href="'.wl($ID, 'do=admin&amp;page='.$item['plugin']).'">'.$item['prompt'].'</a></div></li>');
+        }
+        ptln('</ul>');
+    }
 }
 
 /**
diff --git a/inc/lang/en/adminplugins.txt b/inc/lang/en/adminplugins.txt
new file mode 100644
index 000000000..3ec46cf4e
--- /dev/null
+++ b/inc/lang/en/adminplugins.txt
@@ -0,0 +1,2 @@
+===== Additional Plugins =====
+
diff --git a/lib/images/admin/README b/lib/images/admin/README
new file mode 100644
index 000000000..90bab9578
--- /dev/null
+++ b/lib/images/admin/README
@@ -0,0 +1,2 @@
+These icons were taken from the nuvoX KDE icon theme and are GPL licensed
+See http://www.kde-look.org/content/show.php/nuvoX?content=38467
diff --git a/lib/images/admin/acl.png b/lib/images/admin/acl.png
new file mode 100644
index 0000000000000000000000000000000000000000..96fb4cd5643fd43141cf32f776f5b81d596f4d89
GIT binary patch
literal 1336
zcmV-81;_e{P)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$%1J~)RCwBA
z{Qv(y11$hR0I`6GUPC$DDj0$2_kRYKKmQn5fHdQ`zYOgE{~IWq|ET!I{ztZT)&HD-
z41dqFFn}ERpMecXo@4mO01!Yd#Jb@BKL&>1KNv+trT=E>2Yyde^ZOyi%K4w+(?8Z_
zlh!as{$cok0ogEs03yoZe}5Sm*q9l-wEe%e7=?Z|<d*>o{02&JGcW{q|IzsSmwC~o
z^$g)a(d#fh00Bgti~lp4SSEa4WE}KanBg;!55l}`4Ey@ozrVcq>vvG%Z(WYxj4L~~
zFoXbu;uc5?Kmaj;h`-E?IPuSKOk66KKbj4^zX&tD00$!jgCG!pQ(%}epYKf3n%|{2
zkFdP;Yx$>}X83Ob(A7#HB>({gHuyi#0Brd8KPCoYnLlZEaUVRGff2{R2~^Av2?7R*
zFAO08@{&>FtU6-KjO+~h!3+tV3YHm$e-{8lNd_Q*z(K*zz=Xy73=Axc42ot!pX-HW
zfJ)y3#RQ;+@&Ga0D~7OIUX`#osaytiWuSmN(9-)1{Ji&#{xC2Y0t67);AMASVWcsT
zcmDoi_{4LP>4u&qlLfQjKZL;?Ky8e&3=FbTK&%K9ux4O*eVyUWl8X#&M;Q)&W%z#`
zAb`M5W#VRKVB~^eCQeocW)5ZsRyHOEW){Y`JGQb-eR_eNfkBjk;mbD$hVMU^A%-%j
z0I@m{n=vr_0fy0zl?)SB{&{fdFXIfL;2nSf0=w8lPZF3;fv)_|$iVaum=S*cWnlgZ
zbm2D!T@&Z`rD9G$8NL96;@d?=27XIvpbk|aRsdohprL#W45#NZoLu_&-;7s`D}iCS
z7i1<t0D%qu1<X~*2LA=}|9xXnwQ~Bn*tP7P-j`qh8Gc+~WDqr%WndK30_u<lVgq2Z
z`^vy@pn>7ayju*#dztsVW%#=YlwLq)0t667ItCRTe||A3nK^u1?q2v-{~Ith{J6rz
zAY>}Vz$gLq`kNmN40nN!5_!$=Xa5m~b#q>QZ9d7g<qE^!KA`q%FmnI`hy}yYA53z_
zW*?UN6umb73C#1~uCg$Qm`g&U^U6hr&u6|doZ0Y$K~>=n!-Ad6FS>3p&-u*ocMeed
zLu9i60*D3K(4Rk<q|GefuL#Y1Y4MBcAH$E!z&JAmrmer<8LrRx#Bl2z!_Pf87#=OV
z!LVGJot5Lv&p+4xGyGo%&5I}iAb{Wo{{kASXYhGhVAe~^-;6+)-eF-7Qf6j&d+aO2
zt)r|AHH%n|oq6+n^%sUew}CNo;N4GfSb|d3Uu>lSKmaj-%HvWeP4PK7ay!1?V*da2
zA;bSS2O0nW|044L|1<voZBD$eM48y91Jjs2DdjOh0D)aBCh@Z_H0`-N6Zc<+Z}%7(
zg!vg6zMlTd@bVH9!`{1$S6~18*$h<nj1+?b0tjrdi1<%+R`%ZvUtTgZ2x+r3+}`}3
zp|Y9v`mMKruH5<beG^d08&Yc!fB*s;EG+m}gcBH2oRYvG118O7YuVqfz4NINSQ2kx
z0E>_g00IbX@ZCHAKW<sU_46Mvef|2v!nEq-??XUC50Yyr2mk~SBPj9&IM{Um{9-f&
uW;{^&!}RU%@0-8`coI~3kZUkNfB^vQY0HiP<@F>00000<MNUMnLSTZA@NR4X

literal 0
HcmV?d00001

diff --git a/lib/images/admin/config.png b/lib/images/admin/config.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4d376d853915ec231b6f95135cb8743478e87f9
GIT binary patch
literal 1761
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
DDYjz1

literal 0
HcmV?d00001

diff --git a/lib/images/admin/plugin.png b/lib/images/admin/plugin.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2823bac78a00ec97e96bc4817aed6ed1dff37b1
GIT binary patch
literal 1415
zcmV;21$g?2P)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%8A(JzRCwBA
z{Qv(y11$hR0I`4w#&lK&hQEvq41d@d82&RtWd8ouWBmJnrLv&B8Y>Gc!~Z{w5V`+M
z3=IDm81BD({_^MVzbOnX?Aw5X5V_w#<NgAfyB{zB1P}{W>;C;^WBK=QbyaY+T8dK&
z11~!d!@qz3z*3Bij10g3{$^Nze2Zk+teRz?e*V&BU}kxYZUjI8F`@E+)`1-S=cl%u
zu&i>nTLy!KkO;%|50@G4e7V7J_v<Z&8=tQ*FtYz+NcV_mFwr#QXZZ2ei2-EkUsR(2
z0tn5;Krb==1<^n!v;AjbVqrM?@F;`RA}0n8b`A!h7{kZk9~t^w`WOn03mLdLc|d;n
z&G4TY5rj|x5I`(Q-e+O>`P&f~eyj{X7}UP}_`>-2?_UNcpx4=$*ua>TiIo9l88ag@
zSj)HXUl|y_e=}iVV0#CQBW4B`j^hlBtnWZ_009Is_}_mmW(MZXYO)%N?5vy&|9<>t
zkQY{DWCKRpzyJTh;fjp^GeA<3x{NZz8%>h}CJx?$f4~1R+<tuj&G%n_5`a?M00Ib-
zD*pUiT;^S_RNz*?AiyQS@b}+eu&dZufi8T<iWXS^8Q7WF!R$#X?F_#Xels#NF){r7
z^OIrezV)JIQ|cE0rNjUN2yCz<zm#UGLn?zPp9sUY8^F}V1d2mOU@$N-oO^K&Yzc@D
zG87aXm)~Ay*z<4?!#`krFaizz3xt-E77R%qkqk38Efxlu2@pVFgIPi0#>C8U=gl1k
zpSeB^48R~{WCj|=!pOi1bTt<{7bFOPnTeN`mtpy}<qS)%F9FLlF*7lI`~Qt$o!43h
z7cmb8W@d;F0RjkYFh~O^oq}A*&dLrpl$n_stO=wU<Wfc`1iKoj85EgJEKFcEpdbhN
z>OU|(Ko|r70th36FfsvM0rVaWGcqtTU?zShh&o0l1{g#K009JvJP-sb`uqPc!;f!2
zz(K(Pk^$1pY|IRNoP6+z1EwB^?|;67BManOkgGvK@%#U8uo<8r0|9^l0vil85NPs$
z1~~yahFRe=!L9*W$HKzGaP{?7h8gE(fFlj$!moe6G6ZV`Gq@_aGW-TYkgxs#4K)@v
z0_p==4$b-i0R#?TmPD3oZCl#^fB*IUKRP(_@W_9TR*wGy-2(qbCy4%M>1O#q{lat%
zb^rhU|G#wahX4E?D(^sM0t67)#ebOoB{i;ZTD$(tCP{7%KE|IvelREq$}&t(na1$z
z|1W6Z!zf0EpMQUX*<}lw8ID{$#=yqG%kbydFNQ0(uYdUX^IJAZ4j_P7pfPsh=bs;{
zr*9s21qLG@!*>RyM-p;%KY#yZVrImQ7+8d!zI~qI_=%k}894b50h97?1{Tgkz(9Wq
zk^=}JM5<tB`NqKUe<Q<xkkC&Z9!~BWVA^H^<-#AoelYxF0v00wSs8x+28Qgv-(W2~
z9Kb?|i+eu<2iHn)c@8R!{z9@lKmeg8H&7uCF_;rr05SdpmPn@3W(*snHh?n_D58D=
z4b>Od2P+5q2&4&^d;WoP6axcNWdsmFXa=)FB$?SSKY9E3>B57H<x-rI7(A7{frSyM
zmiP}&Qh)yaVOV*11H;+tr@k?;a{;~21TF@Er6SyLfB<3y#UNuUE2KPyS4|-HFB@P%
zxlCO`Lz<O^16V>ss~-l4cke#A|MAoJ?}ZF3Yzq-ZFC(Ou+VX?}Ab=QYRha?=7yvzu
V<>>zY)foT)002ovPDHLkV1gllY9{~y

literal 0
HcmV?d00001

diff --git a/lib/images/admin/popularity.png b/lib/images/admin/popularity.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e22aaf0def484b2f5013ed715c8d73ea2fe828c
GIT binary patch
literal 1420
zcmV;71#|j|P)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%9!W$&RCwBA
z{Qv(y11$hR0I|RrjEsy7_V$$wJUprlFw5lR1Xg|j{^#cX`yX1EnVEn7{{4^P?_UOn
zA3q@UmoG0EUcOw*@b&9uxPdUe00G1V6HroeWDpkCgiEloF?;3a+Jv^Zd)9b)X&eFy
z`TY3t2gOzF?2-(Ul35I_tXdc@1_&Uy!TS193_pKDH2(YdpUcfny<ba945*Qpp}gGA
ztiRuTv!$inCZOR)zkdCNx(-DD2O6x7VK6`d!43ZRj}5E{<Y1s-C6N&ZYG7}F2YH!+
zK|@`Fp{>>1x3R(XxSE>K<Zs`8N&ort531)k11F~(iopN@1P|lizkh?nnTd%(Ei}}y
zoQH>l;lq0dhCe`0{QU!={{byBF;-#I(v;8HvFmE+iWL{TpFH_IjggV%I}3{-10SCi
z++ctJVnMbA7z7N4hSI$jW-44So`Wo707nwoP>ACgK7R&@vocti>WTC5a`#M|aU}G~
zliQx(zFmFK!XgVd3m||{4Cdis^$+kj@%iw9k>UF{m}LwMzkV?=eERf@;pMCM3{RfC
zWO(}Q6~oh~uNV}RRTx~nt;|mxuXh0|UH$Ie7Pwge0fc1me?Dg?%}xn15r#LfLE-v`
z;nnL83{RfE1moAQ-!pvu_8k&2!0_Va5n)J9GG@5<<U0copMk@dPmfn4I}#v(;0DXc
z2y{w_ORBG5f0g0ci#I?+-vJH(26XX1239s!VA5h^5EK$%U}0fl`1X^PAu`&GK~0sJ
zfr*WqL0Znl`sS6*AhY1<5g>rz2J;FEM!o&=pW)Jt$3PdqW8h$CVc_HE0~*N6z|73T
zz{1K5OjfK6AAw=)?yJh+>c|U@ObJm&23<WPjhk0ERDfyd2FyHw0D>pCm(SiGwY8FB
z=;-iZC@k}2uy@pE5E2#uW)yCqSNRx(fUf=dmz%-LT9zT)U!36|&}~0~Vb2D1nvJ;z
zI|GBf1#(aT1Q6WCuU~!Ia_`PdPa7L421_GB1{*U$hBt41GF-X*hT+D|&kT=V{AW;5
zU}uO7kz@G#8<Ju`sRcyq=}I#2^XuAw{CIN#%shYqf*btf`=5QcZoT|wY$C-4N)arq
z3=Dj{><o^M(hL^n{}^uE`UEUHxPW2K2u>w`plSOz5KBmLGpMMTSe!k(h7)KMIEDcN
z2p$x`Bzo)Ct>-ts0ENH(0Lnsh+=mZ91O75GXlV*CaImp~#eV#NU{E6Y0;Cx^fUefp
zR|dwE4$M4&0AfPU9}geAJM#A34~DP5AsW7dECIUy>sJPb_rP5E=`+NzuRt-713v!*
ziUHLDQznC%wKgjglZG?QFn|C;HW(PD-}XOx_?iJ&D#A5^@plCN2%>>O@sp8(ff?v=
zPHv!&fMUOa0xZlT8Zff}0tl%*272%3-&41*Kl>)5Da-X4Xdp0!F))D)U;-7RKtq6D
zW(Tsr0$u*#=6i+<XYMkbJbwPg#S5n|JbiZV2m`~_wJ`Gl0tl%PVgwog?8dd{mmC8a
zEWZDT7{&!Oi~;Dv*H1q)T)Xsu;nazXZ_k}Med*r4v&Vk_xpfpMa}lWG8G5k^5I}H)
z|NaG;@Ri}-{jUdpef(m<@t2X|>bZvu=g(XL8g%B`&6{UVeENI?XwZxEz^HyisA>WT
zAVye?AuAikAS&tvtZMeFNlHpje*NnH^GA;_>|tPdd<tmoU69?x)O9fP00M}SR+TA0
afB^t&I2#U=OO%BG0000<MNUMnLSTaDa+j(A

literal 0
HcmV?d00001

diff --git a/lib/images/admin/revert.png b/lib/images/admin/revert.png
new file mode 100644
index 0000000000000000000000000000000000000000..002d3a75bfa7ce3f1dc14819c43877fc5e656947
GIT binary patch
literal 1598
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

literal 0
HcmV?d00001

diff --git a/lib/images/admin/usermanager.png b/lib/images/admin/usermanager.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5c8dc6d64e1d03f10f0a9f4352c5a2386bd921c
GIT binary patch
literal 1850
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

literal 0
HcmV?d00001

diff --git a/lib/tpl/default/_admin.css b/lib/tpl/default/_admin.css
new file mode 100644
index 000000000..9e61547bf
--- /dev/null
+++ b/lib/tpl/default/_admin.css
@@ -0,0 +1,43 @@
+
+.dokuwiki ul.admin_tasks {
+    font-size: 115%;
+    float: left;
+    width: 40%;
+    list-style-type: none;
+}
+
+.dokuwiki ul.admin_tasks li {
+    line-height: 22px;
+    padding-left: 35px;
+    margin: 1em 0;
+    background: transparent none no-repeat scroll 0 0;
+    text-align: left;
+}
+
+.dokuwiki ul.admin_tasks li div.li{
+    font-weight: bold;
+}
+
+.dokuwiki ul.admin_tasks li.admin_acl {
+    background-image: url(../../images/admin/acl.png);
+}
+
+.dokuwiki ul.admin_tasks li.admin_usermanager {
+    background-image: url(../../images/admin/usermanager.png);
+}
+
+.dokuwiki ul.admin_tasks li.admin_plugin {
+    background-image: url(../../images/admin/plugin.png);
+}
+
+.dokuwiki ul.admin_tasks li.admin_config {
+    background-image: url(../../images/admin/config.png);
+}
+
+.dokuwiki ul.admin_tasks li.admin_revert {
+    background-image: url(../../images/admin/revert.png);
+}
+
+.dokuwiki ul.admin_tasks li.admin_popularity {
+    background-image: url(../../images/admin/popularity.png);
+}
diff --git a/lib/tpl/default/style.ini b/lib/tpl/default/style.ini
index 14ad5c6a1..7631a34b7 100644
--- a/lib/tpl/default/style.ini
+++ b/lib/tpl/default/style.ini
@@ -11,6 +11,7 @@ design.css     = screen
 style.css      = screen
 
 media.css      = screen
+_admin.css     = screen
 
 rtl.css        = rtl
 print.css      = print
-- 
GitLab