From: hernani Date: Wed, 10 Nov 2010 15:48:20 +0000 (+0000) Subject: Adds the habillity to opt for a rendering mode in the static content settings. X-Git-Tag: live~517 X-Git-Url: https://git.openstreetmap.org/osqa.git/commitdiff_plain/0f8b28050a75d2417ba7b43a36432fea36d248f7 Adds the habillity to opt for a rendering mode in the static content settings. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@617 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- diff --git a/forum/settings/sidebar.py b/forum/settings/sidebar.py index a2b3f23..ee75293 100644 --- a/forum/settings/sidebar.py +++ b/forum/settings/sidebar.py @@ -1,7 +1,9 @@ from base import Setting, SettingSet -from django.forms.widgets import Textarea +from django.forms.widgets import Textarea, Select from django.utils.translation import ugettext_lazy as _ +from static import RENDER_CHOICES + SIDEBAR_SET = SettingSet('sidebar', 'Sidebar content', "Enter contents to display in the sidebar. You can use markdown and some basic html tags.", 10, True) SHOW_WELCOME_BOX = Setting('SHOW_WELCOME_BOX', True, SIDEBAR_SET, dict( @@ -40,6 +42,12 @@ label = "Upper Block Content", help_text = " The upper sidebar block. ", widget=Textarea(attrs={'rows': '10'}))) +SIDEBAR_UPPER_RENDER_MODE = Setting('SIDEBAR_UPPER_RENDER_MODE', 'markdown', SIDEBAR_SET, dict( +label = _("Upper block rendering mode"), +help_text = _("How to render your upper block code."), +widget=Select(choices=RENDER_CHOICES), +required=False)) + SIDEBAR_LOWER_SHOW = Setting('SIDEBAR_LOWER_SHOW', True, SIDEBAR_SET, dict( label = "Show Lower Block", @@ -61,4 +69,10 @@ are great resources to help you learn more about the OSQA open source Q&A system """, SIDEBAR_SET, dict( label = "Lower Block Content", help_text = " The lower sidebar block. ", -widget=Textarea(attrs={'rows': '10'}))) \ No newline at end of file +widget=Textarea(attrs={'rows': '10'}))) + +SIDEBAR_LOWER_RENDER_MODE = Setting('SIDEBAR_LOWER_RENDER_MODE', 'markdown', SIDEBAR_SET, dict( +label = _("Lower block rendering mode"), +help_text = _("How to render your lower block code."), +widget=Select(choices=RENDER_CHOICES), +required=False)) \ No newline at end of file diff --git a/forum/settings/static.py b/forum/settings/static.py index 97b5952..9eb5d39 100644 --- a/forum/settings/static.py +++ b/forum/settings/static.py @@ -1,7 +1,13 @@ from base import Setting, SettingSet -from django.forms.widgets import Textarea, RadioSelect +from django.forms.widgets import Textarea, RadioSelect, Select from django.utils.translation import ugettext_lazy as _ +RENDER_CHOICES = ( +('markdown', _('Markdown')), +('html', _('HTML')), +('escape', _('Escaped')) +) + STATIC_PAGE_REGISTRY = Setting('STATIC_PAGE_REGISTRY', {}) CSS_SET = SettingSet('css', 'Custom CSS', "Define some custom css you can use to override the default css.", 2000, @@ -32,6 +38,12 @@ CUSTOM_HEADER = Setting('CUSTOM_HEADER', '', HEAD_AND_FOOT_SET, dict( widget=Textarea(attrs={'rows': '25'}), required=False)) +CUSTOM_HEADER_RENDER_MODE = Setting('CUSTOM_HEADER_RENDER_MODE', 'markdown', HEAD_AND_FOOT_SET, dict( + label = _("Custom Header rendering mode"), + help_text = _("How to render your custom header code."), + widget=Select(choices=RENDER_CHOICES), + required=False)) + USE_ANNOUNCEMENT_BAR = Setting('USE_ANNOUNCEMENT_BAR', False, HEAD_AND_FOOT_SET, dict( label = _("Show announcement bar"), help_text = _("Some piece of content that goes under the search bar and can be used for announcements, etc."), @@ -43,6 +55,12 @@ ANNOUNCEMENT_BAR = Setting('ANNOUNCEMENT_BAR', '', HEAD_AND_FOOT_SET, dict( widget=Textarea(attrs={'rows': '25'}), required=False)) +ANNOUNCEMENT_BAR_RENDER_MODE = Setting('ANNOUNCEMENT_BAR_RENDER_MODE', 'markdown', HEAD_AND_FOOT_SET, dict( + label = _("Announcement bar rendering mode"), + help_text = _("How to render your announcement bar code."), + widget=Select(choices=RENDER_CHOICES), + required=False)) + USE_CUSTOM_FOOTER = Setting('USE_CUSTOM_FOOTER', False, HEAD_AND_FOOT_SET, dict( label = _("Use custom footer"), help_text = _("Do you want to use a custom footer."), @@ -54,6 +72,12 @@ CUSTOM_FOOTER = Setting('CUSTOM_FOOTER', '', HEAD_AND_FOOT_SET, dict( widget=Textarea(attrs={'rows': '25'}), required=False)) +CUSTOM_FOOTER_RENDER_MODE = Setting('CUSTOM_FOOTER_RENDER_MODE', 'markdown', HEAD_AND_FOOT_SET, dict( + label = _("Custom footer rendering mode"), + help_text = _("How to render your custom footer code."), + widget=Select(choices=RENDER_CHOICES), + required=False)) + CUSTOM_FOOTER_MODE_CHOICES = ( ('replace', _('Replace default footer')), ('above', _('Above default footer')), diff --git a/forum/skins/default/templates/base_content.html b/forum/skins/default/templates/base_content.html index 76eec6e..0fbcc5d 100644 --- a/forum/skins/default/templates/base_content.html +++ b/forum/skins/default/templates/base_content.html @@ -56,7 +56,7 @@ {% endif %} {% if settings.USE_CUSTOM_HEAD|or_preview:request %} - {{ settings.CUSTOM_HEAD|or_preview:request|markdown:"settingsparser" }} + {{ settings.CUSTOM_HEAD|or_preview:request|safe }} {% endif %} {% block forejs %}{% endblock %} @@ -75,7 +75,7 @@ {% if settings.USE_CUSTOM_HEADER|or_preview:request %}
- {{ settings.CUSTOM_HEADER|or_preview:request|safe }} + {{ settings.CUSTOM_HEADER|or_preview:request|static_content:settings.CUSTOM_HEADER_RENDER_MODE }}
{% endif %} {% include "header.html" %} @@ -98,19 +98,19 @@ {% if settings.USE_CUSTOM_FOOTER|or_preview:request %} {% ifequal settings.CUSTOM_FOOTER_MODE|or_preview:request "above" %} {% endifequal %}
{% ifequal settings.CUSTOM_FOOTER_MODE|or_preview:request "replace" %} - {{ settings.CUSTOM_FOOTER|or_preview:request|markdown:"settingsparser" }} + {{ settings.CUSTOM_FOOTER|or_preview:request|static_content:settings.CUSTOM_FOOTER_RENDER_MODE }} {% else %} {% include "footer.html" %} {% endifequal %}
{% ifequal settings.CUSTOM_FOOTER_MODE|or_preview:request "below" %} {% endifequal %} {% else %} diff --git a/forum/skins/default/templates/header.html b/forum/skins/default/templates/header.html index 7afaffc..0e2d28c 100644 --- a/forum/skins/default/templates/header.html +++ b/forum/skins/default/templates/header.html @@ -40,7 +40,7 @@ {% if settings.USE_ANNOUNCEMENT_BAR|or_preview:request %}
- {{ settings.ANNOUNCEMENT_BAR|or_preview:request|markdown:"settingsparser" }} + {{ settings.ANNOUNCEMENT_BAR|or_preview:request|static_content:settings.ANNOUNCEMENT_BAR_RENDER_MODE }}
{% endif %} diff --git a/forum/skins/default/templates/sidebar/user_blocks.html b/forum/skins/default/templates/sidebar/user_blocks.html index 9bf843c..d3d98cc 100644 --- a/forum/skins/default/templates/sidebar/user_blocks.html +++ b/forum/skins/default/templates/sidebar/user_blocks.html @@ -3,7 +3,7 @@ {% if show %} {% if wrap %}
{% endif %} - {{ content|markdown }} + {{ content }} {% if wrap %}
{% endif %} {% endif %} diff --git a/forum/templatetags/extra_filters.py b/forum/templatetags/extra_filters.py index 590f555..b9fb4b3 100644 --- a/forum/templatetags/extra_filters.py +++ b/forum/templatetags/extra_filters.py @@ -1,6 +1,7 @@ from django import template from django.utils.safestring import mark_safe import logging +import markdown register = template.Library() @@ -46,4 +47,13 @@ def getval(map, key): @register.filter def contained_in(item, container): - return item in container \ No newline at end of file + return item in container + +@register.filter +def static_content(content, render_mode): + if render_mode == 'markdown': + return mark_safe(markdown.markdown(unicode(content), ["settingsparser"])) + elif render_mode == "html": + return mark_safe(unicode(content)) + else: + return unicode(content) \ No newline at end of file diff --git a/forum/templatetags/general_sidebar_tags.py b/forum/templatetags/general_sidebar_tags.py index 4493f32..2f70fa2 100644 --- a/forum/templatetags/general_sidebar_tags.py +++ b/forum/templatetags/general_sidebar_tags.py @@ -2,6 +2,8 @@ from django import template from forum.models import Tag, Award from forum import settings +from extra_filters import static_content + register = template.Library() @register.inclusion_tag('sidebar/markdown_help.html') @@ -16,7 +18,7 @@ def recent_awards(): def sidebar_upper(): return { 'show': settings.SIDEBAR_UPPER_SHOW, - 'content': settings.SIDEBAR_UPPER_TEXT, + 'content': static_content(settings.SIDEBAR_UPPER_TEXT, settings.SIDEBAR_UPPER_RENDER_MODE), 'wrap': not settings.SIDEBAR_UPPER_DONT_WRAP, 'blockid': 'sidebar-upper' } @@ -25,7 +27,7 @@ def sidebar_upper(): def sidebar_lower(): return { 'show': settings.SIDEBAR_LOWER_SHOW, - 'content': settings.SIDEBAR_LOWER_TEXT, + 'content': static_content(settings.SIDEBAR_LOWER_TEXT, settings.SIDEBAR_LOWER_RENDER_MODE), 'wrap': not settings.SIDEBAR_LOWER_DONT_WRAP, 'blockid': 'sidebar-lower' }