| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #coding:utf-8
- from django import forms
- from django.conf import settings
- from django.contrib.admin.widgets import AdminTextareaWidget
- from django.template.loader import render_to_string
- from django.utils.safestring import mark_safe
- from django.utils.html import conditional_escape
- from django.utils.encoding import force_unicode
- from utils import FixFilePath
- import settings as uSettings
- class UEditorWidget(forms.Textarea):
- def __init__(self,width=600,height=300,plugins=(),toolbars="normal",filePath="",imagePath="",imageManagerPath="",css="",options={}, attrs=None):
- uOptions={}
- #图片上传路径
- uOptions['imagePath']=FixFilePath(imagePath)
- #附件上传路径
- uOptions['filePath']=FixFilePath(filePath)
- #图片管理器路径,如果没有指定,则默认等于image上传路径
- if len(imageManagerPath)==0:
- uOptions['imageManagerPath']=uOptions['imagePath']
- else:
- uOptions['imageManagerPath']=FixFilePath(imageManagerPath)
- uOptions['css']=css
- uOptions['plugins']=plugins
- uOptions['toolbars']=toolbars
- uOptions['options']=options
- uOptions['width']=width
- uOptions['height']=height
- self.ueditor_options=uOptions
- super(UEditorWidget, self).__init__(attrs)
- def render(self, name, value, attrs=None):
- if value is None: value = ''
- #取得工具栏设置
- if self.ueditor_options['toolbars']=="mini":
- tbar=uSettings.TOOLBARS_SETTINGS["mini"]
- elif self.ueditor_options['toolbars']=="normal":
- tbar=uSettings.TOOLBARS_SETTINGS["normal"]
- else:
- tbar=None
- #传入模板的参数
- uOptions=self.ueditor_options.copy()
- uOptions.update({
- "name":name,
- "value":conditional_escape(force_unicode(value)),
- "toolbars":str(tbar),
- "options":str(self.ueditor_options['options'])[1:-1].replace("True","true").replace("False","false").replace("'",'"')
- })
- context = {
- 'UEditor':uOptions,
- 'STATIC_URL':settings.STATIC_URL,
- 'STATIC_ROOT':settings.STATIC_ROOT,
- 'MEDIA_URL':settings.MEDIA_URL,
- 'MEDIA_ROOT':settings.MEDIA_ROOT
- }
- return mark_safe(render_to_string('ueditor.html',context))
- class Media:
- css={"all": ("ueditor/themes/default/ueditor.css" ,
- "ueditor/themes/default/iframe.css" ,
- )}
- js=("ueditor/editor_config.js",
- "ueditor/editor_all_min.js")
- class AdminUEditorWidget(AdminTextareaWidget, UEditorWidget):
- def __init__(self,**kwargs):
- self.ueditor_options=kwargs
- super(UEditorWidget,self).__init__(kwargs)
|