From 9df674067680f11dc78bb83f4b617b6c869560cc Mon Sep 17 00:00:00 2001 From: Erik Stein Date: Mon, 19 Mar 2018 11:46:57 +0100 Subject: [PATCH] Allow CKEditor uploading. --- content_plugins/admin.py | 10 +++++++++- content_plugins/base.py | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/content_plugins/admin.py b/content_plugins/admin.py index 5461e9d..7195b7b 100644 --- a/content_plugins/admin.py +++ b/content_plugins/admin.py @@ -3,7 +3,9 @@ Abstract base classes and mixins. """ from django import forms +from django.conf import settings +from ckeditor_uploader.widgets import CKEditorUploadingWidget from content_editor.admin import ContentEditorInline @@ -15,7 +17,13 @@ class ContentInlineBase(ContentEditorInline): # TODO Use feincms3.plugins.richtext.RichText/RichTextInline instead -class RichTextarea(forms.Textarea): +if getattr(settings, 'CKEDITOR_UPLOADS', False): + base_classes = [CKEditorUploadingWidget] +else: + base_classes = [forms.Textarea] + + +class RichTextarea(*base_classes): def __init__(self, attrs=None): # Provide class so that the code in plugin_ckeditor.js knows # which text areas should be enhanced with a rich text diff --git a/content_plugins/base.py b/content_plugins/base.py index e33f687..e5808ca 100644 --- a/content_plugins/base.py +++ b/content_plugins/base.py @@ -1,12 +1,13 @@ import re from django.db import models from django.template import Template -from django.utils.html import format_html, mark_safe +from django.utils.html import mark_safe from django.utils.translation import ugettext_lazy as _ from feincms3.cleanse import CleansedRichTextField from shared.utils.fields import AutoSlugField +# TODO Rename ContentInlineBase to PluginInlineBase from .admin import ContentInlineBase, RichTextInlineBase from .plugins.mixins import StyleMixin @@ -134,7 +135,8 @@ class RichTextBase(StyleMixin, FilesystemTemplateRendererPlugin): @classmethod def admin_inline(cls, base_class=None): - return super().admin_inline(base_class=RichTextInlineBase) + return super().admin_inline(base_class=base_class or + RichTextInlineBase) class SectionBase(StyleMixin, BasePlugin): @@ -164,6 +166,7 @@ class SectionBase(StyleMixin, BasePlugin): return context +# ImageBase can't live here because image managment is different from project to project # class ImageBase(StyleMixin, BasePlugin): # image = models.ForeignKey(Image, on_delete=models.PROTECT) # alt_caption = TranslatableCharField(_("caption"), max_length=500, null=True, blank=True, help_text=_("Optional, used instead of the caption of the image object."))# @@ -190,6 +193,7 @@ class SectionBase(StyleMixin, BasePlugin): # )) +# TODO See comments on ImageBase; remove DownloadBase class DownloadBase(StyleMixin, BasePlugin): file = models.FileField(upload_to='downloads/%Y/%m/')