label = _("Summary Length"),
help_text = _("The number of characters that are going to be displayed in order to get the content summary.")))
+# Tag settings
RECENT_TAGS_SIZE = Setting('RECENT_TAGS_SIZE', 25, VIEW_SET, dict(
label = _("Recent tags block size"),
help_text = _("The number of tags to display in the recent tags block in the front page.")))
+SHOW_TAGS_IN_A_CLOUD = Setting('SHOW_TAGS_IN_A_CLOUD', True, VIEW_SET, dict(
+label = _("Show tags in a cloud"),
+help_text = _("If selected the tags in the recent tags widget will be displayed in a cloud."),
+required=False))
+
+TAGS_CLOUD_MIN_OCCURS = Setting('TAGS_CLOUD_MIN_OCCURS', 1, VIEW_SET, dict(
+label = _("Tags cloud min occurs"),
+help_text = _("Used to calculate the font size of the tags in the cloud widget.")))
+
+TAGS_CLOUD_MAX_OCCURS = Setting('TAGS_CLOUD_MAX_OCCURS', 35, VIEW_SET, dict(
+label = _("Tags cloud max occurs"),
+help_text = _("Used to calculate the font size of the tags in the cloud widget.")))
+
+TAGS_CLOUD_MIN_FONT_SIZE = Setting('TAGS_CLOUD_MIN_FONT_SIZE', 10, VIEW_SET, dict(
+label = _("Tags cloud min font size"),
+help_text = _("Used to calculate the font size of the tags in the cloud widget.")))
+
+TAGS_CLOUD_MAX_FONT_SIZE = Setting('TAGS_CLOUD_MAX_FONT_SIZE', 25, VIEW_SET, dict(
+label = _("Tags cloud max font size"),
+help_text = _("Used to calculate the font size of the tags in the cloud widget.")))
+
RECENT_AWARD_SIZE = Setting('RECENT_AWARD_SIZE', 15, VIEW_SET, dict(
label = _("Recent awards block size"),
help_text = _("The number of awards to display in the recent awards block in the front page.")))
LIMIT_RELATED_TAGS = Setting('LIMIT_RELATED_TAGS', 0, VIEW_SET, dict(
label = _("Limit related tags block"),
help_text = _("Limit related tags block size in questions list pages. Set to 0 to display all all tags.")))
+
-{% load i18n %}\r
+{% load i18n extra_tags %}\r
+{% declare %}\r
+ show_tags_in_a_cloud = settings.SHOW_TAGS_IN_A_CLOUD\r
+{% enddeclare %}\r
\r
<div class="boxC">\r
<h3>{% trans "Recent tags" %}</h3>\r
<div class="body">\r
<div class="tags" id="recent-tags">\r
{% for tag in tags %}\r
- <a rel="tag" class="tag-link-{{ tag.name }}" title="{% blocktrans with tag.name as tagname %}see questions tagged '{{tagname}}'{% endblocktrans %}" href="{% url tag_questions tag.name|urlencode %}">{{ tag.name }}</a>\r
+ <a rel="tag"{% if show_tags_in_a_cloud %} style="font-size: {% get_tag_font_size tag %}px;"{% endif %} class="tag-link-{{ tag.name }}" title="{% blocktrans with tag.name as tagname %}see questions tagged '{{tagname}}'{% endblocktrans %}" href="{% url tag_questions tag.name|urlencode %}">{{ tag.name }}</a>\r
{% endfor %}\r
</div>\r
<div class="more"><a href="{% url tags %}">{% trans "popular tags" %} </a> </div>\r
url = url_prefix + url
return url
+@register.simple_tag
+def get_tag_font_size(tag):
+ occurrences_of_current_tag = tag.used_count
+
+ # Occurrences count settings
+ min_occurs = int(settings.TAGS_CLOUD_MIN_OCCURS)
+ max_occurs = int(settings.TAGS_CLOUD_MAX_OCCURS)
+
+ # Font size settings
+ min_font_size = int(settings.TAGS_CLOUD_MIN_FONT_SIZE)
+ max_font_size = int(settings.TAGS_CLOUD_MAX_FONT_SIZE)
+
+ # Calculate the font size of the tag according to the occurrences count
+ weight = (math.log(occurrences_of_current_tag)-math.log(min_occurs))/(math.log(max_occurs)-math.log(min_occurs))
+ font_size_of_current_tag = min_font_size + int(math.floor((max_font_size-min_font_size)*weight))
+
+ return font_size_of_current_tag
+
class ItemSeparatorNode(template.Node):
def __init__(self, separator):
sep = separator.strip()
d['os'] = os
d['html'] = html
d['reverse'] = reverse
+ d['settings'] = settings
d['smart_str'] = smart_str
d['smart_unicode'] = smart_unicode
d['force_unicode'] = force_unicode