Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 39
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
SkinComponentTempUserBanner
0.00% covered (danger)
0.00%
0 / 38
0.00% covered (danger)
0.00%
0 / 5
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 createLoginLink
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
2
 createAccountLink
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 renderBannerHTML
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
2
 getTemplateData
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace MediaWiki\Skin\Components;
4
5use MediaWiki\Html\Html;
6use MediaWiki\Language\MessageLocalizer;
7use MediaWiki\User\User;
8
9/**
10 * @internal for use inside Skin and SkinTemplate classes only
11 *
12 * NOTE: This class is currently *not registered* via the SkinComponentRegistry
13 * and cannot be called via Skin::getComponent.
14 * Because of it's unsuitability for rendering via mustache templates
15 * (it renders its own HTML and returns no data),
16 * it is appended directly to skin data in Skin::getTemplateData.
17 * @unstable
18 */
19class SkinComponentTempUserBanner implements SkinComponent {
20    /** @var string */
21    private $loginUrl;
22    /** @var string */
23    private $createAccountUrl;
24    /** @var MessageLocalizer */
25    private $localizer;
26    /** @var bool */
27    private $isTempUser;
28    /** @var string */
29    private $username;
30
31    /**
32     * @param string|array $returnto
33     * @param MessageLocalizer $localizer
34     * @param User $user
35     */
36    public function __construct( $returnto, $localizer, $user ) {
37        $this->loginUrl = SkinComponentUtils::makeSpecialUrl( 'Userlogin', $returnto );
38        $this->createAccountUrl = SkinComponentUtils::makeSpecialUrl( 'CreateAccount', $returnto );
39        $this->localizer = $localizer;
40        $this->isTempUser = $user->isTemp();
41        $this->username = $user->getName(); // getUser
42    }
43
44    private function createLoginLink(): string {
45        return Html::element( 'a',
46        [
47            'href' => $this->loginUrl,
48            'id' => 'pt-login',
49            'title' => $this->localizer->msg( 'tooltip-pt-login' )->text(),
50            'class' => 'cdx-button cdx-button--fake-button cdx-button--fake-button--enabled',
51            'data-event-name' => 'temp-user-banner.login',
52        ],
53        $this->localizer->msg( 'pt-login' )->text() );
54    }
55
56    private function createAccountLink(): string {
57        return Html::element( 'a',
58            [
59                'href' => $this->createAccountUrl,
60                'id' => 'pt-createaccount',
61                'title' => $this->localizer->msg( 'tooltip-pt-createaccount' )->text(),
62                'class' => 'cdx-button cdx-button--fake-button cdx-button--fake-button--enabled',
63                'data-event-name' => 'temp-user-banner.create-account',
64            ],
65            $this->localizer->msg( 'pt-createaccount' )->text()
66        );
67    }
68
69    private function renderBannerHTML(): string {
70        return Html::rawElement( 'div', [ 'class' => 'mw-temp-user-banner-tooltip' ],
71            Html::rawElement( 'button', [
72                'id' => 'mw-temp-user-banner-tooltip-button',
73                'class' => 'mw-temp-user-banner-tooltip-summary cdx-button '
74                    . 'cdx-button--icon-only cdx-button--weight-quiet',
75                'aria-label' => $this->localizer->msg( 'temp-user-banner-tooltip-label' )->text(),
76                'data-event-name' => 'temp-user-banner.info',
77                ],
78                Html::element( 'span', [ 'class' => 'mw-temp-user-banner-tooltip-icon ' ] )
79            )
80        );
81    }
82
83    /**
84     * @inheritDoc
85     */
86    public function getTemplateData(): array {
87        return [
88            'html' => ( $this->isTempUser ) ? $this->renderBannerHTML() : ''
89        ];
90    }
91}
92
93/** @deprecated class alias since 1.46 */
94class_alias( SkinComponentTempUserBanner::class, 'MediaWiki\\Skin\\SkinComponentTempUserBanner' );