From be8adf276922a9a07d7cfb92daa0aefd104f5906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 10 Mar 2015 08:50:15 +0100 Subject: [PATCH] [REF] website_forum: update to the new module system --- .../static/src/js/website_forum.editor.js | 65 +-- .../static/src/js/website_forum.js | 469 +++++++++--------- .../static/src/js/website_forum.share.js | 111 +++-- .../static/src/js/website_tour_forum.js | 248 ++++----- .../src/js/website_tour_forum_question.js | 172 +++---- 5 files changed, 547 insertions(+), 518 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 b14191b3557..4779464451a 100644 --- a/addons/website_forum/static/src/js/website_forum.editor.js +++ b/addons/website_forum/static/src/js/website_forum.editor.js @@ -1,34 +1,39 @@ -(function() { - "use strict"; +odoo.define('website_forum.editor', ['web.core', 'website.contentMenu', 'website.website'], function (require) { +"use strict"; - var website = openerp.website; - var _t = openerp._t; +var core = require('web.core'); +var contentMenu = require('website.contentMenu'); +var website = require('website.website'); - website.EditorBarContent.include({ - new_forum: function() { - website.prompt({ - id: "editor_new_forum", - window_title: _t("New Forum"), - input: "Forum Name",init: function () { - var $group = this.$dialog.find("div.form-group"); - $group.removeClass("mb0"); +var _t = core._t; - var $add = $( - '
'+ - ''+ - '
'); - $add.find('label').append(_t("Add page in menu")); - $group.after($add); - } - }).then(function (forum_name, field, $dialog) { - var add_menu = ($dialog.find('input[type="checkbox"]').is(':checked')); - website.form('/forum/new', 'POST', { - forum_name: forum_name, - add_menu: add_menu || "" - }); +contentMenu.EditorBarContent.include({ + new_forum: function() { + website.prompt({ + id: "editor_new_forum", + window_title: _t("New Forum"), + input: "Forum Name",init: function () { + var $group = this.$dialog.find("div.form-group"); + $group.removeClass("mb0"); + + var $add = $( + '
'+ + ''+ + '
'); + $add.find('label').append(_t("Add page in menu")); + $group.after($add); + } + }).then(function (forum_name, field, $dialog) { + var add_menu = ($dialog.find('input[type="checkbox"]').is(':checked')); + }).then(function (forum_name) { + website.form('/forum/new', 'POST', { + forum_name: forum_name, + add_menu: add_menu || "" }); - }, - }); -})(); + }); + }, +}); + +}); diff --git a/addons/website_forum/static/src/js/website_forum.js b/addons/website_forum/static/src/js/website_forum.js index 6abe4b97ffc..2f33d7a7643 100644 --- a/addons/website_forum/static/src/js/website_forum.js +++ b/addons/website_forum/static/src/js/website_forum.js @@ -1,250 +1,261 @@ +odoo.define('website_forum.website_forum', ['web.ajax', 'web.core', 'website.website'], function (require) { +'use strict'; - openerp.website.if_dom_contains('.website_forum', function () { - var _t = openerp._t; - $("[data-toggle='popover']").popover(); - $('.karma_required').on('click', function (ev) { - var karma = $(ev.currentTarget).data('karma'); - if (karma) { - ev.preventDefault(); - var $warning = $('
'+ - ''+ - karma + _t(' karma is required to perform this action. You can earn karma by having your answers upvoted by the community.')+ - '
'); - var vote_alert = $(ev.currentTarget).parent().find("#vote_alert"); - if (vote_alert.length == 0) { - $(ev.currentTarget).parent().append($warning); - } +var ajax = require('web.ajax'); +var core = require('web.core'); +var website = require('website.website'); + +var _t = core._t; + +var lastsearch; + +website.if_dom_contains('.website_forum', function () { + $("[data-toggle='popover']").popover(); + $('.karma_required').on('click', function (ev) { + var karma = $(ev.currentTarget).data('karma'); + if (karma) { + ev.preventDefault(); + var $warning = $('
'+ + ''+ + karma + _t(' karma is required to perform this action. You can earn karma by having your answers upvoted by the community.') + '
'); + var vote_alert = $(ev.currentTarget).parent().find("#vote_alert"); + if (vote_alert.length == 0) { + $(ev.currentTarget).parent().append($warning); } - }); + } + }); - $('.vote_up,.vote_down').not('.karma_required').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc($link.data('href'), 'call', {}) - .then(function (data) { - if (data['error']){ - if (data['error'] == 'own_post'){ - var $warning = $('
'+ - ''+ - _t('Sorry, you cannot vote for your own posts')+ - '
'); - } else if (data['error'] == 'anonymous_user'){ - var $warning = $('
'+ - ''+ - _t('Sorry you must be logged to vote')+ - '
'); - } - vote_alert = $link.parent().find("#vote_alert"); - if (vote_alert.length == 0) { - $link.parent().append($warning); - } - } else { - $link.parent().find(".vote_count").html(data['vote_count']); - if (data['user_vote'] == 0) { - $link.parent().find(".text-success").removeClass("text-success"); - $link.parent().find(".text-warning").removeClass("text-warning"); - } else { - if (data['user_vote'] == 1) { - $link.addClass("text-success"); - } else { - $link.addClass("text-warning"); - } - } - } - }); - }); - - $('.accept_answer').not('.karma_required').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) { - if (data['error']) { - if (data['error'] == 'anonymous_user') { - var $warning = $('
'+ + $('.vote_up,.vote_down').not('.karma_required').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc($link.data('href'), 'call', {}) + .then(function (data) { + if (data.error){ + if (data.error == 'own_post'){ + var $warning = $('
'+ ''+ - _t('Sorry, anonymous users cannot choose correct answer.')+ + _t('Sorry, you cannot vote for your own posts') + + '
'); + } else if (data.error == 'anonymous_user'){ + var $warning = $('
'+ + ''+ + _t('Sorry you must be logged to vote') + '
'); } - correct_answer_alert = $link.parent().find("#correct_answer_alert"); - if (correct_answer_alert.length == 0) { + var vote_alert = $link.parent().find("#vote_alert"); + if (vote_alert.length === 0) { $link.parent().append($warning); } } else { - if (data) { - $(".oe_answer_true").addClass('oe_answer_false').removeClass("oe_answer_true"); - $link.addClass("oe_answer_true").removeClass('oe_answer_false'); + $link.parent().find(".vote_count").html(data['vote_count']); + if (data.user_vote === 0) { + $link.parent().find(".text-success").removeClass("text-success"); + $link.parent().find(".text-warning").removeClass("text-warning"); } else { - $link.removeClass("oe_answer_true").addClass('oe_answer_false'); + if (data.user_vote === 1) { + $link.addClass("text-success"); + } else { + $link.addClass("text-warning"); + } } } }); - }); + }); - $('.favourite_question').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) { + $('.accept_answer').not('.karma_required').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc($link.data('href'), 'call', {}).then(function (data) { + if (data.error) { + if (data.error == 'anonymous_user') { + var $warning = $('
'+ + ''+ + _t('Sorry, anonymous users cannot choose correct answer.') + + '
'); + } + var correct_answer_alert = $link.parent().find("#correct_answer_alert"); + if (correct_answer_alert.length == 0) { + $link.parent().append($warning); + } + } else { if (data) { - $link.addClass("forum_favourite_question") + $(".oe_answer_true").addClass('oe_answer_false').removeClass("oe_answer_true"); + $link.addClass("oe_answer_true").removeClass('oe_answer_false'); } else { - $link.removeClass("forum_favourite_question") + $link.removeClass("oe_answer_true").addClass('oe_answer_false'); } - }); - }); - - $('.comment_delete').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc($link.parent('form').attr('action'), 'call', {}).then(function (data) { - $link.parents('.comment').first().remove(); - }); - }); - - $('.notification_close').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc("/forum/notification_read", 'call', { - 'notification_id': $link.attr("id")}); - }); - - $('.send_validation_email').on('click', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - openerp.jsonRpc("/forum/send_validation_email", 'call', { - 'forum_id': $link.attr('forum-id'), - }).then(function (data) { - if (data) { - $('button.validation_email_close').click(); - } - }); - }); - - $('.validated_email_close').on('click', function (ev) { - openerp.jsonRpc("/forum/validate_email/close", 'call', {}); - }); - - // welcome message action button - var forum_login = _.string.sprintf('%s/web?redirect=%s', - window.location.origin, escape(window.location.href)); - $('.forum_register_url').attr('href',forum_login); - - $('.js_close_intro').on('click', function (ev) { - ev.preventDefault(); - document.cookie = "forum_welcome_message = false"; - $('.forum_intro').slideUp(); - return true; - }); - - - $('.link_url').on('change', function (ev) { - ev.preventDefault(); - var $link = $(ev.currentTarget); - var display_error = function(){ - var $warning = $('
'+ - ''+ - 'Please enter valid URL. Example: http://www.odoo.com'+ - '
'); - $link.parent().append($warning); - $("button#btn_post_your_article")[0].disabled = true; - }; - var url = $link.val(); - if (url.search("^http(s?)://.*")) { - url = 'http://'+url; } - var regex = new RegExp("(http(s)?://.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)"); - if(regex.test(url)){ - openerp.jsonRpc("/forum/get_url_title", 'call', {'url': url}).then(function (data) { - if(data){ - $("input[name='post_name']")[0].value = data; - $('button#btn_post_your_article').prop('disabled', false); - }else{ - display_error(); - } - }); - }else{ - display_error(); - } - }); - - $('input.js_select2').select2({ - tags: true, - tokenSeparators: [",", " ", "_"], - maximumInputLength: 35, - minimumInputLength: 2, - maximumSelectionSize: 5, - lastsearch: [], - createSearchChoice: function (term) { - if ($(lastsearch).filter(function () { return this.text.localeCompare(term) === 0;}).length === 0) { - //check Karma - if (parseInt($("#karma").val()) >= parseInt($("#karma_retag").val())) { - return { - id: "_" + $.trim(term), - text: $.trim(term) + ' *', - isNew: true, - }; - } - } - }, - formatResult: function(term) { - if (term.isNew) { - return 'New ' + _.escape(term.text); - } - else { - return _.escape(term.text); - } - }, - ajax: { - url: '/forum/get_tags', - dataType: 'json', - data: function(term, page) { - return { - q: term, - l: 50 - }; - }, - results: function(data, page) { - var ret = []; - _.each(data, function(x) { - ret.push({ id: x.id, text: x.name, isNew: false }); - }); - lastsearch = ret; - return { results: ret }; - } - }, - // Take default tags from the input value - initSelection: function (element, callback) { - var data = []; - _.each(element.data('init-value'), function(x) { - data.push({ id: x.id, text: x.name, isNew: false }); - }); - element.val(''); - callback(data); - }, - }); - - $('textarea.load_editor').each(function () { - var $textarea = $(this); - var editor_karma = $textarea.data('karma') || 30; // default value for backward compatibility - if (!$textarea.val().match(/\S/)) { - $textarea.val("


"); - } - var $form = $textarea.closest('form'); - var toolbar = [ - ['style', ['style']], - ['font', ['bold', 'italic', 'underline', 'clear']], - ['para', ['ul', 'ol', 'paragraph']], - ['table', ['table']] - ]; - if (parseInt($("#karma").val()) >= editor_karma) { - toolbar.push(['insert', ['link', 'picture']]); - } - $textarea.summernote({ - height: 150, - toolbar: toolbar - }); - $form.on('click', 'button, .a-submit', function () { - $textarea.html($form.find('.note-editable').code()); - }); }); }); + $('.favourite_question').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc($link.data('href'), 'call', {}).then(function (data) { + if (data) { + $link.addClass("forum_favourite_question") + } else { + $link.removeClass("forum_favourite_question") + } + }); + }); + + $('.comment_delete').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc($link.parent('form').attr('action'), 'call', {}).then(function () { + $link.parents('.comment').first().remove(); + }); + }); + + $('.notification_close').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc("/forum/notification_read", 'call', { + 'notification_id': $link.attr("id")}); + }); + + $('.send_validation_email').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + ajax.jsonRpc("/forum/send_validation_email", 'call', { + 'forum_id': $link.attr('forum-id'), + }).then(function (data) { + if (data) { + $('button.validation_email_close').click(); + } + }); + }); + + $('.validated_email_close').on('click', function (ev) { + ajax.jsonRpc("/forum/validate_email/close", 'call', {}); + }); + + // welcome message action button + var forum_login = _.string.sprintf('%s/web?redirect=%s', + window.location.origin, escape(window.location.href)); + $('.forum_register_url').attr('href',forum_login); + + $('.js_close_intro').on('click', function (ev) { + ev.preventDefault(); + document.cookie = "forum_welcome_message = false"; + $('.forum_intro').slideUp(); + return true; + }); + + + $('.link_url').on('change', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + var display_error = function(){ + var $warning = $('
'+ + ''+ + 'Please enter valid URL. Example: http://www.odoo.com'+ + '
'); + $link.parent().append($warning); + $("button#btn_post_your_article")[0].disabled = true; + + }; + var url = $link.val(); + if (url.search("^http(s?)://.*")) { + url = 'http://'+url; + } + var regex = new RegExp("(http(s)?://.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)"); + if(regex.test(url)){ + ajax.jsonRpc("/forum/get_url_title", 'call', {'url': url}).then(function (data) { + if(data){ + $("input[name='post_name']")[0].value = data; + $('button#btn_post_your_article').prop('disabled', false); + }else{ + display_error(); + } + + }); + } else { + display_error(); + } + }); + + $('input.js_select2').select2({ + tags: true, + tokenSeparators: [",", " ", "_"], + maximumInputLength: 35, + minimumInputLength: 2, + maximumSelectionSize: 5, + lastsearch: [], + createSearchChoice: function (term) { + if ($(lastsearch).filter(function () { return this.text.localeCompare(term) === 0;}).length === 0) { + //check Karma + if (parseInt($("#karma").val()) >= parseInt($("#karma_retag").val())) { + return { + id: "_" + $.trim(term), + text: $.trim(term) + ' *', + isNew: true, + }; + } + } + }, + formatResult: function(term) { + if (term.isNew) { + return 'New ' + _.escape(term.text); + } + else { + return _.escape(term.text); + } + }, + ajax: { + url: '/forum/get_tags', + dataType: 'json', + data: function(term) { + return { + q: term, + l: 50 + }; + }, + results: function(data) { + var ret = []; + _.each(data, function(x) { + ret.push({ id: x.id, text: x.name, isNew: false }); + }); + lastsearch = ret; + return { results: ret }; + } + }, + // Take default tags from the input value + initSelection: function (element, callback) { + var data = []; + _.each(element.data('init-value'), function(x) { + data.push({ id: x.id, text: x.name, isNew: false }); + }); + element.val(''); + callback(data); + }, + }); + + $('textarea.load_editor').each(function () { + var $textarea = $(this); + var editor_karma = $textarea.data('karma') || 30; // default value for backward compatibility + if (!$textarea.val().match(/\S/)) { + $textarea.val("


"); + } + var $form = $textarea.closest('form'); + var toolbar = [ + ['style', ['style']], + ['font', ['bold', 'italic', 'underline', 'clear']], + ['para', ['ul', 'ol', 'paragraph']], + ['table', ['table']] + ]; + if (parseInt($("#karma").val()) >= editor_karma) { + toolbar.push(['insert', ['link', 'picture']]); + } + $textarea.summernote({ + height: 150, + toolbar: toolbar + }); + $form.on('click', 'button, .a-submit', function () { + $textarea.html($form.find('.note-editable').code()); + }); + }); +}); + +}); diff --git a/addons/website_forum/static/src/js/website_forum.share.js b/addons/website_forum/static/src/js/website_forum.share.js index 7f17a819f1d..3a89d5395a3 100644 --- a/addons/website_forum/static/src/js/website_forum.share.js +++ b/addons/website_forum/static/src/js/website_forum.share.js @@ -1,59 +1,66 @@ -(function () { - 'use strict'; +odoo.define('website_forum.share', ['web.ajax', 'web.core', 'website.share', 'website.website'], function (require) { +'use strict'; - var website = openerp.website; - var qweb = openerp.qweb; - website.add_template_file('/website_forum/static/src/xml/website_forum_share_templates.xml'); +var ajax = require('web.ajax'); +var core = require('web.core'); +var SocialShare = require('website.share'); +var website = require('website.website'); - website.forum_share = website.social_share.extend({ - init: function (parent, target_type) { - this.target_type = target_type; - this._super(parent); - }, - bind_events: function () { - this._super.apply(this, arguments); - $('.oe_share_bump').click($.proxy(this.post_bump, this)); - }, - renderElement: function () { - if (! this.target_type) { - this._super(); - } - else if (this.target_type == 'social-alert') { - $('.row .question').before(qweb.render('website.social_alert', {medias: this.social_list})); - } - else { - this.template = 'website.social_modal'; - $('body').append(qweb.render(this.template, {medias: this.social_list, target_type: this.target_type})); - $('#oe_social_share_modal').modal('show'); - } - }, - post_bump: function () { - openerp.jsonRpc('/forum/post/bump', 'call', { - 'post_id': this.element.data('id'), - }); +var qweb = core.qweb; +website.add_template_file('/website_forum/static/src/xml/website_forum_share_templates.xml'); + +var ForumShare = SocialShare.extend({ + init: function (parent, target_type) { + this.target_type = target_type; + this._super(parent); + }, + bind_events: function () { + this._super.apply(this, arguments); + $('.oe_share_bump').click($.proxy(this.post_bump, this)); + }, + renderElement: function () { + if (! this.target_type) { + this._super(); } - }); - - website.ready().done(function() { - - // Store social share data to display modal on next page - $(document.body).on('click', '.oe_social_share_call', function() { - var social_data = {}; - social_data['target_type'] = $(this).data('social-target-type'); - sessionStorage.setItem('social_share', JSON.stringify(social_data)); + else if (this.target_type == 'social-alert') { + $('.row .question').before(qweb.render('website.social_alert', {medias: this.social_list})); + } + else { + this.template = 'website.social_modal'; + $('body').append(qweb.render(this.template, {medias: this.social_list, target_type: this.target_type})); + $('#oe_social_share_modal').modal('show'); + } + }, + post_bump: function () { + ajax.jsonRpc('/forum/post/bump', 'call', { + 'post_id': this.element.data('id'), }); + } +}); - // Retrieve stored social data - if(sessionStorage.getItem('social_share')){ - var social_data = JSON.parse(sessionStorage.getItem('social_share')); - new website.forum_share($(this), social_data['target_type']); - sessionStorage.removeItem('social_share'); - } +website.ready().done(function() { - // Display an alert if post has no reply and is older than 10 days - if ($('.oe_js_bump').length) { - var $question_container = $('.oe_js_bump'); - new website.forum_share($question_container, 'social-alert'); - } + // Store social share data to display modal on next page + $(document.body).on('click', '.oe_social_share_call', function() { + var social_data = {}; + social_data['target_type'] = $(this).data('social-target-type'); + sessionStorage.setItem('social_share', JSON.stringify(social_data)); }); -})(); + + // Retrieve stored social data + if(sessionStorage.getItem('social_share')){ + var social_data = JSON.parse(sessionStorage.getItem('social_share')); + new ForumShare($(this), social_data['target_type']); + sessionStorage.removeItem('social_share'); + } + + // Display an alert if post has no reply and is older than 10 days + if ($('.oe_js_bump').length) { + var $question_container = $('.oe_js_bump'); + new ForumShare($question_container, 'social-alert'); + } +}); + +return ForumShare; + +}); diff --git a/addons/website_forum/static/src/js/website_tour_forum.js b/addons/website_forum/static/src/js/website_tour_forum.js index aece1170e61..7b72ca3ec99 100644 --- a/addons/website_forum/static/src/js/website_tour_forum.js +++ b/addons/website_forum/static/src/js/website_tour_forum.js @@ -1,124 +1,128 @@ -(function () { - 'use strict'; - var _t = openerp._t; +odoo.define('website_forum.tour_forum', ['web.core', 'web.Tour'], function (require) { +'use strict'; - openerp.Tour.register({ - id: 'question', - name: _t("Create a question"), - steps: [ - { - title: _t("Create a Question!"), - content: _t("Let's go through the first steps to create a new question."), - popover: { next: _t("Start Tutorial"), end: _t("Skip It") }, - }, - { - title: _t("Add Content"), - element: '#content-menu-button', - placement: 'left', - content: _t("Use this 'Content' menu to create a new forum like any other document (page, menu, products, event, ...)."), - popover: { fixed: true }, - }, - { - title: _t("New Forum"), - element: 'a[data-action=new_forum]', - placement: 'left', - content: _t("Select this menu item to create a new forum."), - popover: { fixed: true }, - }, - { - title: _t("Forum Name"), - element: '.modal #editor_new_forum input[type=text]', - sampleText:'New Forum', - placement: 'right', - content: _t("Enter a name for your new forum then click 'Continue'."), - }, - { - title: _t("Create Forum"), - waitNot: ".modal #editor_new_forum input[type=text]:propValue('')", - element: '.modal button.btn-primary', - placement: 'right', - content: _t("Click Continue to create the forum."), - }, - { - title: _t("New Forum Created"), - waitFor: 'body:not(.modal-open)', - content: _t("This page contains all the information related to the new forum."), - popover: { next: _t("Continue") }, - }, - { - title: _t("Ask a Question"), - element: '.btn-block a:first', - placement: 'left', - content: _t("Ask the question in this forum by clicking on the button."), - }, - { - title: _t("Question Title"), - element: 'input[name=post_name]', - sampleText:'First Question Title', - placement: 'top', - content: _t("Give your question title."), - }, - { - title: _t("Question"), - waitNot: "input[name=post_name]:propValue('')", - element: '.note-editable p', - sampleText: 'First Question', - placement: 'top', - content: _t("Put your question here."), - }, - { - title: _t("Give Tag"), - waitFor: '.note-editable:not(:has(br))', - element: '.select2-choices', - placement: 'top', - content: _t("Insert tags related to your question."), - }, - { - title: _t("Post Question"), - waitNot: "input[id=s2id_autogen2]:propValue('Tags')", - element: 'button:contains("Post Your Question")', - placement: 'bottom', - content: _t("Click to post your question."), - }, - { - title: _t("New Question Created"), - waitFor: 'body:has(".fa-star")', - content: _t("This page contain new created question."), - popover: { next: _t("Continue") }, - }, - { - title: _t("Answer"), - element: '.note-editable p', - sampleText: 'First Answer', - placement: 'top', - content: _t("Put your answer here."), - }, - { - title: _t("Post Answer"), - waitFor: '.note-editable:not(:has(br))', - element: 'button:contains("Post Answer")', - placement: 'bottom', - content: _t("Click to post your answer."), - }, - { - title: _t("Answer Posted"), - waitFor: 'body:has(".fa-check-circle")', - content: _t("This page contain new created question and its answer."), - popover: { next: _t("Continue") }, - }, - { - title: _t("Accept Answer"), - element: 'a[data-karma="20"]:first', - placement: 'right', - content: _t("Click here to accept this answer."), - }, - { - title: _t("Congratulations"), - waitFor: 'body:has(".oe_answer_true")', - content: _t("Congratulations! You just created and post your first question and answer."), - popover: { next: _t("Close Tutorial") }, - }, - ] - }); +var core = require('web.core'); +var Tour = require('web.Tour'); -}()); +var _t = core._t; + +Tour.register({ + id: 'question', + name: _t("Create a question"), + steps: [ + { + title: _t("Create a Question!"), + content: _t("Let's go through the first steps to create a new question."), + popover: { next: _t("Start Tutorial"), end: _t("Skip It") }, + }, + { + title: _t("Add Content"), + element: '#content-menu-button', + placement: 'left', + content: _t("Use this 'Content' menu to create a new forum like any other document (page, menu, products, event, ...)."), + popover: { fixed: true }, + }, + { + title: _t("New Forum"), + element: 'a[data-action=new_forum]', + placement: 'left', + content: _t("Select this menu item to create a new forum."), + popover: { fixed: true }, + }, + { + title: _t("Forum Name"), + element: '.modal #editor_new_forum input[type=text]', + sampleText:'New Forum', + placement: 'right', + content: _t("Enter a name for your new forum then click 'Continue'."), + }, + { + title: _t("Create Forum"), + waitNot: ".modal #editor_new_forum input[type=text]:propValue('')", + element: '.modal button.btn-primary', + placement: 'right', + content: _t("Click Continue to create the forum."), + }, + { + title: _t("New Forum Created"), + waitFor: 'body:not(.modal-open)', + content: _t("This page contains all the information related to the new forum."), + popover: { next: _t("Continue") }, + }, + { + title: _t("Ask a Question"), + element: '.btn-block a:first', + placement: 'left', + content: _t("Ask the question in this forum by clicking on the button."), + }, + { + title: _t("Question Title"), + element: 'input[name=post_name]', + sampleText:'First Question Title', + placement: 'top', + content: _t("Give your question title."), + }, + { + title: _t("Question"), + waitNot: "input[name=post_name]:propValue('')", + element: '.note-editable p', + sampleText: 'First Question', + placement: 'top', + content: _t("Put your question here."), + }, + { + title: _t("Give Tag"), + waitFor: '.note-editable:not(:has(br))', + element: '.select2-choices', + placement: 'top', + content: _t("Insert tags related to your question."), + }, + { + title: _t("Post Question"), + waitNot: "input[id=s2id_autogen2]:propValue('Tags')", + element: 'button:contains("Post Your Question")', + placement: 'bottom', + content: _t("Click to post your question."), + }, + { + title: _t("New Question Created"), + waitFor: 'body:has(".fa-star")', + content: _t("This page contain new created question."), + popover: { next: _t("Continue") }, + }, + { + title: _t("Answer"), + element: '.note-editable p', + sampleText: 'First Answer', + placement: 'top', + content: _t("Put your answer here."), + }, + { + title: _t("Post Answer"), + waitFor: '.note-editable:not(:has(br))', + element: 'button:contains("Post Answer")', + placement: 'bottom', + content: _t("Click to post your answer."), + }, + { + title: _t("Answer Posted"), + waitFor: 'body:has(".fa-check-circle")', + content: _t("This page contain new created question and its answer."), + popover: { next: _t("Continue") }, + }, + { + title: _t("Accept Answer"), + element: 'a[data-karma="20"]:first', + placement: 'right', + content: _t("Click here to accept this answer."), + }, + { + title: _t("Congratulations"), + waitFor: 'body:has(".oe_answer_true")', + content: _t("Congratulations! You just created and post your first question and answer."), + popover: { next: _t("Close Tutorial") }, + }, + ] +}); + +}); diff --git a/addons/website_forum/static/src/js/website_tour_forum_question.js b/addons/website_forum/static/src/js/website_tour_forum_question.js index 9db484081c2..0787f4bd1e8 100644 --- a/addons/website_forum/static/src/js/website_tour_forum_question.js +++ b/addons/website_forum/static/src/js/website_tour_forum_question.js @@ -1,87 +1,89 @@ -(function () { - 'use strict'; +odoo.define('website_forum.tour_forum_question', ['web.Tour'], function (require) { +'use strict'; - openerp.Tour.register({ - id: 'forum_question', - name: "try to create question", - path: '/forum/help-1', - mode: 'test', - steps: [ - { - title: "Ask a Question", - element: '.btn-block a:first', - placement: 'left', - content: "Ask the question in this forum by clicking on the button.", - }, - { - title: "Question Title", - element: 'input[name=post_name]', - sampleText:'First Question Title', - placement: 'top', - content: "Give your question title.", - }, - { - title: "Question", - waitNot: "input[name=post_name]:propValue('')", - element: '.note-editable p', - sampleText: 'First Question', - placement: 'top', - content: "Put your question here.", - }, - { - title: "Give Tag", - waitFor: '.note-editable:not(:has(br))', - element: '.select2-choices', - sampleText:'Tag', - placement: 'top', - content: "Insert tags related to your question.", - }, - { - title: "Post Question", - waitNot: "input[id=s2id_autogen2]:propValue('')", - element: 'button:contains("Post Your Question")', - placement: 'bottom', - content: "Click to post your question.", - }, - { - title: "New Question Created", - waitFor: 'body:has(".fa-star")', - content: "This page contain new created question.", - popover: { next: "Continue" }, - }, - { - title: "Answer", - element: '.note-editable p', - sampleText: 'First Answer', - placement: 'top', - content: "Put your answer here.", - }, - { - title: "Post Answer", - waitFor: '.note-editable:not(:has(br))', - element: 'button:contains("Post Answer")', - placement: 'bottom', - content: "Click to post your answer.", - }, - { - title: "Answer Posted", - waitFor: 'body:has(".fa-check-circle")', - content: "This page contain new created question and its answer.", - popover: { next: "Continue" }, - }, - { - title: "Accept Answer", - element: 'a[data-karma="20"]:first', - placement: 'right', - content: "Click here to accept this answer.", - }, - { - title: "Congratulations", - waitFor: 'body:has(".oe_answer_true")', - content: "Congratulations! You just created and post your first question and answer.", - popover: { next: "Close Tutorial" }, - }, - ] - }); +var Tour = require('web.Tour'); -}()); +Tour.register({ + id: 'forum_question', + name: "try to create question", + path: '/forum/help-1', + mode: 'test', + steps: [ + { + title: "Ask a Question", + element: '.btn-block a:first', + placement: 'left', + content: "Ask the question in this forum by clicking on the button.", + }, + { + title: "Question Title", + element: 'input[name=post_name]', + sampleText:'First Question Title', + placement: 'top', + content: "Give your question title.", + }, + { + title: "Question", + waitNot: "input[name=post_name]:propValue('')", + element: '.note-editable p', + sampleText: 'First Question', + placement: 'top', + content: "Put your question here.", + }, + { + title: "Give Tag", + waitFor: '.note-editable:not(:has(br))', + element: '.select2-choices', + sampleText:'Tag', + placement: 'top', + content: "Insert tags related to your question.", + }, + { + title: "Post Question", + waitNot: "input[id=s2id_autogen2]:propValue('')", + element: 'button:contains("Post Your Question")', + placement: 'bottom', + content: "Click to post your question.", + }, + { + title: "New Question Created", + waitFor: 'body:has(".fa-star")', + content: "This page contain new created question.", + popover: { next: "Continue" }, + }, + { + title: "Answer", + element: '.note-editable p', + sampleText: 'First Answer', + placement: 'top', + content: "Put your answer here.", + }, + { + title: "Post Answer", + waitFor: '.note-editable:not(:has(br))', + element: 'button:contains("Post Answer")', + placement: 'bottom', + content: "Click to post your answer.", + }, + { + title: "Answer Posted", + waitFor: 'body:has(".fa-check-circle")', + content: "This page contain new created question and its answer.", + popover: { next: "Continue" }, + }, + { + title: "Accept Answer", + element: 'a[data-karma="20"]:first', + placement: 'right', + content: "Click here to accept this answer.", + }, + { + title: "Congratulations", + waitFor: 'body:has(".oe_answer_true")', + content: "Congratulations! You just created and post your first question and answer.", + popover: { next: "Close Tutorial" }, + }, + ] +}); + +}); \ No newline at end of file