Nurzhan Nogerbek
Nurzhan Nogerbek

Reputation: 5246

Customize show_more tag in django-endless-pagination?

I use pagination on scroll by Django EL(Endless) Pagination library in my project.

By default show_more tag show loading word. I want customize it. I use next code but it work incorrect. It show me 9 icons and at the end don't disappear. I am little bit confused. How to fix it?

settings.py:

EL_PAGINATION_LOADING = """<i class='fa fa-cog fa-spin fa-3x fa-fw text-info text-justify endless_loading'>"""

CURRENT SOLUTION:

I found the working solution but I am not sure that its best and clear way to do that.

custom_tags.py:

from django import template
from django.utils.encoding import iri_to_uri
from el_pagination import (settings, utils)

register = template.Library()

@register.inclusion_tag('documents/show_more_info.html', takes_context=True)
def show_more_info(context, label=None, loading=settings.LOADING, class_name=None):
    data = utils.get_data_from_context(context)
    page = data['page']
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    return {}

documents/show_more_info.html:

{% load i18n %}
{% if querystring %}
    <div class="endless_container">
        <a class="endless_more{% if class_name %} {{ class_name }}{% endif %}" href="{{ path }}{{ querystring }}" data-el-querystring-key="{{ querystring_key }}">
            {% if label %}{{ label|safe }}{% else %}{% trans "more" %}{% endif %}
        </a>
        <div class="endless_loading" style="display: none;">
            <div class="alert alert-info infinite-loading text-center">
                <i class="fa fa-cog fa-spin fa-3x fa-fw" aria-hidden="true"></i>
            </div>
        </div>
    </div>
{% endif %}

Finally I can use show_more_info tag instead of default show_me tag.

Upvotes: 0

Views: 416

Answers (0)

Related Questions