adminx.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. #coding:utf-8
  2. #__author__ = 'sai'
  3. #DjangoUeditor Xadmin plugin
  4. import xadmin
  5. from django.db.models import TextField
  6. from xadmin.views import BaseAdminPlugin, ModelFormAdminView, DetailAdminView
  7. from DjangoUeditor.models import UEditorField
  8. from DjangoUeditor.widgets import UEditorWidget
  9. from django.conf import settings
  10. class XadminUEditorWidget(UEditorWidget):
  11. def __init__(self,**kwargs):
  12. self.ueditor_settings=kwargs
  13. self.Media.js = None
  14. super(XadminUEditorWidget, self).__init__(kwargs)
  15. class UeditorPlugin(BaseAdminPlugin):
  16. def get_field_style(self, attrs, db_field, style, **kwargs):
  17. if style == 'ueditor':
  18. if isinstance(db_field, UEditorField):
  19. return {'widget': XadminUEditorWidget(**db_field.formfield().widget.attrs)}
  20. if isinstance(db_field, TextField):
  21. return {'widget': XadminUEditorWidget}
  22. return attrs
  23. def block_extrahead(self, context, nodes):
  24. js = '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.config.js")
  25. js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js")
  26. nodes.append(js)
  27. xadmin.site.register_plugin(UeditorPlugin, DetailAdminView)
  28. xadmin.site.register_plugin(UeditorPlugin, ModelFormAdminView)