From 60a396c8ac50f17c2e3f43a9533af86cf6976976 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 4 Feb 2014 00:34:12 +0100 Subject: wrap userlink building with event. Implements an event which can modify the link below usernames, and the displayed user name. When no name supplied, the name of currently logged-in user is used. --- inc/common.php | 109 +++++++++++++++++++++++++++++++++++++++++++------------ inc/template.php | 3 +- 2 files changed, 86 insertions(+), 26 deletions(-) diff --git a/inc/common.php b/inc/common.php index 32771285b..053776a41 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1418,34 +1418,95 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') { * @author Andy Webber */ function editorinfo($username) { - global $conf; + return userinfo($username); +} + +/** + * Returns users realname w/o link + * + * @param string|bool $username or false when currently logged-in user should be used + * @return string html of formatted user name + * + * @triggers COMMON_USER_LINK + */ +function userinfo($username = false) { + global $conf, $INFO; + /** @var DokuWiki_Auth_Plugin $auth */ global $auth; - switch($conf['showuseras']) { - case 'username': - case 'email': - case 'email_link': - if($auth) $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 ''.$mail.''; - default: - return hsc($username); + // prepare initial event data + $data = array( + 'username' => $username, // the unique user name + 'name' => '', + 'link' => array( //setting 'link' to false disables linking + 'target' => '', + 'pre' => '', + 'suf' => '', + 'style' => '', + 'more' => '', + 'url' => '', + 'title' => '', + 'class' => '' + ), + 'userinfo' => '' + ); + if($username === false) { + $data['username'] = $_SERVER['REMOTE_USER']; + $data['name'] = ''.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; + } + + $evt = new Doku_Event('COMMON_USER_LINK', $data); + if($evt->advise_before(true)) { + if(empty($data['name'])) { + if($conf['showuseras'] == 'loginname') { + $data['name'] = hsc($data['username']); + } else { + if($auth) $info = $auth->getUserData($username); + if(isset($info) && $info) { + switch($conf['showuseras']) { + case 'username': + $data['name'] = hsc($info['name']); + break; + case 'email': + case 'email_link': + $data['name'] = obfuscate($info['mail']); + break; + } + } + } + } + if($data['link'] !== false && empty($data['link']['url'])){ + if($conf['showuseras'] == 'email_link') { + if(!isset($info)) { + if($auth) $info = $auth->getUserData($username); + } + if(isset($info) && $info) { + $data['link']['url'] = 'mailto:'.obfuscate($info['mail']); + } else { + $data['link'] = false; + } + + } else { + $data['link'] = false; + } + } + + if($data['link'] === false) { + $data['userinfo'] = $data['name']; + } else{ + $data['link']['name'] = $data['name']; + /** @var Doku_Renderer_xhtml $xhtml_renderer */ + static $xhtml_renderer = null; + if(is_null($xhtml_renderer)){ + $xhtml_renderer = p_get_renderer('xhtml'); + } + $data['userinfo'] = $xhtml_renderer->_formatLink($data['link']); } - } else { - return hsc($username); } + $evt->advise_after(); + unset($evt); + + return $data['userinfo']; } /** diff --git a/inc/template.php b/inc/template.php index 0a6a9e4aa..ba7279636 100644 --- a/inc/template.php +++ b/inc/template.php @@ -885,9 +885,8 @@ function tpl_youarehere($sep = ' » ') { */ function tpl_userinfo() { global $lang; - global $INFO; if(isset($_SERVER['REMOTE_USER'])) { - print $lang['loggedinas'].': '.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; + print $lang['loggedinas'].': '.userinfo(); return true; } return false; -- cgit v1.2.3 From 8a7e0ee6403bb358edf90c2419af066dd79cb2ce Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 4 Feb 2014 00:59:45 +0100 Subject: update $username as well, when read from _SERVER --- inc/common.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/common.php b/inc/common.php index 053776a41..297c36355 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1451,7 +1451,7 @@ function userinfo($username = false) { 'userinfo' => '' ); if($username === false) { - $data['username'] = $_SERVER['REMOTE_USER']; + $data['username'] = $username = $_SERVER['REMOTE_USER']; $data['name'] = ''.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; } -- cgit v1.2.3 From 62c8004ec7c360471b96b4faa6128cd207f89bf2 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 14 Feb 2014 14:36:54 +0100 Subject: change default arg value of userinfo in null instead false --- inc/common.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/common.php b/inc/common.php index 297c36355..c18f43668 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1429,7 +1429,7 @@ function editorinfo($username) { * * @triggers COMMON_USER_LINK */ -function userinfo($username = false) { +function userinfo($username = null) { global $conf, $INFO; /** @var DokuWiki_Auth_Plugin $auth */ global $auth; @@ -1450,7 +1450,7 @@ function userinfo($username = false) { ), 'userinfo' => '' ); - if($username === false) { + if($username === null) { $data['username'] = $username = $_SERVER['REMOTE_USER']; $data['name'] = ''.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; } -- cgit v1.2.3 From 7c2f8eec8f8dbd26e20f8afc516e38d5c6f1cc02 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 14 Feb 2014 23:54:54 +0100 Subject: handle interwiki without slashes as pageids. Added user interwiki * allowed urlparams * added `wiki:users:` as default user profile link --- conf/interwiki.conf | 1 + inc/parser/xhtml.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 28561a4ae..68367d0bd 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -30,6 +30,7 @@ sb http://www.splitbrain.org/go/ skype skype:{NAME} google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky +user wiki:users:{URL} # To support VoIP/SIP links callto callto://{NAME} diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 80701cd2e..fbdd8ada6 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -699,6 +699,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer { //get interwiki URL $url = $this->_resolveInterWiki($wikiName,$wikiUri); + if(strpos($url,'/') === false) { + list($url, $urlparam) = explode('?', $url, 2); + $url = wl($url, $urlparam); + } + if ( !$isImage ) { $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName); $link['class'] = "interwiki iw_$class"; -- cgit v1.2.3 From b3d353e634614780173506006921f7545ca81305 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 00:00:24 +0100 Subject: wikilink needs wiki target as well --- inc/parser/xhtml.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index fbdd8ada6..957dd992b 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -702,6 +702,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { if(strpos($url,'/') === false) { list($url, $urlparam) = explode('?', $url, 2); $url = wl($url, $urlparam); + $link['target'] = $conf['target']['wiki']; } if ( !$isImage ) { -- cgit v1.2.3 From 7f081821c51e704c2720b993ca5364fa5e7e3663 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 00:42:05 +0100 Subject: Extend showuseras config with username_link uses the user interwiki link as profile link --- inc/common.php | 25 +++++++++++++++++++++---- lib/plugins/config/lang/en/lang.php | 9 +++++---- lib/plugins/config/settings/config.metadata.php | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/inc/common.php b/inc/common.php index c18f43668..22e57b2c5 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1465,6 +1465,7 @@ function userinfo($username = null) { if(isset($info) && $info) { switch($conf['showuseras']) { case 'username': + case 'username_link': $data['name'] = hsc($info['name']); break; case 'email': @@ -1475,13 +1476,31 @@ function userinfo($username = null) { } } } + + /** @var Doku_Renderer_xhtml $xhtml_renderer */ + static $xhtml_renderer = null; + if($data['link'] !== false && empty($data['link']['url'])){ - if($conf['showuseras'] == 'email_link') { + + if(in_array($conf['showuseras'], array('email_link', 'username_link'))) { if(!isset($info)) { if($auth) $info = $auth->getUserData($username); } if(isset($info) && $info) { - $data['link']['url'] = 'mailto:'.obfuscate($info['mail']); + if($conf['showuseras'] == 'email_link') { + $data['link']['url'] = 'mailto:'.obfuscate($info['mail']); + } else { + if(is_null($xhtml_renderer)){ + $xhtml_renderer = p_get_renderer('xhtml'); + } + if(empty($xhtml_renderer->interwiki)) { + $xhtml_renderer->interwiki = getInterwiki(); + } + $shortcut = 'user'; + $url = $xhtml_renderer->_resolveInterWiki($shortcut, $username); + list($url, $urlparam) = explode('?', $url, 2); + $data['link']['url'] = wl($url, $urlparam); + } } else { $data['link'] = false; } @@ -1495,8 +1514,6 @@ function userinfo($username = null) { $data['userinfo'] = $data['name']; } else{ $data['link']['name'] = $data['name']; - /** @var Doku_Renderer_xhtml $xhtml_renderer */ - static $xhtml_renderer = null; if(is_null($xhtml_renderer)){ $xhtml_renderer = p_get_renderer('xhtml'); } diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php index cdef85a85..66d4dc356 100644 --- a/lib/plugins/config/lang/en/lang.php +++ b/lib/plugins/config/lang/en/lang.php @@ -245,10 +245,11 @@ $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"; +$lang['showuseras_o_loginname'] = 'Login name'; +$lang['showuseras_o_username'] = "User's full name"; +$lang['showuseras_o_username_link'] = "User's full name as interwiki user link"; +$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"; /* useheading options */ $lang['useheading_o_0'] = 'Never'; diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php index f9dabfeb0..69cc0df01 100644 --- a/lib/plugins/config/settings/config.metadata.php +++ b/lib/plugins/config/settings/config.metadata.php @@ -116,7 +116,7 @@ $meta['fullpath'] = array('onoff','_caution' => 'security'); $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['showuseras'] = array('multichoice','_choices' => array('loginname','username','username_link','email','email_link')); $meta['toptoclevel'] = array('multichoice','_choices' => array(1,2,3,4,5)); // 5 toc levels $meta['tocminheads'] = array('multichoice','_choices' => array(0,1,2,3,4,5,10,15,20)); $meta['maxtoclevel'] = array('multichoice','_choices' => array(0,1,2,3,4,5)); -- cgit v1.2.3 From 2d6df7955d82d34f7a58b289fa04755c5ab9146e Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 00:49:18 +0100 Subject: added tests for Doku_Renderer::_resolveInterWiki --- .../inc/parser/renderer_resolveinterwiki.test.php | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 _test/tests/inc/parser/renderer_resolveinterwiki.test.php diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php new file mode 100644 index 000000000..5ce54fac6 --- /dev/null +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -0,0 +1,54 @@ +interwiki = getInterwiki(); + $Renderer->interwiki['scheme'] = '{SCHEME}://example.com'; + $Renderer->interwiki['slash'] = '/test'; + $Renderer->interwiki['onlytext'] = 'onlytext'; + + //var_dump($Renderer->interwiki); + + $tests = array( + // shortcut, reference and expected + array('wp', 'foo @+%/', 'http://en.wikipedia.org/wiki/foo @+%/'), + array('amazon', 'foo @+%/', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/'), + array('doku', 'foo @+%/', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F'), + //ToDo: Check needed, is double slash in path desired + array('coral', 'http://example.com:83/path/naar/?query=foo%20%40%2B%25%2F', 'http://example.com.83.nyud.net:8090//path/naar/?query=foo%20%40%2B%25%2F'), + array('scheme', 'ftp://foo @+%/', 'ftp://example.com'), + //relative url + array('slash', 'foo @+%/', '/testfoo%20%40%2B%25%2F'), + //dokuwiki id's + array('onlytext', 'foo @+%/', 'onlytextfoo%20%40%2B%25%2F'), + array('user', 'foo @+%/', 'wiki:users:foo%20%40%2B%25%2F') + ); + + foreach($tests as $test) { + $url = $Renderer->_resolveInterWiki($test[0], $test[1]); + + $this->assertEquals($test[2], $url); + } + } + + function testNonexisting() { + $Renderer = new Doku_Renderer(); + $Renderer->interwiki = getInterwiki(); + + $shortcut = 'nonexisting'; + $reference = 'foo @+%/'; + $url = $Renderer->_resolveInterWiki($shortcut, $reference); + $expected = 'http://www.google.com/search?q=foo%20%40%2B%25%2F&btnI=lucky'; + + $this->assertEquals($expected, $url); + } + +} \ No newline at end of file -- cgit v1.2.3 From 2345e871e407dbece52f3181cd8b077f07cbb0c1 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 11:11:15 +0100 Subject: wikilink creating refactored to _resolveinterwiki(). Added DOKU_BASE for local target --- .../inc/parser/renderer_resolveinterwiki.test.php | 23 +++++++++++----------- conf/interwiki.conf | 2 +- inc/common.php | 4 +--- inc/parser/renderer.php | 5 +++++ inc/parser/xhtml.php | 8 +------- 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index 5ce54fac6..f17838f92 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -7,29 +7,28 @@ require_once DOKU_INC . 'inc/parser/renderer.php'; */ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { - function testDefaults() { $Renderer = new Doku_Renderer(); $Renderer->interwiki = getInterwiki(); $Renderer->interwiki['scheme'] = '{SCHEME}://example.com'; - $Renderer->interwiki['slash'] = '/test'; - $Renderer->interwiki['onlytext'] = 'onlytext'; - - //var_dump($Renderer->interwiki); + $Renderer->interwiki['withslash'] = '/test'; + $Renderer->interwiki['onlytext'] = 'onlytext{NAME}'; //with {URL} double urlencoded + $Renderer->interwiki['withquery'] = 'anyns:{NAME}?do=edit'; $tests = array( // shortcut, reference and expected - array('wp', 'foo @+%/', 'http://en.wikipedia.org/wiki/foo @+%/'), - array('amazon', 'foo @+%/', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/'), - array('doku', 'foo @+%/', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F'), + array('wp', 'foo @+%/#txt', 'http://en.wikipedia.org/wiki/foo @+%/#txt'), + array('amazon', 'foo @+%/#txt', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/#txt'), + array('doku', 'foo @+%/#txt', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F#txt'), //ToDo: Check needed, is double slash in path desired array('coral', 'http://example.com:83/path/naar/?query=foo%20%40%2B%25%2F', 'http://example.com.83.nyud.net:8090//path/naar/?query=foo%20%40%2B%25%2F'), - array('scheme', 'ftp://foo @+%/', 'ftp://example.com'), + array('scheme', 'ftp://foo @+%/#txt', 'ftp://example.com#txt'), //relative url - array('slash', 'foo @+%/', '/testfoo%20%40%2B%25%2F'), + array('withslash', 'foo @+%/#txt', '/testfoo%20%40%2B%25%2F#txt'), //dokuwiki id's - array('onlytext', 'foo @+%/', 'onlytextfoo%20%40%2B%25%2F'), - array('user', 'foo @+%/', 'wiki:users:foo%20%40%2B%25%2F') + array('onlytext', 'foo @+%#txt', '/tmp/doku.php?id=onlytextfoo%20%40%2B%25#txt'), + array('user', 'foo @+%#txt', '/tmp/doku.php?id=wiki:users:foo%20%40%2B%25#txt'), + array('withquery', 'foo @+%#txt', '/tmp/doku.php?id=anyns:foo%20%40%2B%25&do=edit#txt') ); foreach($tests as $test) { diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 68367d0bd..2d83043ef 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -30,7 +30,7 @@ sb http://www.splitbrain.org/go/ skype skype:{NAME} google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky -user wiki:users:{URL} +user wiki:users:{NAME} # To support VoIP/SIP links callto callto://{NAME} diff --git a/inc/common.php b/inc/common.php index 22e57b2c5..e991375f5 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1497,9 +1497,7 @@ function userinfo($username = null) { $xhtml_renderer->interwiki = getInterwiki(); } $shortcut = 'user'; - $url = $xhtml_renderer->_resolveInterWiki($shortcut, $username); - list($url, $urlparam) = explode('?', $url, 2); - $data['link']['url'] = wl($url, $urlparam); + $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username); } } else { $data['link'] = false; diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index e3401fd48..66a106b11 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -321,6 +321,11 @@ class Doku_Renderer extends DokuWiki_Plugin { //default $url = $url.rawurlencode($reference); } + //url without slashes is handled as a pageid + if(strpos($url,'/') === false) { + list($url, $urlparam) = explode('?', $url, 2); + $url = wl($url, $urlparam); + } if($hash) $url .= '#'.rawurlencode($hash); return $url; diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 957dd992b..f0a507721 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -699,12 +699,6 @@ class Doku_Renderer_xhtml extends Doku_Renderer { //get interwiki URL $url = $this->_resolveInterWiki($wikiName,$wikiUri); - if(strpos($url,'/') === false) { - list($url, $urlparam) = explode('?', $url, 2); - $url = wl($url, $urlparam); - $link['target'] = $conf['target']['wiki']; - } - if ( !$isImage ) { $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName); $link['class'] = "interwiki iw_$class"; @@ -713,7 +707,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } //do we stay at the same server? Use local target - if( strpos($url,DOKU_URL) === 0 ){ + if( strpos($url,DOKU_URL) === 0 OR strpos($url,DOKU_BASE) === 0){ $link['target'] = $conf['target']['wiki']; } -- cgit v1.2.3 From 5a9ce44695f44ecc76f356c1fc26f0a1846231b7 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 11:17:09 +0100 Subject: code reformatting --- inc/common.php | 30 +++++++++++++++--------------- inc/parser/renderer.php | 42 +++++++++++++++++++++--------------------- inc/parser/xhtml.php | 10 +++++----- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/inc/common.php b/inc/common.php index e991375f5..cd3c053a3 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1438,21 +1438,21 @@ function userinfo($username = null) { $data = array( 'username' => $username, // the unique user name 'name' => '', - 'link' => array( //setting 'link' to false disables linking - 'target' => '', - 'pre' => '', - 'suf' => '', - 'style' => '', - 'more' => '', - 'url' => '', - 'title' => '', - 'class' => '' + 'link' => array( //setting 'link' to false disables linking + 'target' => '', + 'pre' => '', + 'suf' => '', + 'style' => '', + 'more' => '', + 'url' => '', + 'title' => '', + 'class' => '' ), 'userinfo' => '' ); if($username === null) { $data['username'] = $username = $_SERVER['REMOTE_USER']; - $data['name'] = ''.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; + $data['name'] = '' . hsc($INFO['userinfo']['name']) . ' (' . hsc($_SERVER['REMOTE_USER']) . ')'; } $evt = new Doku_Event('COMMON_USER_LINK', $data); @@ -1480,7 +1480,7 @@ function userinfo($username = null) { /** @var Doku_Renderer_xhtml $xhtml_renderer */ static $xhtml_renderer = null; - if($data['link'] !== false && empty($data['link']['url'])){ + if($data['link'] !== false && empty($data['link']['url'])) { if(in_array($conf['showuseras'], array('email_link', 'username_link'))) { if(!isset($info)) { @@ -1488,9 +1488,9 @@ function userinfo($username = null) { } if(isset($info) && $info) { if($conf['showuseras'] == 'email_link') { - $data['link']['url'] = 'mailto:'.obfuscate($info['mail']); + $data['link']['url'] = 'mailto:' . obfuscate($info['mail']); } else { - if(is_null($xhtml_renderer)){ + if(is_null($xhtml_renderer)) { $xhtml_renderer = p_get_renderer('xhtml'); } if(empty($xhtml_renderer->interwiki)) { @@ -1510,9 +1510,9 @@ function userinfo($username = null) { if($data['link'] === false) { $data['userinfo'] = $data['name']; - } else{ + } else { $data['link']['name'] = $data['name']; - if(is_null($xhtml_renderer)){ + if(is_null($xhtml_renderer)) { $xhtml_renderer = p_get_renderer('xhtml'); } $data['userinfo'] = $xhtml_renderer->_formatLink($data['link']); diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index 66a106b11..d01fc3899 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -273,17 +273,17 @@ class Doku_Renderer extends DokuWiki_Plugin { * * @author Andreas Gohr */ - function _simpleTitle($name){ + function _simpleTitle($name) { global $conf; //if there is a hash we use the ancor name only - list($name,$hash) = explode('#',$name,2); + list($name, $hash) = explode('#', $name, 2); if($hash) return $hash; - if($conf['useslash']){ - $name = strtr($name,';/',';:'); - }else{ - $name = strtr($name,';',':'); + if($conf['useslash']) { + $name = strtr($name, ';/', ';:'); + } else { + $name = strtr($name, ';', ':'); } return noNSorNS($name); @@ -292,9 +292,9 @@ class Doku_Renderer extends DokuWiki_Plugin { /** * Resolve an interwikilink */ - function _resolveInterWiki(&$shortcut,$reference){ + function _resolveInterWiki(&$shortcut, $reference) { //get interwiki URL - if ( isset($this->interwiki[$shortcut]) ) { + if(isset($this->interwiki[$shortcut])) { $url = $this->interwiki[$shortcut]; } else { // Default to Google I'm feeling lucky @@ -303,30 +303,30 @@ class Doku_Renderer extends DokuWiki_Plugin { } //split into hash and url part - list($reference,$hash) = explode('#',$reference,2); + list($reference, $hash) = explode('#', $reference, 2); //replace placeholder - if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#',$url)){ + if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#', $url)) { //use placeholders - $url = str_replace('{URL}',rawurlencode($reference),$url); - $url = str_replace('{NAME}',$reference,$url); + $url = str_replace('{URL}', rawurlencode($reference), $url); + $url = str_replace('{NAME}', $reference, $url); $parsed = parse_url($reference); if(!$parsed['port']) $parsed['port'] = 80; - $url = str_replace('{SCHEME}',$parsed['scheme'],$url); - $url = str_replace('{HOST}',$parsed['host'],$url); - $url = str_replace('{PORT}',$parsed['port'],$url); - $url = str_replace('{PATH}',$parsed['path'],$url); - $url = str_replace('{QUERY}',$parsed['query'],$url); - }else{ + $url = str_replace('{SCHEME}', $parsed['scheme'], $url); + $url = str_replace('{HOST}', $parsed['host'], $url); + $url = str_replace('{PORT}', $parsed['port'], $url); + $url = str_replace('{PATH}', $parsed['path'], $url); + $url = str_replace('{QUERY}', $parsed['query'], $url); + } else { //default - $url = $url.rawurlencode($reference); + $url = $url . rawurlencode($reference); } //url without slashes is handled as a pageid - if(strpos($url,'/') === false) { + if(strpos($url, '/') === false) { list($url, $urlparam) = explode('?', $url, 2); $url = wl($url, $urlparam); } - if($hash) $url .= '#'.rawurlencode($hash); + if($hash) $url .= '#' . rawurlencode($hash); return $url; } diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index f0a507721..20cd8e9d6 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -685,7 +685,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } /** - */ + */ function interwikilink($match, $name = null, $wikiName, $wikiUri) { global $conf; @@ -697,17 +697,17 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage); //get interwiki URL - $url = $this->_resolveInterWiki($wikiName,$wikiUri); + $url = $this->_resolveInterWiki($wikiName, $wikiUri); - if ( !$isImage ) { - $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName); + if(!$isImage) { + $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $wikiName); $link['class'] = "interwiki iw_$class"; } else { $link['class'] = 'media'; } //do we stay at the same server? Use local target - if( strpos($url,DOKU_URL) === 0 OR strpos($url,DOKU_BASE) === 0){ + if(strpos($url, DOKU_URL) === 0 OR strpos($url, DOKU_BASE) === 0) { $link['target'] = $conf['target']['wiki']; } -- cgit v1.2.3 From 4485a8917160fb9f955e5b8aa28c1a5499c608b0 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 11:28:09 +0100 Subject: Fix double slash in coral interwikilink --- _test/tests/inc/parser/renderer_resolveinterwiki.test.php | 3 +-- conf/interwiki.conf | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index f17838f92..ea4f99511 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -20,8 +20,7 @@ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { array('wp', 'foo @+%/#txt', 'http://en.wikipedia.org/wiki/foo @+%/#txt'), array('amazon', 'foo @+%/#txt', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/#txt'), array('doku', 'foo @+%/#txt', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F#txt'), - //ToDo: Check needed, is double slash in path desired - array('coral', 'http://example.com:83/path/naar/?query=foo%20%40%2B%25%2F', 'http://example.com.83.nyud.net:8090//path/naar/?query=foo%20%40%2B%25%2F'), + array('coral', 'http://example.com:83/path/naar/?query=foo%20%40%2B%25%2F', 'http://example.com.83.nyud.net:8090/path/naar/?query=foo%20%40%2B%25%2F'), array('scheme', 'ftp://foo @+%/#txt', 'ftp://example.com#txt'), //relative url array('withslash', 'foo @+%/#txt', '/testfoo%20%40%2B%25%2F#txt'), diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 2d83043ef..999462170 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -24,7 +24,7 @@ amazon.de http://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/ amazon.uk http://www.amazon.co.uk/exec/obidos/ASIN/ paypal https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business= phpfn http://www.php.net/{NAME} -coral http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY} +coral http://{HOST}.{PORT}.nyud.net:8090{PATH}?{QUERY} freecache http://freecache.org/{NAME} sb http://www.splitbrain.org/go/ skype skype:{NAME} -- cgit v1.2.3 From ddb55c702f2393a435c309fd7d4e169acb2675f7 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 11:29:33 +0100 Subject: Use DOKU_BASE in resolveinterwiki unittest --- _test/tests/inc/parser/renderer_resolveinterwiki.test.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index ea4f99511..a71895b34 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -25,9 +25,9 @@ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { //relative url array('withslash', 'foo @+%/#txt', '/testfoo%20%40%2B%25%2F#txt'), //dokuwiki id's - array('onlytext', 'foo @+%#txt', '/tmp/doku.php?id=onlytextfoo%20%40%2B%25#txt'), - array('user', 'foo @+%#txt', '/tmp/doku.php?id=wiki:users:foo%20%40%2B%25#txt'), - array('withquery', 'foo @+%#txt', '/tmp/doku.php?id=anyns:foo%20%40%2B%25&do=edit#txt') + array('onlytext', 'foo @+%#txt', DOKU_BASE.'doku.php?id=onlytextfoo%20%40%2B%25#txt'), + array('user', 'foo @+%#txt', DOKU_BASE.'doku.php?id=wiki:users:foo%20%40%2B%25#txt'), + array('withquery', 'foo @+%#txt', DOKU_BASE.'doku.php?id=anyns:foo%20%40%2B%25&do=edit#txt') ); foreach($tests as $test) { -- cgit v1.2.3 From 6496c33fc8e98f6e3acaaa5db0234d9c07bec4fe Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 14:34:26 +0100 Subject: interwiki : prefixed configurls handled as wikilinks --- _test/tests/inc/parser/renderer_resolveinterwiki.test.php | 11 ++++++----- conf/interwiki.conf | 2 +- inc/common.php | 10 +++++++++- inc/parser/renderer.php | 9 +++++---- inc/parser/xhtml.php | 11 ++++++++++- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index a71895b34..e78930934 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -12,8 +12,8 @@ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { $Renderer->interwiki = getInterwiki(); $Renderer->interwiki['scheme'] = '{SCHEME}://example.com'; $Renderer->interwiki['withslash'] = '/test'; - $Renderer->interwiki['onlytext'] = 'onlytext{NAME}'; //with {URL} double urlencoded - $Renderer->interwiki['withquery'] = 'anyns:{NAME}?do=edit'; + $Renderer->interwiki['onlytext'] = ':onlytext{NAME}'; //with {URL} double urlencoded + $Renderer->interwiki['withquery'] = ':anyns:{NAME}?do=edit'; $tests = array( // shortcut, reference and expected @@ -24,10 +24,11 @@ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { array('scheme', 'ftp://foo @+%/#txt', 'ftp://example.com#txt'), //relative url array('withslash', 'foo @+%/#txt', '/testfoo%20%40%2B%25%2F#txt'), + array('skype', 'foo @+%/#txt', 'skype:foo @+%/#txt'), //dokuwiki id's - array('onlytext', 'foo @+%#txt', DOKU_BASE.'doku.php?id=onlytextfoo%20%40%2B%25#txt'), - array('user', 'foo @+%#txt', DOKU_BASE.'doku.php?id=wiki:users:foo%20%40%2B%25#txt'), - array('withquery', 'foo @+%#txt', DOKU_BASE.'doku.php?id=anyns:foo%20%40%2B%25&do=edit#txt') + array('onlytext', 'foo @+%#txt', DOKU_BASE.'doku.php?id=onlytextfoo#txt'), + array('user', 'foo @+%#txt', DOKU_BASE.'doku.php?id=wiki:users:foo#txt'), + array('withquery', 'foo @+%#txt', DOKU_BASE.'doku.php?id=anyns:foo&do=edit#txt') ); foreach($tests as $test) { diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 999462170..0643f764b 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -30,7 +30,7 @@ sb http://www.splitbrain.org/go/ skype skype:{NAME} google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky -user wiki:users:{NAME} +user :wiki:users:{NAME} # To support VoIP/SIP links callto callto://{NAME} diff --git a/inc/common.php b/inc/common.php index cd3c053a3..aa59a8c11 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1497,7 +1497,15 @@ function userinfo($username = null) { $xhtml_renderer->interwiki = getInterwiki(); } $shortcut = 'user'; - $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username); + $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username, $exists); + if($exists !== null) { + if($exists) { + $data['link']['class'] .= ' wikilink1'; + } else { + $data['link']['class'] .= ' wikilink2'; + $data['link']['rel'] = 'nofollow'; + } + } } } else { $data['link'] = false; diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index d01fc3899..fa70c299e 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -292,7 +292,7 @@ class Doku_Renderer extends DokuWiki_Plugin { /** * Resolve an interwikilink */ - function _resolveInterWiki(&$shortcut, $reference) { + function _resolveInterWiki(&$shortcut, $reference, &$exists=null) { //get interwiki URL if(isset($this->interwiki[$shortcut])) { $url = $this->interwiki[$shortcut]; @@ -322,9 +322,10 @@ class Doku_Renderer extends DokuWiki_Plugin { $url = $url . rawurlencode($reference); } //url without slashes is handled as a pageid - if(strpos($url, '/') === false) { - list($url, $urlparam) = explode('?', $url, 2); - $url = wl($url, $urlparam); + if($url{0} === ':') { + list($id, $urlparam) = explode('?', $url, 2); + $url = wl(cleanID($id), $urlparam); + $exists = page_exists($id); } if($hash) $url .= '#' . rawurlencode($hash); diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 20cd8e9d6..53a4dbcad 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -697,7 +697,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage); //get interwiki URL - $url = $this->_resolveInterWiki($wikiName, $wikiUri); + $exists = null; + $url = $this->_resolveInterWiki($wikiName, $wikiUri, $exists); if(!$isImage) { $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $wikiName); @@ -710,6 +711,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer { if(strpos($url, DOKU_URL) === 0 OR strpos($url, DOKU_BASE) === 0) { $link['target'] = $conf['target']['wiki']; } + if($exists !== null && !$isImage) { + if($exists) { + $link['class'] .= ' wikilink1'; + } else { + $link['class'] .= ' wikilink2'; + $link['rel'] = 'nofollow'; + } + } $link['url'] = $url; $link['title'] = htmlspecialchars($link['url']); -- cgit v1.2.3 From f379edc2c80eee8cab2b94a4374113a0100f3929 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sat, 15 Feb 2014 16:51:48 +0100 Subject: fix comment in _resolveInterWiki --- inc/parser/renderer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index fa70c299e..01a1fbfec 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -321,7 +321,7 @@ class Doku_Renderer extends DokuWiki_Plugin { //default $url = $url . rawurlencode($reference); } - //url without slashes is handled as a pageid + //handle as wiki links if($url{0} === ':') { list($id, $urlparam) = explode('?', $url, 2); $url = wl(cleanID($id), $urlparam); -- cgit v1.2.3 From 6198904b0be1a338f774922e09c4b0d5050d853e Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Sun, 16 Feb 2014 19:55:14 +0000 Subject: generalised link colour in header, making interwiki links blue as well (to fit design) --- lib/tpl/dokuwiki/css/design.less | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/tpl/dokuwiki/css/design.less b/lib/tpl/dokuwiki/css/design.less index 42292de49..235f6d6bc 100644 --- a/lib/tpl/dokuwiki/css/design.less +++ b/lib/tpl/dokuwiki/css/design.less @@ -48,6 +48,12 @@ margin-bottom: 0; font-size: 0.875em; } + + /* make all links in header (including breadcrumb and interwiki) same colour as the rest */ + a { + color: @ini_link; + background-color: inherit; + } } [dir=rtl] #dokuwiki__header h1 img { @@ -260,11 +266,6 @@ border-bottom: 1px solid @ini_border; } - a { - color: @ini_link; - background-color: inherit; - } - .bcsep { font-size: 0.75em; } -- cgit v1.2.3 From 2a2a43c4fa64079215d205d1faf50ab8a59caaab Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 17 Feb 2014 00:37:28 +0100 Subject: change default userspace to :user: and add interwiki class --- conf/interwiki.conf | 2 +- inc/common.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 0643f764b..d961912e5 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -30,7 +30,7 @@ sb http://www.splitbrain.org/go/ skype skype:{NAME} google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky -user :wiki:users:{NAME} +user :user:{NAME} # To support VoIP/SIP links callto callto://{NAME} diff --git a/inc/common.php b/inc/common.php index aa59a8c11..4a5ead6b8 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1498,6 +1498,7 @@ function userinfo($username = null) { } $shortcut = 'user'; $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username, $exists); + $data['link']['class'] .= ' interwiki iw_user'; if($exists !== null) { if($exists) { $data['link']['class'] .= ' wikilink1'; -- cgit v1.2.3 From 118e00521560a4a93c92ba7439e5cf5463e0efe7 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 17 Feb 2014 00:51:10 +0100 Subject: update unittest with interwiki.conf change as well --- _test/tests/inc/parser/renderer_resolveinterwiki.test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index e78930934..7b43b6d62 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -27,7 +27,7 @@ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { array('skype', 'foo @+%/#txt', 'skype:foo @+%/#txt'), //dokuwiki id's array('onlytext', 'foo @+%#txt', DOKU_BASE.'doku.php?id=onlytextfoo#txt'), - array('user', 'foo @+%#txt', DOKU_BASE.'doku.php?id=wiki:users:foo#txt'), + array('user', 'foo @+%#txt', DOKU_BASE.'doku.php?id=user:foo#txt'), array('withquery', 'foo @+%#txt', DOKU_BASE.'doku.php?id=anyns:foo&do=edit#txt') ); -- cgit v1.2.3 From 6384941886832589f7bb3c13bc18115499cf9369 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 10 Mar 2014 22:29:53 +0100 Subject: added user.png for interwiki links --- lib/images/interwiki/user.png | Bin 0 -> 741 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/images/interwiki/user.png diff --git a/lib/images/interwiki/user.png b/lib/images/interwiki/user.png new file mode 100644 index 000000000..79f35ccbd Binary files /dev/null and b/lib/images/interwiki/user.png differ -- cgit v1.2.3 From 30f6ec4bf42de282d69f87494819f0599a1fae82 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 10 Mar 2014 23:58:18 +0100 Subject: update usage in userlink --- inc/common.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/inc/common.php b/inc/common.php index 143ad8923..d971986df 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1475,6 +1475,8 @@ function userinfo($username = null) { global $conf, $INFO; /** @var DokuWiki_Auth_Plugin $auth */ global $auth; + /** @var Input $INPUT */ + global $INPUT; // prepare initial event data $data = array( @@ -1493,8 +1495,8 @@ function userinfo($username = null) { 'userinfo' => '' ); if($username === null) { - $data['username'] = $username = $_SERVER['REMOTE_USER']; - $data['name'] = '' . hsc($INFO['userinfo']['name']) . ' (' . hsc($_SERVER['REMOTE_USER']) . ')'; + $data['username'] = $username = $INPUT->server->str('REMOTE_USER'); + $data['name'] = '' . hsc($INFO['userinfo']['name']) . ' (' . hsc($INPUT->server->str('REMOTE_USER')) . ')'; } $evt = new Doku_Event('COMMON_USER_LINK', $data); -- cgit v1.2.3 From 533772e1d092bc1b1326f7fe5a31091b58bf9030 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 11 Mar 2014 00:00:50 +0100 Subject: declare more clear, before used as ref --- inc/common.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/common.php b/inc/common.php index d971986df..6e7142f0e 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1541,6 +1541,7 @@ function userinfo($username = null) { $xhtml_renderer->interwiki = getInterwiki(); } $shortcut = 'user'; + $exists = null; $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username, $exists); $data['link']['class'] .= ' interwiki iw_user'; if($exists !== null) { -- cgit v1.2.3 From 15f3bc49ed925ccb7c04299e9f614b0a1b739b13 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 14 Mar 2014 18:42:25 +0100 Subject: enable editorinfo and userinfo to return plain text names --- inc/common.php | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/inc/common.php b/inc/common.php index 6e7142f0e..f0c935c0c 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1457,21 +1457,26 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') { * Return the users realname or e-mail address for use * in page footer and recent changes pages * + * @param string|bool $username or false when currently logged-in user should be used + * @param bool $textonly true returns only plain text, true allows returning html + * @return string html or text of formatted user name + * * @author Andy Webber */ -function editorinfo($username) { - return userinfo($username); +function editorinfo($username, $textonly = false) { + return userinfo($username, $textonly); } /** * Returns users realname w/o link * * @param string|bool $username or false when currently logged-in user should be used - * @return string html of formatted user name + * @param bool $textonly true returns only plain text, true allows returning html + * @return string html or text of formatted user name * * @triggers COMMON_USER_LINK */ -function userinfo($username = null) { +function userinfo($username = null, $textonly = false) { global $conf, $INFO; /** @var DokuWiki_Auth_Plugin $auth */ global $auth; @@ -1492,25 +1497,30 @@ function userinfo($username = null) { 'title' => '', 'class' => '' ), - 'userinfo' => '' + 'userinfo' => '', // formatted user name as will be returned + 'textonly' => $textonly ); if($username === null) { $data['username'] = $username = $INPUT->server->str('REMOTE_USER'); - $data['name'] = '' . hsc($INFO['userinfo']['name']) . ' (' . hsc($INPUT->server->str('REMOTE_USER')) . ')'; + if($textonly){ + $data['name'] = $INFO['userinfo']['name']. ' (' . $INPUT->server->str('REMOTE_USER') . ')'; + }else { + $data['name'] = '' . hsc($INFO['userinfo']['name']) . ' (' . hsc($INPUT->server->str('REMOTE_USER')) . ')'; + } } $evt = new Doku_Event('COMMON_USER_LINK', $data); if($evt->advise_before(true)) { if(empty($data['name'])) { if($conf['showuseras'] == 'loginname') { - $data['name'] = hsc($data['username']); + $data['name'] = $textonly ? $data['username'] : hsc($data['username']); } else { if($auth) $info = $auth->getUserData($username); if(isset($info) && $info) { switch($conf['showuseras']) { case 'username': case 'username_link': - $data['name'] = hsc($info['name']); + $data['name'] = $textonly ? $info['name'] : hsc($info['name']); break; case 'email': case 'email_link': @@ -1524,7 +1534,7 @@ function userinfo($username = null) { /** @var Doku_Renderer_xhtml $xhtml_renderer */ static $xhtml_renderer = null; - if($data['link'] !== false && empty($data['link']['url'])) { + if(!$data['textonly'] && empty($data['link']['url'])) { if(in_array($conf['showuseras'], array('email_link', 'username_link'))) { if(!isset($info)) { @@ -1554,15 +1564,15 @@ function userinfo($username = null) { } } } else { - $data['link'] = false; + $data['textonly'] = true; } } else { - $data['link'] = false; + $data['textonly'] = true; } } - if($data['link'] === false) { + if($data['textonly']) { $data['userinfo'] = $data['name']; } else { $data['link']['name'] = $data['name']; -- cgit v1.2.3 From c18baa7e07ae2f57b2fcaaef64e3bb338cef85ae Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 15 Mar 2014 20:08:44 +0100 Subject: override user link icon in header --- lib/tpl/dokuwiki/css/design.less | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/tpl/dokuwiki/css/design.less b/lib/tpl/dokuwiki/css/design.less index 60a66f069..66607b5e9 100644 --- a/lib/tpl/dokuwiki/css/design.less +++ b/lib/tpl/dokuwiki/css/design.less @@ -106,7 +106,8 @@ margin-left: 0; } -#dokuwiki__usertools a.action { +#dokuwiki__usertools a.action, +#dokuwiki__usertools a.iw_user { padding-left: 20px; background: transparent url(images/usertools.png) no-repeat 0 0; } @@ -143,6 +144,7 @@ background-position: left 0; } + a.iw_user, a.action.profile { background-position: left -32px; } -- cgit v1.2.3 From c0953023fdf442f13e6c27b7bd70dcde61243e88 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sun, 16 Mar 2014 21:00:06 +0100 Subject: improve phpdocs editorinfo() --- inc/common.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/common.php b/inc/common.php index f0c935c0c..14d4a9d79 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1459,7 +1459,7 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') { * * @param string|bool $username or false when currently logged-in user should be used * @param bool $textonly true returns only plain text, true allows returning html - * @return string html or text of formatted user name + * @return string html or plain text(not escaped) of formatted user name * * @author Andy Webber */ @@ -1472,7 +1472,7 @@ function editorinfo($username, $textonly = false) { * * @param string|bool $username or false when currently logged-in user should be used * @param bool $textonly true returns only plain text, true allows returning html - * @return string html or text of formatted user name + * @return string html or plain text(not escaped) of formatted user name * * @triggers COMMON_USER_LINK */ -- cgit v1.2.3 From cd4635ee7f07ae17e1b2a58d8d9e6620ddb077ef Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sun, 16 Mar 2014 21:10:43 +0100 Subject: Rename userinfo() to userlink() --- inc/common.php | 4 ++-- inc/template.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/common.php b/inc/common.php index 14d4a9d79..eef160122 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1464,7 +1464,7 @@ function shorten($keep, $short, $max, $min = 9, $char = '…') { * @author Andy Webber */ function editorinfo($username, $textonly = false) { - return userinfo($username, $textonly); + return userlink($username, $textonly); } /** @@ -1476,7 +1476,7 @@ function editorinfo($username, $textonly = false) { * * @triggers COMMON_USER_LINK */ -function userinfo($username = null, $textonly = false) { +function userlink($username = null, $textonly = false) { global $conf, $INFO; /** @var DokuWiki_Auth_Plugin $auth */ global $auth; diff --git a/inc/template.php b/inc/template.php index 5a3bdea6a..ea65b9d43 100644 --- a/inc/template.php +++ b/inc/template.php @@ -893,7 +893,7 @@ function tpl_userinfo() { global $INPUT; if($INPUT->server->str('REMOTE_USER')) { - print $lang['loggedinas'].': '.userinfo(); + print $lang['loggedinas'].': '.userlink(); return true; } return false; -- cgit v1.2.3 From 4d5fc927eace8f4208895cd309d23fc9025dbb6b Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Sun, 16 Mar 2014 21:13:27 +0100 Subject: use more consistent names --- inc/common.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inc/common.php b/inc/common.php index eef160122..5164d4ac0 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1497,7 +1497,7 @@ function userlink($username = null, $textonly = false) { 'title' => '', 'class' => '' ), - 'userinfo' => '', // formatted user name as will be returned + 'userlink' => '', // formatted user name as will be returned 'textonly' => $textonly ); if($username === null) { @@ -1573,19 +1573,19 @@ function userlink($username = null, $textonly = false) { } if($data['textonly']) { - $data['userinfo'] = $data['name']; + $data['userlink'] = $data['name']; } else { $data['link']['name'] = $data['name']; if(is_null($xhtml_renderer)) { $xhtml_renderer = p_get_renderer('xhtml'); } - $data['userinfo'] = $xhtml_renderer->_formatLink($data['link']); + $data['userlink'] = $xhtml_renderer->_formatLink($data['link']); } } $evt->advise_after(); unset($evt); - return $data['userinfo']; + return $data['userlink']; } /** -- cgit v1.2.3