diff options
author | michal <michal.sipa@mirumee.com> | 2017-10-06 14:22:50 +0200 |
---|---|---|
committer | michal <michal.sipa@mirumee.com> | 2017-10-06 14:22:50 +0200 |
commit | 0ba195f2efdacb674c8ff7affbea353abbe2a936 (patch) | |
tree | 28ea4f3afb583e5f44a202a779aa655b8f1d19ce | |
parent | 0d11f7d0285b2dca7c7539049d01eafd8da6b99e (diff) | |
download | saleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.tar.gz saleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.tar.bz2 saleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.zip |
Further refactoring of sort_by and sort_menu
Combine sort_by and sort_menu to one template and templatetag.
Move templatetags to shop.py.
Delete sort_menu.py and _sort_menu.html.
Update index.html with new templatetags.
-rw-r--r-- | saleor/core/templatetags/shop.py | 21 | ||||
-rw-r--r-- | saleor/product/templatetags/sort_by.py | 11 | ||||
-rw-r--r-- | saleor/product/templatetags/sort_menu.py | 17 | ||||
-rw-r--r-- | templates/category/_sort_by.html | 66 | ||||
-rw-r--r-- | templates/category/_sort_menu.html | 30 | ||||
-rw-r--r-- | templates/category/index.html | 3 |
6 files changed, 65 insertions, 83 deletions
diff --git a/saleor/core/templatetags/shop.py b/saleor/core/templatetags/shop.py index c1fdacb5..78273c64 100644 --- a/saleor/core/templatetags/shop.py +++ b/saleor/core/templatetags/shop.py @@ -7,6 +7,8 @@ except ImportError: from django.template import Library from django.utils.http import urlencode +from ...product.filters import DEFAULT_SORT + register = Library() @@ -18,8 +20,23 @@ def slice(items, group_size=1): @register.simple_tag(takes_context=True) -def get_sort_by_url(context, field): +def get_sort_by_url(context, field, descending=False): request = context['request'] request_get = request.GET.dict() - request_get['sort_by'] = field + if descending: + request_get['sort_by'] = '-' + field + else: + request_get['sort_by'] = field return '%s?%s' % (request.path, urlencode(request_get)) + + +@register.inclusion_tag('category/_sort_by.html', takes_context=True) +def sort_by(context, attributes): + ctx = { + 'request': context['request'], + 'sort_by': (context['request'].GET.get('sort_by', DEFAULT_SORT) + .strip('-')), + 'sort_by_choices': attributes, + 'arrow_down': (context['request'].GET.get('sort_by', DEFAULT_SORT) + .startswith('-'))} + return ctx diff --git a/saleor/product/templatetags/sort_by.py b/saleor/product/templatetags/sort_by.py deleted file mode 100644 index 58395c07..00000000 --- a/saleor/product/templatetags/sort_by.py +++ /dev/null @@ -1,11 +0,0 @@ -from django import template - -register = template.Library() - - -@register.inclusion_tag('category/_sort_by.html', takes_context=True) -def sort_by(context, attribute): - return {'request': context['request'], - 'label': attribute['label'], - 'ascending_attribute': attribute['value'], - 'descending_attribute': '-' + str(attribute['value'])} diff --git a/saleor/product/templatetags/sort_menu.py b/saleor/product/templatetags/sort_menu.py deleted file mode 100644 index d538f055..00000000 --- a/saleor/product/templatetags/sort_menu.py +++ /dev/null @@ -1,17 +0,0 @@ -from django import template - -from ..filters import DEFAULT_SORT - -register = template.Library() - - -@register.inclusion_tag('category/_sort_menu.html', takes_context=True) -def sort_menu(context, attributes): - ctx = { - 'request': context['request'], - 'sort_by': (context['request'].GET.get('sort_by', DEFAULT_SORT) - .strip('-')), - 'sort_by_choices': attributes, - 'arrow_down': (context['request'].GET.get('sort_by', DEFAULT_SORT) - .startswith('-'))} - return ctx diff --git a/templates/category/_sort_by.html b/templates/category/_sort_by.html index e0e4cf88..4f2f9a8c 100644 --- a/templates/category/_sort_by.html +++ b/templates/category/_sort_by.html @@ -1,27 +1,51 @@ +{% load staticfiles %} {% load i18n %} {% load shop %} -{% load staticfiles %} -<li> - <div class="row"> - <div class="col-6"> - Sort by: <strong>{{ label }}</strong> +<div class="sort-by"> + <div class="click-area d-none"></div> + <button class="btn btn-link"> + <div> + <span> + Sort by: + <strong> + {{ sort_by }} + </strong> + </span> + <div class="sort-order-icon"> + {% if arrow_down %} + <svg data-src="{% static "assets/arrow_down.svg" %}"> + {% else %} + <svg data-src="{% static "assets/arrow_up.svg" %}"> + {% endif %} + </div> </div> - <div class="col-6"> - <div> - <a href="{% get_sort_by_url ascending_attribute %}"> - <span>{% trans 'ascending' context 'sort by option' %}</span> - <div class="sort-order-icon float-right"> - <img src="{% static "assets/arrow_up.svg" %}"> + </button> + <ul class="sort-list d-none"> + {% for choice in sort_by_choices %} + <li> + <div class="row"> + <div class="col-6"> + Sort by: <strong>{{ choice.label }}</strong> </div> - </a> - <a href="{% get_sort_by_url descending_attribute %}"> - <span>{% trans 'descending' context 'sort by option' %}</span> - <div class="sort-order-icon float-right"> - <img src="{% static "assets/arrow_down.svg" %}"> + <div class="col-6"> + <div> + <a href="{% get_sort_by_url choice.value %}"> + <span>{% trans 'ascending' context 'sort by option' %}</span> + <div class="sort-order-icon float-right"> + <img src="{% static "assets/arrow_up.svg" %}"> + </div> + </a> + <a href="{% get_sort_by_url choice.value descending=True %}"> + <span>{% trans 'descending' context 'sort by option' %}</span> + <div class="sort-order-icon float-right"> + <img src="{% static "assets/arrow_down.svg" %}"> + </div> + </a> + </div> </div> - </a> - </div> - </div> - </div> -</li> + </div> + </li> + {% endfor %} + </ul> +</div> diff --git a/templates/category/_sort_menu.html b/templates/category/_sort_menu.html deleted file mode 100644 index 420474ab..00000000 --- a/templates/category/_sort_menu.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load sort_by from sort_by %} -{% load staticfiles %} -{% load i18n %} -{% load shop %} - -<div class="sort-by"> - <div class="click-area d-none"></div> - <button class="btn btn-link"> - <div> - <span> - Sort by: - <strong> - {{ sort_by }} - </strong> - </span> - <div class="sort-order-icon"> - {% if arrow_down %} - <svg data-src="{% static "assets/arrow_down.svg" %}"> - {% else %} - <svg data-src="{% static "assets/arrow_up.svg" %}"> - {% endif %} - </div> - </div> - </button> - <ul class="sort-list d-none"> - {% for choice in sort_by_choices %} - {% sort_by choice %} - {% endfor %} - </ul> -</div> diff --git a/templates/category/index.html b/templates/category/index.html index 45be775c..4c8a1343 100644 --- a/templates/category/index.html +++ b/templates/category/index.html @@ -3,7 +3,6 @@ {% load i18n %} {% load shop %} {% load staticfiles %} -{% load sort_menu from sort_menu %} {% load render_bundle from webpack_loader %} {% load prices_i18n %} @@ -45,7 +44,7 @@ <span class="filters-menu__label d-sm-none">Filters</span> </div> <div class="col-6 col-md-10 col-lg-6"> - {% sort_menu sort_by_choices %} + {% sort_by sort_by_choices %} </div> </div> </div> |