From d45757e62bf5170d8b18dade6d520f19e563bb33 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 18 Nov 2013 12:07:47 +0100 Subject: [PATCH] [IMP] website_blog: remember navigating in different blogs bzr revid: chm@openerp.com-20131118110747-0ynf60g1oys06fyw --- addons/website_blog/controllers/main.py | 53 +++++++++++++------ .../views/website_blog_templates.xml | 14 ++--- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index 448d5ce41c2..9907f48575e 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -102,17 +102,17 @@ class WebsiteBlog(http.Controller): category_ids = category_obj.search(cr, uid, [], context=context) categories = category_obj.browse(cr, uid, category_ids, context=context) - pager_url = "/blog/" + path_filter = "" domain = [] if category: - pager_url += "cat/%s/" % category.id + path_filter += "cat/%s/" % category.id domain += [("id", "=", [blog.id for blog in category.blog_post_ids])] if tag: - pager_url += 'tag/%s/' % tag.id + path_filter += 'tag/%s/' % tag.id domain += [("id", "=", [blog.id for blog in tag.blog_post_ids])] if date: - pager_url += "date/%s/" % date + path_filter += "date/%s/" % date date = date.split("_") domain = [("create_date", ">=", date[0]), ("create_date", "<=", date[1])] @@ -120,7 +120,7 @@ class WebsiteBlog(http.Controller): blog_posts = blog_post_obj.browse(cr, uid, blog_post_ids, context=context) pager = request.website.pager( - url=pager_url, + url="/blog/%s" % path_filter, total=len(blog_posts), page=page, step=self._category_post_per_page, @@ -137,6 +137,7 @@ class WebsiteBlog(http.Controller): 'blog_posts': blog_posts, 'pager': pager, 'nav_list': self.nav_list(), + 'path_filter': path_filter, } if tag: @@ -147,19 +148,27 @@ class WebsiteBlog(http.Controller): return request.website.render("website_blog.blog_post_short", values) @website.route([ - '/blog//', - '/blog//page//' + '/blog//page//', + '/blog//cat//', + '/blog//cat//page//', + '/blog//tag//', + '/blog//tag//page//', + '/blog//cat//date//', + '/blog//tag//date//', + '/blog//tag//date//page//', ], type='http', auth="public", multilang=True) - def blog_post(self, blog_post=None, page=1, enable_editor=None): + def blog_post(self, blog_post=None, category=None, tag=None, page=1, date=None, enable_editor=None, path_filter=''): """ Prepare all values to display the blog. :param blog_post: blog post currently browsed. If not set, the user is browsing the category and a post pager is calculated. If set the user is reading the blog post and a comments pager is calculated. + :param category: category currently browsed. + :param tag: tag that is currently used to filter blog posts :param integer page: current page of the pager. Can be the category or post pager. - :param dict post: kwargs, may contain + :param date: date currently used to filter blog posts (dateBegin_dateEnd) - 'enable_editor': editor control @@ -167,11 +176,19 @@ class WebsiteBlog(http.Controller): - 'blog_post': browse of the current post, if blog_post_id - 'category': browse of the current category, if category_id + - 'categories': list of browse records of categories - 'pager': the pager to display comments pager in a blog post + - 'tag': current tag, if tag_id - 'nav_list': a dict [year][month] for archives navigation """ + + pager_url = "/blog/%s" % blog_post.id + + if path_filter: + pager_url += path_filter + pager = request.website.pager( - url="/blog/%s/" % blog_post.id, + url=pager_url, total=len(blog_post.website_message_ids), page=page, step=self._post_comment_per_page, @@ -187,12 +204,14 @@ class WebsiteBlog(http.Controller): categories = category_obj.browse(cr, uid, category_ids, context=context) values = { - 'category': blog_post.category_id, + 'category': category, 'categories': categories, + 'tag': tag, 'blog_post': blog_post, 'pager': pager, 'nav_list': self.nav_list(), 'enable_editor': enable_editor, + 'path_filter': path_filter, } return request.website.render("website_blog.blog_post_complete", values) @@ -208,8 +227,8 @@ class WebsiteBlog(http.Controller): context=dict(context, mail_create_nosubcribe=True)) return werkzeug.utils.redirect(request.httprequest.referrer + "#comments") - @website.route(['/blog//new'], type='http', auth="public", multilang=True) - def blog_post_create(self, category_id=None, **post): + @website.route(['/blog//new'], type='http', auth="public", multilang=True) + def blog_post_create(self, category_id=None, path_filter='', **post): cr, uid, context = request.cr, request.uid, request.context create_context = dict(context, mail_create_nosubscribe=True) new_blog_post_id = request.registry['blog.post'].create( @@ -219,11 +238,11 @@ class WebsiteBlog(http.Controller): 'content': '', 'website_published': False, }, context=create_context) - return werkzeug.utils.redirect("/blog/%s/?enable_editor=1" % (new_blog_post_id)) + return werkzeug.utils.redirect("/blog/%s%s/?enable_editor=1" % (new_blog_post_id, path_filter)) - @website.route(['/blog//duplicate'], type='http', auth="public") - def blog_post_copy(self, blog_post_id=None, **post): + @website.route(['/blog//duplicate'], type='http', auth="public") + def blog_post_copy(self, blog_post_id=None, path_filter='', **post): cr, uid, context = request.cr, request.uid, request.context create_context = dict(context, mail_create_nosubscribe=True) new_blog_post_id = request.registry['blog.post'].copy(cr, uid, blog_post_id, {}, context=create_context) - return werkzeug.utils.redirect("/blog/%s/?enable_editor=1" % (new_blog_post_id)) + return werkzeug.utils.redirect("/blog/%s%s/?enable_editor=1" % (new_blog_post_id, path_filter)) diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index ef3e36ac4e2..7ac6f7c3be8 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -51,7 +51,7 @@

- + &nbsp; @@ -73,7 +73,7 @@

- + comment comments @@ -108,12 +108,12 @@

- +

  • - Duplicate + Duplicate