kopia lustrzana https://github.com/wagtail/wagtail
Add telepath adapter for image chooser
rodzic
3a6fb6f2b4
commit
950ef65056
|
|
@ -0,0 +1,17 @@
|
|||
class ImageChooser {
|
||||
constructor(html, idForLabel) {
|
||||
this.html = html;
|
||||
this.idForLabel = idForLabel;
|
||||
}
|
||||
|
||||
render(placeholder, name, id, initialState) {
|
||||
const html = this.html.replace(/__NAME__/g, name).replace(/__ID__/g, id);
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
placeholder.outerHTML = html;
|
||||
/* the chooser object returned by createImageChooser also serves as the JS widget representation */
|
||||
// eslint-disable-next-line no-undef
|
||||
const chooser = createImageChooser(id);
|
||||
chooser.setState(initialState);
|
||||
}
|
||||
}
|
||||
window.telepath.register('wagtail.images.widgets.ImageChooser', ImageChooser);
|
||||
|
|
@ -49,6 +49,7 @@ module.exports = function exports() {
|
|||
],
|
||||
images: [
|
||||
'image-chooser',
|
||||
'image-chooser-telepath',
|
||||
],
|
||||
documents: [
|
||||
'document-chooser',
|
||||
|
|
|
|||
|
|
@ -16,7 +16,19 @@ class ImageChooserBlock(ChooserBlock):
|
|||
@cached_property
|
||||
def widget(self):
|
||||
from wagtail.images.widgets import AdminImageChooser
|
||||
return AdminImageChooser
|
||||
return AdminImageChooser()
|
||||
|
||||
def get_form_state(self, value):
|
||||
value_data = self.widget.get_value_data(value)
|
||||
if value_data is None:
|
||||
return None
|
||||
else:
|
||||
return {
|
||||
'id': value_data['id'],
|
||||
'edit_link': value_data['edit_url'],
|
||||
'title': value_data['title'],
|
||||
'preview': value_data['preview'],
|
||||
}
|
||||
|
||||
def render_basic(self, value, context=None):
|
||||
if value:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ from django.utils.translation import gettext_lazy as _
|
|||
|
||||
from wagtail.admin.staticfiles import versioned_static
|
||||
from wagtail.admin.widgets import AdminChooser
|
||||
from wagtail.core.telepath import register
|
||||
from wagtail.core.widget_adapters import WidgetAdapter
|
||||
from wagtail.images import get_image_model
|
||||
from wagtail.images.shortcuts import get_rendition_or_not_found
|
||||
|
||||
|
|
@ -64,3 +66,21 @@ class AdminImageChooser(AdminChooser):
|
|||
versioned_static('wagtailimages/js/image-chooser-modal.js'),
|
||||
versioned_static('wagtailimages/js/image-chooser.js'),
|
||||
])
|
||||
|
||||
|
||||
class ImageChooserAdapter(WidgetAdapter):
|
||||
js_constructor = 'wagtail.images.widgets.ImageChooser'
|
||||
|
||||
def js_args(self, widget, context):
|
||||
return [
|
||||
widget.render_html('__NAME__', None, attrs={'id': '__ID__'}),
|
||||
widget.id_for_label('__ID__'),
|
||||
]
|
||||
|
||||
class Media:
|
||||
js = [
|
||||
versioned_static('wagtailimages/js/image-chooser-telepath.js'),
|
||||
]
|
||||
|
||||
|
||||
register(ImageChooserAdapter(), AdminImageChooser)
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue