Hide preview button when preview_modes is empty

pull/5869/head
Casper 2020-01-23 17:16:58 +01:00 zatwierdzone przez Matt Westcott
rodzic 92ba2c4832
commit 19f50c72ce
6 zmienionych plików z 95 dodań i 35 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -32,24 +32,26 @@
</div>
</li>
<li class="preview">
{% trans 'Preview' as preview_label %}
{% if preview_modes|length > 1 %}
<div class="dropdown dropup dropdown-button match-width">
{% if preview_modes %}
<li class="preview">
{% trans 'Preview' as preview_label %}
{% if preview_modes|length > 1 %}
<div class="dropdown dropup dropdown-button match-width">
{% include "wagtailadmin/pages/_preview_button_on_create.html" with label=preview_label icon=1 %}
<div class="dropdown-toggle icon icon-arrow-up"></div>
<ul>
{% for mode_name, mode_display_name in preview_modes %}
<li>
{% include "wagtailadmin/pages/_preview_button_on_create.html" with mode=mode_name label=mode_display_name %}
</li>
{% endfor %}
</ul>
</div>
{% else %}
{% include "wagtailadmin/pages/_preview_button_on_create.html" with label=preview_label icon=1 %}
<div class="dropdown-toggle icon icon-arrow-up"></div>
<ul>
{% for mode_name, mode_display_name in preview_modes %}
<li>
{% include "wagtailadmin/pages/_preview_button_on_create.html" with mode=mode_name label=mode_display_name %}
</li>
{% endfor %}
</ul>
</div>
{% else %}
{% include "wagtailadmin/pages/_preview_button_on_create.html" with label=preview_label icon=1 %}
{% endif %}
</li>
{% endif %}
</li>
{% endif %}
{% block extra_footer_actions %}
{% endblock %}
</ul>

Wyświetl plik

@ -43,24 +43,26 @@
</div>
</li>
<li class="preview">
{% trans 'Preview' as preview_label %}
{% if preview_modes|length > 1 %}
<div class="dropdown dropup dropdown-button match-width">
{% if preview_modes %}
<li class="preview">
{% trans 'Preview' as preview_label %}
{% if preview_modes|length > 1 %}
<div class="dropdown dropup dropdown-button match-width">
{% include "wagtailadmin/pages/_preview_button_on_edit.html" with label=preview_label icon=1 %}
<div class="dropdown-toggle icon icon-arrow-up"></div>
<ul>
{% for mode_name, mode_display_name in preview_modes %}
<li>
{% include "wagtailadmin/pages/_preview_button_on_edit.html" with mode=mode_name label=mode_display_name %}
</li>
{% endfor %}
</ul>
</div>
{% else %}
{% include "wagtailadmin/pages/_preview_button_on_edit.html" with label=preview_label icon=1 %}
<div class="dropdown-toggle icon icon-arrow-up"></div>
<ul>
{% for mode_name, mode_display_name in preview_modes %}
<li>
{% include "wagtailadmin/pages/_preview_button_on_edit.html" with mode=mode_name label=mode_display_name %}
</li>
{% endfor %}
</ul>
</div>
{% else %}
{% include "wagtailadmin/pages/_preview_button_on_edit.html" with label=preview_label icon=1 %}
{% endif %}
</li>
{% endif %}
</li>
{% endif %}
<li class="meta">
<p class="modified">

Wyświetl plik

@ -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, '<li class="preview">')
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, '<li class="preview">')
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, '<li class="preview">')
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, '<li class="preview">')
self.assertNotContains(response, 'data-action="%s"' % preview_url)

Wyświetl plik

@ -981,6 +981,8 @@ class StreamPage(Page):
StreamFieldPanel('body'),
]
preview_modes = []
class DefaultStreamPage(Page):
body = StreamField([