accessibility-8.x-1.x-dev/modules/accessibility_content/accessibility_content.module
modules/accessibility_content/accessibility_content.module
<?php use Drupal\field\FieldInfo; use Drupal\field\Field; /** * Implements hook_menu(). */ function accessibility_content_menu() { $items = array(); $items['admin/config/accessibility/content'] = array( 'title' => 'Content', 'description' => 'Enable or disable toggle for users to view content alerts and manage language of content toggle.', 'route_name' => 'accessibility_content_admin_form', ); return $items; } /** * Implements hook_form_FORM_ID_alter(). */ function accessibility_content_form_field_ui_field_instance_edit_form_alter(&$form, $form_state) { if (in_array($form['#field']['type'], array('text_with_summary'))) { $form['instance']['settings']['accessibility_content'] = array( '#type' => 'checkbox', '#title' => t('Check this field for accessibility'), '#description' => t('Allow appropriate users to check this field for accessibility'), '#default_value' => (isset($form_state['instance']->settings['accessibility_content'])) ? $form_state['instance']->settings['accessibility_content'] : FALSE, ); $form['instance']['settings']['accessibility_content_block_submit'] = array( '#type' => 'checkboxes', '#title' => t('Block saving content if there are any errors that are:'), '#options' => array('severe' => t('Severe'), 'moderate' => t('Moderate'), 'suggestion' => t('Suggestion') ), '#default_value' => (isset($form_state['instance']->settings['accessibility_content_block_submit'])) ? $form_state['instance']->settings['accessibility_content_block_submit'] : FALSE, ); } } /** * Implements hook_field_info_alter(). */ function accessibility_content_field_info_alter(&$info) { foreach ($info as $field_type => &$field_type_info) { if (in_array($field_type, array('text_with_summary'))) { $field_type_info['settings'] += array('accessibility_content' => FALSE, 'accessibility_content_block_submit' => FALSE); $field_type_info['instance_settings'] += array('accessibility_content' => FALSE, 'accessibility_content_block_submit' => FALSE); } } } /** * Implements hook_field_attach_view_alter(). */ function accessibility_content_field_attach_view_alter(&$output, $context) { if (Drupal::currentUser()->hasPermission('check content for accessibility')) { foreach ($output as $field_key => $field) { if (is_array($field) && isset($field['#field_name'])) { $field = Field::fieldInfo()->getInstance($field['#entity_type'], $field['#bundle'], $field['#field_name']); if (isset($field->settings['accessibility_content']) && $field->settings['accessibility_content']) { module_load_include('inc', 'accessibility_content', 'accessibility_content'); accessibility_content_init(); $output[$field_key]['#pre_render'][] = '_accessibility_content_field_pre_render'; } } } } } /** * Implements field_widget_form_alter(). */ function accessibility_content_field_widget_form_alter(&$element, &$form_state, $context) { if (!isset($element['#type']) || !in_array($element['#type'], array('text_format'))) { return; } $field = field_info_instance($element['#entity_type'], $element['#field_name'], $element['#bundle']); $options = array(); if (isset($field['accessibility_content_block_submit'])) { foreach ($field['accessibility_content_block_submit'] as $severity => $active) { if ($active) { $options[] = $severity; } } } if (!count($options)) { return; } drupal_add_js(array('accessibility_content_form_message' => variable_get('accessibility_disabled_form_message', t('You have been prevented from submitting this form because of the following accessibility errors.'))), 'setting'); module_load_include('inc', 'accessibility_content'); accessibility_content_init(array('form' => TRUE)); $element['#attributes'] = (is_array($element['#attributes']['class'])) ? $element['#attributes']['class'] : array(); $element['#attributes']['class'][] = 'accessible-content-check-form'; $element['#attributes']['data-accessible-content-severity'] = implode(',', $options); } /** * Implements hook_permission(). */ function accessibility_content_permission() { return array( 'check content for accessibility' => array( 'title' => t('Check content for accessibility'), 'description' => t('Show accessibility problems in content the user has access to view.') ), ); }