diff options
author | Andy Webber <dokuwiki@andywebber.com> | 2008-10-01 17:29:14 +0200 |
---|---|---|
committer | Andy Webber <dokuwiki@andywebber.com> | 2008-10-01 17:29:14 +0200 |
commit | dc58b6f4952c9a966ba23101144f00d378746a17 (patch) | |
tree | 8cb135a4c3ad2979c2e90169932cdb8dab9fcc99 | |
parent | 5babd79b8d25882c3af5dccc15157e728e5bda9e (diff) | |
download | rpg-dc58b6f4952c9a966ba23101144f00d378746a17.tar.gz rpg-dc58b6f4952c9a966ba23101144f00d378746a17.tar.bz2 |
editor_info_patch
At present, DW shows the username on the bottom left under "logged in as", and the login name for "last modified", "locked by" and under
revisions/recent changes. In a corporate environment, particularly when integrated with a Single Sign-On system, the login name may be somewhat
unfriendly. This patch makes the "logged in as" the same as the value used elsewhere and also allows an admin to decide whether it should be the
login name, username or e-mail address that is displayed. The e-mail address may also, optionally, be a mailto: link. E-mail addresses are
obfuscated according to the 'mailguard' setting. The default behaviour is to show the login name which is no change from previous behaviour for the
"last modified"/"locked by"/revisions/"recent changes", but is a change for the "logged in as".
darcs-hash:20081001152914-6ad63-9cd7174068ac55de381f1318a4401f8c51de5b0c.gz
-rw-r--r-- | conf/dokuwiki.php | 4 | ||||
-rw-r--r-- | inc/common.php | 37 | ||||
-rw-r--r-- | inc/html.php | 6 | ||||
-rw-r--r-- | inc/template.php | 7 | ||||
-rw-r--r-- | lib/plugins/config/lang/en/lang.php | 7 | ||||
-rw-r--r-- | lib/plugins/config/settings/config.metadata.php | 1 |
6 files changed, 55 insertions, 7 deletions
diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php index f1290ddd7..5e25c4456 100644 --- a/conf/dokuwiki.php +++ b/conf/dokuwiki.php @@ -43,6 +43,10 @@ $conf['deaccent'] = 1; //deaccented chars in pagenames (1) or $conf['useheading'] = 0; //use the first heading in a page as its name $conf['refcheck'] = 1; //check for references before deleting media files $conf['refshow'] = 0; //how many references should be shown, 5 is a good value +$conf['showuseras'] = 'loginname'; // 'loginname' users login name + // 'username' users full name + // 'email' e-mail address (will be obfuscated as per mailguard) + // 'email_link' e-mail address as a mailto: link (obfuscated) /* Antispam Features */ diff --git a/inc/common.php b/inc/common.php index 5dfc49856..962c05c37 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1271,4 +1271,41 @@ function shorten($keep,$short,$max,$min=9,$char='⌇'){ return $keep.utf8_substr($short,0,$half-1).$char.utf8_substr($short,$len-$half); } +/** + * Return the users realname or e-mail address for use + * in page footer and recent changes pages + * + * @author Andy Webber <dokuwiki AT andywebber DOT com> + */ +function editorinfo($username){ + global $conf; + global $auth; + + switch($conf['showuseras']){ + case 'username': + case 'email': + case 'email_link': + $info = $auth->getUserData($username); + break; + default: + return hsc($username); + } + + if(isset($info) && $info) { + switch($conf['showuseras']){ + case 'username': + return hsc($info['name']); + case 'email': + return obfuscate($info['mail']); + case 'email_link': + $mail=obfuscate($info['mail']); + return '<a href="mailto:'.$mail.'">'.$mail.'</a>'; + default: + return hsc($username); + } + } else { + return hsc($username); + } +} + //Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/html.php b/inc/html.php index 24b811d29..e7525ae2d 100644 --- a/inc/html.php +++ b/inc/html.php @@ -438,7 +438,7 @@ function html_revisions($first=0){ print ' – '; print htmlspecialchars($INFO['sum']); print ' <span class="user">'; - print (empty($INFO['editor']))?('('.$lang['external_edit'].')'):htmlspecialchars($INFO['editor']); + print (empty($INFO['editor']))?('('.$lang['external_edit'].')'):editorinfo($INFO['editor']); print '</span> '; print '('.$lang['current'].')'; @@ -482,7 +482,7 @@ function html_revisions($first=0){ print htmlspecialchars($info['sum']); print ' <span class="user">'; if($info['user']){ - print htmlspecialchars($info['user']); + print editorinfo($info['user']); }else{ print $info['ip']; } @@ -576,7 +576,7 @@ function html_recent($first=0){ print ' <span class="user">'; if($recent['user']){ - print htmlspecialchars($recent['user']); + print editorinfo($recent['user']); }else{ print $recent['ip']; } diff --git a/inc/template.php b/inc/template.php index 5997e0d33..0b37734d8 100644 --- a/inc/template.php +++ b/inc/template.php @@ -869,9 +869,8 @@ function tpl_youarehere($sep=' » '){ */ function tpl_userinfo(){ global $lang; - global $INFO; if($_SERVER['REMOTE_USER']){ - print $lang['loggedinas'].': '.$INFO['userinfo']['name']; + print $lang['loggedinas'].': '.editorinfo($_SERVER['REMOTE_USER']); return true; } return false; @@ -914,7 +913,7 @@ function tpl_pageinfo($ret=false){ $out .= $date; if($INFO['editor']){ $out .= ' '.$lang['by'].' '; - $out .= $INFO['editor']; + $out .= editorinfo($INFO['editor']); }else{ $out .= ' ('.$lang['external_edit'].')'; } @@ -922,7 +921,7 @@ function tpl_pageinfo($ret=false){ $out .= ' · '; $out .= $lang['lockedby']; $out .= ': '; - $out .= $INFO['locked']; + $out .= editorinfo($INFO['locked']); } if($ret){ return $out; diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php index 864e79ee1..3de0bbd7d 100644 --- a/lib/plugins/config/lang/en/lang.php +++ b/lib/plugins/config/lang/en/lang.php @@ -81,6 +81,7 @@ $lang['indexdelay'] = 'Time delay before indexing (sec)'; $lang['relnofollow'] = 'Use rel="nofollow" on external links'; $lang['mailguard'] = 'Obfuscate email addresses'; $lang['iexssprotect']= 'Check uploaded files for possibly malicious JavaScript or HTML code'; +$lang['showuseras'] = 'What to display when showing the user that last edited a page'; /* Authentication Options */ $lang['useacl'] = 'Use access control lists'; @@ -210,3 +211,9 @@ $lang['xsendfile_o_0'] = "don't use"; $lang['xsendfile_o_1'] = 'Proprietary lighttpd header (before release 1.5)'; $lang['xsendfile_o_2'] = 'Standard X-Sendfile header'; $lang['xsendfile_o_3'] = 'Proprietary Nginx X-Accel-Redirect header'; + +/* Display user info */ +$lang['showuseras_o_loginname'] = 'Login name'; +$lang['showuseras_o_username'] = "User's full name"; +$lang['showuseras_o_email'] = "User's e-mail addresss (obfuscated according to mailguard setting)"; +$lang['showuseras_o_email_link'] = "User's e-mail addresss as a mailto: link"; diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php index 4c86c2370..ee558b767 100644 --- a/lib/plugins/config/settings/config.metadata.php +++ b/lib/plugins/config/settings/config.metadata.php @@ -99,6 +99,7 @@ $meta['fullpath'] = array('onoff'); $meta['typography'] = array('multichoice','_choices' => array(0,1,2)); $meta['dformat'] = array('string'); $meta['signature'] = array('string'); +$meta['showuseras'] = array('multichoice','_choices' => array('loginname','username','email','email_link')); $meta['toptoclevel'] = array('multichoice','_choices' => array(1,2,3,4,5)); // 5 toc levels $meta['maxtoclevel'] = array('multichoice','_choices' => array(0,1,2,3,4,5)); $meta['maxseclevel'] = array('multichoice','_choices' => array(0,1,2,3,4,5)); // 0 for no sec edit buttons |