コード例 #1
0
ファイル: menu.py プロジェクト: geodatup/ann
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import Rubrique


class galerieSubMenu(CMSAttachMenu):

    name = _("Galerie Sous-Menu")

    def get_nodes(self, request):
        nodes = []

        for rubrique in Rubrique.objects.order_by('nom_rubrique').all():

             node = NavigationNode(
                 mark_safe(rubrique.nom_rubrique),
                 rubrique.get_absolute_url(),
                 rubrique.id,
             )

             nodes.append(node)

        return nodes

menu_pool.register_menu(galerieSubMenu)
コード例 #2
0
ファイル: menu.py プロジェクト: yohanboniface/django-cms
            n2 = NavigationNode(_('sample settings page'),
                                reverse('sample-settings'), 2)
            n3 = NavigationNode(_('sample account page'),
                                reverse('sample-account'), 3)
            n4 = NavigationNode(_('sample my profile page'),
                                reverse('sample-profile'), 4, 3)
            nodes.append(n)
            nodes.append(n2)
            nodes.append(n3)
            nodes.append(n4)
        except NoReverseMatch:
            pass
        return nodes


menu_pool.register_menu(SampleAppMenu)


class StaticMenu(CMSAttachMenu):
    name = _("Static Menu")

    def get_nodes(self, request):
        nodes = []
        n = NavigationNode('static root page', "/fresh/", 1)
        n2 = NavigationNode('static settings page', "/bye/", 2)
        n3 = NavigationNode('static account page', "/hello/", 3)
        n4 = NavigationNode('static my profile page', "/hello/world/", 4, 3)
        nodes.append(n)
        nodes.append(n2)
        nodes.append(n3)
        nodes.append(n4)
コード例 #3
0
ファイル: menu.py プロジェクト: zjhzxjm/djangocms-shiny-app
# -*- coding: utf-8 -*-

from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _

from cms.menu_bases import CMSAttachMenu
from menus.base import Menu, NavigationNode
from menus.menu_pool import menu_pool

from cms_shiny.models import ShinyApp


class ShinyAppsMenu(CMSAttachMenu):
    name = _("Shiny Apps Menu")

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        nodes = []
        for shiny_app in ShinyApp.objects.all():
            node = NavigationNode(
                shiny_app.name,
                reverse('cms_shiny:shiny_detail', args=(shiny_app.slug, )),
                shiny_app.slug)
            nodes.append(node)
        return nodes


menu_pool.register_menu(ShinyAppsMenu)
コード例 #4
0
ファイル: menu.py プロジェクト: Immediatic/cmsplugin-zinnia
        nodes = []
        nodes.append(NavigationNode(_('Tags'), reverse('zinnia_tag_list'),
                                    'tags'))
        for tag in tags_published():
            nodes.append(NavigationNode(tag.name,
                                        reverse('zinnia_tag_detail',
                                                args=[tag.name]),
                                        tag.pk, 'tags'))
        return nodes


class EntryModifier(Modifier):
    """Menu Modifier for entries,
    hide the MenuEntry in navigation, not in breadcrumbs"""

    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        """Modify nodes of a menu"""
        if breadcrumb:
            return nodes
        for node in nodes:
            if node.attr.get('hidden'):
                node.visible = False
        return nodes


menu_pool.register_menu(EntryMenu)
menu_pool.register_menu(CategoryMenu)
menu_pool.register_menu(AuthorMenu)
menu_pool.register_menu(TagMenu)
menu_pool.register_modifier(EntryModifier)
コード例 #5
0
ファイル: menu.py プロジェクト: yougis/QuOrEL
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import Document


class InventaireSubMenu(CMSAttachMenu):

    name = _("Inventaire Sous-Menu")

    def get_nodes(self, request):
        nodes = []

        # for document in Document.objects.order_by('nom_document').all():

        #     node = NavigationNode(
        #         mark_safe(document.nom_document),
        #         document.get_absolute_url(),
        #         document.pk,
        #     )

        #     nodes.append(node)

        return nodes

menu_pool.register_menu(InventaireSubMenu)
コード例 #6
0
ファイル: cms_menus.py プロジェクト: wildfish/djangocms-blog
                                                  category.pk)
                        post_id = '{0}-{1}'.format(post.__class__.__name__,
                                                   post.pk),
                else:
                    post_id = '{0}-{1}'.format(post.__class__.__name__,
                                               post.pk),
                if post_id:
                    node = NavigationNode(post.get_title(),
                                          post.get_absolute_url(language),
                                          post_id, parent)
                    nodes.append(node)

        return nodes


menu_pool.register_menu(BlogCategoryMenu)


class BlogNavModifier(Modifier):
    """
    This navigation modifier makes sure that when
    a particular blog post is viewed,
    a corresponding category is selected in menu
    """
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        """
        Actual modifier function
        :param request: request
        :param nodes: complete list of nodes
        :param namespace: Menu namespace
        :param root_id: eventual root_id
コード例 #7
0
from menus.base import Menu, NavigationNode, Modifier
from menus.menu_pool import menu_pool
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from django.conf import settings
from datetime import datetime

class CoreMenu(Menu):

    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

class CoreModifier(Modifier):

    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        return sorted(
            nodes,
            key=lambda n: n.attr.get('priority', 1000)
        )


menu_pool.register_menu(CoreMenu)
menu_pool.register_modifier(CoreModifier)
コード例 #8
0
            new_node = CMSVersionedNavigationNode(
                id=page.pk,
                attr=_get_attrs_for_node(self.renderer, page_content),
                title=page_content.menu_title or page_content.title,
                url=url,
                visible=page_content.in_navigation,
            )

            if not homepage_content:
                # Set the home page content.
                homepage_content = page_content if page.is_home else None

            cut_homepage = homepage_content and not homepage_content.in_navigation

            if cut_homepage and parent_id == homepage_content.page.pk:
                # When the homepage is hidden from navigation,
                # we need to cut all its direct children from it.
                new_node.parent_id = None
            else:
                new_node.parent_id = parent_id

            node_id_to_page[page_tree_node.pk] = page.pk
            menu_nodes.append(new_node)
            added_pages.append(page.pk)
        return menu_nodes


# Remove the core djangoCMS CMSMenu and register the new CMSVersionedMenu.
menu_pool.menus.pop(CMSMenu.__name__)
menu_pool.register_menu(CMSVersionedMenu)
コード例 #9
0
from menus.menu_pool import menu_pool

from .models import Poll


class PollsMenu(CMSAttachMenu):
    name = _("Polls Menu")  # give the menu a name this is required.

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        # nodes = []
        # for poll in Poll.objects.all():
        #     node = NavigationNode(
        #         title=poll.question,
        #         url=reverse('polls:detail', args=(poll.pk,)),
        #         id=poll.pk,  # unique id for this node within the menu
        #     )
        #     nodes.append(node)
        return [
            NavigationNode(title=p['question'],
                           url=reverse('polls:detail', args=(p['id'], )),
                           id=p['id'])
            for p in Poll.objects.values('id', 'question')
        ]
        # return nodes


menu_pool.register_menu(PollsMenu)
コード例 #10
0
ファイル: cms_menus.py プロジェクト: ChameleonCloud/portal
                               dashboard_id)
            nodes.append(n)

        return nodes


class NewContentModifier(Modifier):
    """
    This modifier tags certain pages (by title) as "new", so additional
    UI can be shown to highlight them in the navbar.
    """
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        # only do something when the menu has already been cut
        if post_cut:
            [self.mark_new(node) for node in nodes]

        return nodes

    def mark_new(self, node):
        reverse_id = node.attr.get('reverse_id')

        if reverse_id and reverse_id in ['share']:
            node.attr['class'] = 'new'

        if node.children:
            [self.mark_new(child) for child in node.children]


menu_pool.register_modifier(NewContentModifier)
menu_pool.register_menu(UserMenu)
コード例 #11
0
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import StaffMember


class StaffSubMenu(CMSAttachMenu):

    name = _("Staff Sub-Menu")

    def get_nodes(self, request):
        nodes = []

        for staff in StaffMember.objects.order_by('full_name').all():

            node = NavigationNode(
                mark_safe(staff.full_name),
                staff.get_absolute_url(),
                staff.id,
            )

            nodes.append(node)

        return nodes

menu_pool.register_menu(StaffSubMenu)
コード例 #12
0
ファイル: menu.py プロジェクト: ozgurgunes/django-cmskit
# -*- coding: utf-8 -*-
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import get_language
from cms.menu_bases import CMSAttachMenu
from menus.base import Menu, NavigationNode
from menus.menu_pool import menu_pool

from cmskit.recipes.models import Recipe


class RecipesMenu(CMSAttachMenu):

    name = _("Recipes menu")

    def get_nodes(self, request):
        nodes = []
        for recipe in Recipe.objects.published().select_related():
            try:
                node = NavigationNode(recipe.title, recipe.get_absolute_url(),
                                      recipe.pk)
                nodes.append(node)
            except:
                pass

        return nodes


menu_pool.register_menu(RecipesMenu)
コード例 #13
0
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

class FNSAdminMenu(CMSAttachMenu):
    name = _("fns_admin menu")

    def get_nodes(self, request):
        nodes = []

        nodes.append(NavigationNode(_('Backend'), 
                                    reverse('admin:index'), 1))

        nodes.append(NavigationNode(_('Email Organizers and Watchers'),
                                    '/fnsadmin/organizers/mail/', 1))

        nodes.append(NavigationNode(_('Add News'),
                                    '/admin/cmsplugin_blog/entry/add/', 2))

        return nodes

menu_pool.register_menu(FNSAdminMenu)

コード例 #14
0
ファイル: cms_menus.py プロジェクト: shoyshab/django-cms
            menu_node = _page_to_node(page)
            cut_homepage = homepage and not homepage.in_navigation

            if cut_homepage and parent_id == homepage.pk:
                # When the homepage is hidden from navigation,
                # we need to cut all its direct children from it.
                menu_node.parent_id = None
            else:
                menu_node.parent_id = parent_id
            node_id_to_page[node.pk] = page.pk
            menu_nodes.append(menu_node)
        return menu_nodes


menu_pool.register_menu(CMSMenu)


class NavExtender(Modifier):
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        if post_cut:
            return nodes
        # rearrange the parent relations
        # Find home
        home = next((n for n in nodes if n.attr.get("is_home", False)), None)
        # Find nodes with NavExtenders
        exts = []
        for node in nodes:
            extenders = node.attr.get("navigation_extenders", None)
            if extenders:
                for ext in extenders:
コード例 #15
0
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse

from menus.base import Modifier, Menu, NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu


class ImportMenu(CMSAttachMenu):

    name = _("Import Menu")

    def get_nodes(self, request):
        nodes = []

        node = NavigationNode(_('My Uploads'), reverse('importer-import-list'),
                              181)
        nodes.append(node)

        return nodes


menu_pool.register_menu(ImportMenu)
コード例 #16
0
ファイル: menu.py プロジェクト: jason790/Caturra
from django.utils.translation import ugettext_lazy as _

from cms.menu_bases import CMSAttachMenu
from menus.base import Menu, NavigationNode
from menus.menu_pool import menu_pool

from .models import Post


class PostsMenu(CMSAttachMenu):
    name = _("Posts Menu")  # give the menu a name, this is required.

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """

        nodes = []
        for post in Post.objects.all():
            # the menu tree consists of NavigationNode instances
            # Each NavigationNode takes a label as its first argument, a URL as
            # its second argument and a (for this tree) unique id as its third
            # argument.
            node = NavigationNode(post.title,
                                  reverse('show', args=(post.id, )), blog.id)
            nodes.append(node)
        return nodes


menu_pool.register_menu(PostsMenu)
コード例 #17
0
ファイル: menu.py プロジェクト: CGenie/cmsplugin-zinnia
        """Return menu's node for tags"""
        nodes = []
        nodes.append(NavigationNode(_("Tags"), reverse("zinnia_tag_list"), "tags"))
        for tag in tags_published():
            nodes.append(NavigationNode(tag.name, reverse("zinnia_tag_detail", args=[tag.name]), tag.pk, "tags"))
        return nodes


class EntryModifier(Modifier):
    """Menu Modifier for entries,
    hide the MenuEntry in navigation, not in breadcrumbs"""

    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        """Modify nodes of a menu"""
        if breadcrumb:
            return nodes
        for node in nodes:
            if node.attr.get("hidden"):
                node.visible = False
        return nodes


for klass in [EntryMenu, CategoryMenu, AuthorMenu, TagMenu]:
    if klass.__class__.__name__ in APP_MENUS:
        menu_pool.register_menu(klass)
# menu_pool.register_menu(EntryMenu)
# menu_pool.register_menu(CategoryMenu)
# menu_pool.register_menu(AuthorMenu)
# menu_pool.register_menu(TagMenu)
menu_pool.register_modifier(EntryModifier)
コード例 #18
0
class PressReleaseMenu(CMSAttachMenu):

    name = _("Press Releases")

    def get_nodes(self, request):
        nodes = []
        for release in PressRelease.objects.all():
            node = NavigationNode(
                release.title,
                release.get_absolute_url(),
                release.pk,
            )
            nodes.append(node)
        return nodes

menu_pool.register_menu(PressReleaseMenu)


class PressMentionMenu(CMSAttachMenu):

    name = _("Press Mentions")

    def get_nodes(self, request):
        nodes = []
        for mention in PressMention.objects.all():
            node = NavigationNode(
                mention.title,
                mention.get_absolute_url(),
                mention.pk,
            )
            nodes.append(node)
コード例 #19
0
ファイル: menu.py プロジェクト: PhiTheta/ISON
        """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


class GbobjectModifier(Modifier):
    """Menu Modifier for gbobjects,
    hide the MenuGbobject in navigation, not in breadcrumbs"""
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        """Modify nodes of a menu"""
        if breadcrumb:
            return nodes
        for node in nodes:
            if node.attr.get('hidden'):
                nodes.remove(node)
        return nodes


menu_pool.register_menu(GbobjectMenu)
menu_pool.register_menu(ObjecttypeMenu)
menu_pool.register_menu(AuthorMenu)
menu_pool.register_menu(TagMenu)
menu_pool.register_modifier(GbobjectModifier)
コード例 #20
0
class CatalogMenu(CMSAttachMenu):
    name = _('Catalog')

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        if request.toolbar.use_draft:
            qs = Node.objects.order_by('tree_id', 'lft')
        else:
            qs = Node.objects.filter(active=True).order_by('tree_id', 'lft')
        return [
            NavigationNode(
                node.get_menu_title(),
                node.get_absolute_url(),
                node.id,
                node.parent and node.parent.id or None,
            ) for node in qs
        ]


menu_pool.register_menu(CatalogMenu)

def invalidate_menu_cache(sender, **kwargs):
    menu_pool.clear()

post_save.connect(invalidate_menu_cache, sender=Category)
post_delete.connect(invalidate_menu_cache, sender=Category)

コード例 #21
0
from django.core.urlresolvers import reverse
from menus.base import Menu, NavigationNode
from menus.menu_pool import menu_pool
from django.utils.translation import ugettext_lazy as _

class SignalBoxMenu(Menu):

    def get_nodes(self, request):
        nodes = []

        if request.user.is_staff:
            nodes.insert(0, NavigationNode("Admin site", reverse('admin:index'), 1))
        return nodes

menu_pool.register_menu(SignalBoxMenu)
コード例 #22
0
ファイル: menu.py プロジェクト: ppp0/openbroadcast
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse

from menus.base import Modifier, Menu, NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from exporter.models import Export


class ExportMenu(CMSAttachMenu):

    name = _("Export Menu")

    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


menu_pool.register_menu(ExportMenu)
コード例 #23
0
# -*- coding: utf-8 -*-
from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu


class TestMenu(CMSAttachMenu):
    name = "test menu"

    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


menu_pool.register_menu(TestMenu)
コード例 #24
0
ファイル: menu.py プロジェクト: rapapor/djcms
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe
from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import News


class NewsSubMenu(CMSAttachMenu):

    name = _("News Sub-Menu")

    def get_nodes(self, request):

        nodes = []

        for news in News.objects.order_by('title_pl').all():
            node = NavigationNode(
                mark_safe(news.title_pl),
                news.get_absolute_url(),
                news.id,
            )

            nodes.append(node)

        return nodes


menu_pool.register_menu(NewsSubMenu)
コード例 #25
0
ファイル: menu.py プロジェクト: bethlakshmi/GBE2
class SpecialMenu(Menu):
    name = _("Special")

    def get_nodes(self, request):
        """
        populate for users based on profile.
        Users must have special privileges to use this
        """
        nodes = []
        profile = validate_perms(request, 'any', require=False)
        if profile:
            privileges = set(request.user.profile.privilege_groups)
            roles = profile.get_roles()
            for role in ['Technical Director', 'Producer', 'Staff Lead']:
                if role in roles:
                    privileges.add(role)
            nodes.append(NavigationNode(_("Special"), "", 1))
            for node in special_menu_tree:
                if not privileges.isdisjoint(node['groups']):
                    nodes.append(NavigationNode(
                        title=node['title'],
                        url=node['url'],
                        id=node['id'],
                        parent_id=node['parent_id']))
        return nodes


menu_pool.register_menu(SpecialMenu)  # register the menu.
menu_pool.register_menu(LoginMenu)  # register the menu.
コード例 #26
0
ファイル: menu.py プロジェクト: jccode/jsite
        - `request`:
        """
        nodes = []
        n = NavigationNode(_("sample root page"), "/", 1)
        n2 = NavigationNode(_("sample settings page"), "/bye/", 2)
        n3 = NavigationNode(_("sample account page"), "/hello/", 3)
        # args: title, url, id, parent_id
        n4 = NavigationNode(_("sample my profile page"), "/hello/world/", 4, 3)
        nodes.append(n)
        nodes.append(n2)
        nodes.append(n3)
        nodes.append(n4)
        return nodes


menu_pool.register_menu(TestMenu)


# ----------
class TestAttachMenu(CMSAttachMenu):
    name = _("test menu")

    def get_nodes(self, request):
        """
        
        Arguments:
        - `self`:
        - `request`:
        """
        nodes = []
        n = NavigationNode(_("sample root page"), "/", 1)
コード例 #27
0
                               .language(language)
                               .active_translations(language))

        if hasattr(self, 'instance') and self.instance:  # pragma: no cover
            # If self has a property `instance`, then we're using django CMS
            # 3.0.12 or later, which supports using CMSAttachMenus on multiple,
            # apphook'ed pages, each with their own apphook configuration. So,
            # here we modify the queryset to reflect this.
            app = apphook_pool.get_apphook(self.instance.application_urls)
            if app:
                things = things.namespace(self.instance.application_namespace)

        for thing in things:
            # This try/except seems like overkill here, but if this fails for
            # any reason, this **and any further menus, even from other apps**
            # may not get loaded, so we're extra careful.
            try:
                url = thing.get_absolute_url(language=language)
                node = NavigationNode(thing.name, url, thing.pk)
                nodes.append(node)
            except NoReverseMatch:  # pragma: no cover
                pass

        return nodes

menu_pool.register_menu(ThingsMenu)


# Consider, are there other ways of making menus that users might wish to
# choose from?
コード例 #28
0
ファイル: menu.py プロジェクト: amdshameer/plannerarena
from django.core.urlresolvers import reverse
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu
from menus.base import NavigationNode

class ProblemsMenu(CMSAttachMenu):
    name = 'Problems Menu'
    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

menu_pool.register_menu(ProblemsMenu)
コード例 #29
0
ファイル: menu.py プロジェクト: divio/djangocms-tutorial-code
#-*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _

from cms.menu_bases import CMSAttachMenu
from menus.base import NavigationNode
from menus.menu_pool import menu_pool

from polls.models import Poll


class PollsMenu(CMSAttachMenu):
    name = _("Polls Menu")  # give the menu a name this is required.

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        nodes = []
        for poll in Poll.objects.all():
            node = NavigationNode(
                title=poll.question,
                url=reverse('polls:detail', args=(poll.pk,)),
                id=poll.pk,  # unique id for this node within the menu
            )
            nodes.append(node)
        return nodes

menu_pool.register_menu(PollsMenu)
コード例 #30
0
ファイル: menu.py プロジェクト: serrrgggeee/okt
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import SliderMember


class SliderSubMenu(CMSAttachMenu):

    name = _("Slider Sub-Menu")

    def get_nodes(self, request):
        nodes = []

        for slider in SliderMember.objects.order_by('full_name').all():

            node = NavigationNode(
                mark_safe(slider.full_name),
                slider.get_absolute_url(),
                slider.id,
            )

            nodes.append(node)

        return nodes

menu_pool.register_menu(SliderSubMenu)
コード例 #31
0
ファイル: cms_menus.py プロジェクト: inevity/blog2
#from menus.base import Menu, NavigationNode
from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from django.utils.translation import ugettext_lazy as _
from cms.menu_bases import CMSAttachMenu

#class BlogMenu(Menu):
class PostMenu(CMSAttachMenu):
 
    #Menu Name (shows in dropdown)
       name = _("post menu")

       def get_nodes(self, request):
        nodes = []
        n1 = NavigationNode(_('Test1'), "/newpost1/", 4)
        n2 = NavigationNode(_('Test2'), "/newpost2/", 5)
        n3 = NavigationNode(_('Test3'), "/newpost3/", 6)
        nodes.append(n1)
        nodes.append(n2)
        nodes.append(n3)

        return nodes

#menu_pool.register_menu(BlogMenu)
menu_pool.register_menu(PostMenu)
コード例 #32
0
ファイル: menu.py プロジェクト: i-salameh95/nnuh
                url = doctor.get_absolute_url(language=language)
            except NoReverseMatch:
                url = None
            if url:
                node = NavigationNode(
                    doctor.safe_translation_getter(
                        'name', default=_('doctor: {0}').format(doctor.pk),
                        language_code=language),
                    url,
                    doctor.pk,
                )
                nodes.append(node)
        return nodes


menu_pool.register_menu(DoctorMenu)


class SectionMenu(CMSAttachMenu):
    """
    Provides an attachable menu of all sections.
    """
    name = _('NNUH Doctors: Section Menu')

    def get_nodes(self, request):
        nodes = []
        language = get_language_from_request(request, check_path=True)
        sections = (Section.objects.language(language)
                               .active_translations(language))

        for section in sections:
コード例 #33
0
ファイル: menu.py プロジェクト: pedrocoloma/semcomp-next
# coding: utf-8

from menus.base import NavigationNode, Menu, Modifier
from menus.menu_pool import menu_pool
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from cms.menu_bases import CMSAttachMenu

class SemcompUserMenu(Menu):
	name = _(u'Menu de usuário')

	def get_nodes(self, request):
		return [
			NavigationNode(
				_(u'Área de usuário'),
				reverse('account_overview'),
				1,
				attr={'visible_for_anonymous': False}),
			NavigationNode(
				_(u'Entrar'),
				reverse('login'),
				2,
				attr={'visible_for_authenticated': False})
		]

menu_pool.register_menu(SemcompUserMenu)
コード例 #34
0
ファイル: menu.py プロジェクト: bitdeli-chef/django-terms
from cms.menu_bases import CMSAttachMenu
from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from django.core.urlresolvers import NoReverseMatch
from .models import Term
from django.utils.translation import ugettext_lazy as _


class TermMenu(CMSAttachMenu):
    name = _('Term Menu')

    def get_nodes(self, request):
        '''
        This method is used to build the menu tree.
        '''
        nodes = []
        for term in Term.objects.iterator():
            try:
                node = NavigationNode(
                    unicode(term),
                    term.get_absolute_url(),
                    term.pk,
                )
                nodes.append(node)
            except NoReverseMatch:
                pass
        return nodes


menu_pool.register_menu(TermMenu)
コード例 #35
0
ファイル: menu.py プロジェクト: okfn/website
    def get_nodes(self, request):
        current_projects = NavigationNode(
            'Current projects',
            reverse('projects'),
            1337,
        )
        old_projects = NavigationNode(
            'Old projects',
            reverse('projects_old'),
            1338,
        )
        nodes = [current_projects, old_projects]
        return nodes


menu_pool.register_menu(ProjectMenu)


class ThemeMenu(CMSAttachMenu):

    name = _("Themes")

    def get_nodes(self, request):
        nodes = []
        for theme in Theme.objects.all():
            node = NavigationNode(
                theme.name,
                theme.get_absolute_url(),
                theme.pk,
                )
            nodes.append(node)
コード例 #36
0
ファイル: menu.py プロジェクト: AlexProfi/cmsplugin_news3
                    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

menu_pool.register_menu(CMSLatestNews3AppMenu)
コード例 #37
0
        n = NavigationNode(_('Dashboard'), "/user/dashboard/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        menu_id += 1
        n = NavigationNode(_('Projects'), "/user/projects/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        # menu_id += 1
        # n = NavigationNode(_('FutureGrid@Chameleon'), "/user/projects/futuregrid/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        # nodes.append(n)

        menu_id += 1
        n = NavigationNode(_('Outages'), "/user/outages/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        menu_id += 1
        n = NavigationNode(_('Help Desk'), "/user/help/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        menu_id += 1
        n = NavigationNode(_('Profile'), "/user/profile/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        menu_id += 1
        n = NavigationNode(_('Webinars'), "/user/webinar/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
        nodes.append(n)

        return nodes

menu_pool.register_menu(UserMenu)
コード例 #38
0
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from models import EventType


class SwingtimeMenu(CMSAttachMenu):
    name = _("Events Menu")  # give the menu a name, this is required.

    def get_nodes(self, request):
        nodes = []
        for type in EventType.objects.all():
            # the menu tree consists of NavigationNode instances
            # Each NavigationNode takes a label as first argument, a URL as
            # second argument and a (for this tree) unique id as third
            # argument.
            node = NavigationNode(
                type.label,
                reverse('swingtime-type-index',
                        kwargs={'event_type': type.abbr}), type.pk)
            nodes.append(node)
        try:
            nodes.append(
                NavigationNode(_("Archiv"), reverse("swingtime-archive"),
                               None))
        except:
            pass
        return nodes


menu_pool.register_menu(SwingtimeMenu)  # register the menu.
コード例 #39
0
        queryset = Article.objects
        if not (request.toolbar and request.toolbar.edit_mode):
            queryset = queryset.published()
        return queryset

    def get_nodes(self, request):
        nodes = []
        language = get_language_from_request(request, check_path=True)
        articles = self.get_queryset(request).active_translations(language)

        if hasattr(self, 'instance') and self.instance:
            app = apphook_pool.get_apphook(self.instance.application_urls)
            config = app.get_config(self.instance.application_namespace)
            if config:
                articles = articles.filter(app_config=config)

        for article in articles:
            try:
                url = article.get_absolute_url(language=language)
            except NoReverseMatch:
                url = None

            if url:
                node = NavigationNode(article.safe_translation_getter(
                    'title', language_code=language), url, article.pk)
                nodes.append(node)
        return nodes


menu_pool.register_menu(NewsBlogMenu)
コード例 #40
0
ファイル: menu.py プロジェクト: wiremine/django-cms
            fallbacks = get_fallback_languages(lang)
            for l in fallbacks:
                titles = list(get_title_queryset(request).filter(page__in=ids, language=l))
                for title in titles:
                    for page in pages:# add the title and slugs and some meta data
                        if title.page_id == page.pk:
                            if not hasattr(page, "title_cache"):
                                page.title_cache = {}
                            page.title_cache[title.language] = title
                            nodes.append(page_to_node(page, home, home_cut))
                            ids.remove(page.pk)
                            break
                if not ids:
                    break
        return nodes  
menu_pool.register_menu(CMSMenu)

class NavExtender(Modifier):
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        if post_cut:
            return nodes
        exts = []
        # rearrange the parent relations
        home = None
        for node in nodes:
            if node.attr.get("is_home", False):
                home = node
            extenders = node.attr.get("navigation_extenders", None)
            if extenders:
                for ext in extenders:
                    if not ext in exts:
コード例 #41
0
ファイル: menu.py プロジェクト: hzlf/openbroadcast
from exporter.models import Export

class ExportMenu(CMSAttachMenu):
    
    name = _("Export Menu")
    
    def get_nodes(self, request):
        nodes = []
        
        """"""
        node = NavigationNode(
            _('My Exports'),
            reverse('exporter-export-list'),
            191
        )
        nodes.append(node)
        
        """"""
        node = NavigationNode(
            _('Settings'),
            reverse('exporter-export-settings'),
            192
        )
        nodes.append(node)
        
        
        return nodes
    
menu_pool.register_menu(ExportMenu)
コード例 #42
0
class NewsCategoryMenu(CMSAttachMenu):

    name = _('News')

    def get_nodes(self, request):
        nodes = []
        categories = Category.objects.language()
        # bug in hvad - Meta ordering isn't preserved
        categories = categories.order_by('ordering')
        for category in categories:
            try:
                node = NavigationNode(category.name,
                                      category.get_absolute_url(),
                                      category.slug)
                nodes.append(node)
            except NoReverseMatch:
                pass
        return nodes


menu_pool.register_menu(NewsCategoryMenu)


def clear_menu_cache(**kwargs):
    menu_pool.clear(all=True)


post_save.connect(clear_menu_cache, sender=Category)
post_delete.connect(clear_menu_cache, sender=Category)
コード例 #43
0
ファイル: menu.py プロジェクト: naprsa/dmw
from django.utils.translation import ugettext_lazy as _
# from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse

from menus.base import NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu

from .models import Destination


class DestinationSubMenu(CMSAttachMenu):
    name = _('Destinations sub_menu')

    def get_nodes(self, request):
        nodes = []
        last_node = NavigationNode(
            _('All...'), '/destinations/', 999)
        for item in Destination.objects.only('name', 'pk'):
            node = NavigationNode(item.name,
                                  item.absolute_url,
                                  item.pk
                                  )

            nodes.append(node)
        nodes.append(last_node)
        return nodes


menu_pool.register_menu(DestinationSubMenu)
コード例 #44
0
ファイル: menu.py プロジェクト: astagi/aldryn-people
                url = person.get_absolute_url(language=language)
            except NoReverseMatch:
                url = None
            if url:
                node = NavigationNode(
                    person.safe_translation_getter(
                        "name", default=_("person: {0}").format(person.pk), language_code=language
                    ),
                    url,
                    person.pk,
                )
                nodes.append(node)
        return nodes


menu_pool.register_menu(PersonMenu)


class GroupMenu(CMSAttachMenu):
    """
    Provides an attachable menu of all groups.
    """

    name = _("Aldryn People: Group Menu")

    def get_nodes(self, request):
        nodes = []
        language = get_language_from_request(request, check_path=True)
        groups = Group.objects.language(language).active_translations(language)

        for group in groups:
コード例 #45
0
            title=_(plugin_settings.STORYBASE_PROJECT_LIST_TITLE), 
            url=reverse('project_list'),
            id='projects',
            parent_id=explore.id)
        nodes.append(projects)
        for project in Project.objects.all().order_by('-last_edited'):
            nodes.append(
                NavigationNode(
	                title=project.name,
                    url=project.get_absolute_url(),
                    id=project.project_id,
                    parent_id=projects.id))
                                        
        return nodes

menu_pool.register_menu(StorybaseMenu)

class OrderMenuNodes(Modifier):
    """Modifier that insert custom navigation nodes in a specified order"""
    def move_node(self, nodes, id, position):
        modified_nodes = []
        matched_node = None
        matched_children = []
        # Check to make sure we're trying to insert the explore menu nodes
	    # in a position that actually exists
        insert_at = position if position < len(nodes) else len(nodes) - 1
        for node in nodes:
           # Discover nodes in the explore menu and separate them
           if node.id == id:
               matched_node = node
               matched_children.append(node)
コード例 #46
0
    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        nodes = []
        # node = NavigationNode(
        #     title='dashboard',
        #     url=reverse('polls:detail', args=(poll.pk,)),
        #     id=1,  # unique id for this node within the menu
        # )

        nodes.append(
            NavigationNode(title='My Issues', url='/issues/list', id=1))
        nodes.append(NavigationNode(title='New Issue', url='/issues/new',
                                    id=2))
        nodes.append(
            NavigationNode(title='Dashboard', url='/issues/dashboard', id=3))
        nodes.append(
            NavigationNode(title='By Location', url='/issues/location', id=3))
        nodes.append(NavigationNode(title='SITREP', url='/issues/sitrep',
                                    id=4))

        # n = NavigationNode(_('sample settings page'), "/bye/", 2)
        # nodes.append(n)

        return nodes


menu_pool.register_menu(IssuesMenu)
コード例 #47
0
ファイル: menu.py プロジェクト: hzlf/openbroadcast.org
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse

from menus.base import Modifier, Menu, NavigationNode
from menus.menu_pool import menu_pool
from cms.menu_bases import CMSAttachMenu


class ImportMenu(CMSAttachMenu):
    
    name = _("Import Menu")
    
    def get_nodes(self, request):
        nodes = []

        node = NavigationNode(
            _('My Uploads'),
            reverse('importer-import-list'),
            181
        )
        nodes.append(node)

        
        return nodes
    
menu_pool.register_menu(ImportMenu)


コード例 #48
0
ファイル: menu.py プロジェクト: airtonix/django-simple-shop
        nodes = []
        for category in Category.objects.all().order_by("parent", "ordering"):
            nodes.append(NavigationNode(title=category.name, 
                                        url=category.get_absolute_url(), 
                                        id=category.pk, 
                                        parent_id=category.parent_id,
                                        attr=dict(slug=category.slug)))

        return nodes

class CategoryIcon(Modifier):
    """
    navigation modifier that adds icon attribute
    """
    icons = {}
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        if breadcrumb or not post_cut:
            return nodes
        ns = CatalogMenu.__name__
        if not self.icons:
            for ci in CategoryImage.objects.filter(icon=True):
                self.icons[ci.category.pk] = ci.image.file.url 
        if self.icons:
            for node in nodes:
                #print node.id, node.title, ', ns:', getattr(node, 'namespace', 'None')
                if node.namespace == ns and self.icons.get(node.id, None):
                    node.attr['icon'] = self.icons.get(node.id)
        return nodes
    
menu_pool.register_menu(CatalogMenu)
menu_pool.register_modifier(CategoryIcon)
コード例 #49
0
ファイル: menu.py プロジェクト: alainwolf/openbroadcast.org
            _('Releases'),
            reverse('alibrary-release-list', args=[]),
            123
        )
        nodes.append(node)
        node = NavigationNode(
            _('Artists'),
            reverse('ArtistListlView', args=[]),
            123
        )
        nodes.append(node)
        """
        
        return nodes
    
menu_pool.register_menu(LibraryMenu)






class ReleaseMenu(CMSAttachMenu):
    
    name = _("Release Menu")
    
    def get_nodes(self, request):
        nodes = []
        """
        for release in Release.objects.active():
            try:
コード例 #50
0
ファイル: menu.py プロジェクト: hzlf/openbroadcast
        
        """"""
        node = NavigationNode(
            _('All Profiles'),
            reverse('profiles-profile-list'),
            171
        )
        nodes.append(node)
        
        if request.user.is_active:
            node = NavigationNode(
                _('My Profile'),
                reverse('profiles-profile-detail', args=[request.user.username]),
                111
            )
            nodes.append(node)
            
            
            node = NavigationNode(
                _('Edit my Profile'),
                reverse('profiles-profile-edit'),
                121
            )
            nodes.append(node)
        
        return nodes
    
menu_pool.register_menu(ProfileMenu)


コード例 #51
0
ファイル: menu.py プロジェクト: indexofire/pyrix-site
# -*- coding: utf-8 -*-
from django.utils.translation import ugettext as _

from cms.menu_bases import CMSAttachMenu

from menus.base import NavigationNode
from menus.menu_pool import menu_pool

from wiki.models import WikiPage

class WikiPageMenu(CMSAttachMenu):
    """Wiki Page Menu
    
    Create a Wiki Page menu in breadcrumb.
    """
    name = _("Wiki Page Menu")

    def get_nodes(self, request):
        nodes=[]
        wikipages = WikiPage.objects.all()
        for wikipage in wikipages:
            nodes.append(NavigationNode(wikipage.slug, 
                wikipage.slug, 
                wikipage.pk))
        return nodes


menu_pool.register_menu(WikiPageMenu)

コード例 #52
0
				nodes.append(NavigationNode(subcategory.title, "/swivels/"+ category.slug + '/' + subcategory.slug, subcategory.id, category.id*154332345))
		return nodes

#class SubCategoryMenu2(CMSAttachMenu):

#	name = _("aSwivel Products")
#	def get_nodes(self, request):
#		nodes = []
#		cat = request.current_page
#		for category in Category.objects.filter(associated_page__reverse_id = "swivelproduct"):
#			nodes.append(NavigationNode(category.title, "/produits/"+ category.slug + '/', category.id*154332345, None ,None, {'is_extending' : True}))
#			for subcategory in SubCategory.objects.filter(category__id = category.id):
#				nodes.append(NavigationNode(subcategory.title, "/produits/"+ category.slug + '/' + subcategory.slug, subcategory.id, category.id*154332345))
#		return nodes
#menu_pool.register_menu(SubCategoryMenu2)
menu_pool.register_menu(SubCategoryMenu)

class NavExtender(Modifier):
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        if post_cut:
            return nodes
        nodes = sorted(nodes, key=lambda n: n.attr.get("is_extending", None), reverse=True)
        exts = []
        # rearrange the parent relations
        home = None
        for node in nodes:
            if node.attr.get("is_home", False):
                home = node
            extenders = node.attr.get("navigation_extenders", None)
            if extenders:
                for ext in extenders:
コード例 #53
0
ファイル: menu.py プロジェクト: AaronJaramillo/shopDPM
            n = NavigationNode(cat.name, cat.get_absolute_url(), cat.pk, cat.parent_id, "sampleapp")
            nodes.append(n)
        try:
            n = NavigationNode(_('sample root page'), reverse('sample-root'), 1)
            n2 = NavigationNode(_('sample settings page'), reverse('sample-settings'), 2)
            n3 = NavigationNode(_('sample account page'), reverse('sample-account'), 3)
            n4 = NavigationNode(_('sample my profile page'), reverse('sample-profile'), 4, 3)
            nodes.append(n)
            nodes.append(n2)
            nodes.append(n3)
            nodes.append(n4)
        except NoReverseMatch:
            pass
        return nodes

menu_pool.register_menu(SampleAppMenu)


class StaticMenu(CMSAttachMenu):
    name = _("Static Menu")

    def get_nodes(self, request):
        nodes = []
        n = NavigationNode('static root page', "/fresh/", 1)
        n2 = NavigationNode('static settings page', "/bye/", 2)
        n3 = NavigationNode('static account page', "/hello/", 3)
        n4 = NavigationNode('static my profile page', "/hello/world/", 4, 3)
        nodes.append(n)
        nodes.append(n2)
        nodes.append(n3)
        nodes.append(n4)
コード例 #54
0
ファイル: menu.py プロジェクト: nephila/cmsplugin-zinnia
        """Return menu's node for tags"""
        nodes = []
        nodes.append(
            NavigationNode(_('Tags'), reverse('zinnia_tag_list'), 'tags'))
        for tag in tags_published():
            nodes.append(
                NavigationNode(tag.name,
                               reverse('zinnia_tag_detail', args=[tag.name]),
                               tag.pk, 'tags'))
        return nodes


class EntryModifier(Modifier):
    """Menu Modifier for entries,
    hide the MenuEntry in navigation, not in breadcrumbs"""
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        """Modify nodes of a menu"""
        if breadcrumb:
            return nodes
        for node in nodes:
            if node.attr.get('hidden'):
                node.visible = False
        return nodes


menu_pool.register_menu(EntryMenu)
menu_pool.register_menu(CategoryMenu)
menu_pool.register_menu(AuthorMenu)
menu_pool.register_menu(TagMenu)
menu_pool.register_modifier(EntryModifier)
コード例 #55
0
ファイル: menu.py プロジェクト: Marketionist/aldryn-faq
            if url:
                node = NavigationNode(
                    category.safe_translation_getter(
                        'name', language_code=language),
                    url,
                    category.pk,
                )
                nodes.append(node)
                for question in category.questions.all():
                    try:
                        q_url = question.get_absolute_url(language=language)
                    except NoReverseMatch:
                        q_url = None

                    if q_url:
                        node = NavigationNode(
                            question.safe_translation_getter(
                                'title', language_code=language),
                            q_url,
                            # NOTE: We're adding 1 million here to avoid
                            # clashing with the category IDs.
                            category.pk * 1000000 + question.pk,
                            category.pk,
                        )
                        nodes.append(node)

        return nodes

menu_pool.register_menu(FaqCategoryMenu)
コード例 #56
0
# -*- encoding: UTF-8 -*-
from cms.menu_bases import CMSAttachMenu
from menus.menu_pool import menu_pool
from menus.base import NavigationNode

from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse


class ScheduleMenu(CMSAttachMenu):
    name = _("Schedule menu")

    def get_nodes(self, request):
        nodes = []
        nodes.append(
            NavigationNode(_("Schedule"), reverse('schedule'), 'schedule'))
        return nodes


menu_pool.register_menu(ScheduleMenu)