Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 35 |
| BlockContentController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
110 | |
0.00% |
0 / 35 |
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| add | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 14 |
|||
| addForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
| getAddFormTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\block_content\Controller\BlockContentController. | |
| */ | |
| namespace Drupal\block_content\Controller; | |
| use Drupal\Core\Controller\ControllerBase; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\block_content\BlockContentTypeInterface; | |
| use Drupal\Core\Extension\ThemeHandlerInterface; | |
| use Drupal\Core\Url; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Symfony\Component\HttpFoundation\Request; | |
| class BlockContentController extends ControllerBase { | |
| /** | |
| * The custom block storage. | |
| * | |
| * @var \Drupal\Core\Entity\EntityStorageInterface | |
| */ | |
| protected $blockContentStorage; | |
| /** | |
| * The custom block type storage. | |
| * | |
| * @var \Drupal\Core\Entity\EntityStorageInterface | |
| */ | |
| protected $blockContentTypeStorage; | |
| /** | |
| * The theme handler. | |
| * | |
| * @var \Drupal\Core\Extension\ThemeHandlerInterface | |
| */ | |
| protected $themeHandler; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| $entity_manager = $container->get('entity.manager'); | |
| return new static( | |
| $entity_manager->getStorage('block_content'), | |
| $entity_manager->getStorage('block_content_type'), | |
| $container->get('theme_handler') | |
| ); | |
| } | |
| /** | |
| * Constructs a BlockContent object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityStorageInterface $block_content_storage | |
| * The custom block storage. | |
| * @param \Drupal\Core\Entity\EntityStorageInterface $block_content_type_storage | |
| * The custom block type storage. | |
| * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler | |
| * The theme handler. | |
| */ | |
| public function __construct(EntityStorageInterface $block_content_storage, EntityStorageInterface $block_content_type_storage, ThemeHandlerInterface $theme_handler) { | |
| $this->blockContentStorage = $block_content_storage; | |
| $this->blockContentTypeStorage = $block_content_type_storage; | |
| $this->themeHandler = $theme_handler; | |
| } | |
| /** | |
| * Displays add custom block links for available types. | |
| * | |
| * @param \Symfony\Component\HttpFoundation\Request $request | |
| * The current request object. | |
| * | |
| * @return array | |
| * A render array for a list of the custom block types that can be added or | |
| * if there is only one custom block type defined for the site, the function | |
| * returns the custom block add page for that custom block type. | |
| */ | |
| public function add(Request $request) { | |
| $types = $this->blockContentTypeStorage->loadMultiple(); | |
| if ($types && count($types) == 1) { | |
| $type = reset($types); | |
| return $this->addForm($type, $request); | |
| } | |
| if (count($types) === 0) { | |
| return array( | |
| '#markup' => $this->t('You have not created any block types yet. Go to the <a href=":url">block type creation page</a> to add a new block type.', [ | |
| ':url' => Url::fromRoute('block_content.type_add')->toString(), | |
| ]), | |
| ); | |
| } | |
| return array('#theme' => 'block_content_add_list', '#content' => $types); | |
| } | |
| /** | |
| * Presents the custom block creation form. | |
| * | |
| * @param \Drupal\block_content\BlockContentTypeInterface $block_content_type | |
| * The custom block type to add. | |
| * @param \Symfony\Component\HttpFoundation\Request $request | |
| * The current request object. | |
| * | |
| * @return array | |
| * A form array as expected by drupal_render(). | |
| */ | |
| public function addForm(BlockContentTypeInterface $block_content_type, Request $request) { | |
| $block = $this->blockContentStorage->create(array( | |
| 'type' => $block_content_type->id() | |
| )); | |
| if (($theme = $request->query->get('theme')) && in_array($theme, array_keys($this->themeHandler->listInfo()))) { | |
| // We have navigated to this page from the block library and will keep track | |
| // of the theme for redirecting the user to the configuration page for the | |
| // newly created block in the given theme. | |
| $block->setTheme($theme); | |
| } | |
| return $this->entityFormBuilder()->getForm($block); | |
| } | |
| /** | |
| * Provides the page title for this controller. | |
| * | |
| * @param \Drupal\block_content\BlockContentTypeInterface $block_content_type | |
| * The custom block type being added. | |
| * | |
| * @return string | |
| * The page title. | |
| */ | |
| public function getAddFormTitle(BlockContentTypeInterface $block_content_type) { | |
| return $this->t('Add %type custom block', array('%type' => $block_content_type->label())); | |
| } | |
| } |