You are here

function collapsiblock_block_view_alter in Collapsiblock 8.2

Same name and namespace in other branches
  1. 4.x collapsiblock.module \collapsiblock_block_view_alter()
  2. 3.x collapsiblock.module \collapsiblock_block_view_alter()

Implements hook_block_view_alter().

File

./collapsiblock.module, line 78
Make blocks collapsible.

Code

function collapsiblock_block_view_alter(array &$build, BlockPluginInterface $block) {
  if (empty($build['#block'])) {
    return;
  }
  $block_entity = $build['#block'];
  $action = $block_entity
    ->getThirdPartySetting('collapsiblock', 'collapse_action');

  // If the block is set to global default, get that default and use it instead
  // of 0.
  if ($action == 0) {
    $action = \Drupal::config('collapsiblock.settings')
      ->get('default_action');
  }

  // If the action is anything other than 'none', create our wrapper elements.
  if ($action != 1) {
    $id = 'collapsiblock-wrapper-' . $block_entity
      ->id();
    $classes[] = 'collapsiblock';
    $build['#collapsiblock']['prefix'] = [
      '#markup' => '<div id="' . $id . '" class="' . implode(' ', $classes) . '" data-collapsiblock-action="' . $action . '">',
    ];
    $build['#collapsiblock']['suffix'] = [
      'collapsiblock' => [
        '#markup' => '</div>',
      ],
    ];
  }
}