diff --git a/src/Plugin/IPEAccess/WorkbenchModerationIPEAccess.php b/src/Plugin/IPEAccess/WorkbenchModerationIPEAccess.php new file mode 100644 index 0000000..18416f6 --- /dev/null +++ b/src/Plugin/IPEAccess/WorkbenchModerationIPEAccess.php @@ -0,0 +1,71 @@ +information = $information; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('workbench_moderation.moderation_information')); + } + + /** + * {@inheritdoc} + */ + public function applies(PanelsDisplayVariant $display) { + if (!empty($display->getContexts()['@panelizer.entity_context:entity']) && $display->getContexts()['@panelizer.entity_context:entity']->hasContextValue()) { + $entity = $display->getContexts()['@panelizer.entity_context:entity']->getContextValue(); + return $this->information->isModeratableEntity($entity); + } + return FALSE; + } + + /** + * {@inheritdoc} + */ + public function access(PanelsDisplayVariant $display) { + $entity = $display->getContexts()['@panelizer.entity_context:entity']->getContextValue(); + return $this->information->isLatestRevision($entity) && !$this->information->isLiveRevision($entity); + } + +}