~carljm/django-markitup/trunk

2 by Carl Meyer
first working version
1
"""
2
widgets for django-markitup
3
3 by Carl Meyer
docs, customizability of preview filter
4
Time-stamp: <2009-03-18 11:50:47 carljm widgets.py>
2 by Carl Meyer
first working version
5
6
"""
7
from django import forms
8
from django.utils.safestring import mark_safe
9
3 by Carl Meyer
docs, customizability of preview filter
10
from markitup.settings import MARKITUP_SET, MARKITUP_SKIN, JQUERY_URL
11
2 by Carl Meyer
first working version
12
class MarkItUpWidget(forms.Textarea):
13
    """
14
    Widget for a MarkItUp editor textarea.
15
16
    Takes two additional optional keyword arguments:
17
3 by Carl Meyer
docs, customizability of preview filter
18
    ``markitup_set``
2 by Carl Meyer
first working version
19
        URL path (absolute or relative to MEDIA_URL) to MarkItUp
3 by Carl Meyer
docs, customizability of preview filter
20
        button set directory.  Default: value of MARKITUP_SET setting.
2 by Carl Meyer
first working version
21
3 by Carl Meyer
docs, customizability of preview filter
22
    ``markitup_skin``
2 by Carl Meyer
first working version
23
        URL path (absolute or relative to MEDIA_URL) to MarkItUp skin
3 by Carl Meyer
docs, customizability of preview filter
24
        directory.  Default: value of MARKITUP_SKIN setting.
2 by Carl Meyer
first working version
25
        
26
    """
27
    def __init__(self, attrs=None,
3 by Carl Meyer
docs, customizability of preview filter
28
                 markitup_set=None,
29
                 markitup_skin=None):
30
        self.miu_set = markitup_set or MARKITUP_SET
31
        self.miu_skin = markitup_skin or MARKITUP_SKIN
2 by Carl Meyer
first working version
32
        super(MarkItUpWidget, self).__init__(attrs)
33
34
    def _media(self):
35
        return forms.Media(css={'screen': ('%s/style.css' % self.miu_skin,
36
                                           '%s/style.css' % self.miu_set)},
3 by Carl Meyer
docs, customizability of preview filter
37
                           js=(JQUERY_URL,
2 by Carl Meyer
first working version
38
                               'markitup/jquery.markitup.js',
39
                               '%s/set.js' % self.miu_set))
40
    media = property(_media)
41
        
42
    def render(self, name, value, attrs=None):
43
        html = super(MarkItUpWidget, self).render(name, value, attrs)
44
        html += ('<script type="text/javascript">'
45
                 '$(document).ready(function() {'
46
                 '  $("#%s").markItUp(mySettings);'
47
                 '});'
48
                 '</script>' % attrs['id'])
49
        return mark_safe(html)
50