class ContextReactionBlocksController in Context 8
Same name and namespace in other branches
- 8.4 src/Reaction/Blocks/Controller/ContextReactionBlocksController.php \Drupal\context\Reaction\Blocks\Controller\ContextReactionBlocksController
- 8.0 src/Reaction/Blocks/Controller/ContextReactionBlocksController.php \Drupal\context\Reaction\Blocks\Controller\ContextReactionBlocksController
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\context\Reaction\Blocks\Controller\ContextReactionBlocksController
Expanded class hierarchy of ContextReactionBlocksController
File
- src/
Reaction/ Blocks/ Controller/ ContextReactionBlocksController.php, line 19
Namespace
Drupal\context\Reaction\Blocks\ControllerView source
class ContextReactionBlocksController extends ControllerBase {
/**
* @var \Drupal\Core\Block\BlockManagerInterface
*/
protected $blockManager;
/**
* @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface
*/
protected $contextRepository;
/**
* @var \Drupal\Core\Extension\ThemeHandlerInterface
*/
protected $themeHandler;
/**
* @var \Drupal\context\ContextManager
*/
protected $contextManager;
/**
* Construct.
*
* @param \Drupal\Core\Block\BlockManagerInterface $blockManager
* @param \Drupal\Core\Plugin\Context\ContextRepositoryInterface $contextRepository
* @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler
* @param \Drupal\context\ContextManager $contextManager
*/
function __construct(BlockManagerInterface $blockManager, ContextRepositoryInterface $contextRepository, ThemeHandlerInterface $themeHandler, ContextManager $contextManager) {
$this->blockManager = $blockManager;
$this->contextRepository = $contextRepository;
$this->themeHandler = $themeHandler;
$this->contextManager = $contextManager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('plugin.manager.block'), $container
->get('context.repository'), $container
->get('theme_handler'), $container
->get('context.manager'));
}
/**
* Display a library of blocks that can be added to the context reaction.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @param \Drupal\context\ContextInterface $context
* The context the blocks reaction belongs to.
*
* @param string $reaction_id
* The ID of the blocks reaction that the selected block
* should be added to.
*
* @return array
*/
public function blocksLibrary(Request $request, ContextInterface $context, $reaction_id) {
// If a theme has been defined in the query string then use this for
// the add block link, default back to the default theme.
$theme = $request->query
->get('theme', $this->themeHandler
->getDefault());
// Only add blocks which work without any available context.
$blocks = $this->blockManager
->getDefinitionsForContexts($this->contextRepository
->getAvailableContexts());
// Order by category, and then by admin label.
$blocks = $this->blockManager
->getSortedDefinitions($blocks);
$build['filter'] = [
'#type' => 'search',
'#title' => $this
->t('Filter'),
'#title_display' => 'invisible',
'#size' => 30,
'#placeholder' => $this
->t('Filter by block name'),
'#attributes' => [
'class' => [
'context-table-filter',
],
'data-element' => '.block-add-table',
'title' => $this
->t('Enter a part of the block name to filter by.'),
],
];
$headers = [
$this
->t('Block'),
$this
->t('Category'),
$this
->t('Operations'),
];
$build['blocks'] = [
'#type' => 'table',
'#header' => $headers,
'#rows' => [],
'#empty' => $this
->t('No blocks available.'),
'#attributes' => [
'class' => [
'block-add-table',
],
],
];
// Add each block definition to the table.
foreach ($blocks as $block_id => $block) {
$links = [
'add' => [
'title' => $this
->t('Place block'),
'url' => Url::fromRoute('context.reaction.blocks.block_add', [
'context' => $context
->id(),
'reaction_id' => $reaction_id,
'block_id' => $block_id,
], [
'query' => [
'theme' => $theme,
],
]),
'attributes' => [
'class' => [
'use-ajax',
],
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => 700,
]),
],
],
];
$build['blocks']['#rows'][] = [
'title' => [
'data' => [
'#type' => 'inline_template',
'#template' => '<div class="context-table-filter-text-source">{{ label }}</div>',
'#context' => [
'label' => $block['admin_label'],
],
],
],
'category' => [
'data' => $block['category'],
],
'operations' => [
'data' => [
'#type' => 'operations',
'#links' => $links,
],
],
];
}
$build['#attached']['library'][] = 'context_ui/admin';
return $build;
}
/**
* Callback for the theme select list on the Context blocks reaction form.
*
* @param Request $request
* The current request.
*
* @param ContextInterface $context
* The context the block reaction is located on.
*
* @return \Drupal\Core\Ajax\AjaxResponse
*/
public function blocksFormThemeSelect(Request $request, ContextInterface $context) {
$theme = $request->request
->get('reactions[blocks][theme]', '', TRUE);
// Get the context form and supply it with the blocks theme value.
$form = $this->contextManager
->getForm($context, 'edit', [
'reactions' => [
'blocks' => [
'theme' => $theme,
],
],
]);
$response = new AjaxResponse();
$response
->addCommand(new ReplaceCommand('#context-reactions', $form['reactions']));
return $response;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContextReactionBlocksController:: |
protected | property | ||
ContextReactionBlocksController:: |
protected | property | ||
ContextReactionBlocksController:: |
protected | property | ||
ContextReactionBlocksController:: |
protected | property | ||
ContextReactionBlocksController:: |
public | function | Callback for the theme select list on the Context blocks reaction form. | |
ContextReactionBlocksController:: |
public | function | Display a library of blocks that can be added to the context reaction. | |
ContextReactionBlocksController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
ContextReactionBlocksController:: |
function | Construct. | ||
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |