Commits

Artem Egorkine  committed 1ee61f5

Extend pages navigation widget to mark the current page selected.
* zine/templates/widgets/pages_navigation.html:
Use the current request path and the url_for(page) to determine
the current open page and set the "current" class on the page
navigation widget "ul>li".
* zine/application.py:
Make url_for() honour "_external" keyword attribute even if the
endpoint object provides its own "get_url_values()" function.

  • Participants
  • Parent commits e204263
  • Branches page-reordering

Comments (0)

Files changed (2)

File zine/application.py

     `_external`
         If set to `True` the URL will be generated with the full server name
         and `http://` prefix.
+
+    If `endpoint` is an object and has a `get_url_values()` function defined,
+    that function, not the application URL reslover, will be used to lookup
+    the endpoint URL. In this case, `_anchor` keyword is ignored, but
+    `_external` still applies.
     """
     if hasattr(endpoint, 'get_url_values'):
         rv = endpoint.get_url_values()
         if rv is not None:
             if isinstance(rv, basestring):
-                return make_external_url(rv)
+                external = args.pop('_external', False)
+                if external:
+                    rv = make_external_url(rv)
+                return rv
             endpoint, updated_args = rv
             args.update(updated_args)
     anchor = args.pop('_anchor', None)

File zine/templates/widgets/pages_navigation.html

   {%- if widget.pages %}
   <ul class="pages-navigation">
   {%- for item in widget.pages %}
-    <li><a href="{{ url_for(item)|e }}">{{ item.title|e }}</a></li>
+    <li {%- if request.path == '/'+url_for(item) %} class="current"{% endif %}>
+      <a href="{{ url_for(item)|e }}">{{ item.title|e }}</a>
+    </li>
   {%- endfor %}
   </ul>
   {%- endif %}