/**
  * Tests the config start level and depth.
  */
 public function testConfigLevelDepth()
 {
     // Helper function to generate a configured block instance.
     $place_block = function ($level, $depth) {
         return $this->blockManager->createInstance('system_menu_block:' . $this->menu->id(), array('region' => 'footer', 'id' => 'machinename', 'theme' => 'stark', 'level' => $level, 'depth' => $depth));
     };
     // All the different block instances we're going to test.
     $blocks = ['all' => $place_block(1, 0), 'level_1_only' => $place_block(1, 1), 'level_2_only' => $place_block(2, 1), 'level_3_only' => $place_block(3, 1), 'level_1_and_beyond' => $place_block(1, 0), 'level_2_and_beyond' => $place_block(2, 0), 'level_3_and_beyond' => $place_block(3, 0)];
     // Scenario 1: test all block instances when there's no active trail.
     $no_active_trail_expectations = [];
     $no_active_trail_expectations['all'] = ['test.example1' => [], 'test.example2' => [], 'test.example5' => ['test.example7' => []], 'test.example6' => [], 'test.example8' => []];
     $no_active_trail_expectations['level_1_only'] = ['test.example1' => [], 'test.example2' => [], 'test.example5' => [], 'test.example6' => [], 'test.example8' => []];
     $no_active_trail_expectations['level_2_only'] = ['test.example7' => []];
     $no_active_trail_expectations['level_3_only'] = [];
     $no_active_trail_expectations['level_1_and_beyond'] = $no_active_trail_expectations['all'];
     $no_active_trail_expectations['level_2_and_beyond'] = $no_active_trail_expectations['level_2_only'];
     $no_active_trail_expectations['level_3_and_beyond'] = [];
     foreach ($blocks as $id => $block) {
         $block_build = $block->build();
         $items = isset($block_build['#items']) ? $block_build['#items'] : [];
         $this->assertIdentical($no_active_trail_expectations[$id], $this->convertBuiltMenuToIdTree($items), format_string('Menu block %id with no active trail renders the expected tree.', ['%id' => $id]));
     }
     // Scenario 2: test all block instances when there's an active trail.
     $route = $this->container->get('router.route_provider')->getRouteByName('example3');
     $request = new Request();
     $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'example3');
     $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, $route);
     $this->container->get('request_stack')->push($request);
     // \Drupal\Core\Menu\MenuActiveTrail uses the cache collector pattern, which
     // includes static caching. Since this second scenario simulates a second
     // request, we must also simulate it for the MenuActiveTrail service, by
     // clearing the cache collector's static cache.
     \Drupal::service('menu.active_trail')->clear();
     $active_trail_expectations = [];
     $active_trail_expectations['all'] = ['test.example1' => [], 'test.example2' => ['test.example3' => ['test.example4' => []]], 'test.example5' => ['test.example7' => []], 'test.example6' => [], 'test.example8' => []];
     $active_trail_expectations['level_1_only'] = ['test.example1' => [], 'test.example2' => [], 'test.example5' => [], 'test.example6' => [], 'test.example8' => []];
     $active_trail_expectations['level_2_only'] = ['test.example3' => [], 'test.example7' => []];
     $active_trail_expectations['level_3_only'] = ['test.example4' => []];
     $active_trail_expectations['level_1_and_beyond'] = $active_trail_expectations['all'];
     $active_trail_expectations['level_2_and_beyond'] = ['test.example3' => ['test.example4' => []], 'test.example7' => []];
     $active_trail_expectations['level_3_and_beyond'] = $active_trail_expectations['level_3_only'];
     foreach ($blocks as $id => $block) {
         $block_build = $block->build();
         $items = isset($block_build['#items']) ? $block_build['#items'] : [];
         $this->assertIdentical($active_trail_expectations[$id], $this->convertBuiltMenuToIdTree($items), format_string('Menu block %id with an active trail renders the expected tree.', ['%id' => $id]));
     }
 }
 /**
  * {@inheritdoc}
  */
 public function submitConfigurationForm(array &$form, FormStateInterface $form_state)
 {
     $this->plugin->submitConfigurationForm($form, $form_state);
     $this->getEntityForm($this->entity)->submitForm($form, $form_state);
     $this->entity->save();
 }
Exemple #3
0
 /**
  * Route title callback.
  *
  * @param \Drupal\system\MenuInterface $menu
  *   The menu entity.
  *
  * @return string
  *   The menu label.
  */
 public function menuTitle(MenuInterface $menu)
 {
     return Xss::filter($menu->label());
 }
Exemple #4
0
 /**
  * Route title callback.
  *
  * @param \Drupal\system\MenuInterface $menu
  *   The menu entity.
  *
  * @return array
  *   The menu label as a render array.
  */
 public function menuTitle(MenuInterface $menu)
 {
     return ['#markup' => $menu->label(), '#allowed_tags' => Xss::getHtmlTagList()];
 }
Exemple #5
0
 /**
  * Route title callback.
  *
  * @param \Drupal\system\MenuInterface $menu
  *   The menu entity.
  *
  * @return string
  *   The menu label.
  */
 public function menuTitle(MenuInterface $menu)
 {
     return SafeMarkup::xssFilter($menu->label());
 }
Exemple #6
0
 /**
  * Provides the menu link creation form.
  *
  * @param \Drupal\system\MenuInterface $menu
  *   An entity representing a custom menu.
  *
  * @return array
  *   Returns the menu link creation form.
  */
 public function addLink(MenuInterface $menu)
 {
     $menu_link = $this->entityManager()->getStorage('menu_link_content')->create(array('id' => '', 'parent' => '', 'menu_name' => $menu->id(), 'bundle' => 'menu_link_content'));
     return $this->entityFormBuilder()->getForm($menu_link);
 }