express-8.x-1.x-dev/themes/contrib/bootstrap/src/Plugin/Preprocess/MenuLocalAction.php
themes/contrib/bootstrap/src/Plugin/Preprocess/MenuLocalAction.php
<?php
/**
* @file
* Contains \Drupal\bootstrap\Plugin\Preprocess\MenuLocalAction.
*/
namespace Drupal\bootstrap\Plugin\Preprocess;
use Drupal\bootstrap\Annotation\BootstrapPreprocess;
use Drupal\bootstrap\Bootstrap;
use Drupal\bootstrap\Utility\Element;
use Drupal\bootstrap\Utility\Variables;
use Drupal\Component\Render\FormattableMarkup;
/**
* Pre-processes variables for the "menu_local_action" theme hook.
*
* @ingroup plugins_preprocess
*
* @BootstrapPreprocess("menu_local_action")
*/
class MenuLocalAction extends PreprocessBase implements PreprocessInterface {
/**
* {@inheritdoc}
*/
public function preprocessElement(Element $element, Variables $variables) {
$link = $element->getProperty('link');
$link += ['localized_options' => []];
$link['localized_options']['set_active_class'] = TRUE;
$icon = Bootstrap::glyphiconFromString($link['title']);
$options = isset($link['localized_options']) ? $link['localized_options'] : [];
if (isset($link['url'])) {
// Turn link into a mini-button and colorize based on title.
$class = Bootstrap::cssClassFromString($link['title'], 'default');
if (!isset($options['attributes']['class'])) {
$options['attributes']['class'] = [];
}
$string = is_string($options['attributes']['class']);
if ($string) {
$options['attributes']['class'] = explode(' ', $options['attributes']['class']);
}
$options['attributes']['class'][] = 'btn';
$options['attributes']['class'][] = 'btn-xs';
$options['attributes']['class'][] = 'btn-' . $class;
if ($string) {
$options['attributes']['class'] = implode(' ', $options['attributes']['class']);
}
$variables['link'] = [
'#type' => 'link',
'#title' => $icon ? new FormattableMarkup(Element::create($icon)->renderPlain() . '@text', ['@text' => $link['title']]) : $link['title'],
'#options' => $options,
'#url' => $link['url'],
];
}
else {
$variables['link'] = [
'#type' => 'link',
'#title' => $link['title'],
'#options' => $options,
'#url' => $link['url'],
];
}
}
}
