You are here

function _content_translation_preprocess_language_content_settings_table in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/content_translation/content_translation.admin.inc \_content_translation_preprocess_language_content_settings_table()
  2. 9 core/modules/content_translation/content_translation.admin.inc \_content_translation_preprocess_language_content_settings_table()

(proxied) Implements hook_preprocess_HOOK().

1 call to _content_translation_preprocess_language_content_settings_table()
content_translation_preprocess_language_content_settings_table in core/modules/content_translation/content_translation.module
Implements hook_preprocess_HOOK() for language-content-settings-table.html.twig.

File

core/modules/content_translation/content_translation.admin.inc, line 195
The content translation administration forms.

Code

function _content_translation_preprocess_language_content_settings_table(&$variables) {

  // Alter the 'build' variable injecting the translation settings if the user
  // has the required permission.
  if (!\Drupal::currentUser()
    ->hasPermission('administer content translation')) {
    return;
  }
  $element = $variables['element'];
  $build =& $variables['build'];
  array_unshift($build['#header'], [
    'data' => t('Translatable'),
    'class' => [
      'translatable',
    ],
  ]);
  $rows = [];
  foreach (Element::children($element) as $bundle) {
    $field_names = !empty($element[$bundle]['fields']) ? Element::children($element[$bundle]['fields']) : [];
    if (!empty($element[$bundle]['translatable'])) {
      $checkbox_id = $element[$bundle]['translatable']['#id'];
    }
    $rows[$bundle] = $build['#rows'][$bundle];
    if (!empty($element[$bundle]['translatable'])) {
      $translatable = [
        'data' => $element[$bundle]['translatable'],
        'class' => [
          'translatable',
        ],
      ];
      array_unshift($rows[$bundle]['data'], $translatable);
      $rows[$bundle]['data'][1]['data']['#prefix'] = '<label for="' . $checkbox_id . '">';
    }
    else {
      $translatable = [
        'data' => t('N/A'),
        'class' => [
          'untranslatable',
        ],
      ];
      array_unshift($rows[$bundle]['data'], $translatable);
    }
    foreach ($field_names as $field_name) {
      $field_element =& $element[$bundle]['fields'][$field_name];
      $rows[] = [
        'data' => [
          [
            'data' => \Drupal::service('renderer')
              ->render($field_element),
            'class' => [
              'translatable',
            ],
          ],
          [
            'data' => [
              '#prefix' => '<label for="' . $field_element['#id'] . '">',
              '#suffix' => '</label>',
              'bundle' => [
                '#prefix' => '<span class="visually-hidden">',
                '#suffix' => '</span> ',
                '#plain_text' => $element[$bundle]['settings']['#label'],
              ],
              'field' => [
                '#plain_text' => $field_element['#label'],
              ],
            ],
            'class' => [
              'field',
            ],
          ],
          [
            'data' => '',
            'class' => [
              'operations',
            ],
          ],
        ],
        '#field_name' => $field_name,
        'class' => [
          'field-settings',
        ],
      ];
      if (!empty($element[$bundle]['columns'][$field_name])) {
        $column_element =& $element[$bundle]['columns'][$field_name];
        foreach (Element::children($column_element) as $key) {
          $column_label = $column_element[$key]['#title'];
          unset($column_element[$key]['#title']);
          $rows[] = [
            'data' => [
              [
                'data' => \Drupal::service('renderer')
                  ->render($column_element[$key]),
                'class' => [
                  'translatable',
                ],
              ],
              [
                'data' => [
                  '#prefix' => '<label for="' . $column_element[$key]['#id'] . '">',
                  '#suffix' => '</label>',
                  'bundle' => [
                    '#prefix' => '<span class="visually-hidden">',
                    '#suffix' => '</span> ',
                    '#plain_text' => $element[$bundle]['settings']['#label'],
                  ],
                  'field' => [
                    '#prefix' => '<span class="visually-hidden">',
                    '#suffix' => '</span> ',
                    '#plain_text' => $field_element['#label'],
                  ],
                  'columns' => [
                    '#plain_text' => $column_label,
                  ],
                ],
                'class' => [
                  'column',
                ],
              ],
              [
                'data' => '',
                'class' => [
                  'operations',
                ],
              ],
            ],
            'class' => [
              'column-settings',
            ],
          ];
        }
      }
    }
  }
  $build['#rows'] = $rows;
}