function views_plugin_display::render_more_link

Same name in other branches
  1. 6.x-3.x plugins/views_plugin_display.inc \views_plugin_display::render_more_link()

Render the 'more' link.

File

plugins/views_plugin_display.inc, line 2717

Class

views_plugin_display
The default display plugin handler. Display plugins handle options and basic mechanisms for different output methods.

Code

public function render_more_link() {
    if ($this->use_more() && ($this->use_more_always() || !empty($this->view->query->pager) && $this->view->query->pager
        ->has_more_records())) {
        $path = $this->get_path();
        if ($this->get_option('link_display') == 'custom_url' && ($override_path = $this->get_option('link_url'))) {
            $tokens = $this->get_arguments_tokens();
            $path = strtr($override_path, $tokens);
        }
        if ($path) {
            if (empty($override_path)) {
                $path = $this->view
                    ->get_url(NULL, $path);
            }
            $url_options = array();
            if (!empty($this->view->exposed_raw_input)) {
                $url_options['query'] = $this->view->exposed_raw_input;
            }
            $theme = views_theme_functions('views_more', $this->view, $this->display);
            $parsed_url = drupal_parse_url($path);
            // Preserve the query string from url.
            if (!empty($parsed_url['query'])) {
                if (!empty($url_options['query'])) {
                    $url_options['query'] = array_merge($parsed_url['query'], $url_options['query']);
                }
                else {
                    $url_options['query'] = $parsed_url['query'];
                }
                $path = $parsed_url['path'];
            }
            // Add fragment if applicable.
            if (!empty($parsed_url['fragment'])) {
                $url_options['fragment'] = $parsed_url['fragment'];
            }
            $path = check_url(url($path, $url_options));
            return theme($theme, array(
                'more_url' => $path,
                'new_window' => $this->use_more_open_new_window(),
                'link_text' => check_plain($this->use_more_text()),
                'view' => $this->view,
            ));
        }
    }
}