Pass the complete snippet chooser URL as a data attribute, rather than tacking on the model parameter in JS.

I think that's a throwback to when the chooser URL was being passed to the page as a constant in window.chooserUrls...
pull/7389/head
Matt Westcott 2021-07-28 22:05:26 +01:00 zatwierdzone przez Matt Westcott
rodzic 728b48ceca
commit 74a8cfd862
4 zmienionych plików z 6 dodań i 3 usunięć

Wyświetl plik

@ -7,7 +7,7 @@ function createSnippetChooser(id, modelString) {
const docTitle = chooserElement.find('.title');
const input = $('#' + id);
const editLink = chooserElement.find('.edit-link');
const chooserBaseUrl = chooserElement.data('chooserUrl') + modelString + '/';
const chooserBaseUrl = chooserElement.data('chooserUrl');
/*
Construct initial state of the chooser from the rendered (static) HTML and arguments passed to

Wyświetl plik

@ -4,4 +4,4 @@
{% block unchosen_icon %}{% icon name="snippet" %}{% endblock unchosen_icon %}
{% block chosen_icon %}{% icon name="snippet" %}{% endblock chosen_icon %}
{% block chooser_class %}snippet-chooser{% endblock %}
{% block chooser_attributes %}data-chooser-url="{% url 'wagtailsnippets:choose_generic' %}"{% endblock %}
{% block chooser_attributes %}data-chooser-url="{{ chooser_url }}"{% endblock %}

Wyświetl plik

@ -7,7 +7,6 @@ app_name = 'wagtailsnippets'
urlpatterns = [
path('', snippets.index, name='index'),
path('choose/', chooser.choose, name='choose_generic'),
path('choose/<slug:app_label>/<slug:model_name>/', chooser.choose, name='choose'),
path('choose/<slug:app_label>/<slug:model_name>/<str:pk>/', chooser.chosen, name='chosen'),

Wyświetl plik

@ -48,6 +48,9 @@ class AdminSnippetChooser(AdminChooser):
value_data = value_data or {}
original_field_html = super().render_html(name, value_data.get('id'), attrs)
chooser_url = reverse(
'wagtailsnippets:choose', args=[self.target_model._meta.app_label, self.target_model._meta.model_name]
)
return render_to_string("wagtailsnippets/widgets/snippet_chooser.html", {
'widget': self,
@ -56,6 +59,7 @@ class AdminSnippetChooser(AdminChooser):
'value': bool(value_data), # only used by chooser.html to identify blank values
'display_title': value_data.get('string', ''),
'edit_url': value_data.get('edit_url', ''),
'chooser_url': chooser_url,
})
@property