Skip to content

Commit

Permalink
do plugin menu calculation in placeholder
Browse files Browse the repository at this point in the history
  • Loading branch information
czpython committed May 14, 2016
1 parent 9b542f9 commit 4f2ec23
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 20 deletions.
7 changes: 5 additions & 2 deletions cms/plugin_rendering.py
Expand Up @@ -13,6 +13,7 @@
from cms.utils import get_language_from_request
from cms.utils.conf import get_cms_setting, get_site_id
from cms.utils.django_load import iterload_objects
from cms.utils.placeholder import get_toolbar_plugin_struct


DEFAULT_PLUGIN_CONTEXT_PROCESSORS = (
Expand Down Expand Up @@ -229,9 +230,11 @@ def render_placeholder_toolbar(placeholder, context, name_fallback, save_languag
slot = None
context.push()

plugins = [cls.__name__ for cls in plugin_pool.get_all_plugins(slot, page)]
plugin_classes = plugin_pool.get_all_plugins(slot, page)
plugin_types = [cls.__name__ for cls in plugin_classes]

context['allowed_plugins'] = plugins + plugin_pool.get_system_plugins()
context['allowed_plugins'] = plugin_types + plugin_pool.get_system_plugins()
context['plugin_menu'] = get_toolbar_plugin_struct(plugin_classes, slot=slot, page=page)
context['placeholder'] = placeholder
context['language'] = save_language
context['page'] = page
Expand Down
6 changes: 2 additions & 4 deletions cms/templates/cms/toolbar/dragitem_menu.html
@@ -1,12 +1,10 @@
{% load i18n %}
{% language request.toolbar.toolbar_language %}
{% regroup plugin_classes by module as module_list %}
{% regroup plugin_menu by module as module_list %}
{% for module in module_list %}
<div class="cms-submenu-item cms-submenu-item-title"><span>{% if module.grouper %}{{ module.grouper|capfirst }}{% else %}{% trans "Available plugins" %}{% endif %}</span></div>
{% for p in module.list %}
{% if p.value != 'AliasPlugin' %}
<div class="cms-submenu-item"><a data-rel="add" href="{{ p.value }}">{{ p.name }}</a></div>
{% endif %}
<div class="cms-submenu-item"><a data-rel="add" href="{{ p.value }}">{{ p.name }}</a></div>
{% endfor %}
{% endfor %}
{% endlanguage %}
3 changes: 3 additions & 0 deletions cms/templates/cms/toolbar/placeholder.html
Expand Up @@ -20,5 +20,8 @@
}
}]);
</script>
<script id="cms-plugin-child-classes" type="text/cms-template">
{% include request.toolbar.drag_item_menu_template %}
</script>
{% endlanguage %}
{% endaddtoblock %}
1 change: 0 additions & 1 deletion cms/templates/cms/toolbar/toolbar.html
Expand Up @@ -118,5 +118,4 @@ <h1>{% trans "This page has no preview!" %}</h1>
</div>
{% endif %}
</div>
<script id="cms-plugin-child-classes" type="text/cms-template">{% render_dragitem_menu %}</script>
{% endlanguage %}
14 changes: 1 addition & 13 deletions cms/templatetags/cms_tags.py
Expand Up @@ -47,7 +47,7 @@
from cms.utils.i18n import force_language
from cms.utils.moderator import use_draft
from cms.utils.page_resolver import get_page_queryset
from cms.utils.placeholder import validate_placeholder_name, get_toolbar_plugin_struct, restore_sekizai_context
from cms.utils.placeholder import validate_placeholder_name, restore_sekizai_context
from cms.utils.urlutils import admin_reverse

DJANGO_VERSION = django.get_version()
Expand Down Expand Up @@ -385,18 +385,6 @@ def get_context(self, context, plugin, nodelist):
register.tag(RenderPluginBlock)


@register.inclusion_tag('cms/toolbar/dragitem_menu.html', takes_context=True)
def render_dragitem_menu(context):
plugins = plugin_pool.get_all_plugins()

if plugins:
# Builds the list of dictionaries containing module, name and value for the plugin dropdowns
child_plugin_classes = get_toolbar_plugin_struct(plugins)
else:
child_plugin_classes = []
return {'plugin_classes': child_plugin_classes}


@register.simple_tag(takes_context=True)
def render_extra_menu_items(context, obj, template='cms/toolbar/dragitem_extra_menu.html'):
request = context['request']
Expand Down
4 changes: 4 additions & 0 deletions cms/toolbar/toolbar.py
Expand Up @@ -361,6 +361,10 @@ def get_cached_template(self, template):
def drag_item_template(self):
return self.get_cached_template('cms/toolbar/dragitem.html')

@cached_property
def drag_item_menu_template(self):
return self.get_cached_template('cms/toolbar/dragitem_menu.html')

@cached_property
def dragbar_template(self):
return self.get_cached_template('cms/toolbar/dragbar.html')
Expand Down

0 comments on commit 4f2ec23

Please sign in to comment.