diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php index 7826812..91bba3c 100644 --- a/core/lib/Drupal/Core/CoreBundle.php +++ b/core/lib/Drupal/Core/CoreBundle.php @@ -317,9 +317,6 @@ public function build(ContainerBuilder $container) { $container->register('ajax.subscriber', 'Drupal\Core\Ajax\AjaxSubscriber') ->addTag('event_subscriber'); - // Register Breadcrumbs service. - $container->register('breadcrumb', 'Drupal\Core\Menu\Breadcrumbs'); - $container->addCompilerPass(new RegisterMatchersPass()); $container->addCompilerPass(new RegisterRouteFiltersPass()); // Add a compiler pass for registering event subscribers. diff --git a/core/modules/menu_link/lib/Drupal/menu_link/BreadcrumbInterface.php b/core/modules/menu_link/lib/Drupal/menu_link/BreadcrumbInterface.php new file mode 100644 index 0000000..e365b0c --- /dev/null +++ b/core/modules/menu_link/lib/Drupal/menu_link/BreadcrumbInterface.php @@ -0,0 +1,44 @@ +reset(); + } + } + + /** + * Implements \Drupal\menu_link\BreadcrumbInterface::get(). + */ + public function get() { + return $this->breadcrumbs; + } + + /** + * Implements \Drupal\menu_link\BreadcrumbInterface::set(). + */ + public function set(array $breadcrumbs) { + $this->breadcrumbs = $breadcrumbs; + } + + /** + * Implements \Drupal\menu_link\BreadcrumbInterface::append(). + */ + public function append($breadcrumbs) { + if (is_array($breadcrumbs)) { + // Merge the passed array. + $this->breadcrumbs = array_merge($this->breadcrumbs, $breadcrumbs); + } + else { + // Append single breadcrumb to array. + $this->breadcrumbs[] = $breadcrumb; + } + return $this->breadcrumbs; + } + + /** + * Implements \Drupal\menu_link\BreadcrumbInterface::reset(). + */ + public function reset() { + $this->breadcrumbs = menu_get_active_breadcrumb(); + } + +} diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkBundle.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkBundle.php new file mode 100644 index 0000000..146e701 --- /dev/null +++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkBundle.php @@ -0,0 +1,26 @@ +register('breadcrumb', 'Drupal\menu_link\Breadcrumbs'); + } + +} diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php index 0530ddf..6f09763 100644 --- a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php +++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php @@ -31,7 +31,7 @@ public function form(array $form, array &$form_state, EntityInterface $menu_link // Get the current breadcrumb and add a link to that menu's overview page. $breadcrumb = menu_get_active_breadcrumb(); $breadcrumb[] = l($current_title, 'admin/structure/menu/manage/' . $menu_link->menu_name); - Drupal::service('breadcrumb')->set($breadcrumb); + \Drupal::service('breadcrumb')->set($breadcrumb); } $form['link_title'] = array( diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Tests/BreadcrumbsUnitTest.php b/core/modules/menu_link/lib/Drupal/menu_link/Tests/BreadcrumbsUnitTest.php new file mode 100644 index 0000000..b0dea55 --- /dev/null +++ b/core/modules/menu_link/lib/Drupal/menu_link/Tests/BreadcrumbsUnitTest.php @@ -0,0 +1,80 @@ + 'Breadcrumbs service functionality', + 'description' => 'Tests the Breadcrumbs service.', + 'group' => 'Menu', + ); + } + + /** + * Sets up the test. + */ + public function setUp() { + parent::setUp(); + + $this->crumbs = array( + 'foo', + 'bar', + ); + + $this->breadcrumbs = new Breadcrumbs($this->crumbs); + } + + /** + * Tests constructor, set and get. + */ + public function testConstructor() { + $this->assertSame(array('foo', 'bar'), $this->breadcrumbs->get()); + + $this->breadcrumbs->set(array('bar', 'foo')); + $this->assertSame(array('bar', 'foo'), $this->breadcrumbs->get()); + } + + /** + * Tests appending breadcrumbs. + */ + public function testAppend() { + $this->breadcrumbs->append(array('baz', 'bop')); + $this->assertSame(array('foo', 'bar', 'baz', 'bop'), $this->breadcrumbs->get()); + + $this->breadcrumbs->append('whistle'); + $this->assertSame(array('foo', 'bar', 'baz', 'bop', 'whistle'), $this->breadcrumbs->get()); + } + +} diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php index 2cc5dee..69bf4e2 100644 --- a/core/modules/views/lib/Drupal/views/ViewExecutable.php +++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php @@ -1707,7 +1707,7 @@ public function getBreadcrumb($set = FALSE) { } if ($set) { - $breadcrumbs = Drupal::service('breadcrumb'); + $breadcrumbs = \Drupal::service('breadcrumb'); if ($base) { $breadcrumb = array_merge($breadcrumbs->get(), $breadcrumb); }