summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-04-07 10:22:35 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-04-07 10:22:35 +0000
commit7a49305aee5846ced735dbaba2e0fc7cd2c027c0 (patch)
tree75cdc5aee1a2591e69edec85ae468f597420b0a2
parent8159df7f9733bcc16b3480678eaa0243da5803bc (diff)
downloadChimè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.py14
-rw-r--r--main/forms.py17
-rw-r--r--main/models.py6
-rw-r--r--main/widgets.py10
-rw-r--r--settings.py2
-rw-r--r--static/styles.css4
-rw-r--r--templates/detail.html5
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>