Skip to content

Commit

Permalink
Fixed adding plugins to PlaceholderFields in frontend
Browse files Browse the repository at this point in the history
Added a view in the tests project to see the placeholder field frontend admin in action
  • Loading branch information
Jonas Obrist committed Aug 3, 2011
1 parent 194ba2f commit d888549
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 8 deletions.
24 changes: 20 additions & 4 deletions cms/models/placeholdermodel.py
@@ -1,12 +1,13 @@
# -*- coding: utf-8 -*-
import operator

from cms.utils.helpers import reversion_register
from cms.utils.placeholder import PlaceholderNoAction
from django.core.urlresolvers import reverse
from django.db import models
from django.forms.widgets import Media
from django.utils.translation import ugettext_lazy as _
import operator


from cms.utils.helpers import reversion_register
from cms.utils.placeholder import PlaceholderNoAction

class Placeholder(models.Model):
slot = models.CharField(_("slot"), max_length=50, db_index=True, editable=False)
Expand All @@ -17,6 +18,21 @@ class Meta:

def __unicode__(self):
return self.slot

def get_add_url(self):
return self._get_url('add_plugin')

def get_changelist_url(self):
return self._get_url('changelist')

def _get_url(self, key):
model = self._get_attached_model()
if not model:
return reverse('admin:cms_page_%s' % key)
else:
app_label = model._meta.app_label
model_name = model.__name__.lower()
return reverse('admin:%s_%s_%s' % (app_label, model_name, key))

def _get_permission(self, request, key):
"""
Expand Down
10 changes: 6 additions & 4 deletions cms/templates/cms/toolbar/placeholder.html
@@ -1,4 +1,5 @@
{% load i18n %}
{% load i18n sekizai_tags %}
{% addtoblock "js" %}
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function ($) {
Expand All @@ -8,13 +9,14 @@
'page_language': '{{ language }}',
'placeholder_id': '{{ placeholder.pk }}',
'urls': {
'add_plugin': '{% url admin:cms_page_add_plugin %}',
'change_list': '{% url admin:cms_page_changelist %}'
'add_plugin': '{{ placeholder.get_add_url }}',
'change_list': '{{ placeholder.get_changelist_url }}'
}
});
});
//]]>
</script>
{% endaddtoblock %}
<div id="cms_placeholder-bar-{{ placeholder.pk }}" class="cms_placeholder-bar cms_reset cms_placeholder_slot::{{ placeholder.slot }}">
<div class="cms_placeholder-title">{{ placeholder_label }}</div>
<div class="cms_placeholder-btn">
Expand All @@ -24,7 +26,7 @@
<span class="cms_toolbar_icon cms_toolbar_icon-more">-</span>
</span>
</a>
<ul class="cms_placeholder-subnav">
<ul class="cms_placeholder-subnav">
{% regroup installed_plugins by module as module_list %}
{% for module in module_list %}
<li class="cms_placeholder-subnav-title"><span>{% if module.grouper %}{{ module.grouper|capfirst }}{% else %}{% trans "Available plugins" %}{% endif %}</span>
Expand Down
2 changes: 2 additions & 0 deletions cms/templates/cms/toolbar/placeholder_wrapper.html
@@ -1,4 +1,5 @@
{% load sekizai_tags %}
{% addtoblock "js" %}
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function ($) {
Expand All @@ -17,4 +18,5 @@
});
//]]>
</script>
{% endaddtoblock %}
<div id="cms_placeholder-{{ instance.pk }}" class="cms_placeholder">{{ rendered_content }}</div>
9 changes: 9 additions & 0 deletions tests/project/placeholderapp/views.py
@@ -0,0 +1,9 @@
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from project.placeholderapp.models import Example1


def example_view(request):
context = RequestContext(request)
context['examples'] = Example1.objects.all()
return render_to_response('placeholderapp.html', context)
9 changes: 9 additions & 0 deletions tests/project/templates/placeholderapp.html
@@ -0,0 +1,9 @@
{% extends "base.html" %}
{% load placeholder_tags %}
{% block content %}
{% for example in examples %}
<div>{% render_placeholder example.placeholder %}</div>
{% empty %}
<div>No examples found</div>
{% endfor %}
{% endblock content %}
1 change: 1 addition & 0 deletions tests/project/urls.py
Expand Up @@ -7,6 +7,7 @@

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^example/$', 'project.placeholderapp.views.example_view'),
url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
url(r'^media/cms/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}),
Expand Down

0 comments on commit d888549

Please sign in to comment.