function ccl_contextual_links_view_alter in Custom Contextual Links 8
Same name and namespace in other branches
- 8.2 ccl.module \ccl_contextual_links_view_alter()
 - 7 ccl.module \ccl_contextual_links_view_alter()
 
Implements hook_contextual_links_view_alter().
TODO:
- Make sure all links are work in a multilanguage setup.
 
File
- ./
ccl.module, line 106  - Main CCL module file.
 
Code
function ccl_contextual_links_view_alter(&$element, $items) {
  // Get the destination parameter.
  $dest = drupal_get_destination();
  // Check if we have a node link to process.
  if (isset($element['#element']['#node']->nid)) {
    $node = $element['#element']['#node'];
    $node_cache = ccl_cache_get('ccl_nodes');
    // Global elements.
    foreach ($node_cache['global'] as $id => $link) {
      if ($processed_link = _ccl_prepare_link($link, $dest, $node)) {
        $element['#links']['ccl-global-node-' . $id] = $processed_link;
      }
    }
    // Content Type.
    if (in_array($node->type, array_keys($node_cache['ct']))) {
      foreach ($node_cache['ct'][$node->type] as $id => $link) {
        if ($processed_link = _ccl_prepare_link($link, $dest, $node)) {
          $element['#links']['ccl-ct-' . $id] = $processed_link;
        }
      }
    }
    // Individual nodes.
    if (in_array($node->nid, array_keys($node_cache['ids']))) {
      foreach ($node_cache['ids'][$node->nid] as $id => $link) {
        if ($processed_link = _ccl_prepare_link($link, $dest, $node)) {
          $element['#links']['ccl-node-' . $id] = $processed_link;
        }
      }
    }
  }
  // Invoke submodules.
  foreach (\Drupal::moduleHandler()
    ->getImplementations('ccl_add_link') as $module) {
    $element = \Drupal::moduleHandler()
      ->invoke($module, 'ccl_add_link', [
      $element,
      $dest,
    ]);
  }
}