summaryrefslogtreecommitdiff
path: root/www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php')
-rw-r--r--www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php117
1 files changed, 117 insertions, 0 deletions
diff --git a/www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php b/www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php
new file mode 100644
index 00000000..540e10d0
--- /dev/null
+++ b/www/wiki/skins/chameleon/src/Components/NavbarHorizontal/PersonalTools.php
@@ -0,0 +1,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;
+ }
+
+
+}