Commit de295227 authored by Pavel Tyslyatsky's avatar Pavel Tyslyatsky

#154: Added ability to insert external links to menu on all pages.

parent 3920b966
......@@ -349,6 +349,19 @@ class MenuItem(object):
return [c for c in self._children if c.is_accessible()]
class MenuLink(object):
"""
Menu additional links hierarchy.
"""
def __init__(self, name, url=None, view=None):
self.name = name
self.url = url
self.view = view
def get_url(self):
return self.url or url_for(self.view)
class Admin(object):
"""
Collection of the views. Also manages menu structure.
......@@ -385,6 +398,7 @@ class Admin(object):
self._views = []
self._menu = []
self._menu_categories = dict()
self._menu_links = []
if name is None:
name = 'Admin'
......@@ -420,6 +434,15 @@ class Admin(object):
self.app.register_blueprint(view.create_blueprint(self))
self._add_view_to_menu(view)
def add_link(self, link):
"""
Add link to menu links collection.
:param link:
Link to add.
"""
self._menu_links.append(link)
def locale_selector(self, f):
"""
Installs locale selector for current ``Admin`` instance.
......@@ -509,3 +532,9 @@ class Admin(object):
Return menu hierarchy.
"""
return self._menu
def menu_links(self):
"""
Return menu links.
"""
return self._menu_links
......@@ -32,9 +32,9 @@
<a class="dropdown-toggle" data-toggle="dropdown" href="#">{{ item.name }}<b class="caret"></b></a>
<ul class="dropdown-menu">
{% for child in children %}
{% if child.is_active(admin_view) %}<li class="active">{% else %}<li>{% endif %}
<a href="{{ child.get_url() }}">{{ child.name }}</a>
</li>
{% if child.is_active(admin_view) %}<li class="active">{% else %}<li>{% endif %}
<a href="{{ child.get_url() }}">{{ child.name }}</a>
</li>
{% endfor %}
</ul>
</li>
......@@ -48,6 +48,13 @@
{% endif %}
{% endfor %}
</ul>
<ul class="nav pull-right">
{% for item in admin_view.admin.menu_links() %}
<li>
<a href="{{ item.get_url() }}">{{ item.name }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment