From 7ed33b2abb2d615f12ef8fb88b96dbcaade417c6 Mon Sep 17 00:00:00 2001
From: Anika Henke <anika@selfthinker.org>
Date: Thu, 12 Mar 2009 23:28:53 +0100
Subject: [PATCH] configmgr: visual improvements (warning icons for newbies and
 links to each documentation page)

darcs-hash:20090312222853-f7d6d-6ad28d7747ed0a72e4f8952eb1cec606e9b6d322.gz
---
 lib/plugins/config/admin.php                 |   6 +++--
 lib/plugins/config/images/danger.png         | Bin 0 -> 701 bytes
 lib/plugins/config/images/security.png       | Bin 0 -> 749 bytes
 lib/plugins/config/images/warning.png        | Bin 0 -> 666 bytes
 lib/plugins/config/lang/de/lang.php          |   5 ++++-
 lib/plugins/config/lang/en/lang.php          |   4 ++++
 lib/plugins/config/settings/config.class.php |  22 +++++++++++++++++--
 lib/plugins/config/style.css                 |  11 +++++++++-
 8 files changed, 42 insertions(+), 6 deletions(-)
 create mode 100644 lib/plugins/config/images/danger.png
 create mode 100644 lib/plugins/config/images/security.png
 create mode 100644 lib/plugins/config/images/warning.png

diff --git a/lib/plugins/config/admin.php b/lib/plugins/config/admin.php
index 51e4c13a0..c25dbb507 100644
--- a/lib/plugins/config/admin.php
+++ b/lib/plugins/config/admin.php
@@ -16,6 +16,7 @@ define('CM_KEYMARKER','____');            // used for settings with multiple dim
 
 define('PLUGIN_SELF',dirname(__FILE__).'/');
 define('PLUGIN_METADATA',PLUGIN_SELF.'settings/config.metadata.php');
+if(!defined('DOKU_PLUGIN_IMAGES')) define('DOKU_PLUGIN_IMAGES',DOKU_BASE.'lib/plugins/config/images/');
 
 require_once(PLUGIN_SELF.'settings/config.class.php');  // main configuration class and generic settings classes
 require_once(PLUGIN_SELF.'settings/extra.class.php');   // settings classes specific to these settings
@@ -151,11 +152,12 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
 
           $class = $setting->is_default() ? ' class="default"' : ($setting->is_protected() ? ' class="protected"' : '');
           $error = $setting->error() ? ' class="value error"' : ' class="value"';
+          $icon = $setting->caution() ? '<img src="'.DOKU_PLUGIN_IMAGES.$setting->caution().'.png" alt="'.$setting->caution().'" title="'.$this->getLang($setting->caution()).'" />' : '';
 
           ptln('    <tr'.$class.'>');
           ptln('      <td class="label">');
-          ptln('        <span class="outkey">'.$setting->_out_key(true).'</span>');
-          ptln('        '.$label);
+          ptln('        <span class="outkey">'.$setting->_out_key(true, true).'</span>');
+          ptln('        '.$label.$icon);
           ptln('      </td>');
           ptln('      <td'.$error.'>'.$input.'</td>');
           ptln('    </tr>');
diff --git a/lib/plugins/config/images/danger.png b/lib/plugins/config/images/danger.png
new file mode 100644
index 0000000000000000000000000000000000000000..c37bd062e60c3b38fc82e4d1f236a8ac2fae9d8c
GIT binary patch
literal 701
zcmV;u0z&<XP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!Pf0{UR5;6}
zlgmq#VHCz6ztjnp=~F?R5pQFPl&gp~;l?gdL<B>N#0$9Ug7g<e5Ea#;%|NSKc)@5f
z;7$;Xq9UY)Lyb<UqnJ8&8J!fJX6Aj*^R}?Q8M8KZcJJYw-+2!2dGd@g_@BuCJt4QR
zG|-rKLw1p@BngtANcK}WWZ&tJ=GN!sDp0pB`wdNCE3eQ~*sve@ZufS6V;#vz1Xgl=
zg_Pck`%i+q0GXSY{D$mHSJV_2H8nzF3t(&k0AP7)V0mk?F%>~-`rQ^qx~m@y2OU8A
z#zh~=7n#Z$Z*fx-GOtDf07cgx0suCz_W(2~Y(0tf@FX@P6EPuM_dgn$vj9LucO)%W
zw%HgMW>=#oL>nZ>M&NEf08>)#)k<{$fCT_r>rPi=BV=hFh6WS^qqze>C6Ek}o{M5%
za|@JGow<Oj0^5dOoQKhLCOSWpAw+HGQ?pSN*k#a4S7iZ8!-#Pje@#@=;p__PCqxJc
zp|wJe0=1luufg)vI#NXu-(QYlbNI0{or=h>u0t{&hgNzySHZxy@LTNh);YzZ2zSp_
zl$^T&Dnc|NLb&RD_!4>pt@VHdP)ZGER%5ZmWEe$lryR&y;2u^3cOkO<wojkI*Ki1l
z#hIAadT_@fO?4jgQ>4#6c%-<rxdo~DIizNzFvh@D?}Mw}hj=)IkFQ6!NOre9eIML)
z%AxZ|{Xz!zmU%tpEr;N;OJNL<O041Y#5fX5vnwQfk3ahm{G%5DVEpXi29oU*c9F8v
jOytms=QDpd)4#+ImC>(EY6a{600000NkvXXu0mjfxS2AI

literal 0
HcmV?d00001

diff --git a/lib/plugins/config/images/security.png b/lib/plugins/config/images/security.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ebc4f6f9663e32cad77d67ef93ab8843dfea3c0
GIT binary patch
literal 749
zcmV<J0uud+P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!e@R3^R5;6R
zQbB7IK^T3Tq)8K-7_~JtN==(+K|#b@JqUt5h~h!Lc~ek?Ku+zk2XpMN@Q@-NdiDp1
z1*uxlMiZNsG$@o5lP0D~c6MfcvuoP5I`A<w-+bSj_uh<Q+cvyoX=!OhDK#ghoMD_~
zfbo;DVp-N=E|>e|tv9>?g+k#9o0pTx<YX)sgU{y!_vrO{sMqV*;vmqy`T6;^e*oA#
z!o!d0bUI_2CTg`BI-QQb9f3dqiA2JwD;A3z%w1ksSm^4#Z-B()v+?oqj1U6la(T1e
zZl|~o>d@;_sq{kwlU;^VvV*?BV8P@}BoaZTQUROpWV6|-M`|^n&)=+8tHo3*<<$NU
zU`%V~ZF;?hBSYsjJ6%JzV}E(D{pOLqQklliUf9um_tGl-wty`y*p?eYNW56P>X@1s
zZs7KrRZKtmV7Lqj^5Fgr7_`LjhdJK@ltF&O`j7?*NUM$KvmNGz)3WjM?V$vHlP<J&
zUm*}0g<*`aa0m#;nO4C59%Snq%<gw6YaijsENrvy0U$*veUpji`g`g;hWN#6sJ&if
z|7lEIpGEWQIsqDprcRKsge^=jfN*5kq#B>T0AFyF?kLE<#HZabCSW3-o<y$`V(q@e
zY5?H;1Doz@RIRn~d5tXI@x+4aDfGLfYLi*%3!3F^SFTb{&mjZ7(WsOVKc9j>a*6;Z
zrXD`Ulwd<^2glP%1Y1Kc1Ij%DU^=ME(jKf6APNlA$Uu;J4bVilQHSWX5uJ$9Zsp4M
z0%!@LvyTxz=Z6stxlichODIY+yNGt%RM;m`>H4LOKLFs9Y%b5aUN|2|{0Zw|<_~i}
fmXz*V19AKYa<a0`hi}0}00000NkvXXu0mjf@;P6V

literal 0
HcmV?d00001

diff --git a/lib/plugins/config/images/warning.png b/lib/plugins/config/images/warning.png
new file mode 100644
index 0000000000000000000000000000000000000000..628cf2dae3d419ae220c8928ac71393b480745a3
GIT binary patch
literal 666
zcmV;L0%iS)P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!EJ;K`R5;6}
zQ%gvc0TBNFhpVpZYs*vuLt9diOv=bL4R1XR>eOSYYtbpBV}~vsBnU!_?2tr-P=|^T
zED<b;h)xArC`LwRuDi0BivEw8uY($aYXuI>%wc9ezHgW@NMb!^uT_|SvCpFLJylbx
zY%bpaTGI8IYXMN$9w<3j9VkA~NYOKEQXsj?6a9_hcwfU$acAhJhB)zb_w@MVUEy@S
zX&I>K-R!bhu3?(6bHWIg$HEl7{9g>>&l_qdd+UYb(1~BCo9LptNq&8>!yoJ3Ui(i5
zRJ|XnYBklL!{@$-7=3mJ>P@1c=7Oc79e-V7yf+%lD2!I;Y&nXBZ>=B!5?CB>LvEx6
znI%n)qqi$#X#wKB(U7XP2P=+4{b@j#r%9-K(8UqtSDk>0UKzf*HM9yqMZ1D!$2MdZ
zR=`U>0zhOH1XqN?nY@AQqB7)Fp4{v&dKXvb43hZKvnN8;Po;+jY*}~*Z|W9Q0W%{D
z^T}Cc<|r(Su=1K=<sQLMN1ZE<U%m5Ea@1Tp8to2kJ7-hpAhT}(Dgffk;4r2>P5>Z4
zg`et&Va}tdzBS-G-ZcO)zCWpJvGQwrHZ`@wpM420ac@bI5~KkTFfGEM3sPWO8<ADs
zh7X-F%!~{kwpFCFAaZKyF+vTnL(ye%#)|yqz~B3T5kTqQvq%jMT(v1Wka%_eG)1AJ
z_%n+q5XXb>co4^fI6lPnA)Y{ef%@{+SnoUk0+dW+*{8WvF8}}l07*qoM6N<$g7cXs
A&j0`b

literal 0
HcmV?d00001

diff --git a/lib/plugins/config/lang/de/lang.php b/lib/plugins/config/lang/de/lang.php
index ca46e041d..39e749bd7 100644
--- a/lib/plugins/config/lang/de/lang.php
+++ b/lib/plugins/config/lang/de/lang.php
@@ -17,7 +17,10 @@ $lang['updated']               = 'Einstellungen erfolgreich gespeichert.';
 $lang['nochoice']              = '(keine Auswahlmöglichkeiten vorhanden)';
 $lang['locked']                = 'Die Konfigurationsdatei kann nicht geändert werden, wenn dies unbeabsichtigt ist
                            <br />überprüfen Sie, dass die Dateiberechtigungen korrekt gesetzt sind.';
-$lang['_configuration_manager'] = 'Konfiguration';
+$lang['danger']                = 'Gefahr: Die Änderung dieser Option könnte erheblichen Schaden anrichten.';
+$lang['warning']               = 'Warnunng: Die Änderung dieser Option könnte unbeabsichtigtes Verhalten hervorrufen.';
+$lang['security']              = 'Sicherheitswarnung: Die Änderung dieser Option könnte ein Sicherheitsrisiko darstellen.';
+$lang['_configuration_manager']= 'Konfiguration';
 $lang['_header_dokuwiki']      = 'DokuWiki-Konfiguration';
 $lang['_header_plugin']        = 'Plugin-Konfiguration';
 $lang['_header_template']      = 'Template-Konfiguration';
diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php
index 11d77c800..7566cf49a 100644
--- a/lib/plugins/config/lang/en/lang.php
+++ b/lib/plugins/config/lang/en/lang.php
@@ -17,6 +17,10 @@ $lang['nochoice']   = '(no other choices available)';
 $lang['locked']     = 'The settings file can not be updated, if this is unintentional, <br />
                        ensure the local settings file name and permissions are correct.';
 
+$lang['danger']     = 'Danger: Changing this option could cause severe damage.';
+$lang['warning']    = 'Warning: Changing this option could cause unintended behaviour.';
+$lang['security']   = 'Security Warning: Changing this option could present a security risk.';
+
 /* --- Config Setting Headers --- */
 $lang['_configuration_manager'] = 'Configuration Manager'; //same as heading in intro.txt
 $lang['_header_dokuwiki'] = 'DokuWiki Settings';
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 4e9270f49..81d9224f5 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -340,6 +340,12 @@ if (!class_exists('setting')) {
     var $_error = false;            // only used by those classes which error check
     var $_input = NULL;             // only used by those classes which error check
 
+    var $_cautionList = array(
+        'basedir' => 'danger', 'baseurl' => 'danger', 'savedir' => 'danger', 'useacl' => 'danger', 'authtype' => 'danger', 'superuser' => 'danger', 'userewrite' => 'danger',
+        'start' => 'warning', 'camelcase' => 'warning', 'deaccent' => 'warning', 'sepchar' => 'warning', 'compression' => 'warning', 'xsendfile' => 'warning', 'renderer_xhtml' => 'warning',
+        'allowdebug' => 'security', 'htmlok' => 'security', 'phpok' => 'security', 'iexssprotect' => 'security', 'xmlrpc' => 'security'
+    );
+
     function setting($key, $params=NULL) {
         $this->_key = $key;
 
@@ -439,9 +445,21 @@ if (!class_exists('setting')) {
     function is_default() { return !$this->is_protected() && is_null($this->_local); }
     function error() { return $this->_error; }
 
-    function _out_key($pretty=false) {
+    function caution() {
+        if (!array_key_exists($this->_key, $this->_cautionList)) return false;
+        return $this->_cautionList[$this->_key];
+    }
+
+    function _out_key($pretty=false,$url=false) {
         if($pretty){
-            return str_replace(CM_KEYMARKER,"&raquo;",$this->_key);
+            $out = str_replace(CM_KEYMARKER,"&raquo;",$this->_key);
+            if ($url && !strstr($out,'&raquo;')) {//provide no urls for plugins, etc.
+                if ($out == 'start') //one exception
+                    return '<a href="http://www.dokuwiki.org/config:startpage">'.$out.'</a>';
+                else
+                    return '<a href="http://www.dokuwiki.org/config:'.$out.'">'.$out.'</a>';
+            }
+            return $out;
         }else{
             return str_replace(CM_KEYMARKER,"']['",$this->_key);
         }
diff --git a/lib/plugins/config/style.css b/lib/plugins/config/style.css
index fb73c7a8d..168ea432c 100644
--- a/lib/plugins/config/style.css
+++ b/lib/plugins/config/style.css
@@ -30,7 +30,7 @@
 }
 #config__manager fieldset td.value {
     /* fixed data column width */
-    width: 30em;
+    width: 31em;
 }
 
 #config__manager td.label {
@@ -41,6 +41,12 @@
 #config__manager td.label label {
     clear: both;
     display: block;
+    float: left;
+}
+#config__manager td.label img {
+    padding: 0 10px;
+    vertical-align: middle;
+    float: right;
 }
 
 #config__manager td.label span.outkey {
@@ -59,6 +65,9 @@
 #config__manager td input.edit {
     width: 30em;
 }
+#config__manager td .input {
+    width: 30.8em;
+}
 #config__manager td select.edit { }
 #config__manager td textarea.edit {
     width: 27.5em;
-- 
GitLab