diff options
author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-04-07 10:22:35 +0000 |
---|---|---|
committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-04-07 10:22:35 +0000 |
commit | 7a49305aee5846ced735dbaba2e0fc7cd2c027c0 (patch) | |
tree | 75cdc5aee1a2591e69edec85ae468f597420b0a2 | |
parent | 8159df7f9733bcc16b3480678eaa0243da5803bc (diff) | |
download | Chimère-7a49305aee5846ced735dbaba2e0fc7cd2c027c0.tar.bz2 Chimère-7a49305aee5846ced735dbaba2e0fc7cd2c027c0.zip |
TinyMCE integration (#55)
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@30 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
-rw-r--r-- | main/admin.py | 14 | ||||
-rw-r--r-- | main/forms.py | 17 | ||||
-rw-r--r-- | main/models.py | 6 | ||||
-rw-r--r-- | main/widgets.py | 10 | ||||
-rw-r--r-- | settings.py | 2 | ||||
-rw-r--r-- | static/styles.css | 4 | ||||
-rw-r--r-- | templates/detail.html | 5 |
7 files changed, 42 insertions, 16 deletions
diff --git a/main/admin.py b/main/admin.py index dc5ff06..85c90e8 100644 --- a/main/admin.py +++ b/main/admin.py @@ -23,7 +23,10 @@ Settings for administration pages from chimere.main.models import Category, Icon, SubCategory, Marker, \ PropertyModel, Property, News, Route, Area -from chimere.main.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm +from chimere.main.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\ + NewsAdminForm +from chimere.main.widgets import TextareaWidget + from django.contrib import admin class MarkerAdmin(admin.ModelAdmin): @@ -58,8 +61,14 @@ class SubCategoryAdmin(admin.ModelAdmin): list_display = ('name', 'category', 'available') list_filter = ('category',) +class NewsAdmin(admin.ModelAdmin): + """ + Use the TinyMCE widget for the news content + """ + form = NewsAdminForm + # register of differents database fields -admin.site.register(News) +admin.site.register(News, NewsAdmin) admin.site.register(Icon) admin.site.register(Category) admin.site.register(SubCategory, SubCategoryAdmin) @@ -67,4 +76,3 @@ admin.site.register(Marker, MarkerAdmin) admin.site.register(Route, RouteAdmin) admin.site.register(Area, AreaAdmin) admin.site.register(PropertyModel) -admin.site.register(Property) diff --git a/main/forms.py b/main/forms.py index d09d648..0978db8 100644 --- a/main/forms.py +++ b/main/forms.py @@ -28,8 +28,9 @@ from django.core.mail import send_mail from chimere import settings -from chimere.main.models import Marker, Route, PropertyModel, Property, Area -from chimere.main.widgets import AreaField, PointField +from chimere.main.models import Marker, Route, PropertyModel, Property, Area,\ + News +from chimere.main.widgets import AreaField, PointField, TextareaWidget def notifyStaff(geo_object): category = unicode(geo_object.subcategory) @@ -43,13 +44,21 @@ def notifyStaff(geo_object): message += u"\n\n--\nChimère" send_mail(subject, message, user_list[0], user_list) +class NewsAdminForm(forms.ModelForm): + """ + Main form for news + """ + content = forms.CharField(widget=TextareaWidget) + class Meta: + model = News + class MarkerAdminForm(forms.ModelForm): """ Main form for marker """ # declare properties for property in PropertyModel.objects.filter(available=True): - exec('property_%d_%d = forms.CharField(label="%s", widget=forms.%s, \ + exec('property_%d_%d = forms.CharField(label="%s", widget=%s, \ required=False)' % (property.order, property.id, property.name, PropertyModel.TYPE_WIDGET[property.type])) class Meta: @@ -117,7 +126,7 @@ class RouteAdminForm(forms.ModelForm): """ # declare properties for property in PropertyModel.objects.filter(available=True): - exec('property_%d_%d = forms.CharField(label="%s", widget=forms.%s, \ + exec('property_%d_%d = forms.CharField(label="%s", widget=%s, \ required=False)' % (property.order, property.id, property.name, PropertyModel.TYPE_WIDGET[property.type])) class Meta: diff --git a/main/models.py b/main/models.py index 1a46ae2..16796d0 100644 --- a/main/models.py +++ b/main/models.py @@ -274,9 +274,9 @@ class PropertyModel(models.Model): TYPE = (('T', _('Text')), ('L', _('Long text')), ('P', _('Password'))) - TYPE_WIDGET = {'T':'TextInput', - 'L':'Textarea', - 'P':'PasswordInput'} + TYPE_WIDGET = {'T':'forms.TextInput', + 'L':'TextareaWidget', + 'P':'forms.PasswordInput'} type = models.CharField(_("Type"), max_length=1, choices=TYPE) def __unicode__(self): return self.name diff --git a/main/widgets.py b/main/widgets.py index 8dc18ac..77d7c72 100644 --- a/main/widgets.py +++ b/main/widgets.py @@ -51,6 +51,14 @@ def getMapJS(): """ % js return js +class TextareaWidget(forms.Textarea): + """ + Manage the edition of a text using TinyMCE + """ + class Media: + js = ["%stiny_mce.js" % settings.TINYMCE_URL, + "%stextareas.js" % settings.MEDIA_URL,] + class PointChooserWidget(forms.TextInput): """ Manage the edition of point on a map @@ -275,4 +283,4 @@ class AreaField(forms.MultiValueField): def compress(self, data_list): if not data_list: return None - return data_list
\ No newline at end of file + return data_list diff --git a/settings.py b/settings.py index 496f6d0..96589f0 100644 --- a/settings.py +++ b/settings.py @@ -7,6 +7,8 @@ EXTRA_URL = 'chimere/' BASE_URL = SERVER_URL + EXTRA_URL EMAIL_HOST = 'localhost' +TINYMCE_URL = SERVER_URL + 'tinymce/' + # chimere specific DEFAULT_CENTER = (-1.679444, 48.114722) EPSG_PROJECTION = 900913 diff --git a/static/styles.css b/static/styles.css index d5ae8cf..45b9b71 100644 --- a/static/styles.css +++ b/static/styles.css @@ -116,7 +116,7 @@ border-radius:10px; #areas{ padding:6px; border: 1px solid black; -height:120px; +height:140px; position:absolute; z-index:5; bottom:100px; @@ -287,4 +287,4 @@ text-decoration:None; .olControlScaleLine { bottom: 35px; -}
\ No newline at end of file +} diff --git a/templates/detail.html b/templates/detail.html index 03ffe25..351ab4e 100644 --- a/templates/detail.html +++ b/templates/detail.html @@ -1,9 +1,8 @@ {% load i18n %} <h2>{{ marker.name }}</h2> <div id='detail_content'> -{%trans marker.subcategory.name%} {% if marker.picture %}<img src='{{media_path}}{{marker.picture}}' alt='{{marker.name}}'/>{%endif%} <div>{% for property in marker.getProperties %} -<p id='{{property.propertymodel.getNamedId}}'>{{ property.value }}</p> +<p id='{{property.propertymodel.getNamedId}}'>{{ property.value|safe }}</p> {% endfor %}</div> -</div>
\ No newline at end of file +</div> |