From ab6987194f0e4190e0ade35f568c992be0f1f11e Mon Sep 17 00:00:00 2001 From: Nick Smith Date: Mon, 7 Jul 2014 14:43:39 +0100 Subject: [PATCH] Add inline chooser panel templates for group page permissions formset --- wagtail/wagtailusers/forms.py | 12 +++++++ .../templates/wagtailusers/groups/edit.html | 9 +++++- .../includes/page_permissions_form.html | 31 +++++++++++++++++++ .../includes/page_permissions_formset.html | 16 ++++++++++ .../includes/page_permissions_formset.js | 19 ++++++++++++ 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_form.html create mode 100644 wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.html create mode 100644 wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.js diff --git a/wagtail/wagtailusers/forms.py b/wagtail/wagtailusers/forms.py index 928e3b40b..cdcb561c5 100644 --- a/wagtail/wagtailusers/forms.py +++ b/wagtail/wagtailusers/forms.py @@ -188,6 +188,10 @@ class GroupForm(forms.ModelForm): class GroupPagePermissionForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super(GroupPagePermissionForm, self).__init__(*args, **kwargs) + self.fields['page'].widget = forms.HiddenInput() + class Meta: model = GroupPagePermission fields = ('page', 'permission_type') @@ -197,6 +201,14 @@ class BaseGroupPagePermissionFormSet(forms.models.BaseInlineFormSet): def __init__(self, *args, **kwargs): super(BaseGroupPagePermissionFormSet, self).__init__(*args, **kwargs) self.form = GroupPagePermissionForm + for form in self.forms: + form.fields['DELETE'].widget = forms.HiddenInput() + + @property + def empty_form(self): + empty_form = super(BaseGroupPagePermissionFormSet, self).empty_form + empty_form.fields['DELETE'].widget = forms.HiddenInput() + return empty_form class NotificationPreferencesForm(forms.ModelForm): diff --git a/wagtail/wagtailusers/templates/wagtailusers/groups/edit.html b/wagtail/wagtailusers/templates/wagtailusers/groups/edit.html index d079f5e79..54b4b1d9b 100644 --- a/wagtail/wagtailusers/templates/wagtailusers/groups/edit.html +++ b/wagtail/wagtailusers/templates/wagtailusers/groups/edit.html @@ -15,9 +15,16 @@ {% endblock %} +{% block extra_js %} + {% include "wagtailadmin/pages/_editor_js.html" %} + + +{% endblock %} diff --git a/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_form.html b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_form.html new file mode 100644 index 000000000..bee5196a6 --- /dev/null +++ b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_form.html @@ -0,0 +1,31 @@ +{% load i18n %} +{% comment %} + TODO - DRY this form with /wagtailsearch/templates/wagtailsearch/editorspicks/includes/editorspicks_form.html +{% endcomment %} + diff --git a/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.html b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.html new file mode 100644 index 000000000..03cb2a19e --- /dev/null +++ b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.html @@ -0,0 +1,16 @@ +{% load i18n %} +{{ formset.management_form }} + + + + +

+ {% trans "Add another page permission" %} +

+ diff --git a/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.js b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.js new file mode 100644 index 000000000..c9c93a48b --- /dev/null +++ b/wagtail/wagtailusers/templates/wagtailusers/groups/includes/page_permissions_formset.js @@ -0,0 +1,19 @@ +(function() { + function fixPrefix(str) {return str;} + + var panel = InlinePanel({ + formsetPrefix: fixPrefix("id_{{ formset.prefix }}"), + emptyChildFormPrefix: fixPrefix("{{ formset.empty_form.prefix }}"), + + onAdd: function(fixPrefix) { + createPageChooser(fixPrefix('id_{{ formset.prefix }}-__prefix__-page'), 'wagtailcore.page', null); + } + }); + + {% for form in formset.forms %} + createPageChooser(fixPrefix('id_{{ formset.prefix }}-{{ forloop.counter0 }}-page'), 'wagtailcore.page', null); + panel.initChildControls('{{ formset.prefix }}-{{ forloop.counter0 }}'); + {% endfor %} + + panel.updateMoveButtonDisabledStates(); +})();