diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css
index 80057dbf21d..1796729f18c 100644
--- a/addons/website/static/src/css/website.css
+++ b/addons/website/static/src/css/website.css
@@ -367,6 +367,25 @@ ul.nav-stacked > li > a {
}
/* ---- PUBLISH ---- */
+a[data-publish] {
+ text-decoration: none !important;
+}
+a[data-publish] .css_unpublish, a[data-publish] .css_publish, a[data-publish] .css_unpublished, a[data-publish] .css_published {
+ 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_unpublish, .dropdown .css_publish {
display: none;
}
diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass
index b1f43b543a3..9834fb66aed 100644
--- a/addons/website/static/src/css/website.sass
+++ b/addons/website/static/src/css/website.sass
@@ -283,6 +283,20 @@ ul.nav-stacked > li > a
text-transform: uppercase
/* ---- PUBLISH ---- */
+a[data-publish]
+ text-decoration: none !important
+ .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
diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js
index bc0db10ce88..e524edfb389 100644
--- a/addons/website/static/src/js/website.js
+++ b/addons/website/static/src/js/website.js
@@ -117,9 +117,29 @@
};
dom_ready.then(function () {
+
/* ----- PUBLISHING STUFF ---- */
+ $('[data-publish]:has(.js_publish)').each(function () {
+ var $pub = $("[data-publish]", this);
+ if($pub.size())
+ $(this).attr("data-publish", $pub.attr("data-publish"));
+ else
+ $(this).removeAttr("data-publish");
+ });
+
$('[data-publish]:has(.js_publish_management)').each(function () {
$(this).attr("data-publish", $(".js_publish_management .btn-success", this).size() ? "on" : 'off');
+ $(this).attr("data-publish", $(".js_publish_management .btn-success", this).size() ? "on" : 'off');
+ });
+
+ $(document).on('click', '.js_publish', function (e) {
+ e.preventDefault();
+ var $data = $(":first", this).parents("[data-publish]");
+ $data.attr("data-publish", $data.first().attr("data-publish") == 'off' ? 'on' : 'off');
+ openerp.jsonRpc('/website/publish', 'call', {'id': $(this).data('id'), 'object': $(this).data('object')})
+ .then(function (result) {
+ $data.attr("data-publish", +result ? 'on' : 'off');
+ });
});
$(document).on('click', '.js_publish_management .js_publish_btn', function (e) {
diff --git a/addons/website/views/views.xml b/addons/website/views/views.xml
index 3854b54b936..f8e175a96df 100644
--- a/addons/website/views/views.xml
+++ b/addons/website/views/views.xml
@@ -361,22 +361,37 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml
index 05b5691ba47..8b622c4727e 100644
--- a/addons/website_blog/views/website_blog_templates.xml
+++ b/addons/website_blog/views/website_blog_templates.xml
@@ -41,7 +41,10 @@
-
+
+
+
+
@@ -77,7 +80,9 @@
-
+
+
+