Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 48 |
| Toolbar | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
56 | |
0.00% |
0 / 48 |
| getInfo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 26 |
|||
| preRenderToolbar | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 18 |
|||
| breakpointManager | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| moduleHandler | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\toolbar\Element\Toolbar. | |
| */ | |
| namespace Drupal\toolbar\Element; | |
| use Drupal\Component\Utility\Html; | |
| use Drupal\Core\Render\Element\RenderElement; | |
| use Drupal\Core\Render\Element; | |
| /** | |
| * Provides a render element for the default Drupal toolbar. | |
| * | |
| * @RenderElement("toolbar") | |
| */ | |
| class Toolbar extends RenderElement { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getInfo() { | |
| $class = get_class($this); | |
| return array( | |
| '#pre_render' => array( | |
| array($class, 'preRenderToolbar'), | |
| ), | |
| '#theme' => 'toolbar', | |
| '#attached' => array( | |
| 'library' => array( | |
| 'toolbar/toolbar', | |
| ), | |
| ), | |
| // Metadata for the toolbar wrapping element. | |
| '#attributes' => array( | |
| // The id cannot be simply "toolbar" or it will clash with the | |
| // simpletest tests listing which produces a checkbox with attribute | |
| // id="toolbar". | |
| 'id' => 'toolbar-administration', | |
| 'role' => 'group', | |
| 'aria-label' => $this->t('Site administration toolbar'), | |
| ), | |
| // Metadata for the administration bar. | |
| '#bar' => array( | |
| '#heading' => $this->t('Toolbar items'), | |
| '#attributes' => array( | |
| 'id' => 'toolbar-bar', | |
| 'role' => 'navigation', | |
| 'aria-label' => $this->t('Toolbar items'), | |
| ), | |
| ), | |
| ); | |
| } | |
| /** | |
| * Builds the Toolbar as a structured array ready for drupal_render(). | |
| * | |
| * Since building the toolbar takes some time, it is done just prior to | |
| * rendering to ensure that it is built only if it will be displayed. | |
| * | |
| * @param array $element | |
| * A renderable array. | |
| * | |
| * @return array | |
| * A renderable array. | |
| * | |
| * @see toolbar_page_top(). | |
| */ | |
| public static function preRenderToolbar($element) { | |
| // Get the configured breakpoints to switch from vertical to horizontal | |
| // toolbar presentation. | |
| $breakpoints = static::breakpointManager()->getBreakpointsByGroup('toolbar'); | |
| if (!empty($breakpoints)) { | |
| $media_queries = array(); | |
| foreach ($breakpoints as $id => $breakpoint) { | |
| $media_queries[$id] = $breakpoint->getMediaQuery(); | |
| } | |
| $element['#attached']['drupalSettings']['toolbar']['breakpoints'] = $media_queries; | |
| } | |
| $module_handler = static::moduleHandler(); | |
| // Get toolbar items from all modules that implement hook_toolbar(). | |
| $items = $module_handler->invokeAll('toolbar'); | |
| // Allow for altering of hook_toolbar(). | |
| $module_handler->alter('toolbar', $items); | |
| // Sort the children. | |
| uasort($items, array('\Drupal\Component\Utility\SortArray', 'sortByWeightProperty')); | |
| // Merge in the original toolbar values. | |
| $element = array_merge($element, $items); | |
| // Assign each item a unique ID, based on its key. | |
| foreach (Element::children($element) as $key) { | |
| $element[$key]['#id'] = Html::getId('toolbar-item-' . $key); | |
| } | |
| return $element; | |
| } | |
| /** | |
| * Wraps the breakpoint manager. | |
| * | |
| * @return \Drupal\breakpoint\BreakpointManagerInterface | |
| */ | |
| protected static function breakpointManager() { | |
| return \Drupal::service('breakpoint.manager'); | |
| } | |
| /** | |
| * Wraps the module handler. | |
| * | |
| * @return \Drupal\Core\Extension\ModuleHandlerInterface | |
| */ | |
| protected static function moduleHandler() { | |
| return \Drupal::moduleHandler(); | |
| } | |
| } |