1 openerp.website.if_dom_contains('.website_forum', function () {
2 $("[data-toggle='popover']").popover();
3 $('.karma_required').on('click', function (ev) {
4 var karma = $(ev.currentTarget).data('karma');
7 var $warning = $('<div class="alert alert-danger alert-dismissable oe_forum_alert" id="karma_alert">'+
8 '<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">×</button>'+
9 karma + ' karma is required to perform this action. You can earn karma by having '+
10 'your answers upvoted by the community.</div>');
11 var vote_alert = $(ev.currentTarget).parent().find("#vote_alert");
12 if (vote_alert.length == 0) {
13 $(ev.currentTarget).parent().append($warning);
18 $('.vote_up,.vote_down').not('.karma_required').on('click', function (ev) {
20 var $link = $(ev.currentTarget);
21 openerp.jsonRpc($link.data('href'), 'call', {})
22 .then(function (data) {
24 if (data['error'] == 'own_post'){
25 var $warning = $('<div class="alert alert-danger alert-dismissable oe_forum_alert" id="vote_alert">'+
26 '<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">×</button>'+
27 'Sorry, you cannot vote for your own posts'+
29 } else if (data['error'] == 'anonymous_user'){
30 var $warning = $('<div class="alert alert-danger alert-dismissable oe_forum_alert" id="vote_alert">'+
31 '<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">×</button>'+
32 'Sorry you must be logged to vote'+
35 vote_alert = $link.parent().find("#vote_alert");
36 if (vote_alert.length == 0) {
37 $link.parent().append($warning);
40 $link.parent().find("#vote_count").html(data['vote_count']);
41 if (data['user_vote'] == 0) {
42 $link.parent().find(".text-success").removeClass("text-success");
43 $link.parent().find(".text-warning").removeClass("text-warning");
45 if (data['user_vote'] == 1) {
46 $link.addClass("text-success");
48 $link.addClass("text-warning");
55 $('.accept_answer').not('.karma_required').on('click', function (ev) {
57 var $link = $(ev.currentTarget);
58 openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) {
60 if (data['error'] == 'anonymous_user') {
61 var $warning = $('<div class="alert alert-danger alert-dismissable" id="correct_answer_alert" style="position:absolute; margin-top: -30px; margin-left: 90px;">'+
62 '<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">×</button>'+
63 'Sorry, anonymous users cannot choose correct answer.'+
66 correct_answer_alert = $link.parent().find("#correct_answer_alert");
67 if (correct_answer_alert.length == 0) {
68 $link.parent().append($warning);
72 $link.addClass("oe_answer_true").removeClass('oe_answer_false');
74 $link.removeClass("oe_answer_true").addClass('oe_answer_false');
80 $('.favourite_question').on('click', function (ev) {
82 var $link = $(ev.currentTarget);
83 openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) {
85 $link.addClass("forum_favourite_question")
87 $link.removeClass("forum_favourite_question")
92 $('.comment_delete').on('click', function (ev) {
94 var $link = $(ev.currentTarget);
95 openerp.jsonRpc($link.data('href'), 'call', {}).then(function (data) {
96 $link.parents('.comment').first().remove();
100 $('.notification_close').on('click', function (ev) {
102 var $link = $(ev.currentTarget);
103 openerp.jsonRpc("/forum/notification_read", 'call', {
104 'notification_id': $link.attr("id")});
107 $('.send_validation_email').on('click', function (ev) {
109 var $link = $(ev.currentTarget);
110 openerp.jsonRpc("/forum/send_validation_email", 'call', {
111 'forum_id': $link.attr('forum-id'),
112 }).then(function (data) {
114 $('button.validation_email_close').click();
119 $('.validated_email_close').on('click', function (ev) {
120 openerp.jsonRpc("/forum/validate_email/close", 'call', {});
124 $('.js_close_intro').on('click', function (ev) {
126 document.cookie = "no_introduction_message = false";
130 $('.link_url').on('change', function (ev) {
132 var $link = $(ev.currentTarget);
133 if ($link.attr("value").search("^http(s?)://.*")) {
134 var $warning = $('<div class="alert alert-danger alert-dismissable" style="position:absolute; margin-top: -180px; margin-left: 90px;">'+
135 '<button type="button" class="close notification_close" data-dismiss="alert" aria-hidden="true">×</button>'+
136 'Please enter valid URl.'+
138 $link.parent().append($warning);
139 $link.parent().find("button#btn_post_your_article")[0].disabled = true;
140 $link.parent().find("input[name='content']")[0].value = '';
142 openerp.jsonRpc("/forum/get_url_title", 'call', {'url': $link.attr("value")}).then(function (data) {
143 $link.parent().find("input[name='content']")[0].value = data;
144 $('button').prop('disabled', false);
145 $('input').prop('readonly', false);
150 $('input.js_select2').select2({
152 tokenSeparators: [",", " ", "_"],
153 maximumInputLength: 35,
154 minimumInputLength: 2,
155 maximumSelectionSize: 5,
157 createSearchChoice: function (term) {
158 if ($(lastsearch).filter(function () { return this.text.localeCompare(term) === 0;}).length === 0) {
160 if (parseInt($("#karma").val()) >= parseInt($("#karma_retag").val())) {
162 id: "_" + $.trim(term),
163 text: $.trim(term) + ' *',
169 formatResult: function(term) {
171 return '<span class="label label-primary">New</span> ' + _.escape(term.text);
174 return _.escape(term.text);
178 url: '/forum/get_tags',
180 data: function(term, page) {
186 results: function(data, page) {
188 _.each(data, function(x) {
189 ret.push({ id: x.id, text: x.name, isNew: false });
192 return { results: ret };
196 // Take default tags from the input value
197 initSelection: function (element, callback) {
199 _.each(JSON.parse(element.val()), function(x) {
200 data.push({ id: x.id, text: x.name, isNew: false });
207 if ($('textarea.load_editor').length) {
208 $('textarea.load_editor').each(function () {
210 CKEDITOR.replace(this['id']).on('instanceReady', CKEDITORLoadComplete);
215 function IsKarmaValid(eventNumber,minKarma){
217 if(parseInt($("#karma").val()) >= minKarma){
218 CKEDITOR.tools.callFunction(eventNumber,this);
221 alert("Sorry you need more than " + minKarma + " Karma.");
225 function CKEDITORLoadComplete(){
227 $('.cke_button__link').on('click', function() { IsKarmaValid(33,30); });
228 $('.cke_button__unlink').on('click', function() { IsKarmaValid(37,30); });
229 $('.cke_button__image').on('click', function() { IsKarmaValid(41,30); });