summaryrefslogtreecommitdiff
path: root/wikipedia
diff options
context:
space:
mode:
authorRory MacQueen <rorymacqueen@gmail.com>2013-11-01 15:46:45 -0700
committerRory MacQueen <rorymacqueen@gmail.com>2013-11-04 16:46:38 -0800
commit23e7c85bc3a619c569a491892e8f92e03752963a (patch)
tree7b2531820e665db4f90684940cdcd879fd9db197 /wikipedia
parent9866139366b3f541bd50737917626fd847236382 (diff)
Load articles by Id
Previously we were loading articles in domain specific apps by title. Now, we are loading by Id, which is the suffix of the url. [endlessm/eos-sdk#386]
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) {