- roots = cache_tree_children(Navigation.objects.closest_navigation(instance))
- bits = [self._render_node(context, node, request) for node in roots]
+
+ try:
+ items = instance.navigation[self.key]
+ except:
+ return settings.TEMPLATE_STRING_IF_INVALID
+
+ bits = []
+
+ # loosely based on django.template.defaulttags.ForNode.render
+ # This is a repetition of the stuff that happens above. We should eliminate that somehow.
+ loop_dict = context['navloop'] = {'parentloop':{}}
+ len_items = len(items)
+ for i, item in enumerate(items):
+ loop_dict['counter0'] = i
+ loop_dict['counter'] = i + 1
+ loop_dict['revcounter'] = len_items - i
+ loop_dict['revcounter0'] = len_items - i - 1
+ loop_dict['first'] = (i == 0)
+ loop_dict['last'] = (i == len_items - 1)
+ bits.append(self._render_node(context, item, request))
+