From ac8805e81c362d5bfe7d84583e8dfc5441ae82a1 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 7 Oct 2012 22:46:20 +0200 Subject: Widgets: distinguish Textarea in admin and in main interface --- chimere/forms.py | 11 ++++++----- chimere/static/chimere/js/textareas.js | 2 +- chimere/static/chimere/js/textareas_admin.js | 28 ++++++++++++++++++++++++++++ chimere/widgets.py | 20 +++++++++++++++----- 4 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 chimere/static/chimere/js/textareas_admin.js diff --git a/chimere/forms.py b/chimere/forms.py index aedca9b..ea08474 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -35,7 +35,7 @@ from chimere.models import Marker, Route, PropertyModel, Property, Area,\ News, Category, SubCategory, RouteFile, MultimediaFile, MultimediaType, \ PictureFile, Importer from chimere.widgets import AreaField, PointField, TextareaWidget, \ - DatePickerWidget + TextareaAdminWidget, DatePickerWidget from datetime import timedelta, datetime, tzinfo @@ -93,7 +93,7 @@ class NewsAdminForm(forms.ModelForm): """ Main form for news """ - content = forms.CharField(widget=TextareaWidget) + content = forms.CharField(widget=TextareaAdminWidget) class Meta: model = News @@ -129,7 +129,7 @@ class CategoryAdminForm(forms.ModelForm): """ Main form for categories """ - description = forms.CharField(widget=TextareaWidget, required=False) + description = forms.CharField(widget=TextareaAdminWidget, required=False) class Media: js = list(settings.JQUERY_JS_URLS) + [ '%schimere/js/menu-sort.js' % settings.STATIC_URL, @@ -141,7 +141,7 @@ class MarkerAdminFormBase(forms.ModelForm): """ Main form for marker """ - description = forms.CharField(widget=TextareaWidget, required=False) + description = forms.CharField(widget=TextareaAdminWidget, required=False) class Meta: model = Marker @@ -230,6 +230,7 @@ class MarkerForm(MarkerAdminForm): """ ref_pk = forms.IntegerField(label=u" ", widget=forms.HiddenInput(), required=False) + description = forms.CharField(widget=TextareaWidget, required=False) class Meta: model = Marker exclude = ('status',) @@ -432,7 +433,7 @@ class AreaAdminForm(forms.ModelForm): Admin page to create an area """ area = AreaField(label=_("Area"), fields=(PointField(), PointField())) - welcome_message = forms.CharField(widget=TextareaWidget) + welcome_message = forms.CharField(widget=TextareaAdminWidget) class Meta: model = Area diff --git a/chimere/static/chimere/js/textareas.js b/chimere/static/chimere/js/textareas.js index e15e7f2..048718d 100644 --- a/chimere/static/chimere/js/textareas.js +++ b/chimere/static/chimere/js/textareas.js @@ -22,7 +22,7 @@ tinyMCE.init({ theme : "advanced", editor_selector : "mceEditor", relative_urls : false, - theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,bullist,numlist,separator,hr,separator,link,image", + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,bullist,numlist,separator,hr,separator,link", theme_advanced_buttons2 : "", theme_advanced_buttons3 : "" }); diff --git a/chimere/static/chimere/js/textareas_admin.js b/chimere/static/chimere/js/textareas_admin.js new file mode 100644 index 0000000..e15e7f2 --- /dev/null +++ b/chimere/static/chimere/js/textareas_admin.js @@ -0,0 +1,28 @@ +/* base function shared by some pages */ +/* Copyright (C) 2009 Étienne Loks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +See the file COPYING for details. +*/ + +tinyMCE.init({ + mode : "textareas", + theme : "advanced", + editor_selector : "mceEditor", + relative_urls : false, + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,bullist,numlist,separator,hr,separator,link,image", + theme_advanced_buttons2 : "", + theme_advanced_buttons3 : "" +}); diff --git a/chimere/widgets.py b/chimere/widgets.py index f336ee1..826283d 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -100,13 +100,10 @@ class ChosenSelectWidget(forms.Select): u"\n" % kwargs['attrs']['id'] return mark_safe(rendered) -class TextareaWidget(forms.Textarea): +class TextareaWidgetBase(forms.Textarea): """ Manage the edition of a text using TinyMCE """ - class Media: - js = ["%stiny_mce.js" % settings.TINYMCE_URL, - "%schimere/js/textareas.js" % settings.STATIC_URL,] def render(self, *args, **kwargs): if 'attrs' not in kwargs: kwargs['attrs'] = {} @@ -115,9 +112,22 @@ class TextareaWidget(forms.Textarea): else: kwargs['attrs']['class'] += ' ' kwargs['attrs']['class'] += 'mceEditor' - rendered = super(TextareaWidget, self).render(*args, **kwargs) + rendered = super(TextareaWidgetBase, self).render(*args, **kwargs) return mark_safe(rendered) +class TextareaWidget(TextareaWidgetBase): + """ + Manage the edition of a text using TinyMCE + """ + class Media: + js = ["%stiny_mce.js" % settings.TINYMCE_URL, + "%schimere/js/textareas.js" % settings.STATIC_URL,] + +class TextareaAdminWidget(TextareaWidgetBase): + class Media: + js = ["%stiny_mce.js" % settings.TINYMCE_URL, + "%schimere/js/textareas_admin.js" % settings.STATIC_URL,] + class DatePickerWidget(forms.TextInput): """ Manage the edition of dates. -- cgit v1.2.3