diff options
Diffstat (limited to 'wikipedia')
-rw-r--r-- | wikipedia/PrebuiltArticlesPage.js | 4 | ||||
-rw-r--r-- | wikipedia/WikipediaWebView.js | 20 | ||||
-rw-r--r-- | wikipedia/views/domain_wiki_view.js | 6 |
3 files changed, 18 insertions, 12 deletions
diff --git a/wikipedia/PrebuiltArticlesPage.js b/wikipedia/PrebuiltArticlesPage.js index 7c8d06e..bb2e8b9 100644 --- a/wikipedia/PrebuiltArticlesPage.js +++ b/wikipedia/PrebuiltArticlesPage.js @@ -74,7 +74,9 @@ const PrebuiltArticlesPage = new Lang.Class({ set article_uri(value) { this._article_uri = value; if(value !== null && value !== "") { - this._wiki_view.loadArticleByTitle(this._article_title, this.article_source); + let url_parts = this._article_uri.split("/"); + let suffix = decodeURI(url_parts[url_parts.length-1]); + this._wiki_view.loadArticleById(suffix, this.article_source); } } });
\ No newline at end of file diff --git a/wikipedia/WikipediaWebView.js b/wikipedia/WikipediaWebView.js index f957566..974b6cd 100644 --- a/wikipedia/WikipediaWebView.js +++ b/wikipedia/WikipediaWebView.js @@ -8,6 +8,7 @@ const WebKit = imports.gi.WebKit2; const Utils = imports.wikipedia.utils; const hostName = "http://127.0.0.1:3000/v1/"; +const getPageById = "getArticleById?"; const getPageByTitleURI = "getArticleByTitle?"; const getPageByQueryURI = "getTopArticleByQuery?"; const getTitlesByQueryURI = "getArticleTitlesByQuery?"; @@ -82,12 +83,15 @@ const WikipediaWebView = new Lang.Class({ return full_url; }, - loadArticleByURI: function(uri, source) { - let parts = uri.split("/"); - let suffix = parts[parts.length - 1]; - let title = decodeURI(suffix.replace("_", " ", 'g')); - // FIXME: this is a workaround for not storing the URI in the database - this.loadArticleByTitle(title, source); + loadArticleById: function(id, source) { + let params = { + id: id, + hideLinks: this.hide_links, + source: source, + lang: _systemPersonalityToDatabaseLang(this.system_personality) + }; + let url = this._getFullURL(hostName + getPageById, params); + this.load_uri(url); }, loadArticleByTitle: function(title, source) { @@ -147,9 +151,9 @@ const WikipediaWebView = new Lang.Class({ if (uri.startsWith(hostName + "wiki/")) { let parts = uri.split("/"); let suffix = parts[parts.length - 1]; - let title = decodeURI(suffix.replace("_", " ", 'g')); + let id = decodeURI(suffix); // FIXME: determine the source db from the link format? - this.loadArticleByTitle(title, 'Wikipedia'); + this.loadArticleById(id, 'Wikipedia'); return true; } else if (GLib.uri_parse_scheme(uri).startsWith('browser-')) { // Open everything that starts with 'browser-' in the system diff --git a/wikipedia/views/domain_wiki_view.js b/wikipedia/views/domain_wiki_view.js index 33a942d..3386c95 100644 --- a/wikipedia/views/domain_wiki_view.js +++ b/wikipedia/views/domain_wiki_view.js @@ -18,7 +18,7 @@ const DomainWikiView = new Lang.Class({ param_types: [GObject.TYPE_STRING] }, 'article-chosen': { - param_types: [GObject.TYPE_STRING, GObject.TYPE_STRING] + param_types: [GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING] }, 'category-back-clicked': {}, 'article-back-clicked': {} @@ -251,8 +251,8 @@ const DomainWikiView = new Lang.Class({ // Proxy signal, respond to category page's 'article-chosen' signal by // emitting our own - _onArticleClicked: function (articleList, title, uri) { - this.emit('article-chosen', title, uri); + _onArticleClicked: function (articleList, title, source, uri) { + this.emit('article-chosen', title, source, uri); }, _onCategoryBackClicked: function(button) { |