Skip to content

Commit

Permalink
using tinymce for admin
Browse files Browse the repository at this point in the history
  • Loading branch information
lvanderree committed Sep 13, 2011
1 parent 89fee3d commit b7976e7
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 42 deletions.
14 changes: 11 additions & 3 deletions mercury/models.py
@@ -1,6 +1,7 @@
from django.db import models
from django.contrib.admin import widgets as admin_widgets
from mercury import widgets as mercury_widgets
from tinymce import widgets as tinymce_widgets
from feincms.utils import get_object

from django.conf import settings
Expand All @@ -11,14 +12,21 @@ class HTMLField(models.TextField):
forms.
"""
def formfield(self, **kwargs):
defaults = {'widget': mercury_widgets.TextareaMercury}
# defaults = {'widget': mercury_widgets.TextareaMercury}
# defaults.update(kwargs)
#
# # As an ugly hack, we override the admin widget
# if defaults['widget'] == admin_widgets.AdminTextareaWidget:
# defaults['widget'] = mercury_widgets.AdminTextareaMercury

defaults = {'widget': tinymce_widgets.TinyMCE}
defaults.update(kwargs)

# As an ugly hack, we override the admin widget
if defaults['widget'] == admin_widgets.AdminTextareaWidget:
defaults['widget'] = mercury_widgets.AdminTextareaMercury
defaults['widget'] = tinymce_widgets.AdminTinyMCE

return super(HTMLField, self).formfield(**defaults)
return super(HTMLField, self).formfield(**defaults)

def clean(self, value, model_instance):
value = super(HTMLField, self).clean(value, model_instance)
Expand Down
6 changes: 6 additions & 0 deletions mercury/static/mercury/stylesheets/structured.css
@@ -1,3 +1,9 @@
td.mceCenter table {
text-align:left;
}



strong, dfn {
font-weight:bold;
}
Expand Down
82 changes: 43 additions & 39 deletions mercury/widgets.py
@@ -1,6 +1,8 @@
from django import forms
from django.contrib.admin import widgets as admin_widgets

from tinymce import widgets as tinymce_widgets

from django.forms.widgets import flatatt
from django.utils.safestring import mark_safe
from django.utils.html import escape
Expand All @@ -11,42 +13,44 @@

import mercury.settings

class TextareaMercury(forms.Textarea):
def render(self, name, value, attrs=None):
if value is None: value = ''
value = smart_unicode(value)

if not attrs.has_key('class'):
attrs['class'] = 'item-richtext'
else:
attrs['class'] += ' item-richtext'
attrs['data-type'] = 'editable'

final_attrs = self.build_attrs(attrs)
final_attrs['name'] = name

html = [u'<textarea%s>%s</textarea>' % (flatatt(final_attrs), escape(value))]

return mark_safe(u'\n'.join(html))

def _media(self):
js = [
'mercury/javascripts/mercury_loader.js?pack=onsite',
]
css = {
# 'screen': [] # done by loader
}
return forms.Media(js=js, css=css)
media = property(_media)

class AdminTextareaMercury(admin_widgets.AdminTextareaWidget, TextareaMercury):
def _media(self):
js = [
'mercury/javascripts/mercury_loader.js?pack=admin',
]
css = {
# 'screen': [] # done by loader
}
return forms.Media(js=js, css=css)
media = property(_media)

class TextareaMercury(tinymce_widgets.TinyMCE):
pass
# def render(self, name, value, attrs=None):
# if value is None: value = ''
# value = smart_unicode(value)
#
# if not attrs.has_key('class'):
# attrs['class'] = 'item-richtext'
# else:
# attrs['class'] += ' item-richtext'
# attrs['data-type'] = 'editable'
#
# final_attrs = self.build_attrs(attrs)
# final_attrs['name'] = name
#
# html = [u'<textarea%s>%s</textarea>' % (flatatt(final_attrs), escape(value))]
#
# return mark_safe(u'\n'.join(html))
#
# def _media(self):
# js = [
## 'mercury/javascripts/mercury_loader.js?pack=onsite',
# ]
# css = {
## 'screen': [] # done by loader
# }
# return forms.Media(js=js, css=css)
# media = property(_media)

class AdminTextareaMercury(tinymce_widgets.AdminTinyMCE):
pass
# def _media(self):
# js = [
## 'mercury/javascripts/mercury_loader.js?pack=admin',
# ]
# css = {
## 'screen': [] # done by loader
# }
# return forms.Media(js=js, css=css)
# media = property(_media)
#

0 comments on commit b7976e7

Please sign in to comment.