diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module index 9f34466..e4b44f6 100644 --- a/core/modules/shortcut/shortcut.module +++ b/core/modules/shortcut/shortcut.module @@ -276,7 +276,7 @@ function shortcut_renderable_links($shortcut_set = NULL) { '#theme' => 'links__toolbar_shortcuts', '#links' => $links, '#attributes' => array( - 'class' => array('menu'), + 'class' => array('toolbar-menu'), ), '#cache' => array( 'tags' => $cache_tags, diff --git a/core/modules/shortcut/src/Tests/ShortcutLinksTest.php b/core/modules/shortcut/src/Tests/ShortcutLinksTest.php index a59e5d5..08c4a82 100644 --- a/core/modules/shortcut/src/Tests/ShortcutLinksTest.php +++ b/core/modules/shortcut/src/Tests/ShortcutLinksTest.php @@ -286,14 +286,14 @@ public function testShortcutLinkOrder() { // Ensure to give permissions to access the shortcuts. $this->drupalLogin($this->drupalCreateUser(array('access toolbar', 'access shortcuts', 'access content overview', 'administer content types'))); $this->drupalGet(Url::fromRoute('')); - $shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .menu a'); + $shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .toolbar-menu a'); $this->assertEqual((string) $shortcuts[0], 'Add content'); $this->assertEqual((string) $shortcuts[1], 'All content'); foreach($this->set->getShortcuts() as $shortcut) { $shortcut->setWeight($shortcut->getWeight() * -1)->save(); } $this->drupalGet(Url::fromRoute('')); - $shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .menu a'); + $shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .toolbar-menu a'); $this->assertEqual((string) $shortcuts[0], 'All content'); $this->assertEqual((string) $shortcuts[1], 'Add content'); } diff --git a/core/modules/shortcut/src/Tests/ShortcutTranslationUITest.php b/core/modules/shortcut/src/Tests/ShortcutTranslationUITest.php index 9f81cb5..b188756 100644 --- a/core/modules/shortcut/src/Tests/ShortcutTranslationUITest.php +++ b/core/modules/shortcut/src/Tests/ShortcutTranslationUITest.php @@ -73,7 +73,7 @@ protected function doTestBasicTranslation() { $this->drupalGet('', array('language' => $language)); $expected_path = \Drupal::urlGenerator()->generateFromRoute('user.page', array(), array('language' => $language)); $label = $entity->getTranslation($langcode)->label(); - $elements = $this->xpath('//nav[contains(@class, "toolbar-lining")]/ul[@class="menu"]/li/a[contains(@href, :href) and normalize-space(text())=:label]', array(':href' => $expected_path, ':label' => $label)); + $elements = $this->xpath('//nav[contains(@class, "toolbar-lining")]/ul[@class="toolbar-menu"]/li/a[contains(@href, :href) and normalize-space(text())=:label]', array(':href' => $expected_path, ':label' => $label)); $this->assertTrue(!empty($elements), format_string('Translated @language shortcut link @label found.', array('@label' => $label, '@language' => $language->getName()))); } } diff --git a/core/modules/toolbar/css/toolbar.icons.theme.css b/core/modules/toolbar/css/toolbar.icons.theme.css index 3f274f3..1eb1904 100644 --- a/core/modules/toolbar/css/toolbar.icons.theme.css +++ b/core/modules/toolbar/css/toolbar.icons.theme.css @@ -34,27 +34,27 @@ border: 0; font-size: 1em; } -.toolbar .menu ul .toolbar-icon { +.toolbar .toolbar-menu ul .toolbar-icon { padding-left: 1.3333em; /* LTR */ } -[dir="rtl"] .toolbar .menu ul .toolbar-icon { +[dir="rtl"] .toolbar .toolbar-menu ul .toolbar-icon { padding-left: 0; padding-right: 1.3333em; } -.toolbar .menu ul a.toolbar-icon:before { +.toolbar .toolbar-menu ul a.toolbar-icon:before { display: none; } -.toolbar .toolbar-tray-vertical .menu ul a { +.toolbar .toolbar-tray-vertical .toolbar-menu ul a { padding-left: 2.75em; /* LTR */ } -[dir="rtl"] .toolbar .toolbar-tray-vertical .menu ul a { +[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu ul a { padding-left: 0; padding-right: 2.75em; } -.toolbar .toolbar-tray-vertical .menu ul ul a { +.toolbar .toolbar-tray-vertical .toolbar-menu ul ul a { padding-left: 3.75em; /* LTR */ } -[dir="rtl"] .toolbar .toolbar-tray-vertical .menu ul ul a { +[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu ul ul a { padding-left: 0; padding-right: 3.75em; } @@ -255,11 +255,11 @@ .toolbar .toolbar-icon.toolbar-handle.open:before { background-image: url(../../../misc/icons/787878/chevron-disc-up.svg); } -.toolbar .menu .menu .toolbar-icon.toolbar-handle:before { +.toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle:before { background-image: url(../../../misc/icons/5181c6/twistie-down.svg); background-size: 75%; } -.toolbar .menu .menu .toolbar-icon.toolbar-handle.open:before { +.toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle.open:before { background-image: url(../../../misc/icons/787878/twistie-up.svg); background-size: 75%; } diff --git a/core/modules/toolbar/css/toolbar.menu.css b/core/modules/toolbar/css/toolbar.menu.css index e857beb..783cb02 100644 --- a/core/modules/toolbar/css/toolbar.menu.css +++ b/core/modules/toolbar/css/toolbar.menu.css @@ -1,8 +1,8 @@ /** * @file toolbar.menu.css */ -.toolbar .menu, -[dir="rtl"] .toolbar .menu { +.toolbar .toolbar-menu, +[dir="rtl"] .toolbar .toolbar-menu { list-style: none; margin: 0; padding: 0; @@ -13,9 +13,12 @@ position: relative; width: auto; } -.toolbar .toolbar-tray-horizontal .menu .toolbar-handle, -.toolbar .toolbar-tray-horizontal .menu ul, -.toolbar .toolbar-tray-vertical .menu ul { +.toolbar .toolbar-tray-horizontal .toolbar-menu .toolbar-handle, +.toolbar .toolbar-tray-horizontal .toolbar-menu ul, +.toolbar .toolbar-tray-vertical .toolbar-menu ul { +.toolbar .toolbar-box a { + display: inline-block; +} display: none; } .toolbar .toolbar-tray-vertical li.open > ul { diff --git a/core/modules/toolbar/css/toolbar.module.css b/core/modules/toolbar/css/toolbar.module.css index 6378592..33d2edf 100644 --- a/core/modules/toolbar/css/toolbar.module.css +++ b/core/modules/toolbar/css/toolbar.module.css @@ -139,7 +139,7 @@ body.toolbar-tray-open.toolbar-fixed.toolbar-vertical .toolbar-oriented { display: none; z-index: 501; } -.toolar .toolbar-tray > .toolbar-lining { +.toolbar .toolbar-tray > .toolbar-lining { position: relative; } .toolbar-oriented .toolbar-tray-vertical { diff --git a/core/modules/toolbar/css/toolbar.theme.css b/core/modules/toolbar/css/toolbar.theme.css index 8946e5f..09ac9c9 100644 --- a/core/modules/toolbar/css/toolbar.theme.css +++ b/core/modules/toolbar/css/toolbar.theme.css @@ -99,7 +99,7 @@ color: #000; text-decoration: underline; } -.toolbar .menu { +.toolbar .toolbar-menu { background-color: #ffffff; } .toolbar .toolbar-tray-horizontal .menu-item + .menu-item { @@ -124,21 +124,21 @@ .toolbar .toolbar-tray-vertical .menu-item .menu-item { border: 0 none; } -.toolbar .toolbar-tray-vertical .menu ul ul { +.toolbar .toolbar-tray-vertical .toolbar-menu ul ul { border-bottom: 1px solid #dddddd; border-top: 1px solid #dddddd; } .toolbar .toolbar-tray-vertical .menu-item:last-child > ul { border-bottom: 0; } -.toolbar .toolbar-tray-vertical .menu .menu .menu .menu { +.toolbar .toolbar-tray-vertical .toolbar-menu .toolbar-menu .toolbar-menu .toolbar-menu { margin-left: 0.25em; /* LTR */ } -[dir="rtl"] .toolbar .toolbar-tray-vertical .menu .menu .menu .menu { +[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu .toolbar-menu .toolbar-menu .toolbar-menu { margin-left: 0; margin-right: 0.25em; } -.toolbar .menu .menu a { +.toolbar .toolbar-menu .toolbar-menu a { color: #434343; } diff --git a/core/modules/toolbar/js/toolbar.menu.js b/core/modules/toolbar/js/toolbar.menu.js index c14d0d4..e590297 100644 --- a/core/modules/toolbar/js/toolbar.menu.js +++ b/core/modules/toolbar/js/toolbar.menu.js @@ -2,7 +2,7 @@ * Builds a nested accordion widget. * * Invoke on an HTML list element with the jQuery plugin pattern. - * - For example, $('.menu').drupalToolbarMenu(); + * - For example, $('.toolbar-menu').drupalToolbarMenu(); */ (function ($, Drupal, drupalSettings) { @@ -103,7 +103,7 @@ // Add a handle to each list item if it has a menu. $menu.find('li').each(function (index, element) { var $item = $(element); - if ($item.children('ul.menu').length) { + if ($item.children('ul.toolbar-menu').length) { var $box = $item.children('.toolbar-box'); options.text = Drupal.t('@label', {'@label': $box.find('a').text()}); $item.children('.toolbar-box') diff --git a/core/modules/toolbar/js/views/MenuVisualView.js b/core/modules/toolbar/js/views/MenuVisualView.js index d90b6d0..917259b 100644 --- a/core/modules/toolbar/js/views/MenuVisualView.js +++ b/core/modules/toolbar/js/views/MenuVisualView.js @@ -35,7 +35,7 @@ // Render the main menu as a nested, collapsible accordion. if ('drupalToolbarMenu' in $.fn) { this.$el - .children('.menu') + .children('.toolbar-menu') .drupalToolbarMenu(); } } diff --git a/core/modules/toolbar/templates/toolbar-menu.html.twig b/core/modules/toolbar/templates/toolbar-menu.html.twig new file mode 100644 index 0000000..3578b95 --- /dev/null +++ b/core/modules/toolbar/templates/toolbar-menu.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Default theme implementation to display a toolbar menu. + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * + * @ingroup themeable + */ +#} +{% import _self as menus %} + +{# + We call a macro which calls itself to render the full tree. + @see http://twig.sensiolabs.org/doc/tags/macro.html +#} +{{ menus.menu_links(items, attributes, 0) }} + +{% macro menu_links(items, attributes, menu_level) %} + {% import _self as menus %} + {% if items %} + {% if menu_level == 0 %} + + {% else %} +
    + {% endif %} + {% for item in items %} + + {{ link(item.title, item.url) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + + {% endfor %} +
+ {% endif %} +{% endmacro %} diff --git a/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module b/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module index 9d4e89f..25c1c47 100644 --- a/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module +++ b/core/modules/toolbar/tests/modules/toolbar_test/toolbar_test.module @@ -39,7 +39,7 @@ function toolbar_test_toolbar() { \Drupal::l(t('link 3'), new Url('', [], array('attributes' => array('title' => 'Test link 3 title')))), ), '#attributes' => array( - 'class' => array('menu'), + 'class' => array('toolbar-menu'), ), ), ), diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module index 50704d0..f9af4f2 100644 --- a/core/modules/toolbar/toolbar.module +++ b/core/modules/toolbar/toolbar.module @@ -42,6 +42,10 @@ function toolbar_theme($existing, $type, $theme, $path) { $items['toolbar'] = array( 'render element' => 'element', ); + $items['menu__admin'] = array( + 'variables' => array('items' => array(), 'attributes' => array()), + 'template' => 'toolbar-menu', + ); return $items; } diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 10c5809..51dfde3 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -1421,7 +1421,7 @@ function user_toolbar() { '#theme' => 'links__toolbar_user', '#links' => $links, '#attributes' => array( - 'class' => array('menu'), + 'class' => array('toolbar-menu'), ), ), ),