]> git.openstreetmap.org Git - osqa.git/commitdiff
Adds the hability to create custom css. Fixes a small issue with admin area forms.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 7 Jun 2010 02:38:20 +0000 (02:38 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 7 Jun 2010 02:38:20 +0000 (02:38 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@382 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/context.py
forum/settings/__init__.py
forum/settings/forms.py
forum/settings/static.py [new file with mode: 0644]
forum/skins/default/templates/base_content.html
forum/skins/default/templates/osqaadmin/djstyle_base.html
forum/urls.py
forum/views/admin.py
forum/views/meta.py

index e93781089ae6cd6bb505c11a41cc5ff22e805f13..ce7d1b1eed87aec1fa630f19b7292dd579b6adf7 100644 (file)
@@ -1,31 +1,7 @@
 from forum import settings
-from django.conf import settings as djsettings
 
 def application_settings(context):
-    my_settings = {
-        'APP_TITLE' : settings.APP_TITLE,
-        'APP_SHORT_NAME' : settings.APP_SHORT_NAME,
-        'SHOW_WELCOME_BOX' : settings.SHOW_WELCOME_BOX,
-        'APP_URL'   : settings.APP_URL,
-        'APP_KEYWORDS' : settings.APP_KEYWORDS,
-        'APP_DESCRIPTION' : settings.APP_DESCRIPTION,
-        'APP_INTRO' : settings.APP_INTRO,
-        'APP_LOGO' : settings.APP_LOGO,
-        'EMAIL_VALIDATION': 'off',
-               'SUPPORT_URL': settings.SUPPORT_URL,
-               'CONTACT_URL': settings.CONTACT_URL,
-        'FORUM_SCRIPT_ALIAS': djsettings.FORUM_SCRIPT_ALIAS,
-        'LANGUAGE_CODE': djsettings.LANGUAGE_CODE,
-        'GOOGLE_SITEMAP_CODE':settings.GOOGLE_SITEMAP_CODE,
-        'GOOGLE_ANALYTICS_KEY':settings.GOOGLE_ANALYTICS_KEY,
-        'WIKI_ON':settings.WIKI_ON,
-        'OSQA_SKIN':djsettings.OSQA_DEFAULT_SKIN,
-        'APP_FAVICON':settings.APP_FAVICON,
-        'OSQA_VERSION': settings.OSQA_VERSION,
-        'ADMIN_MEDIA_PREFIX': djsettings.ADMIN_MEDIA_PREFIX,
-        'SVN_REVISION': settings.SVN_REVISION,
-        }
-    return {'settings':my_settings}
+    return {'settings': settings}
 
 def auth_processor(request):
     """
index addab2d0e68cc179f8c1e96b202bde880483fe40..9880c5f72ce1767bebda429be25acbde7314dd03 100644 (file)
@@ -16,8 +16,9 @@ DJSTYLE_ADMIN_INTERFACE = Setting('DJSTYLE_ADMIN_INTERFACE', True)
 
 APP_URL = djsettings.APP_URL
 FORUM_SCRIPT_ALIAS = djsettings.FORUM_SCRIPT_ALIAS
-
-STATIC_PAGE_REGISTRY = Setting('STATIC_PAGE_REGISTRY', {})
+OSQA_SKIN = djsettings.OSQA_DEFAULT_SKIN
+LANGUAGE_CODE = djsettings.LANGUAGE_CODE
+ADMIN_MEDIA_PREFIX = djsettings.ADMIN_MEDIA_PREFIX
 
 
 from basic import *
@@ -33,6 +34,7 @@ from faq import *
 from form import *
 from moderation import *
 from users import *
+from static import *
 
 BADGES_SET = SettingSet('badges', _('Badges config'), _("Configure badges on your OSQA site."), 500)
 
index 432ba0b8053d37d1cdea4514deafecfa2ae9a841..c0d3a49a4029e0ffce6688613b7dcf00673c283e 100644 (file)
@@ -16,9 +16,11 @@ class UnfilteredField(forms.CharField):
 class SettingsSetForm(forms.Form):
     def __init__(self, set, data=None, *args, **kwargs):
         if data is None:
-            data = dict([(setting.name, setting.value) for setting in set])
+            initial = dict([(setting.name, setting.value) for setting in set])
+        else:
+            initial = None
 
-        super(SettingsSetForm, self).__init__(data, *args, **kwargs)
+        super(SettingsSetForm, self).__init__(data, initial=initial, *args, **kwargs)
 
         for setting in set:
             if isinstance(setting, (Setting.emulators.get(str, DummySetting), Setting.emulators.get(unicode, DummySetting))):
diff --git a/forum/settings/static.py b/forum/settings/static.py
new file mode 100644 (file)
index 0000000..2ba412a
--- /dev/null
@@ -0,0 +1,19 @@
+from base import Setting, SettingSet
+from django.forms.widgets import Textarea
+from django.utils.translation import ugettext_lazy as _
+
+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)
+
+USE_CUSTOM_CSS = Setting('USE_CUSTOM_CSS', False, CSS_SET, dict(
+label = _("Use custom CSS"),
+help_text = _("Do you want to use custom CSS."),
+required=False))
+
+CUSTOM_CSS = Setting('CUSTOM_CSS', '', CSS_SET, dict(
+label = _("Custom CSS"),
+help_text = _("Your custom CSS."),
+widget=Textarea(attrs={'rows': '25'}),
+required=False))
+
index ac6b9da3063755dc1a9db69f3ba209c2e9257032..c434d6608c5e74367d7453be0077de55fbb5f451 100644 (file)
@@ -14,6 +14,9 @@
         {% endif %}
         <link rel="shortcut icon" href="{{ settings.APP_FAVICON }}" />
         <link href="{% media  "/media/style/style.css" %}" rel="stylesheet" type="text/css" />
+        {% if settings.USE_CUSTOM_CSS %}
+        <link href="{% url custom_css %}" rel="stylesheet" type="text/css" />
+        {% endif %}
         {% block forestyle %}{% endblock %}
         <script src="http://www.google.com/jsapi" type="text/javascript"></script>
         <script type="text/javascript">google.load("jquery", "1.4.2");</script>
index 7798b49004fb0a829298729bdd4f1cfc27456989..9a7cf74247fc054825d4ba662be9756a96ef5ca6 100644 (file)
@@ -86,6 +86,7 @@
                         <li><a href="{% url admin_set allsets.about.name %}">{{ allsets.about.title }}</a></li>
                         <li><a href="{% url admin_set allsets.faq.name %}">{{ allsets.faq.title }}</a></li>
                         <li><a href="{% url admin_set allsets.sidebar.name %}">{{ allsets.sidebar.title }}</a></li>
+                        <li><a href="{% url admin_set allsets.css.name %}">{{ allsets.css.title }}</a></li>
                     </ul>
                 </div>
                 <div id="other-sets-menu" class="module">
index e517ddbf71ab6332e0da35fae0d284519c9f3a84..5c784d340b1d2039d288af14cb24025fb97233e8 100644 (file)
@@ -37,6 +37,7 @@ urlpatterns += patterns('',
     url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}, name='sitemap'),
 
     (r'^favicon\.ico$', app.meta.favicon),
+    url(r'^cstyle\.css$', app.meta.custom_css, name="custom_css"),
 
     url(r'^m/(?P<skin>\w+)/media/(?P<path>.*)$', app.meta.media , name='osqa_media'),
     url(r'^%s(?P<path>.*)$' % _('upfiles/'), 'django.views.static.serve',
index 800e59fdbed7446d3652007fc1d2c1e45a728036..9fd08f2292c9136683b34810c87f0757edb39f7d 100644 (file)
@@ -36,7 +36,7 @@ def admin_page(fn):
             context['othersets'] = sorted(
                     [s for s in Setting.sets.values() if not s.name in
                     ('basic', 'users', 'email', 'paths', 'extkeys', 'repgain', 'minrep', 'voting', 'badges', 'about', 'faq', 'sidebar',
-                    'form', 'moderation')]
+                    'form', 'moderation', 'css')]
                     , lambda s1, s2: s1.weight - s2.weight)
             return render_to_response(template, context, context_instance=RequestContext(request))
         else:
index 608d1cb1aa02ee4253e064082846cf21476149b2..781fcd29ec697eb4402b561107b8b19c72cc52f1 100644 (file)
@@ -21,6 +21,9 @@ import re
 def favicon(request):
     return HttpResponseRedirect(str(settings.APP_FAVICON))
 
+def custom_css(request):
+    return HttpResponse(unicode(settings.CUSTOM_CSS), mimetype="text/css")
+
 def static(request, title, content):
     return render_to_response('static.html', {'content' : content, 'title': title}, context_instance=RequestContext(request))