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.')
    ),
  );
}

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

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