diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2009-12-08 22:50:21 -0500 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2009-12-08 22:50:21 -0500 |
commit | 86250a6d49e69ff04d128d11bfa82d9a7b345bbf (patch) | |
tree | 8d9e58419b50630adc537ac92907d04946edc925 /templates | |
parent | a3748b45fec574f1fc2469edae4401c53184e791 (diff) | |
download | askbot-86250a6d49e69ff04d128d11bfa82d9a7b345bbf.tar.gz askbot-86250a6d49e69ff04d128d11bfa82d9a7b345bbf.tar.bz2 askbot-86250a6d49e69ff04d128d11bfa82d9a7b345bbf.zip |
added interesting and ignored tag selectors (works) and per-tag subscription (not tested yet)
Diffstat (limited to 'templates')
-rw-r--r-- | templates/authopenid/complete.html | 1 | ||||
-rw-r--r-- | templates/base.html | 1 | ||||
-rw-r--r-- | templates/content/images/close-small-dark.png | bin | 0 -> 226 bytes | |||
-rw-r--r-- | templates/content/js/com.cnprog.admin.js | 2 | ||||
-rw-r--r-- | templates/content/js/com.cnprog.post.js | 174 | ||||
-rw-r--r-- | templates/content/js/com.cnprog.utils.js | 2 | ||||
-rw-r--r-- | templates/content/js/compress.bat | 3 | ||||
-rw-r--r-- | templates/content/js/flot-build.bat | 2 | ||||
-rw-r--r-- | templates/content/style/style.css | 32 | ||||
-rw-r--r-- | templates/index.html | 18 | ||||
-rw-r--r-- | templates/questions.html | 88 | ||||
-rw-r--r-- | templates/tag_selector.html | 42 | ||||
-rw-r--r-- | templates/user_email_subscriptions.html | 3 | ||||
-rw-r--r-- | templates/user_stats.html | 2 |
14 files changed, 314 insertions, 56 deletions
diff --git a/templates/authopenid/complete.html b/templates/authopenid/complete.html index 9a94c3c4..ce5fb7fe 100644 --- a/templates/authopenid/complete.html +++ b/templates/authopenid/complete.html @@ -88,6 +88,7 @@ parameters: </div> <p class='nomargin'>{% trans "receive updates motivational blurb" %}</p> {% include "edit_user_email_feeds_form.html" %} + <p class='nomargin'>{% trans "Tag filter tool will be your right panel, once you log in." %}</p> <div class="submit-row"><input type="submit" class="submit" name="bnewaccount" value="{% trans "create account" %}"/></div> </form> </div> diff --git a/templates/base.html b/templates/base.html index ec0a53d7..daafc3bc 100644 --- a/templates/base.html +++ b/templates/base.html @@ -75,7 +75,6 @@ {% endblock%} </div> - <div id="CARight"> {% block sidebar%} {% endblock%} diff --git a/templates/content/images/close-small-dark.png b/templates/content/images/close-small-dark.png Binary files differnew file mode 100644 index 00000000..280c1fc7 --- /dev/null +++ b/templates/content/images/close-small-dark.png diff --git a/templates/content/js/com.cnprog.admin.js b/templates/content/js/com.cnprog.admin.js index 73b5768f..cb1c1b15 100644 --- a/templates/content/js/com.cnprog.admin.js +++ b/templates/content/js/com.cnprog.admin.js @@ -3,7 +3,7 @@ $().ready( function(){ success: function(a,b){$('.admin #action_status').html($.i18n._('changes saved'));}, dataType:'json', timeout:5000, - url: $.i18n._('/') + $.i18n._('moderate-user/') + viewUserID + '/' + url: scriptUrl + $.i18n._('moderate-user/') + viewUserID + '/' }; var form = $('.admin #moderate_user_form').ajaxForm(options); var box = $('.admin input#id_is_approved').click(function(){ diff --git a/templates/content/js/com.cnprog.post.js b/templates/content/js/com.cnprog.post.js index 5d58ff21..0d4c52d3 100644 --- a/templates/content/js/com.cnprog.post.js +++ b/templates/content/js/com.cnprog.post.js @@ -500,7 +500,7 @@ function createComments(type) { jDiv.append('<p id="' + divId + '" class="comment">' + $.i18n._('to comment, need') + ' ' + + repNeededForComments + ' ' + $.i18n._('community karma points') - + '<a href="' + $.i18n._('/') + $.i18n._('faq/') + '" class="comment-user">' + + '<a href="' + scriptUrl + $.i18n._('faq/') + '" class="comment-user">' + $.i18n._('please see') + 'faq</a></span></p>'); } } @@ -601,7 +601,7 @@ function createComments(type) { $(this).children().each( function(i){ var comment_id = $(this).attr('id').replace('comment-',''); - var delete_url = $.i18n._('/') + objectType + 's/' + post_id + '/' + var delete_url = scriptUrl + objectType + 's/' + post_id + '/' + $.i18n._('comments/') + comment_id + '/' + $.i18n._('delete/'); var html = $(this).html(); var CommentsClass; @@ -615,12 +615,12 @@ function createComments(type) { delete_icon.click(function(){CommentsClass.deleteComment($(this),comment_id,delete_url);}); delete_icon.unbind('mouseover').bind('mouseover', function(){ - $(this).attr('src',$.i18n._('/') + 'content/images/close-small-hover.png'); + $(this).attr('src',scriptUrl + 'content/images/close-small-hover.png'); } ); delete_icon.unbind('mouseout').bind('mouseout', function(){ - $(this).attr('src',$.i18n._('/') + 'content/images/close-small.png'); + $(this).attr('src',scriptUrl + 'content/images/close-small.png'); } ); } @@ -670,12 +670,178 @@ function createComments(type) { }; } +function pickedTags(){ + + var sendAjax = function(tagname, reason, action, callback){ + url = scriptUrl; + if (action == 'add'){ + url += $.i18n._('mark-tag/'); + if (reason == 'good'){ + url += $.i18n._('interesting/'); + } + else { + url += $.i18n._('ignored/'); + } + } + else { + url += $.i18n._('unmark-tag/'); + } + url = url + tagname + '/'; + + call_settings = { + type:'POST', + url:url + } + if (callback != false){ + call_settings['success'] = callback; + } + $.ajax(call_settings); + } + + + var unpickTag = function(from_target ,tagname, reason, send_ajax){ + //send ajax request to delete tag + var deleteTagLocally = function(){ + from_target[tagname].remove(); + delete from_target[tagname]; + } + if (send_ajax){ + sendAjax(tagname,reason,'remove',deleteTagLocally); + } + else { + deleteTagLocally(); + } + + } + + var setupTagDeleteEvents = function(obj,tag_store,tagname,reason,send_ajax){ + obj.unbind('mouseover').bind('mouseover', function(){ + $(this).attr('src', scriptUrl + 'content/images/close-small-hover.png'); + }); + obj.unbind('mouseout').bind('mouseout', function(){ + $(this).attr('src', scriptUrl + 'content/images/close-small-dark.png'); + }); + obj.click( function(){ + unpickTag(tag_store,tagname,reason,send_ajax); + }); + } + + var handlePickedTag = function(obj,reason){ + var tagname = $.trim($(obj).prev().attr('value')); + to_target = interestingTags; + from_target = ignoredTags; + if (reason == 'bad'){ + to_target = ignoredTags; + from_target = interestingTags; + to_tag_container = $('div .tags.ignored'); + } + else if (reason != 'good'){ + return; + } + else { + to_tag_container = $('div .tags.interesting'); + } + + if (tagname in from_target){ + unpickTag(from_target,tagname,reason,false); + } + + if (!(tagname in to_target)){ + //send ajax request to pick this tag + + sendAjax(tagname,reason,'add',function(){ + new_tag = $('<span></span>'); + new_tag.addClass('deletable-tag'); + tag_link = $('<a></a>'); + tag_link.attr('rel','tag'); + tag_link.attr('href', scriptUrl + $.i18n._('tags/') + tagname); + tag_link.html(tagname); + del_link = $('<img></img>'); + del_link.addClass('delete-icon'); + del_link.attr('src', scriptUrl + 'content/images/close-small-dark.png'); + + setupTagDeleteEvents(del_link, to_target, tagname, reason, true); + + new_tag.append(tag_link); + new_tag.append(del_link); + to_tag_container.append(new_tag); + + to_target[tagname] = new_tag; + }); + } + } + + var collectPickedTags = function(){ + var good_prefix = 'interesting-tag-'; + var bad_prefix = 'ignored-tag-'; + var good_re = RegExp('^' + good_prefix); + var bad_re = RegExp('^' + bad_prefix); + interestingTags = {}; + ignoredTags = {}; + $('.deletable-tag').each( + function(i,item){ + item_id = $(item).attr('id') + if (good_re.test(item_id)){ + tag_name = item_id.replace(good_prefix,''); + tag_store = interestingTags; + reason = 'good'; + } + else if (bad_re.test(item_id)){ + tag_name = item_id.replace(bad_prefix,''); + tag_store = ignoredTags; + reason = 'bad'; + } + else { + return; + } + tag_store[tag_name] = $(item); + setupTagDeleteEvents($(item).find('img'),tag_store,tag_name,reason,true) + } + ); + } + + var setupHideIgnoredQuestionsControl = function(){ + $('#hideIgnoredTagsCb').unbind('click').click(function(){ + $.ajax({ + type: 'POST', + dataType: 'json', + cache: false, + url: scriptUrl + $.i18n._('command/'), + data: {command:'toggle-ignored-questions'} + }); + }); + } + return { + init: function(){ + collectPickedTags(); + setupHideIgnoredQuestionsControl(); + $("#interestingTagInput, #ignoredTagInput").autocomplete(tags, { + minChars: 1, + matchContains: true, + max: 20, + multiple: true, + multipleSeparator: " ", + formatItem: function(row, i, max) { + return row.n + " ("+ row.c +")"; + }, + formatResult: function(row, i, max){ + return row.n; + } + + }); + $("#interestingTagAdd").click(function(){handlePickedTag(this,'good')}); + $("#ignoredTagAdd").click(function(){handlePickedTag(this,'bad')}); + } + }; +} + var questionComments = createComments('question'); var answerComments = createComments('answer'); $().ready(function() { questionComments.init(); answerComments.init(); + pickedTags().init(); }); var commentsFactory = {'question' : questionComments, 'answer' : answerComments}; diff --git a/templates/content/js/com.cnprog.utils.js b/templates/content/js/com.cnprog.utils.js index cf27c8a1..b19b6773 100644 --- a/templates/content/js/com.cnprog.utils.js +++ b/templates/content/js/com.cnprog.utils.js @@ -36,7 +36,7 @@ var notify = function() { function appendLoader(containerSelector) { $(containerSelector).append('<img class="ajax-loader" ' - +'src="' + $.i18n._('/') + 'content/images/indicator.gif" title="' + +'src="' + scriptUrl + 'content/images/indicator.gif" title="' +$.i18n._('loading...') +'" alt="' +$.i18n._('loading...') diff --git a/templates/content/js/compress.bat b/templates/content/js/compress.bat index 41e1882a..5b2673cf 100644 --- a/templates/content/js/compress.bat +++ b/templates/content/js/compress.bat @@ -2,5 +2,4 @@ #java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 wmd\showdown.js -o wmd\showdown-min.js #java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 com.cnprog.post.js -o com.cnprog.post.pack.js java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 se_hilite_src.js -o se_hilite.js - -pause
\ No newline at end of file +pause diff --git a/templates/content/js/flot-build.bat b/templates/content/js/flot-build.bat index fc715e3a..f9f32cb7 100644 --- a/templates/content/js/flot-build.bat +++ b/templates/content/js/flot-build.bat @@ -1,3 +1,3 @@ java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 jquery.flot.js -o jquery.flot.pack.js -pause
\ No newline at end of file +pause diff --git a/templates/content/style/style.css b/templates/content/style/style.css index 4038e8a1..47b4dc00 100644 --- a/templates/content/style/style.css +++ b/templates/content/style/style.css @@ -162,7 +162,7 @@ blockquote border-right:1px solid #b4b48e; border-bottom:1px solid #b4b48e;*/ background: white;/* #f9f7ed;*/ - margin:10px 0 10px 0; + /*margin:10px 0 10px 0;*/ /*background:url(../images/quest-bg.gif) repeat-x top;*/ } #listA .qstA thumb {float:left; } @@ -204,7 +204,14 @@ blockquote /*border-bottom:1px solid #888a85;*/ } .evenMore {font-size:14px; font-weight:800;} -.questions-count{font-size:32px;font-family:sans-serif;font-weight:600;padding:0 0 5px 7px;color:#a40000;} +.questions-count{ + font-size:32px; + font-family:sans-serif; + font-weight:600; + padding:0 0 5px 0px; + color:#a40000; + margin-top:3px; +} /*内容块*/ .boxA {background:#888a85; padding:6px; margin-bottom:8px;border 1px solid #babdb6;} @@ -216,7 +223,7 @@ blockquote .boxB .body {border:1px solid #aaaaaa; padding:8px; background:#FFF; font-size:13px; line-height:160%;} .boxB .more {padding:1px; text-align:right; font-weight:800;} .boxC { - background:#babdb6;/*f9f7ed;*/ + background: #cacdc6;/*f9f7ed;*/ padding:10px; margin-bottom:8px; border-top:1px solid #eeeeec; @@ -224,6 +231,12 @@ blockquote border-right:1px solid #a9aca5; border-bottom:1px solid #babdb6; } +.boxC p { + margin-bottom:8px; +} +.boxC p.nomargin { + margin:0px; +} .boxC p.info-box-follow-up-links { text-align:right; margin:0; @@ -308,12 +321,14 @@ blockquote /*标签*/ .tag {font-size:13px; font-weight:normal; color:#333; text-decoration:none;background-color:#EEE; border-left:3px solid #777; border-top:1px solid #EEE; border-bottom:1px solid #CCC; border-right:1px solid #CCC; padding:1px 8px 1px 8px;} .tags {font-family:sans-serif; line-height:200%; display:block; margin-top:5px;} -.tags a {font-size:13px; font-weight:normal; color:#333; text-decoration:none;background-color:#EEE; border-left:3px solid #777; border-top:1px solid #EEE; border-bottom:1px solid #CCC; border-right:1px solid #CCC; padding:1px 8px 1px 8px;} +.tags a {white-space: nowrap; font-size:13px; font-weight:normal; color:#333; text-decoration:none;background-color:#EEE; border-left:3px solid #777; border-top:1px solid #EEE; border-bottom:1px solid #CCC; border-right:1px solid #CCC; padding:1px 8px 1px 8px;} .tags a:hover {background-color:#fFF;color:#333;} .tagsbox {line-height:200%;} .tagsbox a {font-size:13px; font-weight:normal; color:#333; text-decoration:none;background-color:#EEE; border-left:3px solid #777; border-top:1px solid #EEE; border-bottom:1px solid #CCC; border-right:1px solid #CCC; padding:1px 8px 1px 8px;} .tagsbox a:hover {background-color:#fFF;color:#333;} .tag-number {font-weight:700;font-family:sans-serif;} +.marked-tags { margin-top: 0px;margin-bottom: 5px; } +.deletable-tag { margin-right: 3px; white-space:nowrap; } /*奖牌*/ a.medal { font-size:14px; line-height:250%; font-weight:800; color:#333; text-decoration:none; background:url(../images/medala.gif) no-repeat; border-left:1px solid #EEE; border-top:1px solid #EEE; border-bottom:1px solid #CCC; border-right:1px solid #CCC; padding:4px 12px 4px 6px;} @@ -1422,3 +1437,12 @@ ul.form-horizontal-rows li input { text-align:center; font-weight:bold; } +#tagSelector { + padding-bottom: 2px; +} +#hideIgnoredTagsControl { + margin: 5px 0 0 0; +} +#hideIgnoredTagsCb { + margin: 0 2px 0 1px; +} diff --git a/templates/index.html b/templates/index.html index 470612b4..68a13197 100644 --- a/templates/index.html +++ b/templates/index.html @@ -10,13 +10,15 @@ <meta name="description" content="{{ settings.APP_DESCRIPTION }}" />{% endblock %} {% block forejs %} <script type="text/javascript"> - $().ready(function(){ - var tab_id = "{{ tab_id }}"; - $("#"+tab_id).attr('className',"on"); - $("#nav_questions").attr('className',"on"); - }); - - </script> + var tags = {{ tags_autocomplete|safe }}; + $().ready(function(){ + var tab_id = "{{ tab_id }}"; + $("#"+tab_id).attr('className',"on"); + $("#nav_questions").attr('className',"on"); + }); + </script> + <script type='text/javascript' src='{% href "/content/js/com.cnprog.editor.js" %}'></script> + <script type='text/javascript' src='{% href "/content/js/com.cnprog.post.js" %}'></script> {% endblock %} {% block content %} <div class="tabBar"> @@ -118,6 +120,8 @@ <div class="more"><a href="{% url faq %}">{% trans "faq" %} »</a></div> </div> </div> +{% else %} +{% include "tag_selector.html" %} {% endif %} <div class="boxC"> <h3>{% trans "Recent tags" %}</h3> diff --git a/templates/questions.html b/templates/questions.html index 47bda129..63026dc3 100644 --- a/templates/questions.html +++ b/templates/questions.html @@ -8,16 +8,19 @@ {% block title %}{% spaceless %}{% trans "Questions" %}{% endspaceless %}{% endblock %} {% block forejs %} <script type="text/javascript"> - $().ready(function(){ - var tab_id = "{{ tab_id }}"; - $("#"+tab_id).attr('className',"on"); - $("#nav_questions").attr('className',"on"); - Hilite.exact = false; - Hilite.elementid = "listA"; - Hilite.debug_referrer = location.href; - }); - - </script> + var tags = {{ tags_autocomplete|safe }}; + $().ready(function(){ + var tab_id = "{{ tab_id }}"; + $("#"+tab_id).attr('className',"on"); + var on_tab = {% if is_unanswered %}'#nav_unanswered'{% else %}'#nav_questions'{% endif %}; + $(on_tab).attr('className','on'); + Hilite.exact = false; + Hilite.elementid = "listA"; + Hilite.debug_referrer = location.href; + }); + </script> + <script type='text/javascript' src='{% href "/content/js/com.cnprog.editor.js" %}'></script> + <script type='text/javascript' src='{% href "/content/js/com.cnprog.post.js" %}'></script> {% endblock %} {% block content %} <div class="tabBar"> @@ -32,7 +35,11 @@ {% trans "Found by title" %} {% endif %} {% else %} - {% trans "All questions" %} + {% if is_unanswered %} + {% trans "Unanswered questions" %} + {% else %} + {% trans "All questions" %} + {% endif %} {% endif %} {% endif %} </div> @@ -45,7 +52,17 @@ </div> <div id="listA"> {% for question in questions.object_list %} - <div class="qstA"> + <div class="qstA" + {% if request.user.is_authenticated %} + {% if question.interesting_score > 0 %} + style="background:#ffff99;" + {% else %} + {% if question.ignored_score > 0 %} + style="background:#f3f3f3;" + {% endif %} + {% endif %} + {% endif %} + > <h2> <a href="{{ question.get_absolute_url }}">{{ question.get_question_title }}</a> </h2> @@ -134,25 +151,18 @@ {% endblock %} {% block tail %} - - <div class="pager"> - {% cnprog_paginator context %} - - </div> - <div class="pagesize"> - {% cnprog_pagesize context %} - </div> - + <div class="pager">{% cnprog_paginator context %}</div> + <div class="pagesize">{% cnprog_pagesize context %}</div> {% endblock %} {% block sidebar %} <div class="boxC"> {% if searchtag %} - {% blocktrans count questions_count as cnt with questions_count|intcomma as q_num and searchtag as tagname %} - have total {{q_num}} questions tagged {{tagname}} - {% plural %} - have total {{q_num}} questions tagged {{tagname}} - {% endblocktrans %} + {% blocktrans count questions_count as cnt with questions_count|intcomma as q_num and searchtag as tagname %} + have total {{q_num}} questions tagged {{tagname}} + {% plural %} + have total {{q_num}} questions tagged {{tagname}} + {% endblocktrans %} {% else %} {% if searchtitle %} {% if settings.USE_SPHINX_SEARCH %} @@ -169,14 +179,22 @@ {% endblocktrans %} {% endif %} {% else %} - {% blocktrans count questions as cnt with questions_count|intcomma as q_num %} - have total {{q_num}} questions - {% plural %} - have total {{q_num}} questions - {% endblocktrans %} + {% if is_unanswered %} + {% blocktrans count questions as cnt with questions_count|intcomma as q_num %} + have total {{q_num}} unanswered questions + {% plural %} + have total {{q_num}} unanswered questions + {% endblocktrans %} + {% else %} + {% blocktrans count questions as cnt with questions_count|intcomma as q_num %} + have total {{q_num}} questions + {% plural %} + have total {{q_num}} questions + {% endblocktrans %} + {% endif %} {% endif %} {% endif %} - <p> + <p class="nomargin"> {% ifequal tab_id "latest" %} {% trans "latest questions info" %} {% endifequal %} @@ -197,15 +215,17 @@ {% endifequal %} </p> </div> +{% if request.user.is_authenticated %} +{% include "tag_selector.html" %} +{% endif %} <div class="boxC"> <h3 class="subtitle">{% trans "Related tags" %}</h3> <div class="tags"> {% for tag in tags %} - <a rel="tag" title="{% trans "see questions tagged" %}'{{ tag.name }}'{% trans "using tags" %}" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a> + <a rel="tag" title="{% blocktrans with tag.name as tag_name %}see questions tagged '{{ tag_name }}'{% endblocktrans %}" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a> <span class="tag-number">× {{ tag.used_count|intcomma }}</span> <br /> {% endfor %} - <br /> </div> </div> diff --git a/templates/tag_selector.html b/templates/tag_selector.html new file mode 100644 index 00000000..6edc5cc8 --- /dev/null +++ b/templates/tag_selector.html @@ -0,0 +1,42 @@ +{% load i18n %} +{% load extra_tags %} +<div id="tagSelector" class="boxC"> + <h3 class="subtitle">{% trans "Interesting tags" %}</h3> + <div class="tags interesting marked-tags"> + {% for tag_name in interesting_tag_names %} + {% spaceless %} + <span class="deletable-tag" id="interesting-tag-{{tag_name}}"> + <a rel="tag" + title="{% blocktrans with tag as tagname %}see questions tagged '{{ tag_name }}'{% endblocktrans %}" + href="{% url tag_questions tag_name|urlencode %}">{{tag_name}}</a> + <img class="delete-icon" + src="{% href "/content/images/close-small-dark.png" %}" + title="{% blocktrans %}remove '{{tag_name}}' from the list of interesting tags{% endblocktrans %}"/> + </span> + {% endspaceless %} + {% endfor %} + </div> + <input id="interestingTagInput" autocomplete="off" type="text"/> + <input id="interestingTagAdd" type="submit" value="{% trans "Add" %}"/> + <h3 class="subtitle">{% trans "Ignored tags" %}</h3> + <div class="tags ignored marked-tags"> + {% for tag_name in ignored_tag_names %} + {% spaceless %} + <span class="deletable-tag" id="ignored-tag-{{tag_name}}"> + <a rel="tag" + title="{% blocktrans with tag as tagname %}see questions tagged '{{ tag_name }}'{% endblocktrans %}" + href="{% url tag_questions tag_name|urlencode %}">{{tag_name}}</a> + <img class="delete-icon" + src="{% href "/content/images/close-small-dark.png" %}" + title="{% blocktrans %}remove '{{tag_name}}' from the list of ignored tags{% endblocktrans %}"/> + </span> + {% endspaceless %} + {% endfor %} + </div> + <input id="ignoredTagInput" autocomplete="off" type="text"/> + <input id="ignoredTagAdd" type="submit" value="{% trans "Add" %}"/> + <p id="hideIgnoredTagsControl"> + <input id="hideIgnoredTagsCb" type="checkbox" {% if request.user.hide_ignored_questions %}checked="checked"{% endif %} /> + <label id="hideIgnoredTagsLabel" for="hideIgnoredTags">{% trans "keep ingored questions hidden" %}</label> + <p> +</div> diff --git a/templates/user_email_subscriptions.html b/templates/user_email_subscriptions.html index 8f27bd2a..c0204cbc 100644 --- a/templates/user_email_subscriptions.html +++ b/templates/user_email_subscriptions.html @@ -13,6 +13,9 @@ {% endif %} <form method="POST"> {% include "edit_user_email_feeds_form.html" %} + <table class='form-as-table'> + {{tag_filter_selection_form}} + </table> <div class="submit-row text-align-right"> <input type="submit" class="submit" name="save" value="{% trans "Update" %}"/> <input type="submit" class="submit" name="stop_email" value="{% trans "Stop sending email" %}"/> diff --git a/templates/user_stats.html b/templates/user_stats.html index 06f1cd2b..ecc39807 100644 --- a/templates/user_stats.html +++ b/templates/user_stats.html @@ -97,7 +97,7 @@ <td width="180" valign="top"> {% for tag in user_tags%} <a rel="tag" - title="{% blocktrans with tag.name as tag_name %}see other questions tagged '{{ tag_name }}' {% endblocktrans %}" + title="{% blocktrans with tag.name as tag_name %}see other questions with {{view_user}}'s contributions tagged '{{ tag_name }}' {% endblocktrans %}" href="{% url forum.views.tag tag|urlencode %}?user={{view_user.username}}">{{tag.name}}</a> <span class="tag-number">× {{ tag.user_tag_usage_count|intcomma }}</span><br/> {% if forloop.counter|divisibleby:"10" %} |