diff --git a/tests/settings.py b/tests/settings.py index 976cf166..d93cab20 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -84,7 +84,7 @@ "toolbar": "undo redo | blocks | " "bold italic backcolor | alignleft aligncenter " "alignright alignjustify | bullist numlist outdent indent | " - "removeformat | help", + "removeformat | code | help", } DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/tests/testapp/admin.py b/tests/testapp/admin.py index 93ec06e8..472cb4f3 100644 --- a/tests/testapp/admin.py +++ b/tests/testapp/admin.py @@ -3,8 +3,8 @@ from django.contrib.flatpages.models import FlatPage from django.urls import reverse -from tests.testapp.models import TestInline, TestPage -from tinymce.widgets import TinyMCE +from tests.testapp.models import TestInline, TestModel, TestPage +from tinymce.widgets import AdminTinyMCE class TinyMCETestInlineAdmin(admin.StackedInline): @@ -14,7 +14,7 @@ class TinyMCETestInlineAdmin(admin.StackedInline): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name in ("content1", "content2"): return db_field.formfield( - widget=TinyMCE( + widget=AdminTinyMCE( attrs={"cols": 80, "rows": 30}, mce_attrs={"external_link_list_url": reverse("tinymce-linklist")}, ) @@ -26,7 +26,7 @@ class TinyMCEFlatPageAdmin(FlatPageAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == "content": return db_field.formfield( - widget=TinyMCE( + widget=AdminTinyMCE( attrs={"cols": 80, "rows": 30}, mce_attrs={"external_link_list_url": reverse("tinymce-linklist")}, ) @@ -40,7 +40,7 @@ class TinyMCETestPageAdmin(admin.ModelAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name in ("content1", "content2"): return db_field.formfield( - widget=TinyMCE( + widget=AdminTinyMCE( attrs={"cols": 80, "rows": 30}, mce_attrs={"external_link_list_url": reverse("tinymce-linklist")}, ) @@ -51,3 +51,4 @@ def formfield_for_dbfield(self, db_field, **kwargs): admin.site.unregister(FlatPage) admin.site.register(FlatPage, TinyMCEFlatPageAdmin) admin.site.register(TestPage, TinyMCETestPageAdmin) +admin.site.register(TestModel) diff --git a/tinymce/static/django_tinymce/admin_tinymce.css b/tinymce/static/django_tinymce/admin_tinymce.css new file mode 100644 index 00000000..49f367d7 --- /dev/null +++ b/tinymce/static/django_tinymce/admin_tinymce.css @@ -0,0 +1,15 @@ +/* +Workaround for the following rule defined in +django/contrib/admin/static/admin/css/responsive.css (which is +unsuitable for textareas used by TinyMCE internally): + +@media (max-width: 1024px) { + textarea { + max-width: 100%; + max-height: 120px; + } +} +*/ +.tox .tox-textarea-wrap .tox-textarea { + max-height: none; +} diff --git a/tinymce/widgets.py b/tinymce/widgets.py index 65f91e0d..784b9c24 100644 --- a/tinymce/widgets.py +++ b/tinymce/widgets.py @@ -116,7 +116,13 @@ def _media(self): class AdminTinyMCE(TinyMCE, admin_widgets.AdminTextareaWidget): - pass + def _media(self): + css = { + "all": ["django_tinymce/admin_tinymce.css"], + } + return forms.Media(css=css) + super().media + + media = property(_media) def get_language_from_django():