1
|
|
|
from django import template |
2
|
|
|
from django.forms import Textarea |
3
|
|
|
from django.utils import translation |
4
|
|
|
from django.conf import settings |
5
|
|
|
from django.contrib.admin.widgets import AdminTextareaWidget |
6
|
|
|
|
7
|
|
|
from pages.placeholders import PlaceholderNode |
8
|
|
|
from pages.placeholders import parse_placeholder |
9
|
|
|
|
10
|
|
|
try: |
11
|
|
|
from ckeditor.widgets import CKEditorWidget |
12
|
|
|
except ImportError: |
13
|
|
|
CKEditorWidget = AdminTextareaWidget |
14
|
|
|
|
15
|
|
|
register = template.Library() |
16
|
|
|
|
17
|
|
|
class CKEditorPlaceholderNode(PlaceholderNode): |
18
|
|
|
def get_widget(self, page, language, fallback=Textarea): |
19
|
|
|
if 'ckeditor' not in settings.INSTALLED_APPS: |
20
|
|
|
return fallback |
21
|
|
|
|
22
|
|
|
with_stmt = self.widget # name of the widget as called in template like... |
23
|
|
|
# {% ckeditor_placeholder "welcome" with text_wysiwym_widget:default%} |
24
|
|
|
splitted = with_stmt.split(":") |
25
|
|
|
|
26
|
|
|
if len(splitted) == 1: |
27
|
|
|
ck = CKEditorWidget(config_name='default') |
28
|
|
|
elif len(splitted) > 1: |
29
|
|
|
ck = CKEditorWidget(config_name=splitted[1]) |
30
|
|
|
|
31
|
|
|
if not ck.config.get('language'): |
32
|
|
|
ck.config['language'] = translation.get_language() |
33
|
|
|
|
34
|
|
|
return ck |
35
|
|
|
|
36
|
|
|
def do_ckeditorplaceholder(parser, token): |
37
|
|
|
name, params = parse_placeholder(parser, token) |
38
|
|
|
return CKEditorPlaceholderNode(name, **params) |
39
|
|
|
|
40
|
|
|
register.tag('ckeditor_placeholder', do_ckeditorplaceholder) |
41
|
|
|
|