accessibility-8.x-1.x-dev/lib/Drupal/accessibility/Form/AccessibilityTestFormController.php

lib/Drupal/accessibility/Form/AccessibilityTestFormController.php
<?php

/**
 * @file
 * Definition of Drupal\accessibility\Form\AccessibilityTestFormController.
 */

namespace Drupal\accessibility\Form;

use Drupal\Core\Cache\Cache;
use Drupal\Core\Config\ConfigFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Entity\ContentEntityFormController;
use Drupal\Core\Language\Language;

/**
 * Base for controller for accessibility test edit forms.
 */
class AccessibilityTestFormController extends ContentEntityFormController {

  /**
   * The test storage.
   *
   * @var \Drupal\accessibility\AccessibilityTestStorageControllerInterface
   */
  protected $testStorage;

  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactory
   */
  protected $configFactory;

  /**
   * Constructs a new AccessibilityTestFormController.
   *
   * @param \Drupal\accessibility\AccessibilityTestStorageControllerInterface $test_storage
   *   The accessibility test storage.
   * @param \Drupal\Core\Config\ConfigFactory $config_factory
   *   The config factory.
   */
  public function __construct(AccessibilityTestStorageControllerInterface $test_storage, ConfigFactory $config_factory) {
    $this->testStorage = $test_storage;
    $this->configFactory = $config_factory;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('plugin.manager.entity')->getStorageController('accessibility_test'),
      $container->get('config.factory')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function form(array $form, array &$form_state) {
    $test = $this->entity;
    if($test->id()) {
      drupal_set_title(t('<em>Edit accessibility test</em> @name', array('@name' => $test->name->value)), PASS_THROUGH);
    }
    else {
      drupal_set_title(t('Create accessibility test'));
    }
    $form['name'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Test name'),
      '#default_value' => $test->name->value,
      '#maxlength' => 255,
      '#required' => TRUE,
      '#weight' => -5,
    );
    
    $form['quail_name'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Machine name'),
      '#default_value' => $test->quail_name->value,
      '#maxlength' => 255,
      '#required' => TRUE,
      '#weight' => -5,
    );
    
    $form['severity'] = array(
      '#type' => 'select',
      '#title' => $this->t('Severity'),
      '#required' => TRUE,
      '#default_value' => $test->severity->value,
      '#options' => array(
        ACCESSIBILITY_TEST_SEVERE => t('Severe'),
        ACCESSIBILITY_TEST_MODERATE => t('Moderate'),
        ACCESSIBILITY_TEST_SUGGESTION => t('Suggestion'),
      ),
      '#weight' => -5,
    );
    
    $form['status'] = array(
      '#type' => 'checkbox',
      '#title' => $this->t('Test is active'),
      '#default_value' => $test->status->value,
      '#weight' => -5,
    );

    $form['test_id'] = array(
      '#type' => 'value',
      '#value' => $test->id(),
    );

    $form_state['redirect'] = ($test->isNew()) ? current_path() : 'accessibility-test/' . $test->id();

    $form += array('#submit' => array());

    return parent::form($form, $form_state, $test);
  }

  /**
   * {@inheritdoc}
   */
  public function validate(array $form, array &$form_state) {
    parent::validate($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function buildEntity(array $form, array &$form_state) {
    $test = parent::buildEntity($form, $form_state);

    // Prevent leading and trailing spaces in test names.
    $test->name->value = trim($test->name->value);

    return $test;
  }

  /**
   * {@inheritdoc}
   */
  public function save(array $form, array &$form_state) {
    $test = $this->entity;

    switch ($test->save()) {
      case SAVED_NEW:
        \Drupal::messenger()->addMessage($this->t('Created new accessibility test %test.', array('%test' => $test->label())));
        watchdog('accessibility', 'Created new accessibility test %test.', array('%test' => $test->label()), WATCHDOG_NOTICE, l($this->t('edit'), 'accessibility/test/' . $test->id() . '/edit'));
        break;
      case SAVED_UPDATED:
        \Drupal::messenger()->addMessage($this->t('Updated accessibility test %test.', array('%test' => $test->label())));
        watchdog('accessibility', 'Updated accessibility test %test.', array('%test' => $test->label()), WATCHDOG_NOTICE, l($this->t('edit'), 'accessibility/test/' . $test->id() . '/edit'));
        // Clear the page and block caches to avoid stale data.
        Cache::invalidateTags(array('content' => TRUE));
        break;
    }

    $form_state['values']['test_id'] = $test->id();
    $form_state['test_id'] = $test->id();
    $form_state['redirect'] = array('accessibility-test/'. $test->id());
  }

  /**
   * {@inheritdoc}
   */
  public function delete(array $form, array &$form_state) {
    $destination = array();
    if (isset($_GET['destination'])) {
      $destination = drupal_get_destination();
      unset($_GET['destination']);
    }
    $form_state['redirect'] = array('accessibility-test/' . $this->entity->id() . '/delete', array('query' => $destination));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc