diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index e8b93277a59..8b8f82a3678 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -35,7 +35,7 @@ PIL_MIME_MAPPING = {'PNG': 'image/png', 'JPEG': 'image/jpeg', 'GIF': 'image/gif' # Completely arbitrary limits MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768) class Website(openerp.addons.web.controllers.main.Home): - @website.route('/', type='http', auth="admin", multilang=True) + @website.route('/', type='http', auth="public", multilang=True) def index(self, **kw): return self.page("website.homepage") @@ -107,7 +107,7 @@ class Website(openerp.addons.web.controllers.main.Home): return request.website.render('website.themes', {'theme_changed': True}) - @website.route('/page/', type='http', auth="admin", multilang=True) + @website.route('/page/', type='http', auth="public", multilang=True) def page(self, path, **kwargs): values = { 'path': path, @@ -303,18 +303,17 @@ class Website(openerp.addons.web.controllers.main.Home): pass return request.make_response(image_data, headers) - @website.route(['/website/publish/'], type='http', auth="public") - def publish(self, **post): - _id = int(post['id']) - _object = request.registry[post['object']] + @website.route(['/website/publish'], type='json', auth="public") + def publish(self, id, object): + _id = int(id) + _object = request.registry[object] obj = _object.browse(request.cr, request.uid, _id) _object.write(request.cr, request.uid, [_id], {'website_published': not obj.website_published}, context=request.context) obj = _object.browse(request.cr, request.uid, _id) - - return obj.website_published and "1" or "0" + return obj.website_published and True or False @website.route(['/website/kanban/'], type='http', auth="public") def kanban(self, **post): diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index 5a064a40a9e..d3d275aac71 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -352,27 +352,12 @@ ul.nav-stacked > li > a { } /* ---- PUBLISH ---- */ -a[data-publish] { - text-decoration: none !important; - z-index: 2; -} -a[data-publish] .label { - padding: 5px 8px; -} -a[data-publish] .css_unpublish, a[data-publish] .css_publish, a[data-publish] .css_unpublished, a[data-publish] .css_published { +.dropdown .css_unpublish, .dropdown .css_publish { display: none; } -a[data-publish][data-publish='off'] .css_unpublished, a[data-publish][data-publish='off']:hover .css_publish { - display: inline; -} -a[data-publish][data-publish='off']:hover .css_unpublished { - display: none; -} -a[data-publish][data-publish='on'] .css_published, a[data-publish][data-publish='on']:hover .css_unpublish { - display: inline; -} -a[data-publish][data-publish='on']:hover .css_published { - display: none; + +.dropdown.css_publish .css_unpublish, .dropdown.css_unpublish .css_publish { + display: block; } .unpublish { diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index cb0e93d9170..5e3468d9f33 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -267,23 +267,11 @@ ul.nav-stacked > li > a text-transform: uppercase /* ---- PUBLISH ---- */ -a[data-publish] - text-decoration: none !important - z-index: 2 - .label - padding: 5px 8px - .css_unpublish, .css_publish, .css_unpublished, .css_published - display: none - &[data-publish='off'] - .css_unpublished, &:hover .css_publish - display: inline - &:hover .css_unpublished - display: none - &[data-publish='on'] - .css_published, &:hover .css_unpublish - display: inline - &:hover .css_published - display: none + +.dropdown .css_unpublish, .dropdown .css_publish + display: none +.dropdown.css_publish .css_unpublish, .dropdown.css_unpublish .css_publish + display: block .unpublish opacity: 0.5 diff --git a/addons/website/static/src/js/website.ace.js b/addons/website/static/src/js/website.ace.js index 206813f237b..1a0417ff11a 100644 --- a/addons/website/static/src/js/website.ace.js +++ b/addons/website/static/src/js/website.ace.js @@ -18,7 +18,7 @@ if (globalEditor) { globalEditor.open(); } else { - globalEditor = new website.ace.ViewEditor(this); + globalEditor = new website.ace.ViewEditor(); globalEditor.appendTo($(document.body)); } } @@ -111,7 +111,7 @@ method: 'read', args: [[viewId], ['arch'], website.get_context()], }).then(function(result) { - var editingSession = self.buffers[viewId] = new ace.EditSession(result[0].arch);; + var editingSession = self.buffers[viewId] = new ace.EditSession(result[0].arch); editingSession.setMode("ace/mode/xml"); editingSession.setUndoManager(new ace.UndoManager()); editingSession.on("change", function () { diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 2837d3e49fc..70a3716f9e0 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -118,19 +118,24 @@ dom_ready.then(function () { /* ----- PUBLISHING STUFF ---- */ - $('[data-publish]:has(.js_publish)').each(function () { - $(this).attr("data-publish", $(".js_publish li.active", this).size() ? "on" : 'off'); + $('[data-publish]:has(.js_publish_management)').each(function () { + $(this).attr("data-publish", $(".js_publish_management .btn-success", this).size() ? "on" : 'off'); }); - $(document).on('click', '.js_publish a.js_publish_btn', function (e) { - var $li = $(this).parent("li"); - var $data = $li.parents(".js_publish:first"); - var publish = $li.hasClass("active"); - $li.toggleClass("active"); - $.post('/website/publish', {'id': $data.data('id'), 'object': $data.data('object')}, function (result) { - $li.toggleClass("active", !!+result); - $li.parents("[data-publish]").attr("data-publish", +result ? 'on' : 'off'); - }); + $(document).on('click', '.js_publish_management .js_publish_btn', function (e) { + var $data = $(this).parents(".js_publish_management:first"); + var $btn = $data.find('.btn:first'); + var publish = $btn.hasClass("btn-success"); + + $data.toggleClass("css_unpublish css_publish"); + $btn.removeClass("btn-default btn-success"); + + openerp.jsonRpc('/website/publish', 'call', {'id': +$data.data('id'), 'object': $data.data('object')}) + .then(function (result) { + $btn.toggleClass("btn-default", !result).toggleClass("btn-success", result); + $data.toggleClass("css_unpublish", !result).toggleClass("css_publish", result); + $data.parents("[data-publish]").attr("data-publish", +result ? 'on' : 'off'); + }); }); /* ----- KANBAN WEBSITE ---- */ diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js index 3a27e8187e6..3da7c1ed8f1 100644 --- a/addons/website/static/src/js/website.seo.js +++ b/addons/website/static/src/js/website.seo.js @@ -327,7 +327,7 @@ self.suggestImprovements(); self.imageList = new website.seo.ImageList(self, { page: htmlPage }); if (htmlPage.images().length === 0) { - $modal.find('.js_image_section').remove() + $modal.find('.js_image_section').remove(); } else { self.imageList.appendTo($modal.find('.js_seo_image_list')); } diff --git a/addons/website/views/views.xml b/addons/website/views/views.xml index 3ce9260046e..180b8a6d9a7 100644 --- a/addons/website/views/views.xml +++ b/addons/website/views/views.xml @@ -22,6 +22,15 @@ + + + + + + + + + @@ -34,9 +43,6 @@ - - - @@ -55,9 +61,6 @@ - - -
@@ -338,13 +341,17 @@ -