15 Eylül 2011 Perşembe

Django'da TinyMCE entegrasyonu

Merhabalar,

TinyMCE, web uygulamamızda haber girişi, blog postu vb. girerken bir çok kolaylığı sağlayan bir araç. Örneğin, yazı stillerini belirlemek, paragrafları düzenlemek, yazıya resim veya video eklemek gibi işlevlerde yardımcı oluyor. Django'nun en iyi özelliklerinden birisi olan admin paneli içinde tinymce ile gelmiyor. Kolayca biz ekleyebiliriz. Bu adresten TinyMCE'yi indirdikten sonra jscripts altındaki tiny_mce dizinini Django projemizdeki static klasörümüze kopyalıyoruz.

Kopyaladıktan sonra tiny_mce dizinine gidip içinde textareas.js adında bir dosya yaratıyoruz. Bu js dosyasına aşağıdaki kodları yapıştırıyoruz.

tinyMCE.init({
mode : "textareas",
width : "800",
height : "500",
theme : "advanced",
language : 'en',
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
plugins : "preview, searchreplace, paste, table, insertdatetime, media",
theme_advanced_buttons1 :
"preview,undo,redo,visualaid,|,cut,copy,paste,pastetext,pasteword,|,search, replace,|,bullist,numlist,|,outdent,indent,blockquote,|,link,unlink,anchor, image,cleanup,help,code",
theme_advanced_buttons2 :
"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,fontselect,fontsizeselect",
theme_advanced_buttons3 :
"forecolor,backcolor,|,sub,sup,|,charmap,insertdate,inserttime,media,|,tabl econtrols"
});

Ardından kullandığımız application dizinimizdeki admin.py dosyasını editlememiz gerekiyor. Onu da şöyle bir değişiklik ile hallediyoruz;

class NewsAdmin(admin.ModelAdmin):
class Media:
js = ('tiny_mce/tiny_mce.js',
'tiny_mce/textareas.js',)

admin.site.register(News, NewsAdmin)

Evet bu kadar basit entegrasyon işlemimiz.

Geçenler Python İstanbul toplantısında bir arkadaşım sormuştu FlatPages'a TinyMCE nasıl entegre ederim diye. O da admin.py'de bir kaç satır işe bakıyor :) Şöyle bir kod parçacığı işimizi görecektir;

from django.contrib.flatpages.models import FlatPage
from django.contrib.flatpages.admin import FlatPageAdmin as FlatPageAdminBase
class FlatPageAdmin(FlatPageAdminBase):
class Media:
js = ('tiny_mce/tiny_mce.js,
'tiny_mce/textareas.js',)

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

Bu kadar! Artık Flatpages'ta da TinyMCE kullanabiliriz.

Mutlu kodlamalar :)

Hiç yorum yok: