Skip to content

Commit

Permalink
Fix issue with containers within blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Vetter committed Aug 7, 2013
1 parent 37c5b3f commit 2d80e5a
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
<div class="row-fluid">
<div class="span3 column-1 pull-left">
{% block column_1 %}
{% fp_object_container container-one %}
{% fp_block_container container-one %}
{% endblock %}
</div>

<div class="span3 column-2 pull-left">
{% block column_2 %}
{% fp_object_container container-two %}
{% fp_block_container container-two %}
{% endblock %}
</div>

<div class="span3 column-3 pull-right">
{% block column_3 %}
{% fp_object_container container-three %}
{% fp_block_container container-three %}
{% endblock %}
</div>

<div class="span3 column-4 pull-right">
{% block column_4 %}
{% fp_object_container container-four %}
{% fp_block_container container-four %}
{% endblock %}
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
{% for tab in fp_block.tabs.all %}
<div class="tab-pane {% if forloop.first %}active{% endif %}"
id="tab-{{ fp_block.id }}-{{ forloop.counter }}">
{% fp_object_container tab %}
{% fp_block_container tab %}
</div>
{% endfor %}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
<div class="row-fluid">
<div class="span4 column-1 pull-left">
{% block column_1 %}
{% fp_object_container container-one %}
{% fp_block_container container-one %}
{% endblock %}
</div>

<div class="span4 column-2 pull-left">
{% block column_2 %}
{% fp_object_container container-two %}
{% fp_block_container container-two %}
{% endblock %}
</div>

<div class="span4 column-3 pull-right">
{% block column_3 %}
{% fp_object_container container-three %}
{% fp_block_container container-three %}
{% endblock %}
</div>
</div>
4 changes: 2 additions & 2 deletions fancypages/templates/fancypages/blocks/two_column_layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
<div class="row-fluid">
<div class="{{ fp_block.left_span }} column-left pull-left">
{% block column_left %}
{% fp_object_container left-container %}
{% fp_block_container left-container %}
{% endblock %}
</div>

<div class="{{ fp_block.right_span }} column-right pull-right">
{% block column_right %}
{% fp_object_container right-container %}
{% fp_block_container right-container %}
{% endblock %}
</div>
</div>
22 changes: 20 additions & 2 deletions fancypages/templatetags/fp_container_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ def fp_container(parser, token):
return FancyContainerNode(container_name)


@register.tag
def fp_object_container(parser, token):
def _parse_object_token(token):
# split_contents() knows not to split quoted strings.
args = token.split_contents()

Expand All @@ -103,4 +102,23 @@ def fp_object_container(parser, token):
object_name = args.pop(0)
except IndexError:
object_name = None
return container_name, object_name


@register.tag
def fp_object_container(parser, token):
container_name, object_name = _parse_object_token(token)
return FancyObjectContainerNode(container_name, object_name)


@register.tag
def fp_block_container(parser, token):
"""
Template tag for convenience to use within templates for e.g. layout blocks
where the container is assigned to the widget rather then the object in the
context. The same could be achieved using::
{% fp_object_container some-name fp_block %}
"""
container_name, __ = _parse_object_token(token)
return FancyObjectContainerNode(container_name, u'fp_block')
29 changes: 29 additions & 0 deletions tests/unit/blocks/test_two_column_layout_block.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import mock

from django.test import TestCase
from django.template import RequestContext

from fancypages.models import Container
from fancypages.models.blocks import TwoColumnLayoutBlock

from fancypages.test import factories


class TestTwoColumnLayoutBlock(TestCase):

def setUp(self):
super(TestTwoColumnLayoutBlock, self).setUp()
self.user = factories.UserFactory.build()

self.request_context = RequestContext(mock.MagicMock())
self.request_context['user'] = self.user

def test_generates_two_empty_containers_when_rendered(self):
container = Container.objects.create(name='test-container')
block = TwoColumnLayoutBlock.objects.create(container=container)

self.assertEquals(block.containers.count(), 0)
renderer = block.get_renderer_class()(block, self.request_context)
block_html = renderer.render()

self.assertEquals(block.containers.count(), 2)

0 comments on commit 2d80e5a

Please sign in to comment.