Viewing File: /usr/local/cpanel/shared/templates/paginate.tmpl

[%-

#----------------------------------------------------------------------
#For UAPI, this accepts:
#   uapi_result     (a Cpanel::Result object)
#
#For API 2, this uses the following globals:
#   CPANEL.CPVAR.api2_paginate_total
#   CPANEL.CPVAR.api2_sort_column
#   CPANEL.CPVAR.api2_sort_reverse
#   CPANEL.CPVAR.currentpage
#   CPANEL.CPVAR.itemsperpage
#   CPANEL.CPVAR.pages
#
#In either case, this uses the following globals:
#   CPANEL.CPVAR.pager_all_selected
#   CPANEL.CPVAR.pager_max_items_per_page
#   CPANEL.CPVAR.pager_scope
#   CPANEL.FORM.has_search_sort
#   CPANEL.FORM.searchregex
#
#...as well as everything in the "config" hash below.
#----------------------------------------------------------------------

# Define the leading/trailing window size
SET MAX_LEADING_PAGES  = 3;
SET MAX_TRAILING_PAGES = 3;

# Define other module defaults
SET DEFAULT_SHOW_ALL_OPTION = 0;         # DONT SHOW THE ALL BUTTON BY DEFAULT
SET DEFAULT_SHOW_ALL_SUPER_OPTION = 0;   # DONT SHOW THE SUPER ALL BUTTON BY DEFAULT
SET DEFAULT_MAX_ITEMS_PER_PAGE = 1000;   # LETS KEEP THE MAX ITEMS TO 1000 or less unless explicitly set by the developer.
SET DEFAULT_SHOW_PAGE_SIZE_SELECTOR = 1; # SHOW THE PAGE SIZE SELECTOR
SET DEFAULT_SHOW_PAGE_SELECTOR = 1;      # SHOW THE PAGE SELECTOR

# Make sure the Scope has a default value. pager_scope is
# defined externally only when you need two pagers on the same
# page, otherwise leave it empty and it gets set to DEFAULT.
SET pager_scope = CPANEL.CPVAR.pager_scope || "DEFAULT";

SET max_items_per_page = (CPANEL.CPVAR.pager_max_items_per_page || DEFAULT_MAX_ITEMS_PER_PAGE);

IF uapi_result;
    SET items_per_page = uapi_result.metadata('paginate').results_per_page;
    SET current_page   = uapi_result.metadata('paginate').current_page;
    SET total_results  = uapi_result.metadata('paginate').total_results;
    SET total_pages    = uapi_result.metadata('paginate').total_pages;

    SET sort_column  = uapi_result.finished_sorts.0.column;
    SET sort_reverse = uapi_result.finished_sorts.0.reverse;
ELSE;
    IF CPANEL.CPVAR.itemsperpage > max_items_per_page;
        SET items_per_page =  max_items_per_page;
    ELSE;
        SET items_per_page =  CPANEL.CPVAR.itemsperpage;
    END;

    SET current_page = CPANEL.CPVAR.currentpage;
    SET total_results = CPANEL.CPVAR.api2_paginate_total;
    SET total_pages = CPANEL.CPVAR.pages;

    SET sort_column = CPANEL.CPVAR.api2_sort_column;
    SET sort_reverse = CPANEL.CPVAR.api2_sort_reverse;
END;

# Capture the data for the pager
SET data = {
    scope           => pager_scope,
    search          => CPANEL.FORM.searchregex || "",
    perpage         => items_per_page || 10,
    sortcolumn      => sort_column || "",
    sortrev         => sort_reverse || 0,
    page            => current_page || 1,
    matches         => total_results || 0,
    pagecount       => total_pages || 0,
    all_selected    => CPANEL.CPVAR.pager_all_selected || 0,
    has_search_sort => CPANEL.FORM.has_search_sort || CPANEL.FORM.searchregex || sort_column || sort_reverse,
                       #-------------------------------------------------------------------------------------------------------------------------
                       # Looks for the standard search and sort elements as well as the special flag used when setting custom search/sort rules
                       # If your search or sort uses non-standard or multiple filter or sort rules, set the FORM.has_search_sort flag to true when
                       # the user action or server run defines a none default filter or sort property.
                       # NOTE: This flag is only used for the "Show All (Remove search/sort)" system.
                       #-------------------------------------------------------------------------------------------------------------------------
};

# Capture the configuration for the pager template
SET config = {
    page_label            => CPANEL.CPVAR.pager_page_label || locale.maketext("Page:"),
    first_item_label      => CPANEL.CPVAR.pager_first_item_label || locale.maketext("First"),
    last_item_label       => CPANEL.CPVAR.pager_last_item_label || locale.maketext("Last"),
    all_label             => CPANEL.CPVAR.pager_all_label || locale.maketext("All"),
    all_title             => CPANEL.CPVAR.pager_all_title || locale.maketext("View all the items matching the current filter."),
    forget_filters_label  => CPANEL.CPVAR.pager_forget_filters_label || locale.maketext("All (Forget Search/Sort)"),
    forget_filters_title  => CPANEL.CPVAR.pager_forget_filters_title || locale.maketext("View all the accounts after removing the current filter."),
    page_title_key        => CPANEL.CPVAR.pager_page_title || "Navigate to page [numf,_1].",
    items_per_page_label  => CPANEL.CPVAR.pager_items_per_page_label || locale.maketext("Per[output,nbsp]Page:"),
    items_per_page_title  => CPANEL.CPVAR.pager_items_per_page_title || locale.maketext("Items displayed per page."),
    change_page_size_label=> CPANEL.CPVAR.pager_change_page_size_label || locale.maketext("Go"),
    show_all_option       => CPANEL.CPVAR.pager_show_all_option || DEFAULT_SHOW_ALL_OPTION,
    show_all_super_option => CPANEL.CPVAR.pager_show_all_super_option || DEFAULT_SHOW_ALL_SUPER_OPTION,
    max_items_per_page    => max_items_per_page,
    show_page_size_sel    => CPANEL.CPVAR.pager_show_page_size_sel || DEFAULT_SHOW_PAGE_SIZE_SELECTOR,
    max_leading_pages     => CPANEL.CPVAR.pager_max_leading_pages || MAX_LEADING_PAGES,
    max_trailing_pages    => CPANEL.CPVAR.pager_max_trailing_pages || MAX_TRAILING_PAGES,
    paged_label           => CPANEL.CPVAR.pager_paged_label || locale.maketext("Paged"),
    paged_title_key       => CPANEL.CPVAR.pager_page_size_title_key || "View the items in sets of [numf,_1].",
    show_page_sel         => CPANEL.CPVAR.pager_show_page_sel || DEFAULT_SHOW_PAGE_SELECTOR,
};

# Force paramertized keys into the lexicon cache
SET temp = locale.maketext("Navigate to page [numf,_1].", 1);
SET temp = locale.maketext("View the items in sets of [numf,_1].", 1);

# Calculate the paging window.
SET first_leading_page = (((data.page - config.max_leading_pages) > 0) ? (data.page - config.max_leading_pages) : 1);
SET last_trailing_page = (((data.page + config.max_trailing_pages) <= data.pagecount) ? (data.page + config.max_trailing_pages) : data.pagecount);

-%]

<div class="pager-container">
    <div class="pager-c1">
        <div class="pager-c2">
            <div>
                [% IF config.show_page_sel %]
                <span class="pager-page-selector">
                    <span class="pager-page-item pager-page-item-label">[% config.page_label %]</span>
                    [%- IF data.page == 1 || data.page == 'all' -%]
                    <span class="pager-page-item pager-page-select-disabled pager-page-action">
                        <span>[% config.first_item_label %]</span>
                    </span>
                    [%- ELSE -%]
                    <span class="pager-page-item pager-page-select pager-page-action" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',1, 1, 0);">
                        <a id="[%data.scope%]-navigate-first" href="javascript:void(0)" title="[% locale.makevar(config.page_title_key, 1) %]" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',1, 1, 0);">[% config.first_item_label %]</a>
                    </span>
                    [%- END -%]
                    [%- IF (data.page - config.max_leading_pages > 1) %]
                    <span class="pager-page-item pager-ellipse">
                        <span>&hellip;</span>
                    </span>
                    [%- END -%]
                    [%- SET page = first_leading_page;
                        WHILE page <= last_trailing_page;
                          SET selected = (page == data.page);
                          IF (page >= first_leading_page) && (page <= last_trailing_page);
                            IF data.page == 'all' -%]
                    <span class="pager-page-item pager-page-select-disabled pager-page-action">
                        <span>[% page %]</span>
                    </span>
                            [%- ELSE -%]
                    <span class="pager-page-item[%- IF selected -%] pager-page-selected[%- END -%] pager-page-select" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',[% ((page - 1) * data.perpage) + 1 %], [% page %], [% page - 1 %]);">
                        <a id="[% data.scope %]-navigate-[% page %]" href="javascript:void(0)" title="[% locale.makevar(config.page_title_key, page) %]" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',[% ((page - 1) * data.perpage) + 1 %], [% page %], [% page - 1 %]);">[% page %]</a>
                    </span>
                            [%- END -%]
                    [%-   END;
                          SET page = page + 1; -%]
                    [%- END -%]

                    [%- IF ((data.page + config.max_trailing_pages) < data.pagecount) %]
                    <span class="pager-page-item pager-ellipse">
                        <span>&hellip;</span>
                    </span>
                    [%- END -%]

                    [% IF data.page == data.pagecount || data.page == 'all' || data.matches == 0 %]
                    <span class="pager-page-item pager-page-select-disabled pager-page-action">
                        <span>[% config.last_item_label %]</span>
                    </span>
                    [% ELSE %]
                    <span class="pager-page-item pager-page-select pager-page-action" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',[% ((data.pagecount - 1) * data.perpage) + 1 %], [% data.pagecount %], [% data.pagecount - 1 %]);">
                        <a id="[%data.scope%]-navigate-last" href="javascript:void(0)" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',[% ((data.pagecount - 1) * data.perpage) + 1 %], [% data.pagecount %], [% data.pagecount - 1 %]);" title="[% locale.makevar(config.page_title_key, "${data.pagecount}") %]">[% config.last_item_label%]</a>
                    </span>
                    [% END %]

                    [% IF config.show_all_option %]
                    [% IF data.page == 'all' %]
                    <span class="pgitempgsel pager-page-action" >
                        <a id="[%data.scope%]-navigate-paged" href="javascript:void(0)" onclick="return CPANEL.ui.widgets.pager.fireGoToPage('[%data.scope%]',1, 1, 0);" title='[% locale.makevar(config.paged_title_key, "${data.perpage}")%]'>[% config.paged_label %]</a>
                    </span>
                    [% END %]
                    <span class="[% IF data.all_selected %]pager-page-selected [% END %]pager-page-item pager-page-select pager-page-action" >
                        <a id="[%data.scope%]-navigate-all-with-filter" href="javascript:void(0)" onclick="return fireShowAll('[%data.scope%]', false /* USE FILTERS */);" title="[% config.all_title %]">[% config.all_label %]</a>
                    </span>
                    [% IF config.show_all_super_option && data.has_search_sort %]
                    <span class="pager-page-item pager-page-select pager-page-action" >
                        <a id="[%data.scope%]-navigate-all" href="javascript:void(0)" onclick="return fireShowAll('[%data.scope%]', true /* NO FILTERS */);" title="[% config.forget_filters_title %]">[% config.forget_filters_label %]</a>
                    </span>
                    [% END %]
                    [% END %]
                    <span class="pager-page-item">&nbsp;</span>
                </span>
                [% END %]
                [% IF config.show_page_size_sel %]
                <span class="pager-page-size-selector">
                    <form onsubmit="CPANEL.ui.widgets.pager.fireChangePageSize('[% data.scope %]', YAHOO.util.Dom.get('[%data.scope%]-page-itemsperpage').value, true); return false;" style="display:inline">
                    <label for="[%data.scope%]-page-itemsperpage" title="[% config.items_per_page_title %]" [% IF data.page == 'all' %]class="disabled"[% END %]>[% config.items_per_page_label %]</label>
                    <input id="[%data.scope%]-page-itemsperpage" onchange="return CPANEL.ui.widgets.pager.fireChangePageSize('[% data.scope %]', this.value, false);" type="text" name="itemsperpage" value="[% data.perpage %]" [% IF data.page == 'all' %]disabled="disabled"[% END %] />
                    </form>
                    <button id="[%data.scope%]-page-itemsperpage-button" class="input-button" onclick="return CPANEL.ui.widgets.pager.fireChangePageSize('[% data.scope %]', YAHOO.util.Dom.get('[%data.scope%]-page-itemsperpage').value, true);">[% config.change_page_size_label %]</button>
                </span>
                [% END %]
            </div>
        </div>
    </div>
</div>

<script type="text/javascript">
(function(CPANEL) {
    YAHOO.util.Event.onDOMReady( function() {
        // Setup all the parameters from the form
        var params = {};
        [% FOREACH pair IN CPANEL.FORM.pairs %]
        params[[% pair.key.json() %]] = [% pair.value.json() %];
        [% END %]

        // Configure the ones important for paging to match the data set conditions
        params['api2_paginate_start'] = [% ((data.page - 1) * data.perpage) + 1 %];
        params['page'] = [% data.page %];
        params['skip'] = [% data.skip - 1 %];
        params['api2_sort_column'] = [% data.sortcolumn.json() %];
        params['api2_sort_reverse'] = [% data.sortrev.json() %];
        params['itemsperpage'] = [% data.perpage.json() %];
        params['searchregex'] = [% data.search.json() %];

        // Initialize the pager
        CPANEL.ui.widgets.pager.initialize('[% data.scope %]', null, params);
    });
})(window["CPANEL"]);
</script>
Back to Directory File Manager