From 340dd73602ee63cec6ee20c7a1c487e5ad731775 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Fri, 16 Oct 2015 14:54:02 +0100 Subject: [PATCH] Add canChooseRoot flag to createPageChooser JS function --- .../static_src/wagtailadmin/js/page-chooser.js | 9 +++++++-- wagtail/wagtailadmin/tests/test_edit_handlers.py | 6 +++--- wagtail/wagtailadmin/tests/test_widgets.py | 8 ++++---- wagtail/wagtailadmin/widgets.py | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-chooser.js b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-chooser.js index 738e1659f7..e2919d3f34 100644 --- a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-chooser.js +++ b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-chooser.js @@ -1,4 +1,4 @@ -function createPageChooser(id, pageTypes, openAtParentId) { +function createPageChooser(id, pageTypes, openAtParentId, canChooseRoot) { var chooserElement = $('#' + id + '-chooser'); var pageTitle = chooserElement.find('.title'); var input = $('#' + id); @@ -10,9 +10,14 @@ function createPageChooser(id, pageTypes, openAtParentId) { initialUrl += openAtParentId + '/'; } + var urlParams = {page_type: pageTypes.join(',')}; + if (canChooseRoot) { + urlParams.can_choose_root = 'true'; + } + ModalWorkflow({ url: initialUrl, - urlParams: { page_type: pageTypes.join(',') }, + urlParams: urlParams, responses: { pageChosen: function(pageData) { input.val(pageData.id); diff --git a/wagtail/wagtailadmin/tests/test_edit_handlers.py b/wagtail/wagtailadmin/tests/test_edit_handlers.py index c375692582..f12fdeff7c 100644 --- a/wagtail/wagtailadmin/tests/test_edit_handlers.py +++ b/wagtail/wagtailadmin/tests/test_edit_handlers.py @@ -365,7 +365,7 @@ class TestPageChooserPanel(TestCase): def test_render_js_init(self): result = self.page_chooser_panel.render_as_field() - expected_js = 'createPageChooser("{id}", ["{model}"], {parent});'.format( + expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, false);'.format( id="id_page", model="wagtailcore.page", parent=self.events_index_page.id) self.assertIn(expected_js, result) @@ -408,7 +408,7 @@ class TestPageChooserPanel(TestCase): page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() - expected_js = 'createPageChooser("{id}", ["{model}"], {parent});'.format( + expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, false);'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) @@ -422,7 +422,7 @@ class TestPageChooserPanel(TestCase): page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() - expected_js = 'createPageChooser("{id}", ["{model}"], {parent});'.format( + expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, false);'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) diff --git a/wagtail/wagtailadmin/tests/test_widgets.py b/wagtail/wagtailadmin/tests/test_widgets.py index 00b18961c5..7be1d1c917 100644 --- a/wagtail/wagtailadmin/tests/test_widgets.py +++ b/wagtail/wagtailadmin/tests/test_widgets.py @@ -32,7 +32,7 @@ class TestAdminPageChooserWidget(TestCase): widget = widgets.AdminPageChooser() js_init = widget.render_js_init('test-id', 'test', None) - self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"wagtailcore.page\"], null);") + self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"wagtailcore.page\"], null, false);") def test_render_html_with_value(self): widget = widgets.AdminPageChooser() @@ -44,7 +44,7 @@ class TestAdminPageChooserWidget(TestCase): widget = widgets.AdminPageChooser() js_init = widget.render_js_init('test-id', 'test', self.child_page) - self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"wagtailcore.page\"], %d);" % self.root_page.id) + self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"wagtailcore.page\"], %d, false);" % self.root_page.id) # def test_render_html_init_with_content_type omitted as HTML does not # change when selecting a content type @@ -54,7 +54,7 @@ class TestAdminPageChooserWidget(TestCase): widget = widgets.AdminPageChooser(content_type=content_type) js_init = widget.render_js_init('test-id', 'test', None) - self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"tests.simplepage\"], null);") + self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"tests.simplepage\"], null, false);") def test_render_js_init_with_multiple_content_types(self): content_types = [ @@ -65,4 +65,4 @@ class TestAdminPageChooserWidget(TestCase): widget = widgets.AdminPageChooser(content_type=content_types) js_init = widget.render_js_init('test-id', 'test', None) - self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"tests.simplepage\", \"tests.eventpage\"], null);") + self.assertEqual(js_init, "createPageChooser(\"test-id\", [\"tests.simplepage\", \"tests.eventpage\"], null, false);") diff --git a/wagtail/wagtailadmin/widgets.py b/wagtail/wagtailadmin/widgets.py index ca787a3835..7d86b25214 100644 --- a/wagtail/wagtailadmin/widgets.py +++ b/wagtail/wagtailadmin/widgets.py @@ -166,7 +166,7 @@ class AdminPageChooser(AdminChooser): parent = page.get_parent() if page else None - return "createPageChooser({id}, {content_type}, {parent});".format( + return "createPageChooser({id}, {content_type}, {parent}, false);".format( id=json.dumps(id_), content_type=json.dumps([ '{app}.{model}'.format(