entity_generic-8.x-3.x-dev/src/Plugin/views/field/GenericToggleStatusModal.php
src/Plugin/views/field/GenericToggleStatusModal.php
<?php namespace Drupal\entity_generic\Plugin\views\field; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\views\ResultRow; /** * Field handler to present a link to toggle the status of the entity. * * @ingroup views_field_handlers * * @ViewsField("entity_generic_toggle_status_modal") */ class GenericToggleStatusModal extends GenericOperationModalBase { /** * {@inheritdoc} */ public function getUrlInfo(ResultRow $row) { $url = Url::fromRoute('entity.' . $this->getEntityType() . '.status_toggle_modal', [ $this->getEntityType() => $this->getEntity($row)->id(), ]); return $url; } /** * {@inheritdoc} */ protected function defineOptions() { $options = parent::defineOptions(); unset($options['text']); $options['text_enabled'] = ['default' => $this->getDefaultLabelEnabled()]; $options['text_disabled'] = ['default' => $this->getDefaultLabelDisabled()]; return $options; } /** * {@inheritdoc} */ public function buildOptionsForm(&$form, FormStateInterface $form_state) { parent::buildOptionsForm($form, $form_state); $form['text']['#access'] = FALSE; $form['text_enabled'] = [ '#type' => 'textfield', '#title' => $this->t('Text to display if entity have status 1'), '#default_value' => $this->options['text_enabled'], ]; $form['text_disabled'] = [ '#type' => 'textfield', '#title' => $this->t('Text to display if entity have status 0'), '#default_value' => $this->options['text_disabled'], ]; } /** * {@inheritdoc} */ protected function getEntityLinkTemplate() { return 'status'; } /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $this->options['alter']['query'] = $this->getDestinationArray(); if ($row->_entity->getStatus()) { $this->options['text'] = 'deactivate'; } else { $this->options['text'] = 'activate'; } return parent::renderLink($row); } /** * {@inheritdoc} */ protected function getDefaultLabelEnabled() { return $this->t('enabled'); } /** * {@inheritdoc} */ protected function getDefaultLabelDisabled() { return $this->t('disabled'); } }