Skip to content
Snippets Groups Projects
Commit 9d2e8ae3 authored by João Mauricio's avatar João Mauricio
Browse files

Issue #3506757 by axael, mvonfrie, jmauricio: Keep standard Administration menu

parent 571529af
No related branches found
No related tags found
No related merge requests found
Pipeline #446501 passed
...@@ -18,12 +18,14 @@ ...@@ -18,12 +18,14 @@
justify-content: center; justify-content: center;
} }
.options-icon input { .options-icon input {
position: absolute !important;
overflow: hidden; overflow: hidden;
clip: rect(1px, 1px, 1px, 1px); clip: rect(1px, 1px, 1px, 1px);
width: 1px; width: 0px;
height: 1px; height: 0px;
word-wrap: normal; word-wrap: normal;
appearance: auto;
outline: none !important;
box-shadow: none !important;
} }
.options-icon label > span:before { .options-icon label > span:before {
content: ''; content: '';
...@@ -47,55 +49,58 @@ ...@@ -47,55 +49,58 @@
.options-icon .form-radios .form-item:has(input:checked) label { .options-icon .form-radios .form-item:has(input:checked) label {
background: var(--gin-border-color-form-element, #8e929c); background: var(--gin-border-color-form-element, #8e929c);
} }
.remove-setting.form-actions input {
margin-left: auto;
}
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon::before {
-webkit-mask-image: url(../images/sprite.svg#next-view); -webkit-mask-image: url(../images/sprite.svg#next-view);
mask-image: url(../images/sprite.svg#next-view); mask-image: url(../images/sprite.svg#next-view);
} }
.options-icon label > span.checkmark-view:before, .options-icon label > span.checkmark-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-checkmark-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-checkmark-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-checkmark-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-checkmark-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-checkmark-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-checkmark-view::before {
-webkit-mask-image: url(../images/sprite.svg#checkmark-view); -webkit-mask-image: url(../images/sprite.svg#checkmark-view);
mask-image: url(../images/sprite.svg#checkmark-view); mask-image: url(../images/sprite.svg#checkmark-view);
} }
.options-icon label > span.hide-view:before, .options-icon label > span.hide-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-hide-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-hide-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-hide-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-hide-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-hide-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-hide-view::before {
-webkit-mask-image: url(../images/sprite.svg#hide-view); -webkit-mask-image: url(../images/sprite.svg#hide-view);
mask-image: url(../images/sprite.svg#hide-view); mask-image: url(../images/sprite.svg#hide-view);
} }
.options-icon label > span.remove-view:before, .options-icon label > span.remove-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-remove-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-remove-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-remove-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-remove-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-remove-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-remove-view::before {
-webkit-mask-image: url(../images/sprite.svg#remove-view); -webkit-mask-image: url(../images/sprite.svg#remove-view);
mask-image: url(../images/sprite.svg#remove-view); mask-image: url(../images/sprite.svg#remove-view);
} }
.options-icon label > span.show-view:before, .options-icon label > span.show-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-show-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-show-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-show-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-show-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-show-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-show-view::before {
-webkit-mask-image: url(../images/sprite.svg#show-view); -webkit-mask-image: url(../images/sprite.svg#show-view);
mask-image: url(../images/sprite.svg#show-view); mask-image: url(../images/sprite.svg#show-view);
} }
.options-icon label > span.trash-view:before, .options-icon label > span.trash-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-trash-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-trash-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-trash-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-trash-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-trash-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-trash-view::before {
-webkit-mask-image: url(../images/sprite.svg#trash-view); -webkit-mask-image: url(../images/sprite.svg#trash-view);
mask-image: url(../images/sprite.svg#trash-view); mask-image: url(../images/sprite.svg#trash-view);
} }
.options-icon label > span.asterisk-view:before, .options-icon label > span.asterisk-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-asterisk-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-asterisk-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-asterisk-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-asterisk-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-asterisk-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-asterisk-view::before {
-webkit-mask-image: url(../images/sprite.svg#asterisk-view); -webkit-mask-image: url(../images/sprite.svg#asterisk-view);
mask-image: url(../images/sprite.svg#asterisk-view); mask-image: url(../images/sprite.svg#asterisk-view);
} }
.options-icon label > span.checked-view:before, .options-icon label > span.checked-view:before,
.admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-checked-view::before, .admin-toolbar__item .toolbar-button--icon.custom-toolbar-icon.toolbar-icon-checked-view::before,
.toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-icon-checked-view::before, .toolbar-menu .toolbar-link--has-icon.toolbar-link--toolbar-icon-checked-view::before,
.toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-checked-view::before { .toolbar .toolbar-bar .toolbar-icon.custom-toolbar-icon.toolbar-icon-checked-view::before {
-webkit-mask-image: url(../images/sprite.svg#checked-view); -webkit-mask-image: url(../images/sprite.svg#checked-view);
mask-image: url(../images/sprite.svg#checked-view); mask-image: url(../images/sprite.svg#checked-view);
......
...@@ -220,15 +220,23 @@ function _gin_toolbar_custom_menu_get_setting() { ...@@ -220,15 +220,23 @@ function _gin_toolbar_custom_menu_get_setting() {
$config = \Drupal::config('gin_toolbar_custom_menu.settings'); $config = \Drupal::config('gin_toolbar_custom_menu.settings');
$settings = $config->get('settings'); $settings = $config->get('settings');
if (empty($user_roles) || empty($settings)) { if (empty($user_roles) || !is_array($user_roles) || empty($settings)) {
return FALSE; return FALSE;
} }
$setting_to_apply = []; $setting_to_apply = [];
foreach ($settings as $setting) { foreach ($settings as $key => $setting) {
foreach ($setting['role'] as $role) { foreach ($setting['role'] as $role) {
if (is_array($user_roles) && in_array($role, array_values($user_roles))) { if (in_array($role, array_values($user_roles))) {
$setting_to_apply[] = $setting; $setting_to_apply[$key] = $setting;
}
}
}
foreach ($setting_to_apply as $key => $setting) {
foreach ($setting['excluded_role'] as $role) {
if (in_array($role, array_values($user_roles))) {
unset($setting_to_apply[$key]);
} }
} }
} }
......
...@@ -96,9 +96,16 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -96,9 +96,16 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
$roles[$row] = $row; $roles[$row] = $row;
} }
$form['keep_admin_menu'] = [
'#type' => 'checkbox',
'#title' => $this->t('Keep administration menu'),
'#default_value' => $config->get('keep_admin_menu'),
'#description' => $this->t('Menu items will be added to the administration menu.'),
];
$form['settings'] = [ $form['settings'] = [
'#type' => 'details', '#type' => 'details',
'#title' => $this->t('Menu Settings'), '#title' => $this->t('Rules'),
'#prefix' => '<div id="menu-settings">', '#prefix' => '<div id="menu-settings">',
'#suffix' => '</div>', '#suffix' => '</div>',
'#tree' => TRUE, '#tree' => TRUE,
...@@ -114,8 +121,9 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -114,8 +121,9 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
foreach ($settings_array as $i => $value) { foreach ($settings_array as $i => $value) {
$form['settings'][$i] = [ $form['settings'][$i] = [
'#type' => 'fieldset', '#type' => 'details',
'#title' => $this->t('Setting'), '#open' => TRUE,
'#title' => $this->t('Rule @count', ['@count' => ($i + 1)]),
]; ];
$form['settings'][$i]['menu'] = [ $form['settings'][$i]['menu'] = [
...@@ -126,14 +134,20 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -126,14 +134,20 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
]; ];
$form['settings'][$i]['role'] = [ $form['settings'][$i]['role'] = [
'#type' => 'select', '#type' => 'checkboxes',
'#title' => $this->t('Roles'), '#title' => $this->t('Assigned roles'),
'#default_value' => (!empty($settings[$i]['role'])) ? $settings[$i]['role'] : '', '#default_value' => (!empty($settings[$i]['role'])) ? $settings[$i]['role'] : [],
'#options' => $roles, '#options' => $roles,
'#multiple' => TRUE,
'#description' => $this->t("Assigned roles must also be granted the 'Use toolbar' permission."), '#description' => $this->t("Assigned roles must also be granted the 'Use toolbar' permission."),
]; ];
$form['settings'][$i]['excluded_role'] = [
'#type' => 'checkboxes',
'#title' => $this->t('Excluded roles'),
'#default_value' => (!empty($settings[$i]['excluded_role'])) ? $settings[$i]['excluded_role'] : [],
'#options' => $roles,
];
if (!empty($settings[$i]['menu'])) { if (!empty($settings[$i]['menu'])) {
$form['settings'][$i]['icons'] = [ $form['settings'][$i]['icons'] = [
'#type' => 'details', '#type' => 'details',
...@@ -165,10 +179,13 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -165,10 +179,13 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
$form['settings'][$i]['actions'] = [ $form['settings'][$i]['actions'] = [
'#type' => 'actions', '#type' => 'actions',
'#attributes' => [
'class' => ['remove-setting'],
],
]; ];
$form['settings'][$i]['actions']['remove_setting'] = [ $form['settings'][$i]['actions']['remove_setting'] = [
'#type' => 'submit', '#type' => 'submit',
'#value' => $this->t('Remove setting'), '#value' => $this->t('Remove rule'),
'#submit' => ['::removeSetting'], '#submit' => ['::removeSetting'],
'#ajax' => [ '#ajax' => [
'callback' => '::updateSettingsCallback', 'callback' => '::updateSettingsCallback',
...@@ -183,7 +200,7 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -183,7 +200,7 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
]; ];
$form['settings']['actions']['add_setting'] = [ $form['settings']['actions']['add_setting'] = [
'#type' => 'submit', '#type' => 'submit',
'#value' => $this->t('Add setting'), '#value' => $this->t('Add rule'),
'#submit' => ['::addSetting'], '#submit' => ['::addSetting'],
'#ajax' => [ '#ajax' => [
'callback' => '::updateSettingsCallback', 'callback' => '::updateSettingsCallback',
...@@ -206,6 +223,7 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase { ...@@ -206,6 +223,7 @@ class GinToolbarCustomMenuSettings extends ConfigFormBase {
unset($settings['actions']); unset($settings['actions']);
$settings = array_values($settings); $settings = array_values($settings);
$this->config('gin_toolbar_custom_menu.settings') $this->config('gin_toolbar_custom_menu.settings')
->set('keep_admin_menu', $form_state->getValue('keep_admin_menu'))
->set('settings', $settings) ->set('settings', $settings)
->save(); ->save();
......
...@@ -43,12 +43,19 @@ class GinToolbarCustomMenu implements TrustedCallbackInterface { ...@@ -43,12 +43,19 @@ class GinToolbarCustomMenu implements TrustedCallbackInterface {
$menu_items = _gin_toolbar_custom_menu_get_menu_items($build); $menu_items = _gin_toolbar_custom_menu_get_menu_items($build);
if (!empty($menu_items)) { if (!empty($menu_items)) {
// Check if the required elements are not null. $keep_admin_menu = \Drupal::config('gin_toolbar_custom_menu.settings')->get('keep_admin_menu');
if ($keep_admin_menu) {
$build["administration_menu"]["#items"] += $menu_items;
}
else {
if (isset($build["administration_menu"]["#items"]["admin_toolbar_tools.help"])) { if (isset($build["administration_menu"]["#items"]["admin_toolbar_tools.help"])) {
$menu_items = array_merge(["admin_toolbar_tools.help" => $build["administration_menu"]["#items"]["admin_toolbar_tools.help"]], $menu_items); $menu_items = array_merge(["admin_toolbar_tools.help" => $build["administration_menu"]["#items"]["admin_toolbar_tools.help"]], $menu_items);
} }
$build["administration_menu"]["#items"] = $menu_items; $build["administration_menu"]["#items"] = $menu_items;
}
$build['#attached']['library'][] = 'gin_toolbar_custom_menu/toolbar'; $build['#attached']['library'][] = 'gin_toolbar_custom_menu/toolbar';
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment