Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 39 |
ToolbarItem | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
20 | |
0.00% |
0 / 39 |
getInfo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 12 |
|||
preRenderToolbarItem | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 27 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\toolbar\Element\ToolbarItem. | |
*/ | |
namespace Drupal\toolbar\Element; | |
use Drupal\Core\Render\Element\RenderElement; | |
use Drupal\Core\Url; | |
/** | |
* Provides a toolbar item that is wrapped in markup for common styling. | |
* | |
* The 'tray' property contains a renderable array. | |
* | |
* @RenderElement("toolbar_item") | |
*/ | |
class ToolbarItem extends RenderElement { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getInfo() { | |
$class = get_class($this); | |
return array( | |
'#pre_render' => array( | |
array($class, 'preRenderToolbarItem'), | |
), | |
'tab' => array( | |
'#type' => 'link', | |
'#title' => NULL, | |
'#url' => Url::fromRoute('<front>'), | |
), | |
); | |
} | |
/** | |
* Provides markup for associating a tray trigger with a tray element. | |
* | |
* A tray is a responsive container that wraps renderable content. Trays | |
* present content well on small and large screens alike. | |
* | |
* @param array $element | |
* A renderable array. | |
* | |
* @return array | |
* A renderable array. | |
*/ | |
public static function preRenderToolbarItem($element) { | |
$id = $element['#id']; | |
// Provide attributes for a toolbar item. | |
$attributes = array( | |
'id' => $id, | |
); | |
// If tray content is present, markup the tray and its associated trigger. | |
if (!empty($element['tray'])) { | |
// Provide attributes necessary for trays. | |
$attributes += array( | |
'data-toolbar-tray' => $id . '-tray', | |
'aria-owns' => $id . '-tray', | |
'role' => 'button', | |
'aria-pressed' => 'false', | |
); | |
// Merge in module-provided attributes. | |
$element['tab'] += array('#attributes' => array()); | |
$element['tab']['#attributes'] += $attributes; | |
$element['tab']['#attributes']['class'][] = 'trigger'; | |
// Provide attributes for the tray theme wrapper. | |
$attributes = array( | |
'id' => $id . '-tray', | |
'data-toolbar-tray' => $id . '-tray', | |
); | |
// Merge in module-provided attributes. | |
if (!isset($element['tray']['#wrapper_attributes'])) { | |
$element['tray']['#wrapper_attributes'] = array(); | |
} | |
$element['tray']['#wrapper_attributes'] += $attributes; | |
$element['tray']['#wrapper_attributes']['class'][] = 'toolbar-tray'; | |
} | |
$element['tab']['#attributes']['class'][] = 'toolbar-item'; | |
return $element; | |
} | |
} |