You are here

function comment_ajax_pager_entity_display_build_alter in Comments ajax pager 8

Implements hook_entity_display_build_alter().

File

./comment_ajax_pager.module, line 9

Code

function comment_ajax_pager_entity_display_build_alter(&$build, $context) {
  foreach ($build as $field_name => $field) {
    if (!empty($field['#field_type']) && $field['#field_type'] === 'comment') {
      $build[$field_name]['#attributes']['data-ajax_comment_pager'] = $context['entity']
        ->id();
      $build[$field_name]['#attached']['library'][] = 'comment_ajax_pager/comment_ajax_pager.js';
      $build[$field_name]['#attached']['drupalSettings']['comment_ajax_pager'][$context['entity']
        ->id()] = [
        'ajax_pager' => [
          'entity_id' => $context['entity']
            ->id(),
          'field_name' => $field['#field_name'],
          'entity_type' => $field['#entity_type'],
          'bundle' => $field['#bundle'],
          'comment_type' => $field['#items']
            ->getFieldDefinition()
            ->getSetting('comment_type'),
          'default_mode' => $field['#items']
            ->getFieldDefinition()
            ->getSetting('default_mode'),
        ],
        'ajax_url' => Url::fromRoute('comment_ajax_pager.api')
          ->toString(),
      ];
      $config = \Drupal::config('field.field.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'])
        ->get();
      $build[$field_name][0]['comments']['#prefix'] = '<div class="comments_ajax_pager_wrap">';
      $build[$field_name][0]['comments']['#suffix'] = '</div>';
      if (!empty(\Drupal::config('comment_ajax_pager.settings')
        ->get('settings.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'] . '.on')) && !empty($build[$field_name][0]['comments']['pager'])) {
        $text = \Drupal::config('comment_ajax_pager.settings')
          ->get('settings.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'] . '.text');
        if (empty($text)) {
          $text = 'Load more';
        }
        $text = t($text, [
          '@per_page@' => $config['settings']['per_page'],
        ]);
        $build[$field_name][0]['comments']['pager']['#prefix'] = '<div class="comment_load_more_pager" data-text="' . $text . '">';
        $build[$field_name][0]['comments']['pager']['#suffix'] = '</div>';
      }
    }
  }
}