1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
<?php
/**
* File holding the NavbarHorizontal\PersonalTools class
*
* This file is part of the MediaWiki skin Chameleon.
*
* @copyright 2013 - 2017, Stephan Gambke
* @license GNU General Public License, version 3 (or any later version)
*
* The Chameleon skin is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* The Chameleon skin is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @file
* @ingroup Skins
*/
namespace Skins\Chameleon\Components\NavbarHorizontal;
use Hooks;
use Skins\Chameleon\Components\Component;
/**
* The NavbarHorizontal\PersonalTools class.
*
* Provides a PersonalTools component to be included in a NavbarHorizontal component.
*
* @author Stephan Gambke
* @since 1.6
* @ingroup Skins
*/
class PersonalTools extends Component {
/**
* @return String
*/
public function getHtml() {
$user = $this->getSkinTemplate()->getSkin()->getUser();
if ( $user->isLoggedIn() ) {
$toolsClass = 'navbar-userloggedin';
$toolsLinkText = $this->getSkinTemplate()->getMsg( 'chameleon-loggedin' )->params( $user->getName() )->text();
} else {
$toolsClass = 'navbar-usernotloggedin';
$toolsLinkText = $this->getSkinTemplate()->getMsg( 'chameleon-notloggedin' )->text();
}
$linkText = '<span class="glyphicon glyphicon-user"></span>';
\Hooks::run('ChameleonNavbarHorizontalPersonalToolsLinkText', array( &$linkText, $this->getSkin() ) );
// start personal tools element
$ret =
$this->indent() . '<!-- personal tools -->' .
$this->indent() . '<ul class="'.$this->getClassString().' navbar-tools navbar-nav" >' .
$this->indent( 1 ) . '<li class="dropdown navbar-tools-tools">' .
$this->indent( 1 ) . '<a class="dropdown-toggle ' . $toolsClass . '" href="#" data-toggle="dropdown" title="' . $toolsLinkText . '" >' . $linkText . '</a>' .
$this->indent() . '<ul class="p-personal-tools dropdown-menu dropdown-menu-right" >';
$this->indent( 1 );
// add personal tools (links to user page, user talk, prefs, ...)
foreach ( $this->getSkinTemplate()->getPersonalTools() as $key => $item ) {
$ret .= $this->indent() . $this->getSkinTemplate()->makeListItem( $key, $item );
}
$ret .=
$this->indent( -1 ) . '</ul>' .
$this->indent( -1 ) . '</li>';
// if the user is logged in, add the newtalk notifier
if ( $user->isLoggedIn() ) {
$newMessagesAlert = '';
$newtalks = $user->getNewMessageLinks();
$out = $this->getSkinTemplate()->getSkin()->getOutput();
// Allow extensions to disable the new messages alert;
// since we do not display the link text, we ignore the actual value returned in $newMessagesAlert
if ( Hooks::run( 'GetNewMessagesAlert', array( &$newMessagesAlert, $newtalks, $user, $out ) ) ) {
if ( count( $user->getNewMessageLinks() ) > 0 ) {
$newtalkClass = 'navbar-newtalk-available';
$newtalkLinkText = $this->getSkinTemplate()->getMsg( 'chameleon-newmessages' )->text();
} else {
$newtalkClass = 'navbar-newtalk-not-available';
$newtalkLinkText = $this->getSkinTemplate()->getMsg( 'chameleon-nonewmessages' )->text();
}
$linkText = '<span class="glyphicon glyphicon-envelope"></span>';
\Hooks::run('ChameleonNavbarHorizontalNewTalkLinkText', array( &$linkText, $this->getSkin() ) );
$ret .= $this->indent() . '<li class="navbar-newtalk-notifier">' .
$this->indent( 1 ) . '<a class="dropdown-toggle ' . $newtalkClass . '" title="' .
$newtalkLinkText . '" href="' . $user->getTalkPage()->getLinkURL( 'redirect=no' ) . '">' . $linkText . '</a>' .
$this->indent( -1 ) . '</li>';
}
}
$ret .= $this->indent( -1 ) . '</ul>' . "\n";
return $ret;
}
}
|