diff options
-rw-r--r-- | askbot/media/js/user.js | 9 | ||||
-rw-r--r-- | askbot/media/style/style.css | 10 | ||||
-rw-r--r-- | askbot/media/style/style.less | 7 | ||||
-rw-r--r-- | askbot/templates/macros.html | 16 | ||||
-rw-r--r-- | askbot/templates/moderation/queue.html | 16 | ||||
-rw-r--r-- | askbot/templates/user_inbox/base.html | 4 | ||||
-rw-r--r-- | askbot/views/moderation.py | 3 | ||||
-rw-r--r-- | askbot/views/users.py | 33 |
8 files changed, 81 insertions, 17 deletions
diff --git a/askbot/media/js/user.js b/askbot/media/js/user.js index b2ff5658..d79a3986 100644 --- a/askbot/media/js/user.js +++ b/askbot/media/js/user.js @@ -120,11 +120,15 @@ PostModerationControls.prototype.removeEntries = function(entryIds) { var id = entryIds[i]; var elem = this._element.find('.message[data-message-id="' + id + '"]'); if (elem.length) { - elem.fadeOut('fast'); + elem.fadeOut('fast', function() { elem.remove() }); } } }; +PostModerationControls.prototype.setEntryCount = function(count) { + this._entryCount.html(count); +}; + PostModerationControls.prototype.getCheckBoxes = function() { return this._element.find('.messages input[type="checkbox"]'); }; @@ -174,6 +178,7 @@ PostModerationControls.prototype.getModHandler = function(action, items, optReas success: function(response_data){ if (response_data['success'] == true){ me.removeEntries(response_data['memo_ids']); + me.setEntryCount(response_data['memo_count']); } if (response_data['message']) { me.showMessage(response_data['message']); @@ -195,6 +200,8 @@ PostModerationControls.prototype.decorate = function(element) { this._element = element; this._notification = element.find('.action-status span'); this.hideMessage(); + + this._entryCount = $('.mod-memo-count'); //approve posts button var button = $('.approve-posts'); setupButtonEventHandlers(button, this.getModHandler('approve', ['posts'])); diff --git a/askbot/media/style/style.css b/askbot/media/style/style.css index a22c5e48..928b1c00 100644 --- a/askbot/media/style/style.css +++ b/askbot/media/style/style.css @@ -2909,6 +2909,13 @@ ul#related-tags li { .user-profile-page.inbox-flags .messages { margin-bottom: 14px; } +.user-profile-page.inbox-flags .message { + border-bottom: 1px solid #ccc; + padding: 12px 0; +} +.user-profile-page.inbox-flags .message:last-child { + border: none; +} .user-profile-page.inbox-flags .select-items { margin-bottom: 10px; } @@ -4290,6 +4297,9 @@ textarea.tipped-input { width: 515px; font-style: normal; } +.alert .close { + right: -38px; +} .tag-subscriptions { border-spacing: 10px; border-collapse: separate; diff --git a/askbot/media/style/style.less b/askbot/media/style/style.less index e0ea5942..1de3698d 100644 --- a/askbot/media/style/style.less +++ b/askbot/media/style/style.less @@ -3041,6 +3041,13 @@ ul#related-tags li { .messages { margin-bottom: 14px; } + .message { + border-bottom: 1px solid #ccc; + padding: 12px 0; + } + .message:last-child { + border: none; + } .select-items { margin-bottom: 10px; } diff --git a/askbot/templates/macros.html b/askbot/templates/macros.html index b6f64401..d6845c08 100644 --- a/askbot/templates/macros.html +++ b/askbot/templates/macros.html @@ -18,6 +18,22 @@ </div> {%- endmacro -%} +{%- macro moderation_queue_message(message) -%} +<div class="message-details" data-message-id="{{ message.id }}"> + <input type="checkbox" /> + {{ gravatar(message.user, 24) }} + <a class="username" href="{{ message.user.get_absolute_url() }}">{{ message.user.username|escape }}</a> | + {% if message['memo_type'] == 'edit' %} + <a href="mailto:{{ message.user.email }}">{{ message.user.email }}</a> | + ip=<span class="ip-addr">{{ message.ip_addr }}</span> | + {% endif %} + <a class="forum-post-link" href="{{ message.url }}">{{ message.message_type }}</a> + ({{ timeago(message.timestamp) }}) + {#<div class="snippet">{{ message.snippet }}</div>#} + <div class="post-content">{{ message.content }}</div> +</div> +{%- endmacro -%} + {%- macro post_vote_buttons(post = None) -%} <div id="{{post.post_type}}-img-upvote-{{ post.id }}" class="{{post.post_type}}-img-upvote post-vote upvote"> diff --git a/askbot/templates/moderation/queue.html b/askbot/templates/moderation/queue.html index a0789a6d..772aa48c 100644 --- a/askbot/templates/moderation/queue.html +++ b/askbot/templates/moderation/queue.html @@ -44,13 +44,17 @@ data-message-id="{{ message.id }}" > {#<h2>"{{ message.title.strip()|escape}}"</h2>#} - {{ macros.inbox_message_snippet(message) }} - {# "nested" messages are further response messages to the same question #} - {% for followup_message in message.followup_messages %} - {{ macros.inbox_message_snippet(followup_message) }} - {% endfor %} + {{ macros.moderation_queue_message(message) }} </div> - <div class="clearfix"></div> + {# "nested" messages are further response messages to the same question #} + {% for followup_message in message.followup_messages %} + <div + class="message{% if followup_message.is_new %} highlight new{% else %} seen{% endif %}" + data-message-id="{{ followup_message.id }}" + > + {{ macros.moderation_queue_message(followup_message) }} + </div> + {% endfor %} {% endfor %} </div> {% endblock %} diff --git a/askbot/templates/user_inbox/base.html b/askbot/templates/user_inbox/base.html index 0bfbf5e4..4687c62a 100644 --- a/askbot/templates/user_inbox/base.html +++ b/askbot/templates/user_inbox/base.html @@ -22,14 +22,14 @@ <a href="{{request.user.get_absolute_url()}}?sort=inbox§ion=forum" {% if inbox_section == 'forum' %}class="on"{% endif %} > - {% trans %}forum responses ({{re_count}}){% endtrans -%} + {% trans %}forum responses (<span class="response-count">{{re_count}}</span>){% endtrans -%} </a> {% endif %} {% if flags_count > 0 %}{{ sep() }} <a href="{{request.user.get_absolute_url()}}?sort=inbox§ion=flags" {% if inbox_section == 'flags' %}class="on"{% endif %} > - {% trans %}flagged items ({{flags_count}}){% endtrans %} + {% trans %}flagged items (<span class="mod-memo-count">{{flags_count}}</span>){% endtrans %} </a> {% endif %} {% if group_join_requests_count %}{{ sep() }} diff --git a/askbot/views/moderation.py b/askbot/views/moderation.py index a27e8a79..fc88210a 100644 --- a/askbot/views/moderation.py +++ b/askbot/views/moderation.py @@ -209,7 +209,7 @@ def moderate_post_edits(request): ips_message = ungettext('%d ip blocked', '%d ips blocked', num_ips) % num_ips result['message'] = concat_messages(result['message'], ips_message) - result['memo_ids'] = list(memo_set.values_list('id', flat=True)) + result['memo_ids'] = [memo.id for memo in memo_set]#why values_list() fails here? result['message'] = force_text(result['message']) #delete items from the moderation queue @@ -221,4 +221,5 @@ def moderate_post_edits(request): memo_set.delete() acts.delete() request.user.update_response_counts() + result['memo_count'] = request.user.get_notifications(MOD_ACTIVITY_TYPES).count() return result diff --git a/askbot/views/users.py b/askbot/views/users.py index 09c4e987..83aed098 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -788,17 +788,36 @@ def user_responses(request, user, context): for memo in memo_set: obj = memo.activity.content_object if obj is None: + memo.activity.delete() continue#a temp plug due to bug in the comment deletion + + act = memo.activity + if act.activity_type == const.TYPE_ACTIVITY_MARK_OFFENSIVE: + #todo: two issues here - flags are stored differently + #from activity of new posts and edits + #second issue: on posts with many edits we don't know whom to block + act_user = act.content_object.author + act_message = _('post was flagged as offensive') + act_type = 'flag' + ip_addr = None + else: + act_user = act.user + act_message = act.get_activity_type_display() + act_type = 'edit' + ip_addr = act.content_object.ip_addr + response = { 'id': memo.id, - 'timestamp': memo.activity.active_at, - 'user': memo.activity.user, + 'timestamp': act.active_at, + 'user': act_user, + 'ip_addr': ip_addr, 'is_new': memo.is_new(), - 'url': memo.activity.get_absolute_url(), - 'snippet': memo.activity.get_snippet(), - 'title': memo.activity.question.thread.title, - 'message_type': memo.activity.get_activity_type_display(), - 'question_id': memo.activity.question.id, + 'url': act.get_absolute_url(), + 'snippet': act.get_snippet(), + 'title': act.question.thread.title, + 'message_type': act_message, + 'memo_type': act_type, + 'question_id': act.question.id, 'followup_messages': list(), 'content': obj.html or obj.text, } |