diff --git a/core/modules/toolbar/templates/toolbar-item.html.twig b/core/modules/toolbar/templates/toolbar-item.html.twig new file mode 100644 index 0000000..f38f9f6 --- /dev/null +++ b/core/modules/toolbar/templates/toolbar-item.html.twig @@ -0,0 +1,14 @@ +{# +/** + * Default theme implementation for a toolbar item (tab). + * + * Available variables: + * - item: The content of the toolbar tab. + * + * @see template_preprocess() + * @see template_preprocess_toolbar_item() + * + * @ingroup themeable + */ +#} +{{ item }} diff --git a/core/modules/toolbar/templates/toolbar-tab-wrapper.html.twig b/core/modules/toolbar/templates/toolbar-tab-wrapper.html.twig new file mode 100644 index 0000000..c2407d1 --- /dev/null +++ b/core/modules/toolbar/templates/toolbar-tab-wrapper.html.twig @@ -0,0 +1,20 @@ +{# +/** + * Default theme implementation for a toolbar tab wrapper. + * + * Toolbar tabs have a common styling and placement within the toolbar's bar + * area. + * + * Available variables: + * - children: The content of the toolbar tab. + * - attributes: HTML attributes to apply to the wrapper. + * + * @see template_preprocess() + * @see template_preprocess_toolbar_tab_wrapper() + * + * @ingroup themeable + */ +#} +{% if children %} + {{ children }} +{% endif %} diff --git a/core/modules/toolbar/templates/toolbar-tray-wrapper.html.twig b/core/modules/toolbar/templates/toolbar-tray-wrapper.html.twig new file mode 100644 index 0000000..ddcf7a2 --- /dev/null +++ b/core/modules/toolbar/templates/toolbar-tray-wrapper.html.twig @@ -0,0 +1,27 @@ +{# +/** + * Default theme implementation for a toolbar tray wrapper. + * + * Available variables: + * - label: The toolbar tray heading label. + * - children: The content of the toolbar tray. + * - attributes: HTML attributes to apply to the wrapper. + * + * @see template_preprocess() + * @see template_preprocess_toolbar_tray_wrapper() + * + * @ingroup themeable + */ +#} +{% if children %} + {% spaceless %} + +
+ {% if label %} +

{{ label }}

+ {% endif %} + {{ children }} +
+ + {% endspaceless %} +{% endif %} diff --git a/core/modules/toolbar/templates/toolbar.html.twig b/core/modules/toolbar/templates/toolbar.html.twig new file mode 100644 index 0000000..2e85504 --- /dev/null +++ b/core/modules/toolbar/templates/toolbar.html.twig @@ -0,0 +1,26 @@ +{# +/** + * Default theme implementation for the administrative toolbar. + * + * Available variables: + * - attributes: HTML attributes for the wrapper. + * - toolbar_attributes: HTML attributes to apply to the toolbar. + * - toolbar_heading: The heading or label for the toolbar. + * - children: Tabs for the toolbar. + * - trays: Toolbar trays, each associated with a tab. + * + * @see template_preprocess() + * @see template_preprocess_toolbar() + * + * @ingroup themeable + */ +#} +{% if children %} + + +

{{ toolbar_heading }}

+ {{ children }} + + {{ trays }} + +{% endif %} diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module index c9f0c22..5237279 100644 --- a/core/modules/toolbar/toolbar.module +++ b/core/modules/toolbar/toolbar.module @@ -44,18 +44,19 @@ function toolbar_permission() { function toolbar_theme($existing, $type, $theme, $path) { $items['toolbar'] = array( 'render element' => 'element', + 'template' => 'toolbar', ); $items['toolbar_item'] = array( 'render element' => 'element', + 'template' => 'toolbar-item', ); $items['toolbar_tab_wrapper'] = array( 'render element' => 'element', + 'template' => 'toolbar-tab-wrapper', ); $items['toolbar_tray_wrapper'] = array( 'render element' => 'element', - ); - $items['toolbar_tray_heading_wrapper'] = array( - 'render element' => 'element', + 'template' => 'toolbar-tray-wrapper', ); return $items; } @@ -215,24 +216,28 @@ function ($object) { } /** - * Returns HTML that wraps the administration toolbar. + * Prepares variables for administration toolbar templates. + * + * Default template: toolbar.html.twig. * * @param array $variables * An associative array containing: * - element: An associative array containing the properties and children of * the tray. Properties used: #children, #attributes and #bar. */ -function theme_toolbar(&$variables) { +function template_preprocess_toolbar(&$variables) { if (!empty($variables['element']['#children'])) { $element = $variables['element']; - $trays = ''; + $variables['attributes'] = $element['#attributes']; + $variables['toolbar_attributes'] = new Attribute($element['#bar']['#attributes']); + $variables['toolbar_heading'] = $element['#bar']['#heading']; + $variables['children'] = $element['#children']; + $variables['trays'] = array(); foreach (element_children($element) as $key) { - $trays .= drupal_render($element[$key]['tray']); + if (isset($element[$key]['tray'])) { + $variables['trays'][$key] = $element[$key]['tray']; + } } - return '' - . '' - . '

' . $element['#bar']['#heading'] . '

' - . $element['#children'] . '' . $trays . ''; } } @@ -288,92 +293,73 @@ function toolbar_pre_render_item($element) { } // Add the standard theme_wrapper for trays. array_unshift($element['tray']['#theme_wrappers'], 'toolbar_tray_wrapper'); - // If a #heading is provided for the tray, provided a #theme_wrapper - // function to append it. - if (!empty($element['tray']['#heading'])) { - array_unshift($element['tray']['#theme_wrappers'], 'toolbar_tray_heading_wrapper'); - } } return $element; } /** - * Implements template_preprocess_HOOK(). - */ -function template_preprocess_toolbar_tab_wrapper(&$variables) { - if (!isset($variables['element']['#wrapper_attributes'])) { - $variables['element']['#wrapper_attributes'] = array(); - } - $variables['element']['#wrapper_attributes']['class'][] = 'tab'; -} - -/** - * Returns HTML for a toolbar item. + * Prepares variables for toolbar item templates. * - * This theme function only renders the tab portion of the toolbar item. The - * tray portion will be rendered later. + * Prepares the tab portion of the toolbar item, tray portion is rendered later. + * + * Default template: toolbar-item.html.twig. * * @param array $variables * An associative array containing: * - element: An associative array containing the properties and children of * the tray. Property used: tab. * - * @see toolbar_pre_render_item(). - * @see theme_toolbar(). + * @see toolbar_pre_render_item() */ -function theme_toolbar_item(&$variables) { - return drupal_render($variables['element']['tab']); +function template_preprocess_toolbar_item(&$variables) { + $variables['item'] = $variables['element']['tab']; } /** - * Returns HTML for wrapping a toolbar tab. + * Prepares variables for toolbar tab wrapper templates. + * + * Toolbar tabs have a common styling and placement within the toolbar's bar + * area. * - * Toolbar tabs have a common styling and placement with the toolbar's bar area. + * Default template: toolbar-tab-wrapper.html.twig. * * @param array $variables * An associative array containing: * - element: An associative array containing the properties and children of * the tray. Properties used: #children and #attributes. */ -function theme_toolbar_tab_wrapper(&$variables) { +function template_preprocess_toolbar_tab_wrapper(&$variables) { + $variables['children'] = NULL; if (!empty($variables['element']['#children'])) { - $element = $variables['element']; - return '' . $element['#children'] . ''; + $variables['element']['#wrapper_attributes']['class'][] = 'tab'; + $variables['attributes'] = $variables['element']['#wrapper_attributes']; + $variables['children'] = $variables['element']['#children']; } } /** - * Returns HTML for wrapping a toolbar tray. + * Prepares variables for toolbar tray wrapper templates. * - * Used in combination with theme_toolbar_tab() to create an + * Used in combination with template_preprocess_toolbar_tab() to create an * association between a link tag in the administration bar and a tray. * + * Default template: toolbar-tray-wrapper.html.twig. + * * @param array $variables * An associative array containing: * - element: An associative array containing the properties and children of * the tray. Properties used: #children, #toolbar_identifier and * #attributes. */ -function theme_toolbar_tray_wrapper(&$variables) { - if (!empty($variables['element']['#children'])) { - $element = $variables['element']; - return '
' . $element['#children'] . '
'; - } -} - -/** - * Returns HTML for prepending a heading to a toolbar tray. - * - * @param array $variables - * An associative array containing: - * - element: An associative array containing the properties and children of - * the tray. Properties used: #children and #heading. - */ -function theme_toolbar_tray_heading_wrapper(&$variables) { +function template_preprocess_toolbar_tray_wrapper(&$variables) { + $variables['label'] = $variables['children'] = NULL; + $variables['children'] = NULL; if (!empty($variables['element']['#children'])) { $element = $variables['element']; - return '

' . $element['#heading'] . '

' . $element['#children']; + $variables['label'] = (!empty($element['#heading'])) ? $element['#heading'] : NULL; + $variables['attributes'] = $element['#wrapper_attributes']; + $variables['children'] = $element['#children']; } }