diff --git a/CHANGELOG.txt b/CHANGELOG.txt index cbc86355d..8f9c1ca87 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -40,6 +40,7 @@ Changelog * Added hooks `register_rich_text_embed_handler` and `register_rich_text_link_handler` for customising link / embed handling within rich text fields * Added hook `construct_homepage_summary_items` for customising the site summary panel on the admin homepage * No longer automatically tries to use Celery for sending notification emails + * Added "Add child page" button to admin userbar (Eric Drechsel) 0.8.6 (10.03.2015) diff --git a/docs/releases/1.0.rst b/docs/releases/1.0.rst index 3f6c69685..ccd642f18 100644 --- a/docs/releases/1.0.rst +++ b/docs/releases/1.0.rst @@ -51,6 +51,7 @@ Admin * Added pagination to the snippets listing and chooser * Page / document / image / snippet choosers now include a link to edit the chosen item * Plain text fields in the page editor now use auto-expanding text areas + * Added "Add child page" button to admin userbar **Page editor** diff --git a/wagtail/tests/templates/tests/base.html b/wagtail/tests/templates/tests/base.html new file mode 100644 index 000000000..636b5c588 --- /dev/null +++ b/wagtail/tests/templates/tests/base.html @@ -0,0 +1,13 @@ +{% load wagtailuserbar %} + + + + + {% block html_title %}{{ self.title }}{% endblock %} + + + {% wagtailuserbar %} +

{{ self.title }}

+ {% block content %}{% endblock %} + + diff --git a/wagtail/tests/templates/tests/business_child.html b/wagtail/tests/templates/tests/business_child.html new file mode 100644 index 000000000..33e29f1c2 --- /dev/null +++ b/wagtail/tests/templates/tests/business_child.html @@ -0,0 +1,5 @@ +{% extends "tests/base.html" %} + +{% block content %} +

Business Child

+{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/event_index.html b/wagtail/tests/testapp/templates/tests/event_index.html index dc07020b2..345aac9e0 100644 --- a/wagtail/tests/testapp/templates/tests/event_index.html +++ b/wagtail/tests/testapp/templates/tests/event_index.html @@ -1,10 +1,5 @@ - - - - {{ self.title }} - - -

{{ self.title }}

- {% include "tests/includes/event_listing.html" %} - - +{% extends "tests/base.html" %} + +{% block content %} + {% include "tests/includes/event_listing.html" %} +{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/event_page.html b/wagtail/tests/testapp/templates/tests/event_page.html index a3ccaa718..f2f486962 100644 --- a/wagtail/tests/testapp/templates/tests/event_page.html +++ b/wagtail/tests/testapp/templates/tests/event_page.html @@ -1,17 +1,12 @@ +{% extends "tests/base.html" %} {% load wagtailcore_tags wagtailimages_tags %} - - - - Event: {{ self.title }} - - -

{{ self.title }}

-

Event

- {% if self.feed_image %} - {% image self.feed_image width-200 class="feed-image" %} - {% endif %} - {{ self.body|richtext }} -

Back to events index

- - +{% block html_title %}Event: {{ self.title }}{% endblock %} +{% block content %} +

Event

+ {% if self.feed_image %} + {% image self.feed_image width-200 class="feed-image" %} + {% endif %} + {{ self.body|richtext }} +

Back to events index

+{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/event_page_password_required.html b/wagtail/tests/testapp/templates/tests/event_page_password_required.html index e58d740ad..7311c7940 100644 --- a/wagtail/tests/testapp/templates/tests/event_page_password_required.html +++ b/wagtail/tests/testapp/templates/tests/event_page_password_required.html @@ -1,15 +1,10 @@ - - - - {{ self.title }} - - -

{{ self.title }}

-

This event is invitation only. Please enter your password to see the details.

-
- {% csrf_token %} - {{ form.as_p }} - -
- - +{% extends "tests/base.html" %} + +{% block content %} +

This event is invitation only. Please enter your password to see the details.

+
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/form_page.html b/wagtail/tests/testapp/templates/tests/form_page.html index d908c60a2..f275ec80f 100644 --- a/wagtail/tests/testapp/templates/tests/form_page.html +++ b/wagtail/tests/testapp/templates/tests/form_page.html @@ -1,16 +1,10 @@ +{% extends "tests/base.html" %} {% load wagtailcore_tags %} - - - - {{ self.title }} - - -

{{ self.title }}

-
- {% csrf_token %} - {{ form.as_p }} - -
- - +{% block content %} +
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/form_page_landing.html b/wagtail/tests/testapp/templates/tests/form_page_landing.html index d9a6369d4..9615c79d3 100644 --- a/wagtail/tests/testapp/templates/tests/form_page_landing.html +++ b/wagtail/tests/testapp/templates/tests/form_page_landing.html @@ -1,12 +1,5 @@ -{% load wagtailcore_tags %} +{% extends "tests/base.html" %} - - - - {{ self.title }} - - -

{{ self.title }}

-

Thank you for your feedback.

- - +{% block content %} +

Thank you for your feedback.

+{% endblock %} diff --git a/wagtail/tests/testapp/templates/tests/simple_page.html b/wagtail/tests/testapp/templates/tests/simple_page.html index 1f3593514..7a173c096 100644 --- a/wagtail/tests/testapp/templates/tests/simple_page.html +++ b/wagtail/tests/testapp/templates/tests/simple_page.html @@ -1,12 +1,5 @@ -{% load wagtailcore_tags %} +{% extends "tests/base.html" %} - - - - {{ self.title }} - - -

{{ self.title }}

-

Simple page

- - +{% block content %} +

Simple page

+{% endblock %} diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/userbar/item_page_add.html b/wagtail/wagtailadmin/templates/wagtailadmin/userbar/item_page_add.html index 45f0002e9..1a4d0a7f4 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/userbar/item_page_add.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/userbar/item_page_add.html @@ -2,5 +2,5 @@ {% load i18n %} {% block item_content %} - {% trans 'Add' %} -{% endblock %} \ No newline at end of file + {% trans 'Add' %} +{% endblock %} diff --git a/wagtail/wagtailadmin/tests/test_userbar.py b/wagtail/wagtailadmin/tests/test_userbar.py index c43a1bbc0..4daf9370a 100644 --- a/wagtail/wagtailadmin/tests/test_userbar.py +++ b/wagtail/wagtailadmin/tests/test_userbar.py @@ -7,6 +7,7 @@ from django.contrib.auth.models import AnonymousUser from wagtail.tests.utils import WagtailTestUtils from wagtail.wagtailcore.models import Page +from wagtail.tests.models import BusinessIndex, BusinessChild class TestUserbarTag(TestCase): @@ -60,6 +61,37 @@ class TestUserbarFrontend(TestCase, WagtailTestUtils): self.assertEqual(response.status_code, 403) +class TestUserbarAddLink(TestCase, WagtailTestUtils): + fixtures = ['test.json'] + + def setUp(self): + self.login() + self.homepage = Page.objects.get(url_path='/home/') + self.event_index = Page.objects.get(url_path='/home/events/') + + self.business_index = BusinessIndex(title='Business', slug='business', live=True) + self.homepage.add_child(instance=self.business_index) + + self.business_child = BusinessChild(title='Business Child', slug='child', live=True) + self.business_index.add_child(instance=self.business_child) + + def test_page_allowing_subpages(self): + response = self.client.get(reverse('wagtailadmin_userbar_frontend', args=(self.event_index.id, ))) + + # page allows subpages, so the 'add page' button should show + expected_url = reverse('wagtailadmin_pages_add_subpage', args=(self.event_index.id, )) + expected_link = 'Add' % expected_url + self.assertContains(response, expected_link) + + def test_page_disallowing_subpages(self): + response = self.client.get(reverse('wagtailadmin_userbar_frontend', args=(self.business_child.id, ))) + + # page disallows subpages, so the 'add page' button shouldn't show + expected_url = reverse('wagtailadmin_pages_add_subpage', args=(self.business_index.id, )) + expected_link = 'Add' % expected_url + self.assertNotContains(response, expected_link) + + class TestUserbarModeration(TestCase, WagtailTestUtils): def setUp(self): self.login() diff --git a/wagtail/wagtailadmin/userbar.py b/wagtail/wagtailadmin/userbar.py index 195e936b3..8416255ff 100644 --- a/wagtail/wagtailadmin/userbar.py +++ b/wagtail/wagtailadmin/userbar.py @@ -23,8 +23,8 @@ class AddPageItem(BaseItem): if not request.user.has_perm('wagtailadmin.access_admin'): return "" - # Don't render if user doesn't have ability to add siblings - permission_checker = self.page.get_parent().permissions_for_user(request.user) + # Don't render if user doesn't have ability to add children here + permission_checker = self.page.permissions_for_user(request.user) if not permission_checker.can_add_subpage(): return ""