diff --git a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutAccessController.php b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutAccessController.php index da0e616..572423e 100644 --- a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutAccessController.php +++ b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutAccessController.php @@ -21,6 +21,7 @@ class ShortcutAccessController extends EntityAccessController { */ protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) { switch ($operation) { + case 'create': case 'update': if (user_access('administer shortcuts', $account)) { return TRUE; diff --git a/core/modules/shortcut/shortcut.admin.inc b/core/modules/shortcut/shortcut.admin.inc index d2d3a60..709fd60 100644 --- a/core/modules/shortcut/shortcut.admin.inc +++ b/core/modules/shortcut/shortcut.admin.inc @@ -172,14 +172,6 @@ function shortcut_set_switch_submit($form, &$form_state) { } /** - * Page callback: provides the shortcut set creation form. - */ -function shortcut_set_add() { - $entity = entity_create('shortcut', array()); - return Drupal::entityManager()->getForm($entity); -} - -/** * Form callback: builds the form for customizing shortcut sets. * * @param $form diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module index d49ce04..2e88626 100644 --- a/core/modules/shortcut/shortcut.module +++ b/core/modules/shortcut/shortcut.module @@ -91,10 +91,8 @@ function shortcut_menu() { ); $items['admin/config/user-interface/shortcut/add-set'] = array( 'title' => 'Add shortcut set', - 'page callback' => 'shortcut_set_add', - 'access arguments' => array('administer shortcuts'), - 'type' => MENU_LOCAL_ACTION, - 'file' => 'shortcut.admin.inc', + 'route_name' => 'shortcut_set_add', + 'type' => MENU_SIBLING_LOCAL_TASK, ); $items['admin/config/user-interface/shortcut/manage/%shortcut_set'] = array( 'title' => 'Edit shortcuts', @@ -592,3 +590,18 @@ function shortcut_library_info() { return $libraries; } + +/** + * Implements hook_local_actions. + */ +function shortcut_local_actions() { + return array( + array( + 'route_name' => 'shortcut_set_add', + 'title' => t('Add shortcut set'), + 'appears_on' => array( + 'shortcut_set_admin', + ), + ), + ); +} diff --git a/core/modules/shortcut/shortcut.routing.yml b/core/modules/shortcut/shortcut.routing.yml index df1dc1c..ec6ca86 100644 --- a/core/modules/shortcut/shortcut.routing.yml +++ b/core/modules/shortcut/shortcut.routing.yml @@ -19,6 +19,13 @@ shortcut_set_admin: requirements: _permission: 'administer shortcuts' +shortcut_set_add: + pattern: '/admin/config/user-interface/shortcut/add-set' + defaults: + _entity_form: 'shortcut.add' + requirements: + _entity_create_access: 'shortcut' + shortcut_set_edit: pattern: '/admin/config/user-interface/shortcut/manage/{shortcut}/edit' defaults: