summaryrefslogtreecommitdiff
path: root/wikipedia
diff options
context:
space:
mode:
Diffstat (limited to 'wikipedia')
-rw-r--r--wikipedia/PrebuiltArticlesPage.js4
-rw-r--r--wikipedia/WikipediaWebView.js20
-rw-r--r--wikipedia/views/domain_wiki_view.js6
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) {