From 5c11310070077e4204ee3fbbef6b3bee0925d683 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten <jke@odoo.com> Date: Mon, 26 Sep 2016 12:59:30 +0200 Subject: [PATCH] [FIX] website_forum: make moderation queue async Don't refresh page between each validation. --- .../static/src/js/website_forum.js | 19 +++++++++++++++++++ addons/website_forum/views/website_forum.xml | 12 ++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/addons/website_forum/static/src/js/website_forum.js b/addons/website_forum/static/src/js/website_forum.js index 4b4d704e6337..60073ffd70a4 100644 --- a/addons/website_forum/static/src/js/website_forum.js +++ b/addons/website_forum/static/src/js/website_forum.js @@ -138,6 +138,25 @@ if(!$('.website_forum').length) { }); }); + $('.o_js_validation_queue a').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + var self = $(this); + $(this).parents('.post_to_validate').hide(); + $.get($link.attr('href')) + .fail(function() { + self.parents('.o_js_validation_queue > div').addClass('panel-danger').css('background-color', '#FAA'); + self.parents('.post_to_validate').show(); + }) + .done(function() { + var left = $('.o_js_validation_queue:visible').length; + var type = $('h2.page-header li.active a').data('type'); + $('#count_post').text(left); + $('#moderation_tools a[href*="/'+type+'_"]').find('strong').text(left); + }); + + }); + $('.accept_answer').not('.karma_required').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index a6f595670d4c..3ee039d4220a 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -1165,7 +1165,7 @@ <t t-call="website_forum.header"> <h2 class="page-header mt0"> <t t-set="count_posts" t-value="len(posts_ids)"/> - <t t-esc="count_posts"/> + <span id='count_post' t-esc="count_posts"/> <span class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <t t-if="queue_type == 'validation'"> Pending</t> @@ -1175,13 +1175,13 @@ </a> <ul class="dropdown-menu"> <li t-att-class="queue_type == 'validation' and 'active' or None "> - <a t-attf-href="/forum/#{slug(forum)}/validation_queue">Pending</a> + <a data-type='validation' t-attf-href="/forum/#{slug(forum)}/validation_queue">Pending</a> </li> <li t-att-class="queue_type == 'flagged' and 'active' or None "> - <a t-attf-href="/forum/#{slug(forum)}/flagged_queue">Flagged</a> + <a data-type='flagged' t-attf-href="/forum/#{slug(forum)}/flagged_queue">Flagged</a> </li> <li t-if="uid" t-att-class="queue_type == 'offensive' and 'active' or None "> - <a t-attf-href="/forum/#{slug(forum)}/offensive_posts">Offensive</a> + <a data-type='offensive' t-attf-href="/forum/#{slug(forum)}/offensive_posts">Offensive</a> </li> </ul> </span> @@ -1191,8 +1191,8 @@ <t t-if="queue_type == 'flagged'">The flagged queue is empty.</t> <t t-if="queue_type == 'offensive'">The offensive queue is empty.</t> </div> - <div t-foreach="posts_ids" t-as="question" class="mb16 row" style="padding-bottom:16px;border-bottom:1px solid #e7e7e7;"> - <div class="col-sm-2"> + <div t-foreach="posts_ids" t-as="question" class="mb16 row post_to_validate" style="padding-bottom:16px;border-bottom:1px solid #e7e7e7;"> + <div class="col-sm-2 o_js_validation_queue"> <div class="panel panel-default text-center" style="background-color:#eee;margin:0;padding:5px 12px 5px 12px;"> <a t-attf-href="/forum/#{slug(forum)}/post/#{slug(question)}/validate" style="padding-right:8px;"><i class="fa fa-check fa-2x"/></a> <a t-if="queue_type == 'validation'" t-attf-href="/forum/#{slug(forum)}/post/#{slug(question)}/refuse"><i class="fa fa-times fa-2x"/></a> -- GitLab