You are here

function custom_pagers_nodeapi in Custom Pagers 6

Same name and namespace in other branches
  1. 5 custom_pagers.module \custom_pagers_nodeapi()

File

./custom_pagers.module, line 63
Allows administrators to define context-sensitive previous/next pagers for any node type.

Code

function custom_pagers_nodeapi(&$node, $op, $teaser, $page) {
  switch ($op) {
    case 'view':

      // We want to make sure we don't try to output when print.module is active.
      // It's a bit of special casing but it doesn't do much harm.
      if ($teaser == FALSE && empty($node->printing)) {
        $node->custom_pagers = _custom_pagers_load_all_pagers();
        foreach ($node->custom_pagers as $pager) {
          if ($pager->position != 'block' && _custom_pagers_visibility($pager, $node)) {
            $nav_array = custom_pager_build_nav($pager, $node);
            if ($nav_array['current_index'] != -1) {
              switch ($pager->position) {
                case 'top':
                  $node->content['custom_pager_top'][$pager->pid] = array(
                    '#value' => theme('custom_pager', $nav_array, $node, $pager, 'top'),
                  );
                  break;
                case 'bottom':
                  $node->content['custom_pager_bottom'][$pager->pid] = array(
                    '#value' => theme('custom_pager', $nav_array, $node, $pager, 'bottom'),
                  );
                  break;
                case 'both':
                  $node->content['custom_pager_top'][$pager->pid] = array(
                    '#value' => theme('custom_pager', $nav_array, $node, $pager, 'top'),
                  );
                  $node->content['custom_pager_bottom'][$pager->pid] = array(
                    '#value' => theme('custom_pager', $nav_array, $node, $pager, 'bottom'),
                  );
                  break;
              }
            }
          }
        }
        if (isset($node->content['custom_pager_top'])) {
          $node->content['custom_pager_top']['#weight'] = -100;
        }
        if (isset($node->content['custom_pager_bottom'])) {
          $node->content['custom_pager_bottom']['#weight'] = 100;
        }
      }
      break;
  }
}