diff --git a/admin_toolbar_tools/admin_toolbar_tools.module b/admin_toolbar_tools/admin_toolbar_tools.module index 2107c0d..bb616e9 100644 --- a/admin_toolbar_tools/admin_toolbar_tools.module +++ b/admin_toolbar_tools/admin_toolbar_tools.module @@ -28,6 +28,38 @@ function admin_toolbar_tools_toolbar() { // Toolbar item for primary local tasks. $items['admin_toolbar_local_tasks'] = \Drupal::service('admin_toolbar_tools.helper')->buildLocalTasksToolbar(); + // Provide separated "Edit" link toolbar item if available. + if (!empty($items['admin_toolbar_local_tasks']) && count($items['admin_toolbar_local_tasks'])) { + $local_tasks_links = $items['admin_toolbar_local_tasks']['tray']['local_tasks']['#links']; + foreach ($local_tasks_links as $route_name => $link) { + if (preg_match('/^entity\..+\.edit_form$/', $route_name)) { + $class = $link['attributes']['class'] ?? []; + + // The "Edit" button should not be displayed on edit page itself. + $is_active = in_array('is-active', $class); + if ($is_active) { + continue; + } + + $items['admin_toolbar_quick_link'] = [ + '#type' => 'toolbar_item', + '#wrapper_attributes' => [ + 'class' => ['local-edit-toolbar-tab'], + ], + '#weight' => 10, + 'tab' => [ + '#type' => 'link', + '#title' => $link['title'], + '#url' => $link['url'], + '#options' => [ + 'attributes' => ['class' => ['toolbar-icon toolbar-icon-edit toolbar-item']], + ], + ], + ]; + } + } + } + return $items; } diff --git a/css/admin.toolbar.css b/css/admin.toolbar.css index 090545b..584b139 100644 --- a/css/admin.toolbar.css +++ b/css/admin.toolbar.css @@ -150,3 +150,12 @@ [dir="rtl"] .toolbar-tray-horizontal li.hover-intent ul li { float: none; } + +.toolbar-oriented .toolbar-bar .local-edit-toolbar-tab { + float: right; +} + +.toolbar-bar .toolbar-icon-edit:before { + background-image: url(../misc/icons/bebebe/pencil.svg); + background-position: center left; +} diff --git a/misc/icons/bebebe/pencil.svg b/misc/icons/bebebe/pencil.svg new file mode 100644 index 0000000..cdfe4c2 --- /dev/null +++ b/misc/icons/bebebe/pencil.svg @@ -0,0 +1 @@ +