Example #1
0
def sidebar_menu(context):

    def traverse(tree, depth=1):
        ul = htmlutils.Tag('ul', classes={
            'nav', 'nav-pills', 'nav-stacked', 'depth-' + str(depth),
        })
        yield ul.start()
        for page, children in tree:
            is_active = page.pk == calling_page.pk

            li = htmlutils.Tag('li')
            li.toggle_class('active', is_active)

            yield li.start()

            if is_active:
                yield htmlutils.tag('a', page.title, href='#')
            else:
                yield htmlutils.tag('a', page.title, href=page.url)

            if children:
                yield from traverse(children, depth=depth + 1)

            yield li.end()
        yield ul.end()

    if 'self' in context:
        calling_page = context['self']
        top_menu_page = nav.get_top_menu_page(calling_page)
        if top_menu_page:
            descendants = top_menu_page.get_descendants().live().in_menu()
            tree = treeutils.grow_tree(descendants)
            return '\n'.join(traverse(treeutils.transform(tree)))
    return ''
Example #2
0
def sidebar_menu(context):

    # pylint: disable=invalid-name
    def traverse(tree, depth=1):
        ul = htmlutils.Tag('ul',
                           classes={
                               'nav',
                               'nav-pills',
                               'nav-stacked',
                               'depth-' + str(depth),
                           })
        yield ul.start()
        for page, children in tree:
            is_active = page.pk == calling_page.pk

            li = htmlutils.Tag('li')
            li.toggle_class('active', is_active)

            yield li.start()

            if is_active:
                yield htmlutils.tag('a', page.title, href='#')
            else:
                yield htmlutils.tag('a', page.title, href=page.url)

            if children:
                yield from traverse(children, depth=depth + 1)

            yield li.end()
        yield ul.end()

    if 'self' in context:
        calling_page = context['self']
        top_menu_page = nav.get_top_menu_page(calling_page)
        if top_menu_page:
            descendants = top_menu_page.get_descendants().live().in_menu()
            tree = treeutils.grow_tree(descendants)
            return '\n'.join(traverse(treeutils.transform(tree)))
    return ''
 def test_transform(self):
     self.assertEqual(
         treeutils.transform(self.fixtures.tree_of_slugs()),
         self.fixtures.transformed_tree_of_slugs(),
     )
Example #4
0
 def test_transform(self):
     self.assertEqual(
         treeutils.transform(self.fixtures.tree_of_slugs()),
         self.fixtures.transformed_tree_of_slugs(),
     )