pagination.html 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. {% macro _arg_url_for(endpoint, base) %}
  2. {# calls url_for() with a given endpoint and **base as the parameters,
  3. additionally passing on all keyword_arguments (may overwrite existing ones)
  4. #}
  5. {%- with kargs = base.copy(),
  6. _ = kargs.update(kwargs) -%}
  7. {{url_for(endpoint, **kargs)}}
  8. {%- endwith %}
  9. {%- endmacro %}
  10. {% macro render_pagination(pagination,
  11. endpoint=None,
  12. prev=('«')|safe,
  13. next=('»')|safe,
  14. size=None,
  15. ellipses='…',
  16. args={}
  17. )
  18. -%}
  19. {# poor man's "do": #}
  20. {% with url_args = {},
  21. _ = url_args.update(request.view_args if not endpoint else {}),
  22. __ = url_args.update(request.args if not endpoint else {}),
  23. ___ = url_args.update(args) %}
  24. {% with endpoint = endpoint or request.endpoint %}
  25. <nav>
  26. <ul class="pagination{% if size %} pagination-{{size}}{% endif %}"{{kwargs|xmlattr}}>
  27. {# prev and next are only show if a symbol has been passed. #}
  28. {% if prev != None -%}
  29. <li{% if not pagination.has_prev %} class="disabled"{% endif %}><a href="{{_arg_url_for(endpoint, url_args, page=pagination.prev_num) if pagination.has_prev else '#'}}">{{prev}}</a></li>
  30. {%- endif -%}
  31. {%- for page in pagination.iter_pages() %}
  32. {% if page %}
  33. {% if page != pagination.page %}
  34. <li><a href="{{_arg_url_for(endpoint, url_args, page=page)}}">{{page}}</a></li>
  35. {% else %}
  36. <li class="active"><a href="#">{{page}} <span class="sr-only">(current)</span></a></li>
  37. {% endif %}
  38. {% elif ellipses != None %}
  39. <li class="disabled"><a href="#">{{ellipses}}</a></li>
  40. {% endif %}
  41. {%- endfor %}
  42. {% if next != None -%}
  43. <li{% if not pagination.has_next %} class="disabled"{% endif %}><a href="{{_arg_url_for(endpoint, url_args, page=pagination.next_num) if pagination.has_next else '#'}}">{{next}}</a></li>
  44. {%- endif -%}
  45. </ul>
  46. </nav>
  47. {% endwith %}
  48. {% endwith %}
  49. {% endmacro %}