diff -r 7e132e2a48ca -r 267d67791e05 server/src/main/webapp/static/js/wikipedia-bin.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/main/webapp/static/js/wikipedia-bin.js Tue Dec 25 21:29:11 2012 +0100 @@ -0,0 +1,63 @@ +Rkns.Wikipedia = { +} + +Rkns.Wikipedia.Search = function(_renkan, _opts) { + this.renkan = _renkan; + this.lang = _opts.lang || "en"; +} + +Rkns.Wikipedia.Search.prototype.getBgClass = function() { + return "Rk-Wikipedia-Search-Icon Rk-Wikipedia-Lang-" + this.lang; +} + +Rkns.Wikipedia.Search.prototype.getSearchTitle = function() { + return ( this.renkan.l10n["wiki_" + this.lang] || this.renkan.l10n.wiki_) ; +} + +Rkns.Wikipedia.Search.prototype.search = function(_q) { + this.renkan.tabs.push( + new Rkns.Wikipedia.Bin(this.renkan, { + lang: this.lang, + search: _q + }) + ); +} + +Rkns.Wikipedia.Bin = Rkns.Utils.inherit(Rkns._BaseBin); + +Rkns.Wikipedia.Bin.prototype.resultTemplate = Rkns._.template( + '
  • ' + + '

    <%=highlightedtitle%>

    ' + + '

    <%=result.snippet%>

  • ' +); + +Rkns.Wikipedia.Bin.prototype._init = function(_renkan, _opts) { + this.search = _opts.search; + this.lang = _opts.lang || "en"; + this.title_icon_$.addClass('Rk-Wikipedia-Title-Icon Rk-Wikipedia-Lang-' + this.lang); + this.title_$.html(this.search).addClass("Rk-Wikipedia-Title"); + this.refresh(); +} + +Rkns.Wikipedia.Bin.prototype.refresh = function() { + var _this = this; + Rkns.$.ajax({ + url: "http://" + _this.lang + ".wikipedia.org/w/api.php?action=query&list=search&srsearch=" + encodeURIComponent(this.search) + "&format=json", + dataType: "jsonp", + success: function(_data) { + var _rgxp = new RegExp('('+_this.search.replace(/(\W)/g,'\\$1')+')','gi'), + _html = Rkns._(_data.query.search).map(function(_result) { + return _this.resultTemplate({ + result: _result, + wpurl: "http://" + _this.lang + ".wikipedia.org/wiki/" + encodeURI(_result.title.replace(/ /g,"_")), + highlightedtitle: _result.title.replace(_rgxp, "$1"), + wpdesc: Rkns.$('
    ').html(_result.snippet).text(), + static_url: _this.renkan.static_url + }); + }).join(""); + _this.main_$.html(_html); + _renkan.resizeBins(); + } + }); +} \ No newline at end of file