diff options
| author | Gaurav Panchal <gan@openerp.com> | 2015-06-30 13:21:41 +0530 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-07-31 12:57:24 +0200 |
| commit | d52ec7fc42cbeecafea921ea30d1d0723a59078a (patch) | |
| tree | 43695e3eeb88ceca1947836b0f2820ae2892744e /addons/website/static/src/js/website.seo.js | |
| parent | 9fa38eeab2382144ad37cfb4755ead114dd48dc3 (diff) | |
[IMP] website: keyword search base on language on website promote
Diffstat (limited to 'addons/website/static/src/js/website.seo.js')
| -rw-r--r-- | addons/website/static/src/js/website.seo.js | 105 |
1 files changed, 68 insertions, 37 deletions
diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js index a43d87c805d..d2b7683645f 100644 --- a/addons/website/static/src/js/website.seo.js +++ b/addons/website/static/src/js/website.seo.js @@ -10,6 +10,8 @@ var Widget = require('web.Widget'); var base = require('web_editor.base'); var website = require('website.website'); +var _t = core._t; + var qweb = core.qweb; ajax.loadXML('/website/static/src/xml/website.seo.xml', qweb); @@ -42,6 +44,7 @@ var Suggestion = Widget.extend({ init: function (parent, options) { this.root = options.root; this.keyword = options.keyword; + this.language = options.language; this.htmlPage = options.page; this._super(parent); }, @@ -67,6 +70,7 @@ var SuggestionList = Widget.extend({ template: 'website.seo_suggestion_list', init: function (parent, options) { this.root = options.root; + this.language = options.language; this.htmlPage = options.page; this._super(parent); }, @@ -75,31 +79,39 @@ var SuggestionList = Widget.extend({ }, refresh: function () { var self = this; - self.$el.append("Loading..."); - function addSuggestions (list) { - self.$el.empty(); - // TODO Improve algorithm + Ajust based on custom user keywords - var regex = new RegExp(self.root, "gi"); - var cleanList = _.map(list, function (word) { - return word.replace(regex, "").trim(); - }); - // TODO Order properly ? - _.each(_.uniq(cleanList), function (keyword) { - if (keyword) { - var suggestion = new Suggestion(self, { - root: self.root, - keyword: keyword, - page: self.htmlPage, - }); - suggestion.on('selected', self, function (word) { - self.trigger('selected', word); - }); - suggestion.appendTo(self.$el); - } - }); - } - $.getJSON("/website/seo_suggest/" + encodeURIComponent(this.root + " "), addSuggestions); + self.$el.append(_t("Loading...")); + var language = self.language || base.get_context().lang.toLowerCase(); + ajax.jsonRpc('/website/seo_suggest', 'call', { + 'keywords': self.root, + 'lang': language, + }).then(function(keyword_list){ + self.addSuggestions(JSON.parse(keyword_list)); + }); }, + addSuggestions: function(keywords) { + var self = this; + self.$el.empty(); + // TODO Improve algorithm + Ajust based on custom user keywords + var regex = new RegExp(self.root, "gi"); + var keywords = _.map(_.uniq(keywords), function (word) { + return word.replace(regex, "").trim(); + }); + // TODO Order properly ? + _.each(keywords, function (keyword) { + if (keyword) { + var suggestion = new Suggestion(self, { + root: self.root, + language: self.language, + keyword: keyword, + page: self.htmlPage, + }); + suggestion.on('selected', self, function (word, language) { + self.trigger('selected', word, language); + }); + suggestion.appendTo(self.$el); + } + }); + }, }); var Keyword = Widget.extend({ @@ -110,6 +122,7 @@ var Keyword = Widget.extend({ maxWordsPerKeyword: 4, // TODO Check init: function (parent, options) { this.keyword = options.word; + this.language = options.language; this.htmlPage = options.page; this._super(parent); }, @@ -118,10 +131,11 @@ var Keyword = Widget.extend({ this.htmlPage.on('description-changed', this, this.updateLabel); this.suggestionList = new SuggestionList(this, { root: this.keyword, + language: this.language, page: this.htmlPage, }); - this.suggestionList.on('selected', this, function (word) { - this.trigger('selected', word); + this.suggestionList.on('selected', this, function (word, language) { + this.trigger('selected', word, language); }); this.suggestionList.appendTo(this.$('.js_seo_keyword_suggestion')); }, @@ -159,11 +173,6 @@ var KeywordList = Widget.extend({ _.each(existingKeywords, function (word) { self.add.call(self, word); }); - } else { - var companyName = self.htmlPage.company().toLowerCase(); - if (companyName != 'yourcompany') { - self.add(companyName); - } } }, keywords: function () { @@ -179,21 +188,22 @@ var KeywordList = Widget.extend({ exists: function (word) { return _.contains(this.keywords(), word); }, - add: function (candidate) { + add: function (candidate, language) { var self = this; // TODO Refine var word = candidate ? candidate.replace(/[,;.:<>]+/g, " ").replace(/ +/g, " ").trim().toLowerCase() : ""; if (word && !self.isFull() && !self.exists(word)) { var keyword = new Keyword(self, { word: word, + language: language, page: this.htmlPage, }); keyword.on('removed', self, function () { self.trigger('list-not-full'); self.trigger('removed', word); }); - keyword.on('selected', self, function (word) { - self.trigger('selected', word); + keyword.on('selected', self, function (word, language) { + self.trigger('selected', word, language); }); keyword.appendTo(self.$el); } @@ -342,6 +352,7 @@ var Configurator = Widget.extend({ canEditTitle: false, canEditDescription: false, canEditKeywords: false, + canEditLanguage: false, maxTitleSize: 65, maxDescriptionSize: 150, start: function () { @@ -372,13 +383,31 @@ var Configurator = Widget.extend({ $modal.find('button[data-action=add]') .prop('disabled', false).removeClass('disabled'); }); - self.keywordList.on('selected', self, function (word) { - self.keywordList.add(word); + self.keywordList.on('selected', self, function (word, language) { + self.keywordList.add(word, language); }); self.keywordList.appendTo($modal.find('.js_seo_keywords_list')); self.disableUnsavableFields(); self.renderPreview(); $modal.modal(); + self.getLanguages(); + }, + getLanguages: function(){ + var self = this; + ajax.jsonRpc('/web/dataset/call_kw', 'call', { + model: 'website', + method: 'get_languages', + args: [], + kwargs: { + ids: [base.get_context().website_id], + context: base.get_context() + } + }).then( function(data) { + self.$('#language-box').html(core.qweb.render('Configurator.language_promote', { + 'language': data, + 'def_lang': base.get_context().lang + })); + }); }, disableUnsavableFields: function () { var self = this; @@ -431,8 +460,10 @@ var Configurator = Widget.extend({ }, addKeyword: function (word) { var $input = this.$('input[name=seo_page_keywords]'); + var $language = this.$('select[name=seo_page_language]'); var keyword = _.isString(word) ? word : $input.val(); - this.keywordList.add(keyword); + var language = $language.val().toLowerCase(); + this.keywordList.add(keyword, language); $input.val(""); }, update: function () { |
