From 53c7fa165dc333086c1e05caa89286c379bca1c7 Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Tue, 11 Mar 2014 14:42:28 +0530 Subject: [PATCH 1/4] [imp]:improve delete question and answer via menu bzr revid: sunilsharma.sharma07@gmail.com-20140311091228-dch3p1vwjd3jfxyx --- addons/website_forum/controllers/main.py | 14 ++++++++++++++ addons/website_forum/models/website_forum.py | 2 +- .../static/src/js/website_forum.editor.js | 13 +++++++++++++ addons/website_forum/views/website_forum.xml | 6 +++--- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index cf8c3ee1b8f..3c603ef400b 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -331,3 +331,17 @@ class website_forum(http.Controller): record = Post.browse(cr, uid, post_id, context=context) return record.vote_count + + @http.route('/forum/post_delete/', type='json', auth="user", multilang=True, methods=['POST'], website=True) + def delete_answer(self, **kwarg): + cr, uid, context = request.cr, request.uid, request.context + Post = request.registry['website.forum.post'] + Post.unlink(cr, uid, [int(kwarg.get('post_id'))], context=context) + return True + + @http.route('/forum//delete/question/', type='http', auth="user", multilang=True, website=True) + def delete_question(self, forum, post, **kwarg): + cr, uid, context = request.cr, request.uid, request.context + Post = request.registry['website.forum.post'] + Post.unlink(cr, uid, [post.id], context=context) + return werkzeug.utils.redirect("/forum/%s/" % (slug(forum))) diff --git a/addons/website_forum/models/website_forum.py b/addons/website_forum/models/website_forum.py index 8ef9a675572..b92f355b75d 100644 --- a/addons/website_forum/models/website_forum.py +++ b/addons/website_forum/models/website_forum.py @@ -106,7 +106,7 @@ class Post(osv.Model): 'active': fields.boolean('Active'), 'views': fields.integer('Page Views'), - 'parent_id': fields.many2one('website.forum.post', 'Question'), + 'parent_id': fields.many2one('website.forum.post', 'Question', ondelete='cascade'), 'child_ids': fields.one2many('website.forum.post', 'parent_id', 'Answers'), 'history_ids': fields.one2many('blog.post.history', 'post_id', 'History', help='Last post modifications'), 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 b79b0d4df37..0dd7f880b69 100644 --- a/addons/website_forum/static/src/js/website_forum.editor.js +++ b/addons/website_forum/static/src/js/website_forum.editor.js @@ -55,4 +55,17 @@ $(document).ready(function () { }); return false; }); + + $('.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) { + $link.parents('#answer').remove(); + }); + 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 8c2ef220c66..b31b6f32032 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -322,7 +322,7 @@
  • edit
  • -
  • delete
  • +
  • delete
  • share
  • @@ -338,7 +338,7 @@
    -
    +
  • edit
  • -
  • delete
  • +
  • delete
  • share
  • From 009364277dcc7b54f0f363d6a6ebcf900e57a2b9 Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Wed, 12 Mar 2014 12:04:07 +0530 Subject: [PATCH 2/4] [imp]:improve edit question ans answer via menu bzr revid: sunilsharma.sharma07@gmail.com-20140312063407-mgde3cxz5ozr095x --- addons/website_forum/controllers/main.py | 33 ++++++++++++++++++++ addons/website_forum/models/website_forum.py | 5 ++- addons/website_forum/views/website_forum.xml | 24 ++++++++++++-- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 98bcfd971d6..fd016a6ea72 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -350,3 +350,36 @@ class website_forum(http.Controller): Post = request.registry['website.forum.post'] Post.unlink(cr, uid, [post.id], context=context) return werkzeug.utils.redirect("/forum/%s/" % (slug(forum))) + + @http.route('/forum//edit/question/', type='http', auth="user", multilang=True, website=True) + def edit_question(self, forum, post, **kwarg): + cr, uid, context = request.cr, request.uid, request.context + Post = request.registry['website.forum.post'] + values = { + 'post': post, + 'forum': forum, + 'searches': kwarg + } + return request.website.render("website_forum.edit_question", values) + + @http.route('/forum//question/savequestion/', type='http', auth="user", multilang=True, methods=['POST'], website=True) + def save_edited_question(self, forum, **post): + cr, uid, context = request.cr, request.uid, request.context + request.registry['website.forum.post'].write( cr, uid, [int(post.get('post_id'))], { + 'content': post.get('answer_content'), + 'name': post.get('question_name'), + }, context=context) + return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),post.get('post_id'))) + + @http.route('/forum//answer//edit/', type='http', auth="user", multilang=True, website=True) + def edit_ans(self, forum, post, answer, **kwarg): + cr, uid, context = request.cr, request.uid, request.context + Post = request.registry['website.forum.post'] + values = { + 'post': post, + 'post_answer': answer, + 'forum': forum, + 'searches': kwarg + } + return request.website.render("website_forum.edit_answer", values) + diff --git a/addons/website_forum/models/website_forum.py b/addons/website_forum/models/website_forum.py index a4945c16791..3dda7c1d0d2 100644 --- a/addons/website_forum/models/website_forum.py +++ b/addons/website_forum/models/website_forum.py @@ -168,10 +168,13 @@ class Post(osv.Model): if context is None: context = {} create_context = dict(context, mail_create_nolog=True) - post_id = super(Post, self).create(cr, uid, vals, context=create_context) body = "asked a question" if vals.get("parent_id"): body = "answered a question" + #Note: because of no name it gives error on slug so set name of question in answer + question = self.browse(cr, uid, vals.get("parent_id"), context=context) + vals['name'] = question.name + post_id = super(Post, self).create(cr, uid, vals, context=create_context) self.message_post(cr, uid, [post_id], body=body, context=context) return post_id diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index c257f34c8b8..a99ba0bf4b8 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -282,6 +282,26 @@ + +