Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
HelpBanner
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 2
12
0.00% covered (danger)
0.00%
0 / 1
 shouldHelpBannerBeShown
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getHtml
0.00% covered (danger)
0.00%
0 / 38
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace FileImporter\Html;
4
5use FileImporter\FileImporterUtils;
6use MediaWiki\Html\Html;
7use MediaWiki\MediaWikiServices;
8use MediaWiki\User\Options\UserOptionsLookup;
9use OOUI\HtmlSnippet;
10use OOUI\IconWidget;
11use OOUI\MessageWidget;
12
13/**
14 * @license GPL-2.0-or-later
15 * @author Andrew Kostka <andrew.kostka@wikimedia.de>
16 */
17class HelpBanner extends SpecialPageHtmlFragment {
18
19    public const HIDE_HELP_BANNER_PREFERENCE = 'userjs-fileimporter-hide-help-banner';
20    public const HIDE_HELP_BANNER_CHECK_BOX = 'mw-importfile-disable-help-banner';
21
22    /**
23     * @return bool
24     */
25    private function shouldHelpBannerBeShown() {
26        // TODO: Inject
27        /** @var UserOptionsLookup $userOptionsLookup */
28        $userOptionsLookup = MediaWikiServices::getInstance()->getService( 'UserOptionsLookup' );
29        return !$userOptionsLookup->getBoolOption( $this->getUser(), self::HIDE_HELP_BANNER_PREFERENCE );
30    }
31
32    /**
33     * @return string
34     */
35    public function getHtml() {
36        if ( !$this->shouldHelpBannerBeShown() ) {
37            return '';
38        }
39
40        $textSection = Html::rawElement(
41            'div',
42            [ 'class' => 'mw-importfile-help-banner-text' ],
43            FileImporterUtils::addTargetBlankToLinks(
44                $this->msg( 'fileimporter-help-banner-text' )->parse()
45            )
46        );
47
48        $imageSection = Html::element(
49            'div',
50            [ 'class' => 'mw-importfile-image-help-banner' ],
51            ''
52        );
53
54        $closeSection = Html::rawElement(
55            'label',
56            [ 'for' => self::HIDE_HELP_BANNER_CHECK_BOX ],
57            new IconWidget( [
58                'icon' => 'close',
59                'title' => $this->msg( 'fileimporter-help-banner-close-tooltip' )->text()
60            ] )
61        );
62
63        return Html::rawElement(
64            'div',
65            [ 'class' => 'mw-importfile-help-banner' ],
66            Html::check(
67                'mw-importfile-disable-help-banner',
68                false,
69                [ 'id' => self::HIDE_HELP_BANNER_CHECK_BOX ]
70            ) .
71            new MessageWidget( [
72                'label' => new HtmlSnippet(
73                    $textSection .
74                    $imageSection .
75                    $closeSection
76                )
77            ] )
78        );
79    }
80
81}