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)
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)
# -*- 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)
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)
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)
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
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)
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)
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)
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)
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)
# -*- 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)
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)
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:
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)
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)
"""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)
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)
"""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)
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)
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)
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)
# -*- 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)
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)
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.
- `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)
.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?
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)
#-*- 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)
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)
#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)
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:
# 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)
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)
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)
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)
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)
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.
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)
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:
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)
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)
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)
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:
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)
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)
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)
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)
_('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:
"""""" 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)
# -*- 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)
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:
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)
"""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)
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)
# -*- 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)