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): ...@@ -349,6 +349,19 @@ class MenuItem(object):
return [c for c in self._children if c.is_accessible()] 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): class Admin(object):
""" """
Collection of the views. Also manages menu structure. Collection of the views. Also manages menu structure.
...@@ -385,6 +398,7 @@ class Admin(object): ...@@ -385,6 +398,7 @@ class Admin(object):
self._views = [] self._views = []
self._menu = [] self._menu = []
self._menu_categories = dict() self._menu_categories = dict()
self._menu_links = []
if name is None: if name is None:
name = 'Admin' name = 'Admin'
...@@ -420,6 +434,15 @@ class Admin(object): ...@@ -420,6 +434,15 @@ class Admin(object):
self.app.register_blueprint(view.create_blueprint(self)) self.app.register_blueprint(view.create_blueprint(self))
self._add_view_to_menu(view) 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): def locale_selector(self, f):
""" """
Installs locale selector for current ``Admin`` instance. Installs locale selector for current ``Admin`` instance.
...@@ -509,3 +532,9 @@ class Admin(object): ...@@ -509,3 +532,9 @@ class Admin(object):
Return menu hierarchy. Return menu hierarchy.
""" """
return self._menu return self._menu
def menu_links(self):
"""
Return menu links.
"""
return self._menu_links
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
<a class="dropdown-toggle" data-toggle="dropdown" href="#">{{ item.name }}<b class="caret"></b></a> <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{ item.name }}<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
{% for child in children %} {% for child in children %}
{% if child.is_active(admin_view) %}<li class="active">{% else %}<li>{% endif %} {% if child.is_active(admin_view) %}<li class="active">{% else %}<li>{% endif %}
<a href="{{ child.get_url() }}">{{ child.name }}</a> <a href="{{ child.get_url() }}">{{ child.name }}</a>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
</li> </li>
...@@ -48,6 +48,13 @@ ...@@ -48,6 +48,13 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</ul> </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> </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