I have added TinyMCE widget to grok-awesome for editing html and it was easy as pie.
If you want TinyMCE in your Grok based project it can be achieved with following steps:
1. Add dependencies to setup.py into install_requires section:
'hurry.tinymce', 'hurry.zopetinymce',
hurry.tinymce allows you to include TinyMCE into your project without additional burden, you don’t need to do anything. Well, almost – just make sure to call:
from hurry.tinymce import tinymce
tinymce.need()
to trigger inclusion of TinyMCE in the web page.
2. Create custom widget which calls tinymce.need() as noted above and initializes TinyMCE
from zope.app.form.browser import TextAreaWidget from hurry.tinymce import tinymce template = """%(widget_html)s <script type="text/javascript"> tinyMCE.init({ mode : "exact", elements: "%(elements)s", theme: "advanced" }); </script>""" class TinyMCEWidget(TextAreaWidget): """Widget to edit html using TinyMCE WYSIWYG editor.""" def __call__(self, *args, **kw): widget_html = super(TinyMCEWidget, self).__call__(*args, **kw) tinymce.need() return template % {'widget_html': widget_html, 'elements': self.name, }
3. In your add/edit form use your custom widget for the field you want and off you go:
form_fields['content'].custom_widget = TinyMCEWidget
*megrok.tinymce* is another way to add an RTE widget.
Example application: http://gbe.d2m.at/Wiki
Docs at http://blog.d2m.at/2008/08/30/56/
Sources at http://svn.zope.org/grokapps/gbewiki/src/gbewiki/