diff --git a/addons/website/views/website_navbar_templates.xml b/addons/website/views/website_navbar_templates.xml
index c011c2f9863..dc7d89616c6 100644
--- a/addons/website/views/website_navbar_templates.xml
+++ b/addons/website/views/website_navbar_templates.xml
@@ -147,6 +147,18 @@
New Product
+
+
diff --git a/addons/website_livechat/static/src/js/website_livechat.editor.js b/addons/website_livechat/static/src/js/website_livechat.editor.js
new file mode 100644
index 00000000000..32ad9f8d268
--- /dev/null
+++ b/addons/website_livechat/static/src/js/website_livechat.editor.js
@@ -0,0 +1,52 @@
+odoo.define('website_livechat.editor', function (require) {
+'use strict';
+
+var core = require('web.core');
+var wUtils = require('website.utils');
+var WebsiteNewMenu = require('website.newMenu');
+var weContext = require('web_editor.context');
+
+var _t = core._t;
+
+WebsiteNewMenu.include({
+ actions: _.extend({}, WebsiteNewMenu.prototype.actions || {}, {
+ new_channel: '_createNewChannel',
+ }),
+
+ //--------------------------------------------------------------------------
+ // Actions
+ //--------------------------------------------------------------------------
+
+ /**
+ * Asks the user information about a new channel to create, then creates it
+ * and redirects the user to this new channel.
+ *
+ * @private
+ * @returns {Deferred} Unresolved if there is a redirection
+ */
+ _createNewChannel: function () {
+ var self = this;
+ return wUtils.prompt({
+ window_title: _t("New Channel"),
+ input: _t("Name"),
+ }).then(function (name) {
+ if (!name) {
+ return;
+ }
+ return self._rpc({
+ model: 'im_livechat.channel',
+ method: 'create_and_get_website_url',
+ context: weContext.get(),
+ args: [[]],
+ kwargs: {
+ name: name,
+ },
+ }).then(function (url) {
+ window.location.href = url;
+ return $.Deferred();
+ });
+ });
+ },
+});
+
+});
diff --git a/addons/website_livechat/views/website_livechat.xml b/addons/website_livechat/views/website_livechat.xml
index 03341c2a857..643679b4c71 100644
--- a/addons/website_livechat/views/website_livechat.xml
+++ b/addons/website_livechat/views/website_livechat.xml
@@ -37,6 +37,13 @@
+
+
+
+
+
+
+
@@ -189,5 +196,15 @@
+
+
+
+
+
+
+ im_livechat.im_livechat_group_manager
+
+
+
diff --git a/addons/website_slides/models/slides.py b/addons/website_slides/models/slides.py
index 359791ca454..186973cec6d 100644
--- a/addons/website_slides/models/slides.py
+++ b/addons/website_slides/models/slides.py
@@ -182,6 +182,11 @@ class Channel(models.Model):
subtype = 'mail.mt_note'
return super(Channel, self).message_post(parent_id=parent_id, subtype=subtype, **kwargs)
+ def list_all(self):
+ return {
+ 'channels': [{'id': channel.id, 'name': channel.name, 'website_url': channel.website_url} for channel in self.search([])]
+ }
+
class Category(models.Model):
""" Channel contain various categories to manage its slides """
diff --git a/addons/website_slides/static/src/js/slides_upload.js b/addons/website_slides/static/src/js/slides_upload.js
index 64202bba7bb..f16beb5f079 100644
--- a/addons/website_slides/static/src/js/slides_upload.js
+++ b/addons/website_slides/static/src/js/slides_upload.js
@@ -378,4 +378,10 @@ $('.oe_slide_js_upload').on('click', function () {
var channel_id = $(this).attr('channel_id');
slides.page_widgets['upload_dialog'] = new SlideDialog(this, channel_id).appendTo(document.body);
});
+
+// automatically open the upload dialog if requested from query string
+if ($.deparam.querystring().enable_slide_upload !== undefined) {
+ $('.oe_slide_js_upload').click();
+}
+
});
diff --git a/addons/website_slides/static/src/js/website_slides.editor.js b/addons/website_slides/static/src/js/website_slides.editor.js
new file mode 100644
index 00000000000..2befee6c236
--- /dev/null
+++ b/addons/website_slides/static/src/js/website_slides.editor.js
@@ -0,0 +1,66 @@
+odoo.define('website_slides.editor', function (require) {
+"use strict";
+
+var core = require('web.core');
+var Dialog = require('web.Dialog');
+var QWeb = core.qweb;
+var WebsiteNewMenu = require('website.newMenu');
+var weContext = require('web_editor.context');
+
+var _t = core._t;
+
+WebsiteNewMenu.include({
+ actions: _.extend({}, WebsiteNewMenu.prototype.actions || {}, {
+ new_slide: '_createNewSlide',
+ }),
+ xmlDependencies: WebsiteNewMenu.prototype.xmlDependencies.concat(
+ ['/website_slides/static/src/xml/website_slides.xml']
+ ),
+
+ //--------------------------------------------------------------------------
+ // Actions
+ //--------------------------------------------------------------------------
+
+ /**
+ * Asks the user information about in which channel to create a new slide,
+ * and redirects the user to this channel with the "new slide" popup open.
+ *
+ * @private
+ * @returns {Deferred} Unresolved if there is a redirection
+ */
+ _createNewSlide: function () {
+ var self = this;
+ return this._rpc({
+ model: 'slide.channel',
+ method: 'list_all',
+ context: weContext.get(),
+ args: [[]],
+ }).then(function (data) {
+ var def = $.Deferred();
+ new Dialog(self, {
+ title: _t("New slide"),
+ subtitle: _t("On which channel do you want to add a slide?"),
+ size: 'medium',
+ $content: QWeb.render('website.slide.create', data),
+ buttons: [{
+ text: _t("Select"),
+ classes: 'btn-primary',
+ click: function () {
+ var channel_url = this.$("option:selected").val();
+ if (channel_url) {
+ window.location.href = channel_url + '?enable_slide_upload';
+ } else {
+ def.reject();
+ }
+ }
+ }, {
+ text: _t("Cancel"), close: true
+ },]
+ }).open()
+ .on('closed', def.resolve.bind(def));
+
+ return def;
+ });
+ },
+});
+});
diff --git a/addons/website_slides/static/src/xml/website_slides.xml b/addons/website_slides/static/src/xml/website_slides.xml
index 5aa9cf49d13..d2e1f43c15b 100644
--- a/addons/website_slides/static/src/xml/website_slides.xml
+++ b/addons/website_slides/static/src/xml/website_slides.xml
@@ -75,4 +75,19 @@
+
+
+
+
diff --git a/addons/website_slides/views/website_slides.xml b/addons/website_slides/views/website_slides.xml
index d353a696606..d11a897b487 100644
--- a/addons/website_slides/views/website_slides.xml
+++ b/addons/website_slides/views/website_slides.xml
@@ -12,6 +12,12 @@
+
+
+
+
+
+
@@ -724,5 +730,15 @@
+
+
+
+
+
+
+ website.group_website_designer
+
+
+