Add new split move index navigation.

This commit is contained in:
Roberto Rosario
2016-03-15 04:11:19 -04:00
parent 3d36f1b828
commit 1a20d93e4c
8 changed files with 105 additions and 72 deletions

View File

@@ -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='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' * level,
text=escape(element)
)
)
result.append('</div>')
return mark_safe(''.join(result))