diff --git a/core/modules/block/block.module b/core/modules/block/block.module index 5be7c27..75cf58c 100644 --- a/core/modules/block/block.module +++ b/core/modules/block/block.module @@ -59,10 +59,6 @@ function block_help($path, $arg) { $output .= '
' . t('The Custom Block module allows you to create boxes of content, which can be placed in regions throughout the website. The Custom Blocks administration page lets you view the custom block content on your site.', array('@blocks' => url('admin/structure/custom-blocks'))) . '
'; + $output .= 'This page provides a list of all custom-block content on your site. From here you can add, edit or delete custom block content.
'; + return $output; + + case 'admin/structure/custom-blocks/types': + $output = 'This page provides a list of all custom-block types on your site. Each custom-block type can consists of different fields and display settings. From here you can manage the fields on each custom-block type as well as create new custom-block types.
'; + return $output; + + } +} + /** * Implements hook_menu_local_tasks(). */ @@ -25,6 +56,19 @@ function custom_block_menu_local_tasks(&$data, $router_item, $root_path) { ); } } + if ($router_item['route_name'] == 'custom_block_list') { + // @todo Move to a LocalAction plugin when https://drupal.org/node/2045267 + // allows local actions to work with query strings. + $item = menu_get_item('block/add'); + if ($item['access']) { + // Add a destination parameter. + $item['localized_options']['query']['destination'] = 'admin/structure/custom-blocks'; + $data['actions']['block/add/o'] = array( + '#theme' => 'menu_local_action', + '#link' => $item, + ); + } + } } /** @@ -32,11 +76,20 @@ function custom_block_menu_local_tasks(&$data, $router_item, $root_path) { */ function custom_block_menu() { $items['admin/structure/custom-blocks'] = array( - 'title' => 'Custom block types', - 'description' => 'Manage custom block types.', + 'title' => 'Custom blocks', + 'description' => 'Manage custom blocks.', + 'route_name' => 'custom_block_list', + ); + $items['admin/structure/custom-blocks/list'] = array( + 'title' => 'Blocks', + 'type' => MENU_DEFAULT_LOCAL_TASK, + ); + $items['admin/structure/custom-blocks/types'] = array( + 'title' => 'Types', 'route_name' => 'custom_block_type_list', + 'type' => MENU_LOCAL_TASK, ); - $items['admin/structure/custom-blocks/add'] = array( + $items['admin/structure/custom-blocks/types/add'] = array( 'route_name' => 'custom_block_type_add', 'type' => MENU_SIBLING_LOCAL_TASK, 'weight' => 1, @@ -93,21 +146,6 @@ function custom_block_menu() { } /** - * Implements hook_local_actions(). - */ -function custom_block_local_actions() { - return array( - array( - 'route_name' => 'custom_block_type_add', - 'title' => t('Add custom block type'), - 'appears_on' => array( - 'custom_block_type_list', - ), - ), - ); -} - -/** * Implements hook_theme(). */ function custom_block_theme($existing, $type, $theme, $path) { diff --git a/core/modules/block/custom_block/custom_block.pages.inc b/core/modules/block/custom_block/custom_block.pages.inc index ae7de30..68f3b78 100644 --- a/core/modules/block/custom_block/custom_block.pages.inc +++ b/core/modules/block/custom_block/custom_block.pages.inc @@ -73,5 +73,5 @@ function custom_block_delete_form_submit($form, &$form_state) { drupal_set_message(t('Custom block %label has been deleted.', array('%label' => $block->label()))); watchdog('custom_block', 'Custom block %label has been deleted.', array('%label' => $block->label()), WATCHDOG_NOTICE); - $form_state['redirect'] = 'admin/structure/block'; + $form_state['redirect'] = 'admin/structure/custom-blocks'; } diff --git a/core/modules/block/custom_block/custom_block.routing.yml b/core/modules/block/custom_block/custom_block.routing.yml index 02bad13..52e1575 100644 --- a/core/modules/block/custom_block/custom_block.routing.yml +++ b/core/modules/block/custom_block/custom_block.routing.yml @@ -1,5 +1,5 @@ custom_block_type_list: - pattern: '/admin/structure/custom-blocks' + pattern: '/admin/structure/custom-blocks/types' defaults: _entity_list: 'custom_block_type' requirements: @@ -35,7 +35,7 @@ custom_block_edit: custom_block: \d+ custom_block_type_add: - pattern: '/admin/structure/custom-blocks/add' + pattern: '/admin/structure/custom-blocks/types/add' defaults: _entity_form: 'custom_block_type.add' requirements: @@ -47,3 +47,10 @@ custom_block_type_edit: _entity_form: 'custom_block_type.edit' requirements: _entity_access: 'custom_block_type.update' + +custom_block_list: + pattern: '/admin/structure/custom-blocks' + defaults: + _entity_list: 'custom_block' + requirements: + _permission: 'administer blocks' diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php index cde78ae..20d748d 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php @@ -191,7 +191,7 @@ public function save(array $form, array &$form_state) { } } else { - $form_state['redirect'] = 'admin/structure/block'; + $form_state['redirect'] = 'admin/structure/custom-blocks'; } } else { diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockListController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockListController.php new file mode 100644 index 0000000..d4b37da --- /dev/null +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockListController.php @@ -0,0 +1,61 @@ +uri(); + $operations['edit']['href'] = $uri['path']; + $operations['edit']['query']['destination'] = 'admin/structure/custom-blocks'; + } + return $operations; + } + + /** + * {@inheritdoc} + */ + public function render() { + $build = parent::render(); + // Override the default 'There is no Custom Block yet' to 'There are no + // Custom Blocks yet'. + $build['#empty'] = t('There are no @labels yet.', array('@label' => $this->entityInfo['label'])); + return $build; + } + +} diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeFormController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeFormController.php index a98730e..06e92a5 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeFormController.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeFormController.php @@ -101,7 +101,7 @@ public function save(array $form, array &$form_state) { watchdog('custom_block', 'Custom block type %label has been added.', array('%label' => $block_type->label()), WATCHDOG_NOTICE, l(t('Edit'), $uri['path'] . '/edit')); } - $form_state['redirect'] = 'admin/structure/custom-blocks'; + $form_state['redirect'] = 'admin/structure/custom-blocks/types'; } /** diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeListController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeListController.php index aaf2676..e7b9c25 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeListController.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeListController.php @@ -66,4 +66,13 @@ public function buildRow(EntityInterface $entity) { return $row; } + /** + * {@inheritdoc} + */ + public function render() { + // @todo Remove this once https://drupal.org/node/1981644 is in. + drupal_set_title(t('Custom block types')); + return parent::render(); + } + } diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Form/CustomBlockTypeDeleteForm.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Form/CustomBlockTypeDeleteForm.php index 7e595d2..4b7c220 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/Form/CustomBlockTypeDeleteForm.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Form/CustomBlockTypeDeleteForm.php @@ -60,7 +60,7 @@ public function getQuestion() { * {@inheritdoc} */ public function getCancelPath() { - return 'admin/structure/custom-blocks'; + return 'admin/structure/custom-blocks/types'; } /** @@ -90,7 +90,7 @@ public function buildForm(array $form, array &$form_state, Request $request = NU */ public function submit(array $form, array &$form_state) { $this->entity->delete(); - $form_state['redirect'] = 'admin/structure/custom-blocks'; + $form_state['redirect'] = 'admin/structure/custom-blocks/types'; drupal_set_message(t('Custom block type %label has been deleted.', array('%label' => $this->entity->label()))); watchdog('custom_block', 'Custom block type %label has been deleted.', array('%label' => $this->entity->label()), WATCHDOG_NOTICE); } diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php index 6bc0f4d..97722f6 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php @@ -24,6 +24,7 @@ * controllers = { * "storage" = "Drupal\custom_block\CustomBlockStorageController", * "access" = "Drupal\custom_block\CustomBlockAccessController", + * "list" = "Drupal\custom_block\CustomBlockListController", * "render" = "Drupal\custom_block\CustomBlockRenderController", * "form" = { * "add" = "Drupal\custom_block\CustomBlockFormController", diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Menu/LocalAction/CustomBlockTypeAdd.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Menu/LocalAction/CustomBlockTypeAdd.php new file mode 100644 index 0000000..5549b03 --- /dev/null +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Menu/LocalAction/CustomBlockTypeAdd.php @@ -0,0 +1,24 @@ + $edit['info'], 'region' => 'sidebar_first', ); - $this->drupalPost(NULL, $instance, t('Save block')); + $block = entity_load('custom_block', 1); + $url = 'admin/structure/block/add/custom_block:' . $block->uuid() . '/' . \Drupal::config('system.theme')->get('default'); + $this->drupalPost($url, $instance, t('Save block')); $block = custom_block_load(1); diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php index da5ac4f..7c1d7d5 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php @@ -99,13 +99,15 @@ public function testBlockFields() { $this->field['field_name'] . '[und][0][title]' => 'Example.com' ); $this->drupalPost(NULL, $edit, t('Save')); + $block = entity_load('custom_block', 1); + $url = 'admin/structure/block/add/custom_block:' . $block->uuid() . '/' . \Drupal::config('system.theme')->get('default'); // Place the block. $instance = array( 'machine_name' => drupal_strtolower($edit['info']), 'settings[label]' => $edit['info'], 'region' => 'sidebar_first', ); - $this->drupalPost(NULL, $instance, t('Save block')); + $this->drupalPost($url, $instance, t('Save block')); // Navigate to home page. $this->drupalGet('