accessibility-8.x-1.x-dev/lib/Drupal/accessibility/Controller/AccessibilityController.php

lib/Drupal/accessibility/Controller/AccessibilityController.php
<?php

/**
 * @file
 * Contains \Drupal\accessibility\Controller\AccessibilityController.
 */

namespace Drupal\accessibility\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\accessibility\VocabularyInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;

/**
 * Provides route responses for accessibility.module.
 */
class AccessibilityController extends ControllerBase {

  /**
   * Returns a rendered edit form to create a new term associated to the given vocabulary.
   *
   * @param \Drupal\accessibility\VocabularyInterface $accessibility_vocabulary
   *   The vocabulary this term will be added to.
   *
   * @return array
   *   The accessibility term add form.
   */
  public function addForm() {
    return $this->entityManager()->getForm();
  }

  public function accessibilityTestsExisting() {
    module_load_include('inc', 'accessibility', 'accessibility.admin');
    $build = array('filter_form' => drupal_get_form('accessibility_admin_filter_form'));

    $header = array(t('Name'), t('Severity'), t('Status'), t('Edit'), t('Delete'));

    $rows = array();

    $query = \Drupal::database()->select('accessibility_test', 't')
             ->fields('t', array('test_id', 'name', 'quail_name', 'severity', 'status'))
             ->orderBy('t.name');

    $filter = (isset($_SESSION['accessibility_admin_filter'])) ? $_SESSION['accessibility_admin_filter'] : array();
    if (isset($filter['severity'])) {
      $in = array();
      foreach ($filter['severity'] as $severity) {
        if ($severity) {
          $in[] = $severity;
        }
      }
      if (count($in)) {
        $query->condition('t.severity', $in, 'IN');
      }
    }
    if (isset($filter['name']) && strlen($filter['name'])) {
      $query->condition('t.name', '%' . $filter['name'] . '%', 'LIKE');
    }

    $tests = $query->execute()
                   ->fetchAll();
    foreach ($tests as $test) {
      $rows[] = array(l($test->name, 'accessibility-test/' . $test->test_id),
        t(ucfirst($test->severity)),
        (($test->status) ? t('Active') : t('Inactive')),
        l(t('edit'), 'accessibility-test/' . $test->test_id . '/edit', array('query' => array('destination' => 'admin/config/accessibility/tests'))),
        l(t('delete'), 'accessibility-test/' . $test->test_id . '/delete', array('query' => array('destination' => 'admin/config/accessibility/tests')))
      );
    }

    $build['result_table'] = array('#theme' => 'table',
                                   '#header' => $header,
                                   '#rows' => $rows,
                                   );
    if (!count($rows)) {
      $build['result_table'] = array('#markup' => t('No tests, found. !link.', array('!link' => l(t('Import tests'), 'admin/config/accessibility/tests/import'))));
    }
    return $build;
  }

  public function accessibilityTestTitle($accessibility_test) {
    $accessibility_test = accessibility_test_load($accessibility_test);
    $values = $accessibility_test->getValue();
    return $values['name'][0]['value'];
  }

  public function renderTestInJSON($accessibility_test) {
    $accessibility_test = accessibility_test_load($accessibility_test);
    $rendered = $this->entityManager()->getRenderController('accessibility_test')->view($accessibility_test, 'popup');
    $rendered['#prefix'] = '<div class="accessibility-test">';
    $rendered['#suffix'] = '</div>';
    $json = array('content' => \Drupal::service('renderer')->render($rendered),
                  'title'   => check_plain($accessibility_test->name)
                  );
    return new JsonResponse($json);
  }

  public function getTestsJSON() {
    if(!$result = cache()->get('accessibility_tests_json')) {
      $existing_tests = accessibility_get_active_tests();
      $accessibility_tests = module_invoke_all('accessibility_tests', FALSE);
      $result = array();
      foreach ($existing_tests as $test_id => $test) {
        $values = $test->getValue();
        $quail_name = $values['quail_name'][0]['value'];
        $result[$quail_name] = $accessibility_tests[$quail_name];
        $result[$quail_name]['readableName'] = $values['name'][0]['value'];
        $result[$quail_name]['testId'] = $test_id;
        $result[$quail_name]['tags'] = $accessibility_tests[$quail_name]['tags'];
      }
      cache()->set('accessibility_tests_json', $result);
    }
    else {
      $result = $result->data;
    }
    if ($return) {
      return $result;
    }
    return new JsonResponse(array('guideline' => array_keys($result), 'tests' => $result));
  }
}

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

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