diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-20 19:59:10 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-20 19:59:10 +0200 |
commit | 590dd4f1c7c9741828edf44b575de611e7671a1a (patch) | |
tree | 4948e2e62dac3c6e9a26f907acb0d42493f17e64 | |
parent | 4eb52445dd80a32c708f635dfc0893a8d8387907 (diff) | |
download | Chimère-590dd4f1c7c9741828edf44b575de611e7671a1a.tar.bz2 Chimère-590dd4f1c7c9741828edf44b575de611e7671a1a.zip |
Re-enable TinyMCE
-rw-r--r-- | chimere/forms.py | 4 | ||||
-rw-r--r-- | chimere/static/chimere/css/styles.css | 3 | ||||
-rw-r--r-- | chimere/templates/chimere/base.html | 1 | ||||
-rw-r--r-- | chimere/templates/chimere/blocks/head_form.html | 1 | ||||
-rw-r--r-- | chimere/templatetags/chimere_tags.py | 3 | ||||
-rw-r--r-- | chimere/views.py | 3 | ||||
-rw-r--r-- | chimere/widgets.py | 88 | ||||
-rw-r--r-- | requirements.txt | 2 | ||||
-rw-r--r-- | settings.py | 2 |
9 files changed, 28 insertions, 79 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index f70c11e..2b1c35f 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -305,7 +305,7 @@ class MarkerAdminFormBase(forms.ModelForm): """ is_admin = True name = forms.CharField(label=_("Name"), required=True) - description = forms.CharField(widget=FullTextareaWidget, + description = forms.CharField(widget=TextareaWidget, required=False) _PROPERTY_FILTERS = {} @@ -460,7 +460,7 @@ class MarkerForm(MarkerBaseForm): is_admin = False ref_pk = forms.IntegerField(label=" ", widget=forms.HiddenInput(), required=False) - description = forms.CharField(widget=TextareaWidget, required=False) + description = forms.CharField(widget=FullTextareaWidget, required=False) keywords = forms.CharField(widget=TextareaWidget, max_length=200, required=False) diff --git a/chimere/static/chimere/css/styles.css b/chimere/static/chimere/css/styles.css index 2852c80..8d8e352 100644 --- a/chimere/static/chimere/css/styles.css +++ b/chimere/static/chimere/css/styles.css @@ -4065,6 +4065,9 @@ li.main_category li.subcategory > span > label{ #topbar .navbar-nav { margin: 7.5px 0; } + #map_edit { + height: 200px; + } #extra-pages{ background-color: #fff; margin: 0; diff --git a/chimere/templates/chimere/base.html b/chimere/templates/chimere/base.html index 4ac8c97..4a8085f 100644 --- a/chimere/templates/chimere/base.html +++ b/chimere/templates/chimere/base.html @@ -23,6 +23,7 @@ <script src="{{ STATIC_URL }}saclay/js/mobile.chimere.js?ver={{VERSION}}" type="text/javascript"></script>{%endif%} {% if css_area %} <link rel="stylesheet" href="{{ css_area }}?ver={{VERSION}}" />{% endif %} +{{extra_media}} {% endblock %} {% block header %} <noscript> diff --git a/chimere/templates/chimere/blocks/head_form.html b/chimere/templates/chimere/blocks/head_form.html index f732219..e69de29 100644 --- a/chimere/templates/chimere/blocks/head_form.html +++ b/chimere/templates/chimere/blocks/head_form.html @@ -1 +0,0 @@ -{% if ENABLE_TINYMCE %}<script src="{{ STATIC_URL }}tinymce/tinymce.min.js?ver=4.4.3" type="text/javascript"></script>{% endif %} diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py index f850244..cabfd9f 100644 --- a/chimere/templatetags/chimere_tags.py +++ b/chimere/templatetags/chimere_tags.py @@ -187,8 +187,7 @@ def head_form(): """ Manualy add forms header (necessary in case of ajax load) """ - context_data = {"ENABLE_TINYMCE": settings.ENABLE_TINYMCE, - "STATIC_URL": settings.STATIC_URL, + context_data = {"STATIC_URL": settings.STATIC_URL, "VERSION": get_version()} return context_data diff --git a/chimere/views.py b/chimere/views.py index 65a1ebd..4521001 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -224,7 +224,8 @@ def index(request, area_name=None, default_area=None, simple=False, else None, 'VERSION': get_version(), 'extra_css': widgets.MultiSelectWidget.Media.EXTRA_CSS, - 'extra_js': widgets.MultiSelectWidget.Media.EXTRA_JS + 'extra_js': widgets.MultiSelectWidget.Media.EXTRA_JS, + 'extra_media': widgets.TextareaWidgetBase().media }) if hasattr(settings, 'PROJECT_IMAGE') and settings.PROJECT_IMAGE: response_dct['PROJECT_IMAGE'] = settings.PROJECT_IMAGE diff --git a/chimere/widgets.py b/chimere/widgets.py index bd25054..a12d364 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -36,6 +36,11 @@ from django.utils.translation import ugettext as _ from django.forms.utils import flatatt from django.template.loader import render_to_string +if "tinymce" in settings.INSTALLED_APPS: + from tinymce.widgets import TinyMCE as Textarea +else: + Textarea = forms.Textarea + import re @@ -211,92 +216,35 @@ class ImporterChoicesWidget(forms.Select): class Media: js = ["%schimere/js/importer_interface.js" % settings.STATIC_URL] -TINYMCE_JS, FULL_TINY_JS, ADMIN_TINY_JS = [], [], [] - -if settings.ENABLE_TINYMCE: - TINYMCE_JS = ["{}tinymce/tinymce.min.js".format(settings.STATIC_URL)] - FULL_TINY_JS = TINYMCE_JS[:] + \ - ["%schimere/js/textareas.js" % settings.STATIC_URL] - ADMIN_TINY_JS = TINYMCE_JS[:] + \ - ["%schimere/js/textareas_admin.js" % settings.STATIC_URL] - -TINYMCE_LANGUAGES = ['fr_FR'] - -class TextareaWidgetBase(forms.Textarea): +class TextareaWidgetBase(Textarea): """ Manage the edition of a text using TinyMCE """ + + def __init__(self, *args, **kwargs): + if "tinymce" in settings.INSTALLED_APPS and 'mce_attrs' not in kwargs: + kwargs['mce_attrs'] = {'width': 400, 'height': 150} + super(TextareaWidgetBase, self).__init__(*args, **kwargs) + def render(self, *args, **kwargs): - if not TINYMCE_JS: - rendered = super(TextareaWidgetBase, self).render(*args, **kwargs) - return mark_safe(rendered) - if 'attrs' not in kwargs: - kwargs['attrs'] = {} - if 'class' not in kwargs['attrs']: - kwargs['attrs']['class'] = '' - else: - kwargs['attrs']['class'] += ' ' - kwargs['attrs']['class'] += 'mceEditor' rendered = super(TextareaWidgetBase, self).render(*args, **kwargs) - rendered += """ -<style> -.mce-tinymce{ - position: initial; -} -.field-%s label{ - padding: 0.9em 1em; -} -</style> -""" % args[0] - current_language = "" - if settings.LANGUAGE_CODE.replace('-', '_') in TINYMCE_LANGUAGES: - current_language = settings.LANGUAGE_CODE.replace('-', '_') - elif settings.LANGUAGE_CODE.split('-')[0] in TINYMCE_LANGUAGES: - current_language = settings.LANGUAGE_CODE.split('-')[0] - if current_language: - rendered += """ - <script type='text/javascript'> - window.tinymce_lang = "{}"; - </script> - """.format(current_language) return mark_safe(rendered) class FullTextareaWidget(TextareaWidgetBase): - """ - Manage the edition of a text using TinyMCE - """ - class Media: - js = TINYMCE_JS - - def render(self, *args, **kwargs): - if not TINYMCE_JS: - rendered = super(FullTextareaWidget, self).render(*args, **kwargs) - return mark_safe(rendered) - - if 'attrs' not in kwargs: - kwargs['attrs'] = {} - if 'class' not in kwargs['attrs']: - kwargs['attrs']['class'] = '' - else: - kwargs['attrs']['class'] += ' ' - kwargs['attrs']['class'] += 'mceEditor' - rendered = super(FullTextareaWidget, self).render(*args, **kwargs) - return mark_safe(rendered) + def __init__(self, *args, **kwargs): + if "tinymce" in settings.INSTALLED_APPS and 'mce_attrs' not in kwargs: + kwargs['mce_attrs'] = {'height': 150} + super(TextareaWidgetBase, self).__init__(*args, **kwargs) class TextareaWidget(TextareaWidgetBase): - """ - Manage the edition of a text using TinyMCE - """ - class Media: - js = FULL_TINY_JS + pass class TextareaAdminWidget(TextareaWidgetBase): - class Media: - js = ADMIN_TINY_JS + pass class DatePickerWidget(forms.TextInput): diff --git a/requirements.txt b/requirements.txt index 520005f..fc2cc4c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ psycopg2 Pillow==3.3 lxml==3.4 feedparser==5.2.1 -django-tinymce==1.5.3 +django-tinymce4-lite==1.7.1 icalendar==3.8 chardet==2.3 py3exiv2==0.2.1 diff --git a/settings.py b/settings.py index fb24270..b674977 100644 --- a/settings.py +++ b/settings.py @@ -29,8 +29,6 @@ CONTACT_EMAIL = '' STATIC_URL = '/static/' STATIC_ROOT = ROOT_PATH + 'static/' -ENABLE_TINYMCE = False - GPSBABEL = '/usr/bin/gpsbabel' # simplify with an error of 5 meters GPSBABEL_OPTIONS = 'simplify,crosstrack,error=0.005k' |