def get_nodes(self, request):
        """
        menus for all users or potential users to do account management
        """
        nodes = []

        nodes.append(
            NavigationNode(_("Your Account"),
                           "",
                           1,
                           attr={'visible_for_anonymous': False}))
        nodes.append(
            NavigationNode(_("Your Expo"),
                           reverse('gbe:home'),
                           2,
                           1,
                           attr={'visible_for_anonymous': False}))
        nodes.append(
            NavigationNode(_("Update Profile"),
                           reverse('gbe:profile_update'),
                           3,
                           1,
                           attr={'visible_for_anonymous': False}))
        nodes.append(
            NavigationNode(_("Logout"),
                           reverse('gbe:logout'),
                           4,
                           1,
                           attr={'visible_for_anonymous': False}))
        return nodes
예제 #2
0
    def get_nodes(self, request):
        ret = [
            NavigationNode(_("Log in"),
                           reverse('login'),
                           1,
                           attr={
                               'visible_for_authenticated': False,
                               'pull_right': True,
                           }),
            NavigationNode(request.user.username,
                           "",
                           2,
                           attr={
                               'visible_for_anonymous': False,
                               'pull_right': True,
                           })
        ]

        if request.user.is_superuser:
            ret.append(
                NavigationNode(_("Administration"),
                               reverse('full-admin:index'),
                               3,
                               2,
                               attr={'visible_for_anonymous': False}))

        ret.append(
            NavigationNode(_("Log out"),
                           reverse('logout'),
                           4,
                           2,
                           attr={'visible_for_anonymous': False}), )

        return ret
예제 #3
0
    def get_nodes(self, request):
        """Return menu's node for Custom"""
        nodes = []
        nodes.append(
            NavigationNode(_('Categories'), reverse('zinnia_category_list'),
                           'categories'))

        archives = []
        attributes = {'hidden': False}

        for entry in Entry.published.all():
            year = entry.creation_date.strftime('%Y')
            month = entry.creation_date.strftime('%m')
            month_text = format(entry.creation_date, 'b').capitalize()
            day = entry.creation_date.strftime('%d')

            key_archive_year = 'year-%s' % year
            key_archive_month = 'month-%s-%s' % (year, month)
            key_archive_day = 'day-%s-%s-%s' % (year, month, day)

            if not key_archive_year in archives:
                nodes.append(
                    NavigationNode(year,
                                   reverse('zinnia_entry_archive_year',
                                           args=[year]),
                                   key_archive_year,
                                   attr=attributes))
                archives.append(key_archive_year)

        return nodes
예제 #4
0
    def get_nodes(self, request):
        nodes = []
        attributes = {'hidden': HIDE_CATEGORIES_MENU}
        categories_menu_id = 'blog-categories'
        nodes.append(
            NavigationNode(_('Categories'),
                           reverse('aldryn_blog:category-list'),
                           categories_menu_id,
                           attr=attributes))

        language = get_language_from_request(request)
        categories = Post.published.get_categories(language)
        for category in categories:
            category_name = category.lazy_translation_getter('name')
            category_slug = category.lazy_translation_getter('slug')
            category_key = 'blog-category-%s' % category_slug

            nodes.append(
                NavigationNode(category_name,
                               reverse('aldryn_blog:category-posts',
                                       kwargs={
                                           'category': category_slug,
                                       }),
                               category_key,
                               categories_menu_id,
                               attr=attributes))

        return nodes
예제 #5
0
    def get_nodes(self, request):
        nodes = []
        attributes = {'hidden': HIDE_AUTHORS_MENU}
        authors_menu_id = 'blog-authors'
        nodes.append(
            NavigationNode(_('Authors'),
                           reverse('aldryn_blog:author-list'),
                           authors_menu_id,
                           attr=attributes))

        authors = generate_slugs(get_blog_authors())
        for author in authors:
            author_name = author.get_full_name()
            author_slug = author.slug
            author_key = 'blog-author-%s' % author_slug

            nodes.append(
                NavigationNode(author_name,
                               reverse('aldryn_blog:author-posts',
                                       kwargs={
                                           'slug': author_slug,
                                       }),
                               author_key,
                               authors_menu_id,
                               attr=attributes))

        return nodes
예제 #6
0
 def get_nodes(self, request):
     nodes = list()
     nodes.append(
         NavigationNode('static fresh', '/static/fresh/', 'static fresh'))
     nodes.append(
         NavigationNode('sample2-root', reverse('sample2-root'),
                        'sample2-root'))
     return nodes
예제 #7
0
 def get_nodes(self, request):
     archive = NavigationNode(_('Archive'), '#', 0)
     for event in Event.objects.filter(end_time__lt=timezone.now()).exclude(
             id__exact=settings.EVENT_ID).order_by('start_time'):
         archive.children.append(
             NavigationNode(event.title, event.get_absolute_url(),
                            event.id))
     return [archive]
예제 #8
0
 def get_nodes(self, request):
     nodes = [
         NavigationNode(_('Previous Events'),
                        reverse('en:events_event_list_past'), 1),
         NavigationNode(_('Acres in Pictures'),
                        reverse('en:photos_photoalbum_list'), 2),
     ]
     return nodes
예제 #9
0
    def get_nodes(self, request):
        nodes = []
        if not CMSPLUGIN_NEWS3_ENABLE_DROPDOWN_MENU:
            return nodes
        try:
            years = months = days = slugs = []
            for item in News3.published.all():
                pub_date = item.pub_date

                if not pub_date.year in years:
                    years.append(pub_date.year)
                    nodes.append(
                        NavigationNode(
                            pub_date.year,
                            reverse('cmsplugin_news3:news3_archive_year',
                                    kwargs={'year': pub_date.year}),
                            pub_date.year))
                    months = []

                if not pub_date.month in months:
                    months.append(pub_date.month)
                    nodes.append(
                        NavigationNode(
                            datetime.strftime(pub_date, '%B'),
                            reverse('cmsplugin_news3:news3_archive_month',
                                    kwargs={
                                        'year': pub_date.year,
                                        'month':
                                        datetime.strftime(pub_date, '%m'),
                                    }), datetime.strftime(pub_date, '%m'),
                            pub_date.year))
                    days = []

                if not pub_date.day in days:
                    days.append(pub_date.day)
                    nodes.append(
                        NavigationNode(
                            datetime.strftime(pub_date, '%d'),
                            reverse('cmsplugin_news3:news3_archive_day',
                                    kwargs={
                                        'year': pub_date.year,
                                        'month':
                                        datetime.strftime(pub_date, '%m'),
                                        'day':
                                        datetime.strftime(pub_date, '%d'),
                                    }), datetime.strftime(pub_date, '%d'),
                            datetime.strftime(pub_date, '%m')))
                    slugs = []

                if not item.slug in slugs:
                    slugs.append(item.slug)
                    nodes.append(
                        NavigationNode(item.title, item.get_absolute_url(),
                                       item.pk,
                                       datetime.strftime(pub_date, '%d')))
        except:
            pass
        return nodes
예제 #10
0
    def get_nodes(self, request):
        nodes = []

        node = NavigationNode(_('Week'), '#', 7202)
        nodes.append(node)
        node = NavigationNode(_('Two weeks'), '#', 7203)
        nodes.append(node)

        return nodes
예제 #11
0
    def get_nodes(self, request):
        nodes   = []
        compare = NavigationNode(_('compare'), reverse('compare'), 1, attr={'priority':1002})
        candidates  = NavigationNode(_('candidates'), reverse('candidates'), 2,   attr={'priority':1001})

        if not settings.CANDIDATE_LIST_SHOW_AFTER or settings.CANDIDATE_LIST_SHOW_AFTER <= datetime.now():
            nodes.append(candidates)
            nodes.append(compare)
        return nodes
예제 #12
0
 def get_nodes(self, request):
     nodes = []
     if request.user.is_authenticated():
         if utils.can_review_proposal(request.user, None) or request.user.is_staff:
             nodes.append(NavigationNode(_("Reviewable proposals"), reverse('reviews-available-proposals'), 'reviews-available'))
         if utils.can_review_proposal(request.user):
             nodes.append(NavigationNode(_("My reviews"), reverse('reviews-my-reviews'), 'reviews-mine'))
         nodes.append(NavigationNode(_("My proposals"), reverse('reviews-my-proposals'), 'reviews-my-proposals'))
     return nodes
예제 #13
0
 def get_nodes(self, req):
     nodes = []
     nodes.append(
         NavigationNode('Geometric',
                        reverse('problems.views.subindex_geometric'), 0))
     nodes.append(
         NavigationNode('Control',
                        reverse('problems.views.subindex_control'), 0))
     return nodes
예제 #14
0
파일: menu.py 프로젝트: techdubb/596acres
 def get_nodes(self, request):
     nodes = [
         NavigationNode(_('Come to an Upcoming Event'),
                        reverse('en:events_event_list'), 3),
         NavigationNode(
             _('Work With Us'),
             reverse('blog_archive_tagged_paginated',
                     kwargs={'tag': 'opportunities'}), 4),
     ]
     return nodes
예제 #15
0
    def get_nodes(self, request):
        nodes = [
            NavigationNode("General Search", reverse("bibliography_search"), 1)
        ]
        if request.user.has_perm("bibliography.add_primarysource") and \
           request.user.has_perm("bibliography.change_primarysource"):
            nodes.append(
                NavigationNode("Manage", reverse("bibliography_manage"), 2))

        return nodes
예제 #16
0
 def get_nodes(self, request):
     """Return menu's node for metatypes"""
     nodes = []
     nodes.append(NavigationNode(_('Metatypes'),
                                 reverse('gstudio_metatype_list'),
                                 'metatypes'))
     for metatype in Metatype.objects.all():
         nodes.append(NavigationNode(metatype.title,
                                     metatype.get_absolute_url(),
                                     metatype.pk, 'metatypes'))
     return nodes
예제 #17
0
 def get_nodes(self, request):
     """Return menu's node for objecttypes"""
     nodes = []
     nodes.append(NavigationNode(_('Objecttypes'),
                                 reverse('objectapp_Objecttype_list'),
                                 'objecttypes'))
     for Objecttype in Objecttype.objects.all():
         nodes.append(NavigationNode(Objecttype.title,
                                     Objecttype.get_absolute_url(),
                                     Objecttype.pk, 'objecttypes'))
     return nodes
예제 #18
0
 def get_nodes(self, request):
     nodes = []
     n = NavigationNode(_('Home'), "/", 1)
     n2 = NavigationNode(_('members'), "/members/", 2)
     ##        n3 = NavigationNode(_('sample account page'), "/hello/", 3)
     ##        n4 = NavigationNode(_('sample my profile page'), "/hello/world/", 4, 3)
     nodes.append(n)
     nodes.append(n2)
     ##        nodes.append(n3)
     ##        nodes.append(n4)
     return nodes
예제 #19
0
파일: menu.py 프로젝트: techdubb/596acres
 def get_nodes(self, request):
     nodes = []
     nodes.append(NavigationNode(_('New Tools'),
                                 self._get_tag_url('tool updates'), 1))
     nodes.append(NavigationNode(_('Announcements'),
                                 self._get_tag_url('announcements'), 2))
     nodes.append(NavigationNode(_('News from the Acres'),
                                 reverse('news_newsletter_list'), 2))
     nodes.append(NavigationNode(_('Archive'),
                                 reverse('blog_archive_index'), 2))
     return nodes
예제 #20
0
파일: menu.py 프로젝트: ppp0/openbroadcast
    def get_nodes(self, request):
        nodes = []
        """"""
        node = NavigationNode(_('Day'), '#', 7201)
        nodes.append(node)
        node = NavigationNode(_('Week'), '#', 7202)
        nodes.append(node)
        node = NavigationNode(_('Month'), '#', 7203)
        nodes.append(node)

        return nodes
예제 #21
0
 def get_nodes(self, request):
     nodes = []
     n = NavigationNode('static2 root page', "/fresh/", 1)
     n2 = NavigationNode('static2 settings page', "/bye/", 2)
     n3 = NavigationNode('static2 account page', "/hello/", 3)
     n4 = NavigationNode('static2 my profile page', "/hello/world/", 4, 3)
     nodes.append(n)
     nodes.append(n2)
     nodes.append(n3)
     nodes.append(n4)
     return nodes
예제 #22
0
파일: menu.py 프로젝트: kremazar/Django
 def get_nodes(self, request):
     nodes = []
     n = NavigationNode(_('sample root page'), "/", 1)
     n2 = NavigationNode(_('sample settings page'), "/bye/", 2)
     n3 = NavigationNode(_('sample account page'), "/hello/", 3)
     n4 = NavigationNode(_('sample my profile page'), "/hello/world/", 4, 3)
     nodes.append(n)
     nodes.append(n2)
     nodes.append(n3)
     nodes.append(n4)
     return nodes
예제 #23
0
 def get_nodes(self, request):
     """Return menu's node for categories"""
     nodes = []
     nodes.append(
         NavigationNode(_('Categories'), reverse('zinnia_category_list'),
                        'categories'))
     for category in Category.objects.all():
         nodes.append(
             NavigationNode(category.title, category.get_absolute_url(),
                            category.pk, 'categories'))
     return nodes
예제 #24
0
파일: menu.py 프로젝트: zhiqunq/django-cms
 def _get_nodes(self, path='/'):
     node1 = NavigationNode('1', '/1/', 1)
     node2 = NavigationNode('2', '/2/', 2, 1)
     node3 = NavigationNode('3', '/3/', 3, 2)
     node4 = NavigationNode('4', '/4/', 4, 2)
     node5 = NavigationNode('5', '/5/', 5)
     nodes = [node1, node2, node3, node4, node5]
     tree = _build_nodes_inner_for_one_menu([n for n in nodes], "test")
     request = self.get_request(path)
     menu_pool.apply_modifiers(tree, request)
     return tree, nodes
예제 #25
0
파일: menu.py 프로젝트: PhiTheta/ISON
 def get_nodes(self, request):
     """Return menu's node for tags"""
     nodes = []
     nodes.append(
         NavigationNode(_('Tags'), reverse('objectapp_tag_list'), 'tags'))
     for tag in tags_published():
         nodes.append(
             NavigationNode(
                 tag.name, reverse('objectapp_tag_detail', args=[tag.name]),
                 tag.pk, 'tags'))
     return nodes
예제 #26
0
파일: menu.py 프로젝트: ppp0/openbroadcast
    def get_nodes(self, request):
        nodes = []
        """"""
        node = NavigationNode(_('My Exports'), reverse('exporter-export-list'),
                              191)
        nodes.append(node)
        """"""
        node = NavigationNode(_('Help'), reverse('exporter-export-list'), 192)
        nodes.append(node)

        return nodes
예제 #27
0
    def get_nodes(self, request):
        nodes = []

        language = get_language_from_request(request, check_path=True)

        categories_menu = False
        posts_menu = False
        config = False
        if hasattr(self, 'instance') and self.instance:
            config = BlogConfig.objects.get(namespace=self.instance.application_namespace)
        if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_CATEGORIES):
            categories_menu = True
        if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_POSTS):
            posts_menu = True

        if categories_menu:
            categories = BlogCategory.objects
            if config:
                categories = categories.namespace(self.instance.application_namespace)
            categories = categories.active_translations(language).distinct()
            categories = categories.order_by('parent__id', 'translations__name')
            for category in categories:
                node = NavigationNode(
                    category.name,
                    category.get_absolute_url(),
                    '%s-%s' % (category.__class__.__name__, category.pk),
                    ('%s-%s' % (category.__class__.__name__, category.parent.id) if category.parent
                     else None)
                )
                nodes.append(node)

        if posts_menu:
            posts = Post.objects
            if hasattr(self, 'instance') and self.instance:
                posts = posts.namespace(self.instance.application_namespace)
            posts = posts.active_translations(language).distinct()
            for post in posts:
                if categories_menu:
                    category = post.categories.first()
                    parent = '%s-%s' % (category.__class__.__name__, category.pk)
                    post_id = '%s-%s' % (post.__class__.__name__, post.pk),
                else:
                    parent = None
                    post_id = '%s-%s' % (post.__class__.__name__, post.pk),
                node = NavigationNode(
                    post.get_title(),
                    post.get_absolute_url(language),
                    post_id,
                    parent
                )
                nodes.append(node)

        return nodes
예제 #28
0
 def get_nodes(self, request):
     """Return menu's node for authors"""
     nodes = []
     nodes.append(NavigationNode(_('Authors'),
                                 reverse('zinnia_author_list'),
                                 'authors'))
     for author in Author.published.all():
         nodes.append(NavigationNode(author.username,
                                     reverse('zinnia_author_detail',
                                             args=[author.username]),
                                     author.pk, 'authors'))
     return nodes
예제 #29
0
def _make_navigation_node(blog_node, parent, proxy_prefix, visible=None):
    nav_node = NavigationNode(
        blog_node.text,
        "%s%s" % (proxy_prefix, blog_node.get_absolute_url()),
        blog_node.menu_id,
        attr={'blogNode': True},
        visible=visible or blog_node.is_visible())
    if parent:
        nav_node.parent_id = parent.id
        nav_node.parent = parent
        nav_node.parent_namespace = parent.parent_namespace
    return nav_node
예제 #30
0
    def get_nodes(self, request):
        nodes = []

        node = NavigationNode(_('Public Playlists'),
                              reverse('alibrary-playlist-list'), 301)
        nodes.append(node)

        node = NavigationNode(_('My Playlists'),
                              reverse('alibrary-playlist-list-own'), 302)
        nodes.append(node)

        return nodes
예제 #31
0
파일: menu.py 프로젝트: fsx999/vodantoc
 def get_nodes(self, request):
     """
     Return menu's node for authors
     """
     nodes = []
     nodes.append(
         NavigationNode(_('Authors'), reverse('zinnia:author_list'),
                        'authors'))
     for author in Author.published.all():
         nodes.append(
             NavigationNode(author.__unicode__(), author.get_absolute_url(),
                            author.pk, 'authors'))
     return nodes
예제 #32
0
파일: menu.py 프로젝트: samjacoby/katran
    def get_nodes(self, request):

        nodes = []
        stamps = []
        families = []
        namespace = 'stamp'
        
        for d in Designer.cobjects.list():
            designer_key = '%s' % d.normalized_name
            designer_node = NavigationNode(d.name, 
                                           d.get_absolute_url(), 
                                           designer_key,
                                           parent_namespace=namespace,
                                           attr={'type':'designer', 'stamp_type': d.stamp_type})
            nodes.append(designer_node)
        
            for f in Family.objects.filter(is_published=True, 
                                           in_navigation=True,
                                           designer = d):
                family_key = '%s-%s' % (designer_key, f.order)
                family_node = NavigationNode(f.order, 
                                             f.get_absolute_url(), 
                                             family_key, 
                                             designer_key, 
                                             parent_namespace=namespace,
                                             attr={'type':'family'})
                try:
                    family_node.next = None
                    family_node.prev = families[-1]
                    families[-1].next = family_node
                except IndexError:
                    family_node.prev = None
                families.append(family_node)
        
                for s in Stamp.objects.filter(is_published=True, 
                                              in_navigation=True, 
                                              family = f):
                    stamp_key = '%s-%s' % (family_key, s.order)
                    stamp_node = NavigationNode(
                            s.order, 
                            s.get_absolute_url(), 
                            stamp_key, 
                            family_key, 
                            parent_namespace=namespace,
                            attr={'type':'stamp', 'value':s.value})
                    try:
                        stamp_node.next = None
                        stamp_node.prev = stamps[-1]
                        families[-1].next = stamp_node
                    except IndexError:
                        stamp_node.prev = None
                    stamps.append(stamp_node)
        
        nodes.extend(families)
        nodes.extend(stamps)
        return nodes
예제 #33
0
def get_nodes(request):
    logger.debug("Rebuilding news menu")
    res = []

    items = News.published.all()

    years_done = []
    months_done = []
    days_done = []
    slug_done = []

    for item in items:
        date = item.pub_date

        if not date.year in years_done:
            years_done.append(date.year)
            year_node = NavigationNode(date.year,
                reverse('news_archive_year', kwargs=dict(year=date.year)),
                'newsitem-year-%d' % (date.year,))
            year_node.childrens = []
            months_done = []
            res.append(year_node)

        if not date.month in months_done:
            months_done.append(date.month)
            month_node = NavigationNode(datetime.strftime(date, '%B'),
                                reverse('news_archive_month', kwargs=dict(
                                    year=date.year,
                                    month=datetime.strftime(date, '%m'))),
                                'newsitem-month-%d.%d' % (date.year, date.month))
            month_node.childrens = []
            days_done = []
            year_node.childrens.append(month_node)

        if not date.day in days_done:
            days_done.append(date.day)
            day_node = NavigationNode(datetime.strftime(date, '%d'),
                reverse('news_archive_day', kwargs=dict(
                    year=date.year,
                    month=datetime.strftime(date, '%m'),
                    day=datetime.strftime(date, '%d'))),
                'newsitem-day-%d.%d.%d' % (date.year, date.month, date.day)
                )
            day_node.childrens = []
            slug_done = []
            month_node.childrens.append(day_node)

        if not item.slug in slug_done:
            slug_done.append(item.slug)
            item_node = NavigationNode(item.title, item.get_absolute_url(),
                'newsitem-pk-%s' % (str(item.pk),))
            item_node.childrens = []
            day_node.childrens.append(item_node)

    return res
예제 #34
0
파일: menu.py 프로젝트: samjacoby/katran
 def get_nodes(self, request):
     """
     This method is used to build the menu tree.
     """
     nodes = []
     namespace = 'book'
     for book in Book.manager.get_all_books():
         node = NavigationNode(book.order, '%s' % book.get_absolute_url(),
             book.order,
             parent_namespace=namespace,
             attr={'type':'book'}
         )
         try:
             node.prev = nodes[-1]
             nodes[-1].next = node
         except IndexError:
             pass
         nodes.append(node)
     return nodes
예제 #35
0
파일: menu.py 프로젝트: samjacoby/katran
 def get_nodes(self, request):
     """
     This method is used to build the menu tree.
     """
     nodes = []
     namespace = 'typography'
     for typography in Typography.manager.get_all_typography():
         node = NavigationNode(typography.order, '%s' % typography.get_absolute_url(), 
             typography.order,
             parent_namespace=namespace,
             attr={'type':'typography'}
         )
         try:
             node.prev = nodes[-1]
             nodes[-1].next = node
         except IndexError:
             pass
         nodes.append(node)
     return nodes
예제 #36
0
 def get_nodes(self, request):
     try:
         if self.instance.publisher_is_draft:
             productpage_set = self.instance.publisher_public.productpage_set
         else:
             productpage_set = self.instance.productpage_set
     except AttributeError:
         return []
     nodes = []
     with override(request.LANGUAGE_CODE):
         for id, productpage in enumerate(productpage_set.all(), 1):
             node = NavigationNode(
                 title=productpage.product.product_name,
                 url=productpage.product.get_absolute_url(),
                 id=id,
             )
             if hasattr(productpage.product, 'slug'):
                 node.path = productpage.product.slug
             nodes.append(node)
     return nodes
def get_nodes(request):
    res = []
    
    items = published_filter(Entry.objects.all())
    
    years_done = []
    months_done = []
    days_done = []
    slug_done = []
    
    for item in items:
        date = item.pub_date
        
        if not date.year in years_done:
            years_done.append(date.year)
            year_node = NavigationNode(date.year, reverse('news_archive_year', kwargs=dict(year=date.year)))
            year_node.childrens = []
            months_done = []
            res.append(year_node)
        
        if not date.month in months_done:
            months_done.append(date.month)
            month_node = NavigationNode(datetime.strftime(date, '%B'), 
                                reverse('news_archive_month', kwargs=dict(
                                    year=date.year, 
                                    month=datetime.strftime(date, '%m'))))
            month_node.childrens = []
            days_done = []
            year_node.childrens.append(month_node)
            
        if not date.day in days_done:
            days_done.append(date.day)
            day_node = NavigationNode(datetime.strftime(date, '%d'), 
                                reverse('news_archive_day', kwargs=dict(
                                    year=date.year, 
                                    month=datetime.strftime(date, '%m'),
                                    day=datetime.strftime(date, '%d'))))
            day_node.childrens = []
            slug_done = []
            month_node.childrens.append(day_node)
            
        if not item.slug in slug_done:
            slug_done.append(item.slug)
            item_node = NavigationNode(item.title, item.get_absolute_url())
            item_node.childrens = []
            day_node.childrens.append(item_node)
            
    return res
예제 #38
0
    def create_new_node(self, title, url, parent):
        # create a new node for the menu
        new_node = NavigationNode(
            title=mark_safe(title),
            url=url,
            id=None
            )
        new_node.parent = parent
        parent.children.append(new_node)
        self.nodes.append(new_node)

        # is this node selected?
        if new_node.get_absolute_url() == self.auto_page_url:

            new_node.selected = True
            node_to_mark = new_node
            while node_to_mark.parent:
                node_to_mark.parent.selected = False
                node_to_mark.parent.ancestor = True
                node_to_mark = node_to_mark.parent
        else:
            new_node.selected = False
        return new_node
예제 #39
0
파일: menu.py 프로젝트: airtonix/Arkestra
    def recursive(self, request, nodes):
        for child in nodes:
            
            try:
                ancestor = child.ancestor
            except AttributeError:
                ancestor = False
            try:
                selected = child.selected
            except AttributeError:
                selected = False
            
            # expand branches selectvely, or expand all    
            if selected or ancestor or EXPAND_ALL_MENU_BRANCHES:
                # does the entity have an entity?
                try:
                    page = Page.objects.get(id=child.id, entity__isnull=False)
                    entity = page.entity.all()[0]
                    
                    # does this entity have a news page?
                    if entity.auto_news_page and "news" in menu_tests:
                        # invoke the plugin to find out more
                        instance = NewsAndEventsPlugin()
                        instance.entity = entity
                        instance.type = "menu"
                        instance.limit_to = MAIN_NEWS_EVENTS_PAGE_LIST_LENGTH
                        instance.view = "current"
                        context = RequestContext(request)
                        
                        # create an instance of the plugin to see if the menu should have items
                        plugin = CMSNewsAndEventsPlugin()   
                        plugin.get_items(instance)
                        plugin.add_links_to_other_items(instance)    
                        
                        # assume there's no menu item required
                        show_menu_item = False
                                               
                        menutitle = entity.news_page_menu_title

                        # create a new node
                        new_node = NavigationNode(
                            mark_safe(menutitle), 
                            entity.get_related_info_page_url('news-and-events'), 
                            None
                            )
                            
                        # go through the lists of items
                        for item in plugin.lists:
                            if item["items"]:
                                show_menu_item = True

                            # and go through the other_items lists for each
                            for other_item in item["other_items"]:
                                new_sub_node = NavigationNode(
                                    mark_safe(other_item["title"]), 
                                    other_item["link"], 
                                    None )
                                if request.page_path == new_sub_node.get_absolute_url():
                                    new_sub_node.selected = True
                                    new_node.selected = False

                                show_menu_item = True
                                new_node.children.append(new_sub_node)

                        if show_menu_item:
                            # is this node the one we are currently looking at?
                            if new_node.get_absolute_url() == request.page_path:
                                new_node.selected = True
                                child.selected = False
                            child.children.append(new_node)

                    if entity.auto_contacts_page and "contacts" in menu_tests:
                        menutitle = entity.contacts_page_menu_title
                        new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('contact'), None)
                        if new_node.get_absolute_url() in request.page_path:
                            new_node.selected = True
                            child.selected=False
                            
                        child.children.append(new_node)

                    if getattr(entity, "auto_vacancies_page", None)  and "vacancies" in menu_tests:

                        instance = VacanciesPlugin()
                        instance.entity = entity
                        instance.type = "menu"
                        instance.limit_to = MAIN_NEWS_EVENTS_PAGE_LIST_LENGTH
                        instance.view = "current"
                        context = RequestContext(request)
                                             
                        # create an instance of the plugin to see if the menu should have items
                        plugin = CMSVacanciesPlugin()   
                        plugin.get_items(instance)
                        plugin.add_links_to_other_items(instance)    

                        # assume there's no menu item required
                        show_menu_item = False

                        # are there actually any vacancies/studentships items to show? if not, no menu
                        for item in plugin.lists:
                            if item["items"]:
                                show_menu_item = True
                                
                        if show_menu_item:
                            print "menu"
                            print plugin.lists
                            menutitle = entity.vacancies_page_menu_title
                            new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('vacancies-and-studentships'), None)
                            if request.page_path == new_node.get_absolute_url():
                                new_node.selected = True
                                child.selected=False
                            child.children.append(new_node)
            
                    if getattr(entity, "auto_publications_page", None) and entity.auto_publications_page and "publications" in menu_tests:
                        menutitle = entity.publications_page_menu_title
                        new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('publications'), None)
                        if request.page_path == new_node.get_absolute_url():
                            new_node.selected = True
                            child.selected=False
                        child.children.append(new_node)
                except Page.DoesNotExist:
                    pass
            self.recursive(request, child.children)
예제 #40
0
파일: menu.py 프로젝트: ojii/Arkestra
    def recursive(self, request, nodes):
        for child in nodes:
            try:
                ancestor = child.ancestor
            except AttributeError:
                ancestor = False
            try:
                selected = child.selected
            except AttributeError:
                selected = False
    
            if selected or ancestor:
                # does the entity have an entity?
                try:
                    page = Page.objects.get(id=child.id, entity__isnull=False)
                    entity = page.entity.all()[0]
                    
                    # does this entity have a news page?
                    if entity.auto_news_page and "news" in menu_tests:
                        
                        # invoke the plugin to find out more
                        instance = NewsAndEventsPlugin()
                        instance.entity = entity
                        instance.type = "main_page"
                        instance.limit_to = news_and_events_list_default_limit
                        instance.view = "current"
                        get_news_and_events(instance)
                        
                        # are there actually any new/events items to show? if not, no menu
                        if instance.news or instance.other_news or instance.events or instance.other_events:
                        
                            menutitle = entity.news_page_menu_title
                            new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('news-and-events'), None)
                            if new_node.get_absolute_url() in request.page_path:

                                new_node.selected = True
                                child.selected=False

                                if instance.other_news  and "news_archive" in menu_tests:
                                    new_sub_node = NavigationNode(mark_safe("News archive"), entity.get_related_info_page_url('news-archive'), None )
                                    if request.page_path == new_sub_node.get_absolute_url():
                                        new_sub_node.selected = True
                                        new_node.selected=False
                                    new_node.children.append(new_sub_node)

                                if any("all-forthcoming" in d.itervalues() for d in instance.other_events) and "forthcoming_events" in menu_tests:
                                    new_sub_node = NavigationNode(mark_safe("All forthcoming events"), entity.get_related_info_page_url('forthcoming-events'), None )
                                    if request.page_path == new_sub_node.get_absolute_url():
                                        new_sub_node.selected = True
                                        new_node.selected=False
                                    new_node.children.append(new_sub_node)
                
                                if any("previous-events" in d.itervalues() for d in instance.other_events) and "previous_events" in menu_tests:
                                    new_sub_node = NavigationNode(mark_safe("Previous events"), entity.get_related_info_page_url('previous-events'), None )
                                    if request.page_path == new_sub_node.get_absolute_url():
                                        new_sub_node.selected = True
                                        new_node.selected=False
                                    new_node.children.append(new_sub_node)

                            child.children.append(new_node)

                    if entity.auto_contacts_page and "contacts" in menu_tests:
                        menutitle = entity.contacts_page_menu_title
                        new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('contact'), None)
                        if new_node.get_absolute_url() in request.page_path:
                            new_node.selected = True
                            child.selected=False
                            
                        child.children.append(new_node)

                    if getattr(entity, "auto_vacancies_page", None)  and "vacancies" in menu_tests:
                        menutitle = entity.vacancies_page_menu_title
                        new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('vacancies-and-studentships'), None)
                        if request.page_path == new_node.get_absolute_url():
                            new_node.selected = True
                            child.selected=False
                        child.children.append(new_node)
            
                    if getattr(entity, "auto_publications_page", None) and entity.auto_publications_page and "publications" in menu_tests:
                        menutitle = entity.publications_page_menu_title
                        new_node = NavigationNode(mark_safe(menutitle), entity.get_related_info_page_url('publications'), None)
                        if request.page_path == new_node.get_absolute_url():
                            new_node.selected = True
                            child.selected=False
                        child.children.append(new_node)
                except Page.DoesNotExist:
                    pass
            self.recursive(request, child.children)
예제 #41
0
def get_nodes(request):
    """ creates mptt style parent-child list for extending django-cms navigation (menu & breadcrumb); structured on photologue.urls """

    res = []                                                        #NavigationNode result list

    for q in gallery_args, photo_args:                              #get public Galleries & Photos
        if q.has_key('queryset'):                                   #use default querysets from photologue.urls
            queryset = q['queryset']
            try:                                                    #get the name of the queryset's model
                model = q['queryset'][0].__class__.__name__.lower()
            except IndexError:                                      #abort if empty
                return res

            #check if multilingual middleware is installed
#            from django.conf import settings
#            if 'cms.middleware.multilingual.MultilingualURLMiddleware' in settings.MIDDLEWARE_CLASSES:
#                multilingual = True
##                from django.utils.translation import get_language
#                from django.utils.translation import get_language_from_request
#                import ipdb; ipdb.set_trace()
#                lang_namespace = "%s:" % get_language_from_request(request)
#            else:
#                lang_namespace = ''

        else:
            return res


        #create the base path of the URL ('gallery/' or 'photo/')
        base_node = NavigationNode(model, reverse('pl-%s-archive' % model,))
#        base_node = NavigationNode(model, reverse('%spl-%s-archive' % (lang_namespace, model)))
        base_node.childrens = []

        #create node for object_list view (photologue uses this view for pagination)
        #urlpattern to match: url(r'^photo/page/(?P<page>[0-9]+)/$', 'object_list', {'queryset': Photo.objects.filter(is_public=True), 'allow_empty': True, 'paginate_by': 20}, name='pl-photo-list'),
        #path example: request.META['PATH_INFO'] = u'/galleries/photo/page/2/'  or  u'/galleries/gallery/page/1/'
        try:
            #page_path gets the relevant parts of the path for paging
            page_path = request.META['PATH_INFO'].split('/')[-4:-1]     #eg: '/mygalleries/gallery/page/1/' ->  ['gallery', 'page', '1']
            #execute only if page_path is a photologue paged url for this model
            assert len(page_path) == 3 and [model, 'page', str(int(page_path[2]))] == page_path
            #name the node with a string, reverse to the paged named url, and pass the page value from page_path
            pages_node = NavigationNode('page %s' % page_path[2], reverse('pl-%s-list' % model, kwargs=dict(page=page_path[2])))
#            pages_node = NavigationNode('page %s' % page_path[2], reverse('%spl-%s-list' % (lang_namespace, model), kwargs=dict(page=page_path[2])))
            #modify url used in href, this doesn't work because NavigationNode uses the passed url for get_absolute_url
            pages_node.get_absolute_url = lambda: reverse('pl-%s-list' % model, kwargs=dict(page=1))
#            pages_node.get_absolute_url = lambda: reverse('%spl-%s-list' % (lang_namespace, model), kwargs=dict(page=1))
            #attach the node to the main list
            base_node.childrens.append(pages_node)
        except:
            #fail silently if not applicable
            pass

        #create NavigationNodes for the queryset
        for item in queryset:

            years_done = []                                             #keeps track of published item years
            months_done = []
            days_done = []
            slug_done = []
            page_done = []

            #get the date for this query object; 'date_added' called 'date published' in photologue admin
            date = item.date_added

            if not date.year in years_done:                         #if this year is not in the years_done list
                years_done.append(date.year)                        #add it to years_done list
                #name the navigation node with the item's year, reverse to a named url, and pass the value captured by url regex
                year_node = NavigationNode(date.year, reverse('pl-%s-archive-year' % model, kwargs=dict(year=date.year)))
#                year_node = NavigationNode(date.year, reverse('%spl-%s-archive-year' % (lang_namespace, model), kwargs=dict(year=date.year)))
                year_node.childrens = []                            #create childrens sublist for this year
                months_done = []                                    #keeps track of published item months for this year
                base_node.childrens.append(year_node)                               #add this NavigationNode to the main list

            if not date.month in months_done:
                months_done.append(date.month)
                month_node = NavigationNode(date.strftime('%b').lower(), reverse('pl-%s-archive-month' % model, kwargs=dict(year=date.year, month=date.strftime('%b').lower())))
#                month_node = NavigationNode(date.strftime('%b').lower(), reverse('%spl-%s-archive-month' % (lang_namespace, model), kwargs=dict(year=date.year, month=date.strftime('%b').lower())))
                month_node.get_menu_title = date.strftime('%m')     #use double int month name for menus
                month_node.childrens = []
                days_done = []
                year_node.childrens.append(month_node)

            if not date.day in days_done:
                days_done.append(date.day)
                day_node = NavigationNode(date.day, reverse('pl-%s-archive-day' % model, kwargs=dict(year=date.year, month=date.strftime('%b').lower(), day=date.day)))
#                day_node = NavigationNode(date.day, reverse('%spl-%s-archive-day' % (lang_namespace, model), kwargs=dict(year=date.year, month=date.strftime('%b').lower(), day=date.day)))
                day_node.childrens = []
                slug_done = []
                month_node.childrens.append(day_node)

            if not item.slug in slug_done:
                slug_done.append(item.slug)
                #one node child for the day node
                item_node = NavigationNode(item.title, reverse('pl-%s-detail' % model, kwargs=dict(year=date.year, month=date.strftime('%b').lower(), day=date.day, slug=item.slug)))
#                item_node = NavigationNode(item.title, reverse('%spl-%s-detail' % (lang_namespace, model), kwargs=dict(year=date.year, month=date.strftime('%b').lower(), day=date.day, slug=item.title_slug)))
                day_node.childrens.append(item_node)
                #and finally, one node child for the base node
                item_node = NavigationNode(item.title, reverse('pl-%s' % model, kwargs=dict(slug=item.slug)))
#                item_node = NavigationNode(item.title, reverse('%spl-%s' % (lang_namespace, model), kwargs=dict(slug=item.title_slug)))
                base_node.childrens.append(item_node)

        res.append(base_node)

    return res