Artem Egorkine avatar 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.

Comments (0)

Files changed (2)

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)

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 %}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.