You are here

class EditTab in Workbench Moderation 8

Same name and namespace in other branches
  1. 8.2 src/Plugin/Menu/EditTab.php \Drupal\workbench_moderation\Plugin\Menu\EditTab

Defines a class for making the edit tab use 'Edit draft' or 'New draft'.

Hierarchy

Expanded class hierarchy of EditTab

1 file declares its use of EditTab
workbench_moderation.module in ./workbench_moderation.module
Contains workbench_moderation.module.

File

src/Plugin/Menu/EditTab.php, line 17

Namespace

Drupal\workbench_moderation\Plugin\Menu
View source
class EditTab extends LocalTaskDefault implements ContainerFactoryPluginInterface {
  use StringTranslationTrait;

  /**
   * The moderatio information service.
   *
   * @var \Drupal\workbench_moderation\ModerationInformation
   */
  protected $moderationInfo;

  /**
   * The entity.
   *
   * @var \Drupal\Core\Entity\ContentEntityInterface
   */
  protected $entity;

  /**
   * Constructs a new EditTab object.
   *
   * @param array $configuration
   *   Plugin configuration.
   * @param string $plugin_id
   *   Plugin ID.
   * @param mixed $plugin_definition
   *   Plugin definition.
   * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
   *   The translation service.
   * @param \Drupal\workbench_moderation\ModerationInformation $moderation_information
   *   The moderation information.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, TranslationInterface $string_translation, ModerationInformation $moderation_information) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->stringTranslation = $string_translation;
    $this->moderationInfo = $moderation_information;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('string_translation'), $container
      ->get('workbench_moderation.moderation_information'));
  }

  /**
   * {@inheritdoc}
   */
  public function getRouteParameters(RouteMatchInterface $route_match) {

    // Override the node here with the latest revision.
    $this->entity = $route_match
      ->getParameter($this->pluginDefinition['entity_type_id']);
    return parent::getRouteParameters($route_match);
  }

  /**
   * {@inheritdoc}
   */
  public function getTitle(Request $request = NULL) {
    if (!$this->moderationInfo
      ->isModeratableEntity($this->entity)) {

      // Moderation isn't enabled.
      return parent::getTitle($request);
    }

    // @todo write a test for this.
    return $this->moderationInfo
      ->isLiveRevision($this->entity) ? $this
      ->t('New draft') : $this
      ->t('Edit draft');
  }

  /**
   * {@inheritdoc}
   */
  public function getCacheTags() {

    // @todo write a test for this.
    $tags = parent::getCacheTags();

    // Tab changes if node or node-type is modified.
    $tags = array_merge($tags, $this->entity
      ->getCacheTags());
    $tags[] = $this->entity
      ->getEntityType()
      ->getBundleEntityType() . ':' . $this->entity
      ->bundle();
    return $tags;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
EditTab::$entity protected property The entity.
EditTab::$moderationInfo protected property The moderatio information service.
EditTab::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
EditTab::getCacheTags public function The cache tags associated with this object. Overrides LocalTaskDefault::getCacheTags
EditTab::getRouteParameters public function Returns the route parameters needed to render a link for the local task. Overrides LocalTaskDefault::getRouteParameters
EditTab::getTitle public function Returns the localized title to be shown for this tab. Overrides LocalTaskDefault::getTitle
EditTab::__construct public function Constructs a new EditTab object. Overrides PluginBase::__construct
LocalTaskDefault::$active protected property TRUE if this plugin is forced active for options attributes.
LocalTaskDefault::$routeProvider protected property The route provider to load routes by name.
LocalTaskDefault::getActive public function Gets the active status. Overrides LocalTaskInterface::getActive
LocalTaskDefault::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts
LocalTaskDefault::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge
LocalTaskDefault::getOptions public function Returns options for rendering a link to the local task. Overrides LocalTaskInterface::getOptions
LocalTaskDefault::getRouteName public function Get the route name from the settings. Overrides LocalTaskInterface::getRouteName
LocalTaskDefault::getWeight public function Returns the weight of the local task. Overrides LocalTaskInterface::getWeight
LocalTaskDefault::routeProvider protected function Returns the route provider.
LocalTaskDefault::setActive public function Sets the active status. Overrides LocalTaskInterface::setActive
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.