Add new split move index navigation.
This commit is contained in:
@@ -2,64 +2,21 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import apps
|
||||
from django.utils.html import mark_safe
|
||||
from django.utils.html import mark_safe, escape
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
|
||||
def get_instance_link(index_instance_node, text=None, simple=False):
|
||||
def get_instance_link(index_instance_node):
|
||||
"""
|
||||
Return an HTML anchor to an index instance
|
||||
Return an HTML anchor to an index node instance
|
||||
"""
|
||||
|
||||
if simple:
|
||||
# Just display the instance's value or overrided text, no
|
||||
# HTML anchor
|
||||
template = '%(value)s'
|
||||
else:
|
||||
template = '<a href="%(url)s">%(value)s</a>'
|
||||
|
||||
return template % {
|
||||
'url': index_instance_node.get_absolute_url(),
|
||||
'value': text if text else (
|
||||
index_instance_node if index_instance_node.parent else index_instance_node.index_template_node.index
|
||||
return mark_safe(
|
||||
'<a href="{url}">{text}</a>'.format(
|
||||
url=index_instance_node.get_absolute_url(),
|
||||
text=escape(index_instance_node.get_full_path())
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
def get_breadcrumbs(index_instance_node, simple=False, single_link=False, include_count=False):
|
||||
"""
|
||||
Return a joined string of HTML anchors to every index instance's
|
||||
parent from the root of the tree to the index instance
|
||||
"""
|
||||
|
||||
result = []
|
||||
if single_link:
|
||||
# Return the entire breadcrumb path as a single HTML anchor
|
||||
simple = True
|
||||
|
||||
for instance in index_instance_node.get_ancestors():
|
||||
result.append(get_instance_link(instance, simple=simple))
|
||||
|
||||
result.append(get_instance_link(index_instance_node, simple=simple))
|
||||
|
||||
output = []
|
||||
|
||||
if include_count:
|
||||
output.append('(%d)' % index_instance_node.documents.count())
|
||||
|
||||
if single_link:
|
||||
# Return the entire breadcrumb path as a single HTML anchor
|
||||
output.insert(
|
||||
0, get_instance_link(
|
||||
index_instance_node=index_instance_node, text=(
|
||||
' / '.join(result)
|
||||
)
|
||||
)
|
||||
)
|
||||
return mark_safe(' '.join(output))
|
||||
else:
|
||||
output.insert(0, ' / '.join(result))
|
||||
return mark_safe(' '.join(output))
|
||||
)
|
||||
|
||||
|
||||
def index_instance_item_link(index_instance_item):
|
||||
@@ -99,3 +56,37 @@ def node_level(node):
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def node_tree(node, user):
|
||||
result = []
|
||||
|
||||
result.append('<div class="list-group">')
|
||||
|
||||
for ancestor in node.get_ancestors(include_self=True):
|
||||
if ancestor.is_root_node():
|
||||
element = node.index()
|
||||
level = 0
|
||||
icon = 'fa fa-list-ul'
|
||||
else:
|
||||
element = ancestor
|
||||
level = getattr(element, element._mptt_meta.level_attr)
|
||||
if element.index_template_node.link_documents:
|
||||
icon = 'fa fa-folder'
|
||||
else:
|
||||
icon = 'fa fa-level-up fa-rotate-90'
|
||||
|
||||
result.append(
|
||||
'<a href="{url}" class="list-group-item {active}"><span class="badge">{count}</span><i class="{icon}"></i>{space} {text}</a>'.format(
|
||||
url=element.get_absolute_url(),
|
||||
active='active' if element == node or node.get_ancestors(include_self=True).count() == 1 else '',
|
||||
count=element.get_item_count(user=user),
|
||||
icon=icon,
|
||||
space=' ' * level,
|
||||
text=escape(element)
|
||||
)
|
||||
)
|
||||
|
||||
result.append('</div>')
|
||||
|
||||
return mark_safe(''.join(result))
|
||||
|
||||
Reference in New Issue
Block a user