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
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
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
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
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
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
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]
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
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
def get_nodes(self, request): nodes = [] node = NavigationNode(_('Week'), '#', 7202) nodes.append(node) node = NavigationNode(_('Two weeks'), '#', 7203) nodes.append(node) return nodes
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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)
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