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));
}
}
