diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f8c840fd4b..7af5e87eb0 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -15,6 +15,7 @@ Changelog * Tag field autocompletion now handles custom tag models (Matt Westcott) * `wagtail_serve` URL route can now be omitted for headless sites (Storm Heg) * Allow free tagging to be disabled on custom tag models (Matt Westcott) + * Allow disabling page preview by setting `preview_modes` to an empty list (Casper Timmers) * Fix: Added ARIA alert role to live search forms in the admin (Casper Timmers) * Fix: Reorder login form elements to match expected tab order (Kjartan Sverrisson) * Fix: Re-add 'Close Explorer' button on mobile viewports (Sævar Öfjörð Magnússon) diff --git a/docs/releases/2.9.rst b/docs/releases/2.9.rst index e56a2541b0..67ffefd897 100644 --- a/docs/releases/2.9.rst +++ b/docs/releases/2.9.rst @@ -24,6 +24,7 @@ Other features * Tag field autocompletion now handles custom tag models (Matt Westcott) * ``wagtail_serve`` URL route can now be omitted for headless sites (Storm Heg) * Allow free tagging to be disabled on custom tag models (Matt Westcott) + * Allow disabling page preview by setting ``preview_modes`` to an empty list (Casper Timmers) Bug fixes diff --git a/wagtail/admin/templates/wagtailadmin/pages/create.html b/wagtail/admin/templates/wagtailadmin/pages/create.html index f1514cb466..bdb503889b 100644 --- a/wagtail/admin/templates/wagtailadmin/pages/create.html +++ b/wagtail/admin/templates/wagtailadmin/pages/create.html @@ -32,24 +32,26 @@ -
  • - {% trans 'Preview' as preview_label %} - {% if preview_modes|length > 1 %} -
  • + {% trans 'Preview' as preview_label %} + {% if preview_modes|length > 1 %} + + {% else %} {% include "wagtailadmin/pages/_preview_button_on_create.html" with label=preview_label icon=1 %} - - - - {% else %} - {% include "wagtailadmin/pages/_preview_button_on_create.html" with label=preview_label icon=1 %} - {% endif %} -
  • + {% endif %} + + {% endif %} {% block extra_footer_actions %} {% endblock %} diff --git a/wagtail/admin/templates/wagtailadmin/pages/edit.html b/wagtail/admin/templates/wagtailadmin/pages/edit.html index 550b9de5b2..a53aa4e8e8 100644 --- a/wagtail/admin/templates/wagtailadmin/pages/edit.html +++ b/wagtail/admin/templates/wagtailadmin/pages/edit.html @@ -43,24 +43,26 @@ -
  • - {% trans 'Preview' as preview_label %} - {% if preview_modes|length > 1 %} -
  • + {% trans 'Preview' as preview_label %} + {% if preview_modes|length > 1 %} + + {% else %} {% include "wagtailadmin/pages/_preview_button_on_edit.html" with label=preview_label icon=1 %} - - - - {% else %} - {% include "wagtailadmin/pages/_preview_button_on_edit.html" with label=preview_label icon=1 %} - {% endif %} -
  • + {% endif %} + + {% endif %}
  • diff --git a/wagtail/admin/tests/pages/test_preview.py b/wagtail/admin/tests/pages/test_preview.py index db463dae21..3b77612af9 100644 --- a/wagtail/admin/tests/pages/test_preview.py +++ b/wagtail/admin/tests/pages/test_preview.py @@ -7,7 +7,7 @@ from freezegun import freeze_time from wagtail.admin.views.pages import PreviewOnEdit from wagtail.core.models import Page -from wagtail.tests.testapp.models import EventCategory +from wagtail.tests.testapp.models import EventCategory, SimplePage, StreamPage from wagtail.tests.utils import WagtailTestUtils @@ -161,3 +161,55 @@ class TestPreview(TestCase, WagtailTestUtils): self.assertEqual(response.status_code, 200) response = self.client.get(preview_url) self.assertEqual(response.status_code, 200) + + +class TestDisablePreviewButton(TestCase, WagtailTestUtils): + """ + Test that preview button can be disabled by setting preview_modes to an empty list + """ + def setUp(self): + # Find root page + self.root_page = Page.objects.get(id=2) + + # Login + self.user = self.login() + + def test_disable_preview_on_create(self): + # preview button is available by default + response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'simplepage', self.root_page.id))) + self.assertEqual(response.status_code, 200) + + preview_url = reverse('wagtailadmin_pages:preview_on_add', args=('tests', 'simplepage', self.root_page.id)) + self.assertContains(response, '

  • ') + self.assertContains(response, 'data-action="%s"' % preview_url) + + # StreamPage has preview_modes = [] + response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'streampage', self.root_page.id))) + self.assertEqual(response.status_code, 200) + + preview_url = reverse('wagtailadmin_pages:preview_on_add', args=('tests', 'streampage', self.root_page.id)) + self.assertNotContains(response, '
  • ') + self.assertNotContains(response, 'data-action="%s"' % preview_url) + + def test_disable_preview_on_edit(self): + simple_page = SimplePage(title='simple page', content="hello") + self.root_page.add_child(instance=simple_page) + + # preview button is available by default + response = self.client.get(reverse('wagtailadmin_pages:edit', args=(simple_page.id, ))) + self.assertEqual(response.status_code, 200) + + preview_url = reverse('wagtailadmin_pages:preview_on_edit', args=(simple_page.id, )) + self.assertContains(response, '
  • ') + self.assertContains(response, 'data-action="%s"' % preview_url) + + stream_page = StreamPage(title='stream page', body=[('text', 'hello')]) + self.root_page.add_child(instance=stream_page) + + # StreamPage has preview_modes = [] + response = self.client.get(reverse('wagtailadmin_pages:edit', args=(stream_page.id, ))) + self.assertEqual(response.status_code, 200) + + preview_url = reverse('wagtailadmin_pages:preview_on_edit', args=(stream_page.id, )) + self.assertNotContains(response, '
  • ') + self.assertNotContains(response, 'data-action="%s"' % preview_url) diff --git a/wagtail/tests/testapp/models.py b/wagtail/tests/testapp/models.py index dcb7e38975..f5b9dd38a8 100644 --- a/wagtail/tests/testapp/models.py +++ b/wagtail/tests/testapp/models.py @@ -981,6 +981,8 @@ class StreamPage(Page): StreamFieldPanel('body'), ] + preview_modes = [] + class DefaultStreamPage(Page): body = StreamField([