move BlogCategoryMenu to a separate menu.py
This commit is contained in:
parent
f55af7d036
commit
a5c1feb6b0
2 changed files with 3 additions and 63 deletions
|
|
@ -1,34 +1,10 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from cms.app_base import CMSApp
|
from cms.app_base import CMSApp
|
||||||
from cms.apphook_pool import apphook_pool
|
from cms.apphook_pool import apphook_pool
|
||||||
from cms.menu_bases import CMSAttachMenu
|
|
||||||
from menus.base import NavigationNode
|
|
||||||
from menus.menu_pool import menu_pool
|
|
||||||
from django.core.urlresolvers import reverse
|
|
||||||
from django.utils.translation import ugettext_lazy as _, get_language
|
from django.utils.translation import ugettext_lazy as _, get_language
|
||||||
from .models import BlogCategory
|
from .menu import BlogCategoryMenu
|
||||||
|
|
||||||
|
|
||||||
class BlogCategoryMenu(CMSAttachMenu):
|
|
||||||
name = _('Blog Category menu')
|
|
||||||
|
|
||||||
def get_nodes(self, request):
|
|
||||||
nodes = []
|
|
||||||
qs = BlogCategory.objects.translated(get_language())
|
|
||||||
qs = qs.order_by('parent_id', 'translations__name')
|
|
||||||
for category in qs:
|
|
||||||
kwargs = { 'category': category.slug }
|
|
||||||
node = NavigationNode(
|
|
||||||
category.name,
|
|
||||||
category.get_absolute_url(),
|
|
||||||
category.pk,
|
|
||||||
category.parent_id
|
|
||||||
)
|
|
||||||
nodes.append(node)
|
|
||||||
return nodes
|
|
||||||
|
|
||||||
menu_pool.register_menu(BlogCategoryMenu)
|
|
||||||
|
|
||||||
class BlogApp(CMSApp):
|
class BlogApp(CMSApp):
|
||||||
name = _('Blog')
|
name = _('Blog')
|
||||||
urls = ['djangocms_blog.urls']
|
urls = ['djangocms_blog.urls']
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from cms.menu_bases import CMSAttachMenu
|
from cms.menu_bases import CMSAttachMenu
|
||||||
from menus.base import Modifier, NavigationNode
|
from menus.base import NavigationNode
|
||||||
from menus.menu_pool import menu_pool
|
from menus.menu_pool import menu_pool
|
||||||
from django.db.models.signals import post_save, post_delete
|
|
||||||
from django.utils.translation import ugettext_lazy as _, get_language
|
from django.utils.translation import ugettext_lazy as _, get_language
|
||||||
from .models import BlogCategory
|
from .models import BlogCategory
|
||||||
|
|
||||||
|
|
@ -13,7 +12,7 @@ class BlogCategoryMenu(CMSAttachMenu):
|
||||||
def get_nodes(self, request):
|
def get_nodes(self, request):
|
||||||
nodes = []
|
nodes = []
|
||||||
qs = BlogCategory.objects.translated(get_language())
|
qs = BlogCategory.objects.translated(get_language())
|
||||||
qs = qs.order_by('parent__id', 'translations__name')
|
qs = qs.order_by('parent_id', 'translations__name')
|
||||||
for category in qs:
|
for category in qs:
|
||||||
kwargs = { 'category': category.slug }
|
kwargs = { 'category': category.slug }
|
||||||
node = NavigationNode(
|
node = NavigationNode(
|
||||||
|
|
@ -27,38 +26,3 @@ class BlogCategoryMenu(CMSAttachMenu):
|
||||||
|
|
||||||
menu_pool.register_menu(BlogCategoryMenu)
|
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):
|
|
||||||
if not post_cut: return nodes
|
|
||||||
if not hasattr(request, 'toolbar'):
|
|
||||||
return nodes
|
|
||||||
models = ('djangocms_blog.post', 'djangocms_blog.blogcategory')
|
|
||||||
model = request.toolbar.get_object_model()
|
|
||||||
if model not in models:
|
|
||||||
return nodes
|
|
||||||
if model == 'djangocms_blog.blogcategory':
|
|
||||||
cat = request.toolbar.obj
|
|
||||||
else:
|
|
||||||
cat = request.toolbar.obj.categories.first()
|
|
||||||
if not cat: return nodes
|
|
||||||
|
|
||||||
for node in nodes:
|
|
||||||
if (node.namespace == BlogCategoryMenu.__name__ and
|
|
||||||
cat.pk == node.id):
|
|
||||||
node.selected = True
|
|
||||||
break
|
|
||||||
return nodes
|
|
||||||
|
|
||||||
menu_pool.register_modifier(BlogNavModifier)
|
|
||||||
|
|
||||||
def clear_menu_cache(**kwargs):
|
|
||||||
menu_pool.clear(all=True)
|
|
||||||
|
|
||||||
post_save.connect(clear_menu_cache, sender=BlogCategory)
|
|
||||||
post_delete.connect(clear_menu_cache, sender=BlogCategory)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue