diff --git a/src/InlineEditingDisabler.php b/src/InlineEditingDisabler.php new file mode 100644 index 0000000..545dfae --- /dev/null +++ b/src/InlineEditingDisabler.php @@ -0,0 +1,57 @@ +moderationInfo = $moderation_info; + } + + /** + * Implements hook_entity_view_alter(). + */ + public function entityViewAlter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display) { + if ($entity->getEntityType()->isRevisionable() && !$this->moderationInfo->isLatestRevision($entity)) { + // Hide quickedit, because its super confusing for the user to not edit the + // live revision. + unset($build['#attributes']['data-quickedit-entity-id']); + } + } + + /** + * Implements hook_module_implements_alter(). + */ + public function moduleImplementsAlter(&$implementations, $hook) { + if ($hook == 'entity_view_alter') { + // Find the quickedit implementation and move workbench after it. + unset($implementations['workbench_moderation']); + $implementations['workbench_moderation'] = FALSE; + } + } + +} diff --git a/workbench_moderation.module b/workbench_moderation.module index 6b4cf8c..268bfa1 100644 --- a/workbench_moderation.module +++ b/workbench_moderation.module @@ -45,24 +45,18 @@ function workbench_moderation_entity_base_field_info(EntityTypeInterface $entity * Implements hook_module_implements_alter(). */ function workbench_moderation_module_implements_alter(&$implementations, $hook) { - if ($hook == 'entity_view_alter') { - // Find the quickedit implementation and move workbench after it. - unset($implementations['workbench_moderation']); - $implementations['workbench_moderation'] = FALSE; - } + /** @var \Drupal\workbench_moderation\InlineEditingDisabler $inline_editing_disabler */ + $inline_editing_disabler = \Drupal::service('workbench_moderation.inline_editing_disabler'); + $inline_editing_disabler->moduleImplementsAlter(&$implementations, $hook); } /** * Implements hook_entity_view_alter(). */ function workbench_moderation_entity_view_alter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display) { - /** @var \Drupal\workbench_moderation\ModerationInformationInterface $workbench_moderation_info */ - $workbench_moderation_info = \Drupal::service('workbench_moderation.moderation_information'); - if ($entity->getEntityType()->isRevisionable() && !$workbench_moderation_info->isLatestRevision($entity)) { - // Hide quickedit, because its super confusing for the user to not edit the - // live revision. - unset($build['#attributes']['data-quickedit-entity-id']); - } + /** @var \Drupal\workbench_moderation\InlineEditingDisabler $inline_editing_disabler */ + $inline_editing_disabler = \Drupal::service('workbench_moderation.inline_editing_disabler'); + $inline_editing_disabler->entityViewAlter($build, $entity, $display); } /** diff --git a/workbench_moderation.services.yml b/workbench_moderation.services.yml index bf67118..37d1b8b 100644 --- a/workbench_moderation.services.yml +++ b/workbench_moderation.services.yml @@ -18,6 +18,9 @@ services: workbench_moderation.entity_operations: class: Drupal\workbench_moderation\EntityOperations arguments: ['@workbench_moderation.moderation_information', '@entity_type.manager'] + workbench_moderation.inline_editing_disabler: + class: \Drupal\workbench_moderation\InlineEditingDisabler + arguments: ['@workbench_moderation.moderation_information'] access_check.latest_revision: class: Drupal\workbench_moderation\Access\LatestRevisionCheck arguments: ['@workbench_moderation.moderation_information']