use Drupal\layout_builder\InlineBlockEntityOperations;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;
+use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
/**
* Implements hook_help().
function layout_builder_form_entity_form_display_edit_form_alter(&$form, FormStateInterface $form_state) {
// Hides the Layout Builder field. It is rendered directly in
// \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::buildMultiple().
- unset($form['fields']['layout_builder__layout']);
- $key = array_search('layout_builder__layout', $form['#fields']);
+ unset($form['fields'][OverridesSectionStorage::FIELD_NAME]);
+ $key = array_search(OverridesSectionStorage::FIELD_NAME, $form['#fields']);
if ($key !== FALSE) {
unset($form['#fields'][$key]);
}
function layout_builder_plugin_filter_block_alter(array &$definitions, array $extra, $consumer) {
// @todo Determine the 'inline_block' blocks should be allowed outside
// of layout_builder https://www.drupal.org/node/2979142.
- if ($consumer !== 'layout_builder') {
+ if ($consumer !== 'layout_builder' || !isset($extra['list']) || $extra['list'] !== 'inline_blocks') {
foreach ($definitions as $id => $definition) {
if ($definition['id'] === 'inline_block') {
unset($definitions[$id]);
}
return AccessResult::forbidden();
}
+
+/**
+ * Implements hook_plugin_filter_TYPE__CONSUMER_alter().
+ */
+function layout_builder_plugin_filter_block__block_ui_alter(array &$definitions, array $extra) {
+ foreach ($definitions as $id => $definition) {
+ // Filter out any layout_builder definition with required contexts.
+ if ($definition['provider'] === 'layout_builder' && !empty($definition['context'])) {
+ /** @var \Drupal\Core\Plugin\Context\ContextDefinitionInterface $context */
+ foreach ($definition['context'] as $context) {
+ if ($context->isRequired()) {
+ unset($definitions[$id]);
+ break;
+ }
+ }
+ }
+ }
+}