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
This commit is contained in:
Andy Webber 2008-10-01 17:29:14 +02:00
parent 5babd79b8d
commit dc58b6f495
6 changed files with 55 additions and 7 deletions

View File

@ -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 */

View File

@ -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 :

View File

@ -438,7 +438,7 @@ function html_revisions($first=0){
print ' &ndash; ';
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'];
}

View File

@ -869,9 +869,8 @@ function tpl_youarehere($sep=' &raquo; '){
*/
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 .= ' &middot; ';
$out .= $lang['lockedby'];
$out .= ': ';
$out .= $INFO['locked'];
$out .= editorinfo($INFO['locked']);
}
if($ret){
return $out;

View File

@ -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";

View File

@ -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