Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
86.67% covered (warning)
86.67%
13 / 15
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
VectorComponentAppearance
86.67% covered (warning)
86.67%
13 / 15
50.00% covered (danger)
50.00%
1 / 2
2.01
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTemplateData
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace MediaWiki\Skins\Vector\Components;
3
4use MediaWiki\Skins\Vector\Constants;
5use MediaWiki\Skins\Vector\FeatureManagement\FeatureManager;
6use MessageLocalizer;
7
8/**
9 * VectorComponentAppearance component
10 */
11class VectorComponentAppearance implements VectorComponent {
12
13    /** @var MessageLocalizer */
14    private $localizer;
15
16    /** @var bool */
17    private $isPinned;
18
19    /** @var string */
20    public const ID = 'vector-appearance';
21
22    public function __construct(
23        MessageLocalizer $localizer,
24        FeatureManager $featureManager
25    ) {
26        $this->localizer = $localizer;
27        // FIXME: isPinned is no longer accurate because the appearance menu uses client preferences
28        $this->isPinned = $featureManager->isFeatureEnabled( Constants::FEATURE_APPEARANCE_PINNED );
29    }
30
31    /**
32     * @inheritDoc
33     */
34    public function getTemplateData(): array {
35        $pinnedContainer = new VectorComponentPinnableContainer( self::ID, $this->isPinned );
36        $pinnableElement = new VectorComponentPinnableElement( self::ID );
37        $pinnableHeader = new VectorComponentPinnableHeader(
38            $this->localizer,
39            $this->isPinned,
40            // Name
41            self::ID,
42            // Feature name
43            'appearance-pinned'
44        );
45
46        $data = $pinnableElement->getTemplateData() +
47            $pinnedContainer->getTemplateData();
48
49        return $data + [
50            'data-pinnable-header' => $pinnableHeader->getTemplateData()
51        ];
52    }
53}