73 lines
1.7 KiB
PHP
73 lines
1.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Joomla.Site
|
|
* @subpackage Layout
|
|
*
|
|
* @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\Utilities\ArrayHelper;
|
|
|
|
// Convert icomoon to fa
|
|
$icon = $displayData['icon'];
|
|
|
|
// Get fixed width icon or not
|
|
$iconFixed = $displayData['fixed'] ?? null;
|
|
|
|
// Set default prefix to be fontawesome
|
|
$iconPrefix = $displayData['prefix'] ?? 'icon-';
|
|
|
|
// Get other classNames if set, like icon-white, text-danger
|
|
$iconSuffix = $displayData['suffix'] ?? null;
|
|
|
|
// Get other attributes besides classNames
|
|
$tabindex = $displayData['tabindex'] ?? null;
|
|
$title = $displayData['title'] ?? null;
|
|
|
|
// Default output in <span>. ClassNames if set to false
|
|
$html = $displayData['html'] ?? true;
|
|
|
|
// Replace double set icon-icon-
|
|
// @todo: Joomla should be cleaned so this replacement is not needed.
|
|
$icon = str_replace('icon-icon-', 'icon-', $icon);
|
|
|
|
switch ($icon) {
|
|
case (strpos($icon, 'icon-') !== false):
|
|
$iconPrefix = $displayData['prefix'] ?? null;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if ($iconFixed) {
|
|
$iconFixed = 'icon-fw';
|
|
}
|
|
|
|
// Just render icon as className
|
|
$icon = trim(implode(' ', [$iconPrefix . $icon, $iconFixed, $iconSuffix]));
|
|
|
|
// Convert icon to html output when HTML !== false
|
|
if ($html !== false) {
|
|
$iconAttribs = [
|
|
'class' => $icon,
|
|
'aria-hidden' => "true"
|
|
];
|
|
|
|
if ($tabindex) {
|
|
$iconAttribs['tabindex'] = $tabindex;
|
|
}
|
|
|
|
if ($title) {
|
|
$iconAttribs['title'] = $title;
|
|
}
|
|
|
|
$icon = '<span ' . ArrayHelper::toString($iconAttribs) . '></span>';
|
|
}
|
|
|
|
echo $icon;
|