Add a base class for Telepath adapters for chooser widgets

pull/8934/head
Matt Westcott 2022-07-06 16:12:25 +01:00 zatwierdzone przez LB (Ben Johnston)
rodzic d4c146ad01
commit 0077183682
6 zmienionych plików z 37 dodań i 29 usunięć

Wyświetl plik

@ -0,0 +1,3 @@
import { ChooserFactory } from '../../components/ChooserWidget';
window.telepath.register('wagtail.admin.widgets.Chooser', ChooserFactory);

Wyświetl plik

@ -33,6 +33,7 @@ module.exports = function exports(env, argv) {
'admin': [
'chooser-modal',
'chooser-widget',
'chooser-widget-telepath',
'comments',
'core',
'date-time-chooser',

Wyświetl plik

@ -234,11 +234,35 @@ class BaseChooser(widgets.Input):
def render_js_init(self, id_, name, value_data):
return "new Chooser({0});".format(json.dumps(id_))
class Media:
js = [
"wagtailadmin/js/chooser-widget.js",
@cached_property
def media(self):
return forms.Media(
js=[
versioned_static("wagtailadmin/js/chooser-widget.js"),
]
)
class BaseChooserAdapter(WidgetAdapter):
js_constructor = "wagtail.admin.widgets.Chooser"
def js_args(self, widget):
return [
widget.render_html("__NAME__", None, attrs={"id": "__ID__"}),
widget.id_for_label("__ID__"),
]
@cached_property
def media(self):
return forms.Media(
js=[
versioned_static("wagtailadmin/js/chooser-widget-telepath.js"),
]
)
register(BaseChooserAdapter(), BaseChooser)
class AdminPageChooser(BaseChooser):
choose_one_text = _("Choose a page")

Wyświetl plik

@ -2,22 +2,16 @@ from django import forms
from django.utils.functional import cached_property
from wagtail.admin.staticfiles import versioned_static
from wagtail.admin.widgets import BaseChooserAdapter
from wagtail.documents.views.chooser import viewset as chooser_viewset
from wagtail.telepath import register
from wagtail.widget_adapters import WidgetAdapter
AdminDocumentChooser = chooser_viewset.widget_class
class DocumentChooserAdapter(WidgetAdapter):
class DocumentChooserAdapter(BaseChooserAdapter):
js_constructor = "wagtail.documents.widgets.DocumentChooser"
def js_args(self, widget):
return [
widget.render_html("__NAME__", None, attrs={"id": "__ID__"}),
widget.id_for_label("__ID__"),
]
@cached_property
def media(self):
return forms.Media(

Wyświetl plik

@ -5,11 +5,10 @@ from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from wagtail.admin.staticfiles import versioned_static
from wagtail.admin.widgets import BaseChooser
from wagtail.admin.widgets import BaseChooser, BaseChooserAdapter
from wagtail.images import get_image_model
from wagtail.images.shortcuts import get_rendition_or_not_found
from wagtail.telepath import register
from wagtail.widget_adapters import WidgetAdapter
class AdminImageChooser(BaseChooser):
@ -53,15 +52,9 @@ class AdminImageChooser(BaseChooser):
)
class ImageChooserAdapter(WidgetAdapter):
class ImageChooserAdapter(BaseChooserAdapter):
js_constructor = "wagtail.images.widgets.ImageChooser"
def js_args(self, widget):
return [
widget.render_html("__NAME__", None, attrs={"id": "__ID__"}),
widget.id_for_label("__ID__"),
]
@cached_property
def media(self):
return forms.Media(

Wyświetl plik

@ -8,10 +8,9 @@ from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from wagtail.admin.staticfiles import versioned_static
from wagtail.admin.widgets import BaseChooser
from wagtail.admin.widgets import BaseChooser, BaseChooserAdapter
from wagtail.admin.widgets.button import ListingButton
from wagtail.telepath import register
from wagtail.widget_adapters import WidgetAdapter
class AdminSnippetChooser(BaseChooser):
@ -59,15 +58,9 @@ class AdminSnippetChooser(BaseChooser):
)
class SnippetChooserAdapter(WidgetAdapter):
class SnippetChooserAdapter(BaseChooserAdapter):
js_constructor = "wagtail.snippets.widgets.SnippetChooser"
def js_args(self, widget):
return [
widget.render_html("__NAME__", None, attrs={"id": "__ID__"}),
widget.id_for_label("__ID__"),
]
@cached_property
def media(self):
return forms.Media(