2023-01-06 01:45:38 +00:00
|
|
|
<?php
|
|
|
|
namespace MediaWiki\Skins\Vector\Components;
|
|
|
|
|
2024-01-02 19:54:08 +00:00
|
|
|
use MediaWiki\Html\Html;
|
|
|
|
use MediaWiki\Linker\Linker;
|
2023-01-06 01:45:38 +00:00
|
|
|
use MessageLocalizer;
|
|
|
|
|
|
|
|
/**
|
2023-02-17 22:53:02 +00:00
|
|
|
* VectorComponentLink component
|
2023-01-06 01:45:38 +00:00
|
|
|
*/
|
2023-02-17 22:53:02 +00:00
|
|
|
class VectorComponentLink implements VectorComponent {
|
2023-01-06 01:45:38 +00:00
|
|
|
/** @var MessageLocalizer */
|
|
|
|
private $localizer;
|
|
|
|
/** @var string */
|
|
|
|
private $icon;
|
|
|
|
/** @var string */
|
|
|
|
private $href;
|
|
|
|
/** @var string */
|
|
|
|
private $text;
|
|
|
|
/** @var string */
|
|
|
|
private $accessKeyHint;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param string $href
|
|
|
|
* @param string $text
|
|
|
|
* @param null|string $icon
|
|
|
|
* @param null|MessageLocalizer $localizer for generation of tooltip and access keys
|
|
|
|
* @param null|string $accessKeyHint will be used to derive HTML attributes such as title, accesskey
|
|
|
|
* and aria-label ("$accessKeyHint-label")
|
|
|
|
*/
|
|
|
|
public function __construct( string $href, string $text, $icon = null, $localizer = null, $accessKeyHint = null ) {
|
|
|
|
$this->href = $href;
|
|
|
|
$this->text = $text;
|
|
|
|
$this->icon = $icon;
|
|
|
|
$this->localizer = $localizer;
|
|
|
|
$this->accessKeyHint = $accessKeyHint;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @inheritDoc
|
|
|
|
*/
|
|
|
|
public function getTemplateData(): array {
|
|
|
|
$localizer = $this->localizer;
|
|
|
|
$accessKeyHint = $this->accessKeyHint;
|
|
|
|
$additionalAttributes = [];
|
|
|
|
if ( $localizer ) {
|
|
|
|
$msg = $localizer->msg( $accessKeyHint . '-label' );
|
|
|
|
if ( $msg->exists() ) {
|
|
|
|
$additionalAttributes[ 'aria-label' ] = $msg->text();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return [
|
|
|
|
'icon' => $this->icon,
|
|
|
|
'text' => $this->text,
|
|
|
|
'href' => $this->href,
|
|
|
|
'html-attributes' => $localizer && $accessKeyHint ? Html::expandAttributes(
|
|
|
|
Linker::tooltipAndAccesskeyAttribs(
|
|
|
|
$accessKeyHint,
|
|
|
|
[],
|
|
|
|
[],
|
|
|
|
$localizer
|
|
|
|
) + $additionalAttributes
|
|
|
|
) : '',
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|