Generated: Wed 2013-03-13 10:33 CET
Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/cms/plugins/text/cms_plugins.py
Stats: 0 executed, 28 missed, 11 excluded, 21 ignored
from cms.plugin_pool import plugin_pool
from cms.plugin_base import CMSPluginBase
from django.utils.translation import ugettext_lazy as _
from models import Text
from cms.plugins.text.forms import TextForm
from cms.plugins.text.widgets.wymeditor_widget import WYMEditor
from cms.plugins.text.utils import plugin_tags_to_user_html
from django.forms.fields import CharField
from cms.plugins.text.settings import USE_TINYMCE
from django.conf import settings
class TextPlugin(CMSPluginBase):
model = Text
name = _("Text")
form = TextForm
render_template = "cms/plugins/text.html"
change_form_template = "cms/plugins/text_plugin_change_form.html"
def get_editor_widget(self, request, plugins):
"""
Returns the Django form Widget to be used for
the text area
"""
if USE_TINYMCE and "tinymce" in settings.INSTALLED_APPS:
from cms.plugins.text.widgets.tinymce_widget import TinyMCEEditor
return TinyMCEEditor(installed_plugins=plugins)
else:
return WYMEditor(installed_plugins=plugins)
def get_form_class(self, request, plugins):
"""
Returns a subclass of Form to be used by this plugin
"""
# We avoid mutating the Form declared above by subclassing
class TextPluginForm(self.form):
pass
widget = self.get_editor_widget(request, plugins)
TextPluginForm.declared_fields["body"] = CharField(widget=widget, required=False)
return TextPluginForm
def get_form(self, request, obj=None, **kwargs):
plugins = plugin_pool.get_text_enabled_plugins(self.placeholder, self.page)
form = self.get_form_class(request, plugins)
kwargs['form'] = form # override standard form
return super(TextPlugin, self).get_form(request, obj, **kwargs)
def render(self, context, instance, placeholder):
context.update({
'body': plugin_tags_to_user_html(instance.body, context, placeholder),
'placeholder': placeholder,
'object': instance
})
return context
def save_model(self, request, obj, form, change):
obj.clean_plugins()
super(TextPlugin, self).save_model(request, obj, form, change)
plugin_pool.register_plugin(TextPlugin)