diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-06-11 01:25:47 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-06-11 01:25:47 -0400 |
commit | 7bbb038b8896413a2cff814d65a7cf2dc604e2f4 (patch) | |
tree | 2c9a0187e78cd5d6dde83b4855f080583f080137 | |
parent | 2f76b6460e0da66a2ef4251301059c84b3f5a753 (diff) | |
download | askbot-7bbb038b8896413a2cff814d65a7cf2dc604e2f4.tar.gz askbot-7bbb038b8896413a2cff814d65a7cf2dc604e2f4.tar.bz2 askbot-7bbb038b8896413a2cff814d65a7cf2dc604e2f4.zip |
added links to karma graph and badge summary to the rep and badge counters in the header
-rw-r--r-- | forum/management/commands/multi_award_badges.py | 4 | ||||
-rw-r--r-- | forum/models/repute.py | 6 | ||||
-rwxr-xr-x | forum/skins/default/media/style/style.css | 8 | ||||
-rw-r--r-- | forum/skins/default/templates/header.html | 2 | ||||
-rw-r--r-- | forum/skins/default/templates/input_bar.html | 2 | ||||
-rw-r--r-- | forum/skins/default/templates/questions.html | 2 | ||||
-rw-r--r-- | forum/templatetags/extra_tags.py | 162 | ||||
-rw-r--r-- | locale/en/LC_MESSAGES/django.mo | bin | 24018 -> 24140 bytes | |||
-rw-r--r-- | locale/en/LC_MESSAGES/django.po | 8 |
9 files changed, 129 insertions, 65 deletions
diff --git a/forum/management/commands/multi_award_badges.py b/forum/management/commands/multi_award_badges.py index 4361713e..1ef40835 100644 --- a/forum/management/commands/multi_award_badges.py +++ b/forum/management/commands/multi_award_badges.py @@ -1,3 +1,4 @@ +#encoding:utf-8 """ #------------------------------------------------------------------------------- # Name: Award badges command @@ -12,7 +13,6 @@ #------------------------------------------------------------------------------- """ #!/usr/bin/env python -#encoding:utf-8 from django.db import connection from django.shortcuts import get_object_or_404 @@ -20,7 +20,7 @@ from django.contrib.contenttypes.models import ContentType from forum.models import Badge, User, Award, Question, Answer, Tag from forum import const -from forum.management.commands.base_command BaseCommand +from forum.management.commands.base_command import BaseCommand class Command(BaseCommand): def handle_noargs(self, **options): diff --git a/forum/models/repute.py b/forum/models/repute.py index bc6bec1d..bf44922b 100644 --- a/forum/models/repute.py +++ b/forum/models/repute.py @@ -17,6 +17,12 @@ class Badge(models.Model): (SILVER, _('silver')), (BRONZE, _('bronze')), ) + CSS_CLASSES = { + GOLD: 'badge1', + SILVER: 'badge2', + BRONZE: 'badge3', + } + DISPLAY_SYMBOL = '●' name = models.CharField(max_length=50) type = models.SmallIntegerField(choices=TYPE_CHOICES) diff --git a/forum/skins/default/media/style/style.css b/forum/skins/default/media/style/style.css index 25cb2ada..1ae117c4 100755 --- a/forum/skins/default/media/style/style.css +++ b/forum/skins/default/media/style/style.css @@ -275,7 +275,8 @@ blockquote { margin-left: 0; } #top a img { - vertical-align:text-bottom; + vertical-align:middle; + margin-bottom:2px; } #logo { @@ -2652,3 +2653,8 @@ p.signup_p { text-align:right; padding-right:5px; } + +#top a.ab-nav-karma, #top a.ab-nav-badges { + margin: 0; + text-decoration: none; +} diff --git a/forum/skins/default/templates/header.html b/forum/skins/default/templates/header.html index 014c2990..49811fde 100644 --- a/forum/skins/default/templates/header.html +++ b/forum/skins/default/templates/header.html @@ -21,7 +21,7 @@ /> </a> {% endspaceless %} - <span>(karma:</span> {% get_score_badge request.user %}) + ({% get_long_score_and_badge_report user %}) <a href="{% url logout %}">{% trans "logout" %}</a> {% else %} <a href="{% url user_signin %}">{% trans "login" %}</a> diff --git a/forum/skins/default/templates/input_bar.html b/forum/skins/default/templates/input_bar.html index 59236350..66e6ed94 100644 --- a/forum/skins/default/templates/input_bar.html +++ b/forum/skins/default/templates/input_bar.html @@ -30,7 +30,7 @@ value="true" class="cancelSearchBtn"/> {% endif %} - <input type="submit" value="{% trans "search" %}" name="search" class="searchBtn" default /> + <input type="submit" value="{% trans "search" %}" name="search" class="searchBtn" /> {% if active_tab == "tags" %} <input type="hidden" name="t" value="tag"/> {% else %} diff --git a/forum/skins/default/templates/questions.html b/forum/skins/default/templates/questions.html index 78ea8885..1988f0cb 100644 --- a/forum/skins/default/templates/questions.html +++ b/forum/skins/default/templates/questions.html @@ -50,7 +50,7 @@ <div class="tabsC">
<span class="label">{% trans "In:" %}</span>
<a id="all" class="off" href="?scope=all" title="{% trans "see all questions" %}">{% trans "all" %}</a>
- <a id="unanswered" class="off" href="?scope=unanswered&sort=coldest" title="{% trans "see unanswered questions" %}">{% trans "unanswered" %}</a>
+ <a id="unanswered" class="off" href="?scope=unanswered&sort=coldest" title="{% trans "see unanswered questions" %}">{% trans "unanswered" %}</a>
{% if request.user.is_authenticated %}
<a id="favorite" class="off" href="?scope=favorite" title="{% trans "see your favorite questions" %}">{% trans "favorite" %}</a>
{% endif %}
diff --git a/forum/templatetags/extra_tags.py b/forum/templatetags/extra_tags.py index e82537fa..15f97ac8 100644 --- a/forum/templatetags/extra_tags.py +++ b/forum/templatetags/extra_tags.py @@ -9,6 +9,7 @@ from django.utils.encoding import smart_unicode from django.utils.safestring import mark_safe from forum.const import * from forum.models import Question, Answer, QuestionRevision, AnswerRevision +from forum.models import Badge from django.utils.translation import ugettext as _ from django.utils.translation import ungettext from django.conf import settings @@ -149,63 +150,114 @@ def post_contributor_info(post,contributor_type='original_author'): 'wiki_on':forum_settings.WIKI_ON, 'contributor_type':contributor_type } - + + +BADGE_TEMPLATE = '<span title="%(pluralized_badge_count)s">' \ + + '<span class="%(badge_css_class)s">%(badge_symbol)s</span>' \ + + '<span class="badgecount">%(badge_count)s</span>' \ + + '</span>' +BADGE_LEVELS = dict(Badge.TYPE_CHOICES) + +def render_badge_counter(badge_level = None, badge_count = None): + + pluralized_badge_count = ungettext( + '%(badge_count)d %(badge_level)s badge', + '%(badge_count)d %(badge_level)s badges', + badge_count + ) % { + 'badge_count': badge_count, + 'badge_level': BADGE_LEVELS[badge_level] + } + + output = BADGE_TEMPLATE % \ + { + 'pluralized_badge_count': pluralized_badge_count, + 'badge_css_class': Badge.CSS_CLASSES[badge_level], + 'badge_symbol': Badge.DISPLAY_SYMBOL, + 'badge_count': badge_count, + } + return output + + +REP_TEMPLATE = '<span class="reputation-score" ' \ + + 'title="%(reputation)s %(repword)s">%(reputation)s</span>' @register.simple_tag -def get_score_badge(user): - BADGE_TEMPLATE = '<span class="score" title="%(reputation)s %(reputationword)s">%(reputation)s</span>' - if user.gold > 0 : - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(gold)s %(badgesword)s">' - '<span class="badge1">●</span>' - '<span class="badgecount">%(gold)s</span>' - '</span>') - if user.silver > 0: - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(silver)s %(badgesword)s">' - '<span class="silver">●</span>' - '<span class="badgecount">%(silver)s</span>' - '</span>') - if user.bronze > 0: - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(bronze)s %(badgesword)s">' - '<span class="bronze">●</span>' - '<span class="badgecount">%(bronze)s</span>' - '</span>') - BADGE_TEMPLATE = smart_unicode(BADGE_TEMPLATE, encoding='utf-8', strings_only=False, errors='strict') - return mark_safe(BADGE_TEMPLATE % { - 'reputation' : user.reputation, - 'gold' : user.gold, - 'silver' : user.silver, - 'bronze' : user.bronze, - 'badgesword' : _('badges'), - 'reputationword' : _('reputation points'), - }) - +def render_reputation_counter(rep): + return REP_TEMPLATE % { + 'repword': _('reputation points'), + 'reputation': rep + } + + @register.simple_tag -def get_score_badge_by_details(rep, gold, silver, bronze): - BADGE_TEMPLATE = '<span class="reputation-score" title="%(reputation)s %(repword)s">%(reputation)s</span>' - if gold > 0 : - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(gold)s %(badgeword)s">' - '<span class="badge1">●</span>' - '<span class="badgecount">%(gold)s</span>' - '</span>') - if silver > 0: - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(silver)s %(badgeword)s">' - '<span class="badge2">●</span>' - '<span class="badgecount">%(silver)s</span>' - '</span>') - if bronze > 0: - BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(bronze)s %(badgeword)s">' - '<span class="badge3">●</span>' - '<span class="badgecount">%(bronze)s</span>' - '</span>') - BADGE_TEMPLATE = smart_unicode(BADGE_TEMPLATE, encoding='utf-8', strings_only=False, errors='strict') - return mark_safe(BADGE_TEMPLATE % { - 'reputation' : rep, - 'gold' : gold, - 'silver' : silver, - 'bronze' : bronze, - 'repword' : _('reputation points'), - 'badgeword' : _('badges'), - }) - +def render_badge_counters(gold_count, silver_count, bronze_count): + output = '' + if gold_count > 0 : + output += render_badge_counter( + badge_level = Badge.GOLD, + badge_count = gold_count + ) + if silver_count > 0: + output += render_badge_counter( + badge_level = Badge.SILVER, + badge_count = silver_count + ) + if bronze_count > 0: + output += render_badge_counter( + badge_level = Badge.BRONZE, + badge_count = bronze_count + ) + return output + + +@register.simple_tag +def get_score_badge_by_details(rep, gold_count, silver_count, bronze_count): + output = render_reputation_counter(rep) + output += render_badge_counters(gold_count, silver_count, bronze_count) + return output + + +#this one is used for the header next to user profile and logout links +REP_TEMPLATE2 = '<a class="ab-nav-karma" href="%(karma_graph_url)s" ' \ + + ' title="%(karma_phrase)s">' \ + + '%(rep_word)s: %(reputation)s</a>' +BADGE_TEMPLATE2 = '<a class="ab-nav-badges" href="%(user_badges_url)s">' \ + + '%(badge_counters)s</a>' +@register.simple_tag +def get_long_score_and_badge_report(user): + profile_url = user.get_absolute_url() + karma_graph_url = profile_url + '?sort=reputation' + karma_phrase = _('your karma is %(reputation)s') \ + % { 'reputation': user.reputation } + + output = REP_TEMPLATE2 % { + 'repword': _('reputation points'), + 'karma_graph_url': karma_graph_url, + 'reputation': user.reputation, + 'karma_phrase': karma_phrase, + 'rep_word': _('reputation points'), + } + + badge_counters = render_badge_counters(user.gold, user.silver, user.bronze) + + if badge_counters != '': + output += ' ' + BADGE_TEMPLATE2 % { + 'user_badges_url': profile_url + '#badges', + 'badge_counters': _('badges: ') + badge_counters + } + return output + + +@register.simple_tag +def get_score_badge(user): + return get_score_badge_by_details( + user.reputation, + user.gold, + user.silver, + user.bronze + ) + + @register.simple_tag def get_user_vote_image(dic, key, arrow): if dic.has_key(key): diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo Binary files differindex a21172b6..eacc102a 100644 --- a/locale/en/LC_MESSAGES/django.mo +++ b/locale/en/LC_MESSAGES/django.mo diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 3bbc706b..3da33966 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -1340,10 +1340,10 @@ msgid "" "go to %(email_settings_link)s to change frequency of email updates or %" "(admin_email)s administrator" msgstr "" -"<p>Please remember that you can always <a href='%(link)s'>adjust</a> " +"<p>Please remember that you can always <a href='%(email_settings_link)s'>adjust</a> " "frequency of the email updates or turn them off entirely.<br/>If you believe " "that this message was sent in an error, please email about it the forum " -"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum " +"administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum " "server.</p>" #: forum/migrations/0005_install_badges.py:10 @@ -2678,11 +2678,11 @@ msgstr "" #: forum/skins/default/templates/header.html:10 msgid "logout" -msgstr "" +msgstr "sign out" #: forum/skins/default/templates/header.html:12 msgid "login" -msgstr "" +msgstr "Hi, there! Please sign in" #: forum/skins/default/templates/header.html:22 msgid "back to home page" |