2013-02-13 8 views

Odpowiedz

0
from django.db.models import Field 
from django.forms import Textarea 
from settings import MEDIA_URL 

class WidgetWYSIWYG(Textarea): 
    def __init__(self, *args, **kwargs): 
     super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor vLargeTextField'}, *args, **kwargs) 
    class Media: 
     js = (
      MEDIA_URL+'common/tiny_mce/tiny_mce.js', 
      MEDIA_URL+'common/filebrowser/js/TinyMCEAdmin.js', 
      ) 

class WYSIWYGField(Field): 
    def get_internal_type(self): 
     return "TextField" 

    def formfield(self, **kwargs): 
     defaults = {'widget': WidgetWYSIWYG} 
     defaults.update(kwargs) 
     return super(WYSIWYGField, self).formfield(**defaults) 

w pliku admin.py

from django.contrib import admin 
from wysiwyg import WidgetWYSIWYG 

from django.db import models 
from django.contrib.flatpages.models import FlatPage 
from django.contrib.flatpages.admin import FlatPageAdmin as FlatPageAdminOld 

class FlatPageAdmin(FlatPageAdminOld): 
    formfield_overrides = { 
     models.TextField: {'widget': WidgetWYSIWYG}, 
    } 

admin.site.unregister(FlatPage) 
admin.site.register(FlatPage, FlatPageAdmin) 
8

po prostu połączyć Django CKEditor do stosowania flatpages przez następujący kod w admin.py:

from django.contrib import admin 
from django.contrib.flatpages.admin import FlatPageAdmin 
from django.contrib.flatpages.models import FlatPage 
from django.db import models 

from cked.widgets import CKEditorWidget 

class FlatPageCustom(FlatPageAdmin): 
    formfield_overrides = { 
     models.TextField: {'widget': CKEditorWidget} 
    } 

admin.site.unregister(FlatPage) 
admin.site.register(FlatPage, FlatPageCustom) 

To działa!

+0

nie działa z Django 1.6 – kissgyorgy

+0

Jednak działa ze zaktualizowaną wersją: https://github.com/riklaunim/django-ckeditor Dzięki za cynk! – kissgyorgy

+5

W którym administrator.py muszę dodać tę rzecz? – Spoutnik16