diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index fd016a6ea72..efdd0bebc72 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -383,3 +383,14 @@ class website_forum(http.Controller): } return request.website.render("website_forum.edit_answer", values) + @http.route('/forum/correct_answer/', type='json', auth="user", multilang=True, methods=['POST'], website=True) + def correct_answer(self, **kwarg): + cr, uid, context = request.cr, request.uid, request.context + Post = request.registry['website.forum.post'] + post = Post.browse(cr, uid, int(kwarg.get('post_id')), context=context) + if post.create_uid.id == uid: + correct = False if post.correct else True + Post.write( cr, uid, [int(kwarg.get('post_id'))], { + 'correct': correct, + }, context=context) + return correct diff --git a/addons/website_forum/models/website_forum.py b/addons/website_forum/models/website_forum.py index 3dda7c1d0d2..0b0fffb24c8 100644 --- a/addons/website_forum/models/website_forum.py +++ b/addons/website_forum/models/website_forum.py @@ -139,6 +139,7 @@ class Post(osv.Model): 'website.forum.post.vote': (_get_vote, [], 10), } ), + 'correct': fields.boolean('Correct Answer'), } _defaults = { 'state': 'active', diff --git a/addons/website_forum/static/src/css/website_forum.css b/addons/website_forum/static/src/css/website_forum.css index 26fee8e1f10..b88ab71619b 100644 --- a/addons/website_forum/static/src/css/website_forum.css +++ b/addons/website_forum/static/src/css/website_forum.css @@ -36,3 +36,11 @@ .badge-bronze { color: #eea91e; } + +.oe_answer_true { + color: #428bca; +} + +.oe_answer_false { + color: #999 +} diff --git a/addons/website_forum/static/src/js/website_forum.editor.js b/addons/website_forum/static/src/js/website_forum.editor.js index 0dd7f880b69..d54558a277c 100644 --- a/addons/website_forum/static/src/js/website_forum.editor.js +++ b/addons/website_forum/static/src/js/website_forum.editor.js @@ -59,7 +59,6 @@ $(document).ready(function () { $('.delete').on('click', function (ev) { ev.preventDefault(); var $link = $(ev.currentTarget); - var value = $link.attr("value") openerp.jsonRpc("/forum/post_delete/", 'call', { 'post_id': $link.attr("id")}) .then(function (data) { @@ -67,5 +66,21 @@ $(document).ready(function () { }); return false; }); + + $('.fa-check').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + openerp.jsonRpc("/forum/correct_answer/", 'call', { + 'post_id': $link.attr("id")}) + .then(function (data) { + if (data) { + $link.removeClass("oe_answer_false").addClass('oe_answer_true'); + } + else { + $link.removeClass("oe_answer_true").addClass('oe_answer_false'); + } + }); + return false; + }); }); \ No newline at end of file diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index a99ba0bf4b8..fcb14682a5f 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -370,8 +370,9 @@ votes -
- +
+ +