From eb23569c9ee3d43b1ae17768d7553d88407be974 Mon Sep 17 00:00:00 2001 From: ddm Date: Wed, 20 Nov 2013 16:40:42 +0100 Subject: [PATCH 1/3] [IMP] Blog tour add first section bzr revid: ddm@openerp.com-20131120154042-8byh7l4eifchcfe8 --- .../static/src/js/website.tour.blog.js | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/addons/website_blog/static/src/js/website.tour.blog.js b/addons/website_blog/static/src/js/website.tour.blog.js index 02c69530ce5..0cf1996ec58 100644 --- a/addons/website_blog/static/src/js/website.tour.blog.js +++ b/addons/website_blog/static/src/js/website.tour.blog.js @@ -68,14 +68,48 @@ content: "You just created a new blog post. We are now going to edit it.", template: render('website.tour_popover', { next: "OK" }), }, + { + stepId: 'post-title', + element: 'h1[data-oe-expression="blog_post.name"]', + placement: 'top', + title: "Pick a title", + content: "Choose a catchy title for your blog post.", + template: render('website.tour_popover', { next: "OK" }), + }, { stepId: 'add-block', element: 'button[data-action=snippet]', placement: 'bottom', - reflex: true, title: "Layout your blog post", content: "Insert blocks like text-image to layout the body of your blog post.", template: render('website.tour_popover'), + onShow: function () { + $('button[data-action=snippet]').click(function () { + self.movetoStep('drag-image-text'); + }); + } + }, + { + stepId: 'drag-image-text', + element: '#website-top-navbar [data-snippet-id=image-text].ui-draggable', + placement: 'bottom', + title: "Drag & Drop a block", + content: "Drag the 'Image Text' block and drop it in your page.", + template: render('website.tour_popover'), + onShow: function () { + var $body = $(document.body); + function beginDrag () { + $('.popover.tour').remove(); + function goToNextStep () { + $('#oe_snippets').hide(); + self.stop(); + $body.off('mouseup', goToNextStep); + } + $body.off('mousedown', beginDrag); + $body.on('mouseup', goToNextStep); + } + $body.on('mousedown', beginDrag); + }, }, ]; return this._super(); From 2f0f411b438821ce14445a6b1ccef625931119a0 Mon Sep 17 00:00:00 2001 From: ddm Date: Wed, 20 Nov 2013 16:54:44 +0100 Subject: [PATCH 2/3] [FIX] Tour bug with snippet editor bzr revid: ddm@openerp.com-20131120155444-yn5fovlq0q3dkpau --- addons/website/static/src/js/website.tour.banner.js | 2 +- addons/website_blog/static/src/js/website.tour.blog.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/website/static/src/js/website.tour.banner.js b/addons/website/static/src/js/website.tour.banner.js index e01fbd6e662..6bf3c955852 100644 --- a/addons/website/static/src/js/website.tour.banner.js +++ b/addons/website/static/src/js/website.tour.banner.js @@ -65,7 +65,7 @@ function beginDrag () { $('.popover.tour').remove(); function goToNextStep () { - $('#oe_snippets').hide(); + $('#snippets').toggle(); self.movetoStep('edit-title'); $body.off('mouseup', goToNextStep); } diff --git a/addons/website_blog/static/src/js/website.tour.blog.js b/addons/website_blog/static/src/js/website.tour.blog.js index 0cf1996ec58..89e1eabc568 100644 --- a/addons/website_blog/static/src/js/website.tour.blog.js +++ b/addons/website_blog/static/src/js/website.tour.blog.js @@ -101,7 +101,7 @@ function beginDrag () { $('.popover.tour').remove(); function goToNextStep () { - $('#oe_snippets').hide(); + $('#snippets').toggle(); self.stop(); $body.off('mouseup', goToNextStep); } From 7d43b226ab8288e5f916e3b4074f38ed16a8be7c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 20 Nov 2013 21:28:42 +0100 Subject: [PATCH 3/3] [IMP] Use LazyResponse for website.render() bzr revid: fme@openerp.com-20131120202842-zethge8jykzlzjjy --- addons/website/controllers/main.py | 14 ++++++-------- addons/website/models/website.py | 14 ++++++++++---- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index ba3a1154e54..03f83f412ca 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -261,8 +261,9 @@ class Website(openerp.addons.web.controllers.main.Home): @website.route(['/robots.txt'], type='http', auth="public") def robots(self): - body = request.website.render('website.robots', {'url_root': request.httprequest.url_root}) - return request.make_response(body, headers=[('Content-Type', 'text/plain')]) + response = request.website.render('website.robots', {'url_root': request.httprequest.url_root}) + response.mimetype = 'text/plain' + return response @website.route('/sitemap', type='http', auth='public', multilang=True) def sitemap(self): @@ -270,14 +271,11 @@ class Website(openerp.addons.web.controllers.main.Home): @website.route('/sitemap.xml', type='http', auth="public") def sitemap_xml(self): - body = request.website.render('website.sitemap_xml', { + response = request.website.render('website.sitemap_xml', { 'pages': request.website.enumerate_pages() }) - - return request.make_response(body, [ - ('Content-Type', 'application/xml;charset=utf-8') - ]) - + response.headers['Content-Type'] = 'application/xml;charset=utf-8' + return response class Images(http.Controller): def placeholder(self, response): diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 60e680aaefc..478b6a97ec9 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -20,8 +20,7 @@ from openerp.osv import orm, osv, fields from openerp.tools.safe_eval import safe_eval from openerp.addons.web import http -from openerp.addons.web.http import request - +from openerp.addons.web.http import request, LazyResponse logger = logging.getLogger(__name__) @@ -157,7 +156,7 @@ class website(osv.osv): 'translatable': not is_public_user and not is_master_lang and request.multilang, }) - def render(self, cr, uid, ids, template, values=None, context=None): + def _render(self, cr, uid, ids, template, values=None, context=None): view = self.pool.get("ir.ui.view") IMD = self.pool.get("ir.model.data") user = self.pool.get("res.users") @@ -221,6 +220,13 @@ class website(osv.osv): return self.error(cr, uid, 500 if qweb_context['editable'] else 404, qweb_context, context=context) + def render(self, cr, uid, ids, template, values=None, context=None): + def callback(template, values, context): + return self._render(cr, uid, ids, template, values, context) + if values is None: + values = {} + return LazyResponse(callback, template=template, values=values, context=context) + def error(self, cr, uid, code, qweb_context, context=None): View = request.registry['ir.ui.view'] return werkzeug.wrappers.Response( @@ -478,7 +484,7 @@ class website(osv.osv): object_ids = model_obj.search(cr, uid, domain, limit=step, offset=offset, order=orderby) object_ids = model_obj.browse(cr, uid, object_ids) for object_id in object_ids: - html += request.website.render(template, {'object_id': object_id}) + html += request.website._render(template, {'object_id': object_id}) return html def get_menu(self, cr, uid, ids, context=None):