summaryrefslogtreecommitdiff
path: root/addons/website_forum/static/src/js
diff options
context:
space:
mode:
authorAndrea Ulliana <aul@odoo.com>2019-06-13 10:48:12 +0000
committerJeremy Kersten <jke@odoo.com>2019-08-02 16:32:29 +0000
commitf9c2716b3e76ce9bc36d87d69a37a897391c9cdb (patch)
treefa87d07b46fb47c83b3ed0d5ee6f880bb2fa24ec /addons/website_forum/static/src/js
parentcfeb8a5185cd325d8687908c9976d5f7a9755f4a (diff)
[IMP] website_forum: bring forum modes
It is now possible to specify the forum mode : Questions and Answers or Discussions. In Q&A mode, a user can only reply once while there is no limit in Discussions mode. task-2008910 closes odoo/odoo#34097 Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Diffstat (limited to 'addons/website_forum/static/src/js')
-rw-r--r--addons/website_forum/static/src/js/website_forum.editor.js92
1 files changed, 57 insertions, 35 deletions
diff --git a/addons/website_forum/static/src/js/website_forum.editor.js b/addons/website_forum/static/src/js/website_forum.editor.js
index e2b19ba681f..2f6d61791c8 100644
--- a/addons/website_forum/static/src/js/website_forum.editor.js
+++ b/addons/website_forum/static/src/js/website_forum.editor.js
@@ -3,10 +3,61 @@ odoo.define('website_forum.editor', function (require) {
var core = require('web.core');
var WebsiteNewMenu = require('website.newMenu');
-var wUtils = require('website.utils');
+var Dialog = require('web.Dialog');
var _t = core._t;
+var ForumCreateDialog = Dialog.extend({
+ xmlDependencies: Dialog.prototype.xmlDependencies.concat(
+ ['/website_forum/static/src/xml/website_forum_templates.xml']
+ ),
+ template: 'website_forum.add_new_forum',
+
+ /**
+ * @override
+ * @param {Object} parent
+ * @param {Object} options
+ */
+ init: function (parent, options) {
+ options = _.defaults(options || {}, {
+ title: _t("New Forum"),
+ size: 'medium',
+ buttons: [
+ {
+ text: _t("Create"),
+ classes: 'btn-primary',
+ click: this.onCreateClick.bind(this),
+ },
+ {
+ text: _t("Discard"),
+ close: true
+ },
+ ]
+ });
+ this._super(parent, options);
+ },
+ onCreateClick: function () {
+ var $dialog = this.$el;
+ var forumName = $dialog.find('input[name=forum_name]').val();;
+ if (!forumName) {
+ return;
+ }
+ var addMenu = ($dialog.find('input[type="checkbox"]').is(':checked'));
+ var forumMode = $dialog.find('input[type="radio"]:checked').val();
+ return this._rpc({
+ route: '/forum/new',
+ params: {
+ forum_name: forumName,
+ forum_mode: forumMode,
+ add_menu: addMenu || "",
+ },
+ }).then(function (url) {
+ window.location.href = url;
+ return new Promise(function () {});
+ });
+ },
+});
+
WebsiteNewMenu.include({
actions: _.extend({}, WebsiteNewMenu.prototype.actions || {}, {
new_forum: '_createNewForum',
@@ -25,41 +76,12 @@ WebsiteNewMenu.include({
*/
_createNewForum: function () {
var self = this;
- return wUtils.prompt({
- id: "editor_new_forum",
- window_title: _t("New Forum"),
- input: _t("Forum Name"),
- init: function () {
- var $group = this.$dialog.find("div.form-group");
- $group.removeClass("mb0");
-
- var $add = $(
- '<div class="form-group mb0">'+
- '<label class="offset-md-3 col-md-9 text-left">'+
- ' <input type="checkbox" required="required"/> '+
- '</label>'+
- '</div>');
- $add.find('label').append(_t("Add to menu"));
- $group.after($add);
- }
- }).then(function (result) {
- var forum_name = result.val;
- var $dialog = result.dialog;
- if (!forum_name) {
- return;
- }
- var add_menu = ($dialog.find('input[type="checkbox"]').is(':checked'));
- return self._rpc({
- route: '/forum/new',
- params: {
- forum_name: forum_name,
- add_menu: add_menu || "",
- },
- }).then(function (url) {
- window.location.href = url;
- return new Promise(function () {});
- });
+ var def = new Promise(function (resolve) {
+ var dialog = new ForumCreateDialog(self, {});
+ dialog.open();
+ dialog.on('closed', self, resolve);
});
+ return def;
},
});
});