summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wikipedia/ArticleList.js9
-rw-r--r--wikipedia/PrebuiltArticlesPage.js8
-rw-r--r--wikipedia/WikipediaWebView.js31
-rw-r--r--wikipedia/models/article_model.js5
-rw-r--r--wikipedia/presenters/domain_wiki_presenter.js4
-rw-r--r--wikipedia/views/domain_wiki_view.js3
6 files changed, 48 insertions, 12 deletions
diff --git a/wikipedia/ArticleList.js b/wikipedia/ArticleList.js
index 80c309a..de9eb81 100644
--- a/wikipedia/ArticleList.js
+++ b/wikipedia/ArticleList.js
@@ -14,7 +14,11 @@ const ArticleList = new Lang.Class({
Signals: {
'article-chosen': {
- param_types: [GObject.TYPE_STRING, GObject.TYPE_STRING]
+ param_types: [
+ GObject.TYPE_STRING,
+ GObject.TYPE_STRING,
+ GObject.TYPE_STRING
+ ]
}
},
@@ -52,7 +56,8 @@ const ArticleList = new Lang.Class({
let button = new ListTextButton.ListTextButton(HOVER_ARROW_URI,
article.title, { hexpand: true });
button.connect('clicked', Lang.bind(this, function() {
- this.emit('article-chosen', article.title, article.uri);
+ this.emit('article-chosen',
+ article.title, article.source, article.uri);
}));
this._grid.add(button);
diff --git a/wikipedia/PrebuiltArticlesPage.js b/wikipedia/PrebuiltArticlesPage.js
index 03cd4a5..7c8d06e 100644
--- a/wikipedia/PrebuiltArticlesPage.js
+++ b/wikipedia/PrebuiltArticlesPage.js
@@ -15,6 +15,11 @@ const PrebuiltArticlesPage = new Lang.Class({
'Human-readable title for the article to be displayed',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT,
''),
+ 'article-source': GObject.ParamSpec.string('article-source',
+ 'Article source',
+ 'Source website or database that the article comes from',
+ GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT,
+ 'Wikipedia'),
'article-uri': GObject.ParamSpec.string('article-uri',
'Article URI',
'Wikipedia URI for the article to be displayed',
@@ -25,6 +30,7 @@ const PrebuiltArticlesPage = new Lang.Class({
_init: function(props) {
this._article_title = null;
this._article_uri = null;
+ this._article_source = null;
// Empty array is placeholder until we get baby page rank
this._wiki_view = new EndlessWikipedia.WikipediaWebView({
@@ -68,7 +74,7 @@ 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._wiki_view.loadArticleByTitle(this._article_title, this.article_source);
}
}
}); \ No newline at end of file
diff --git a/wikipedia/WikipediaWebView.js b/wikipedia/WikipediaWebView.js
index b898ba6..a6f2aaf 100644
--- a/wikipedia/WikipediaWebView.js
+++ b/wikipedia/WikipediaWebView.js
@@ -82,26 +82,31 @@ const WikipediaWebView = new Lang.Class({
return full_url;
},
- loadArticleByURI: function(uri) {
+ loadArticleByURI: function(uri, source) {
let parts = uri.split("/");
let suffix = parts[parts.length - 1];
let title = decodeURI(suffix.replace("_", " ", 'g'));
- this.loadArticleByTitle(title);
+ // FIXME: this is a workaround for not storing the URI in the database
+ this.loadArticleByTitle(title, source);
},
- loadArticleByTitle: function(title) {
+ loadArticleByTitle: function(title, source) {
let params = {
title: title,
hideLinks: this.hide_links,
+ source: source,
+ lang: _systemPersonalityToDatabaseLang(this.system_personality)
};
let url = this._getFullURL(hostName + getPageByTitleURI, params);
this.load_uri(url);
},
- loadArticleBySearchQuery: function(query) {
+ loadArticleBySearchQuery: function (query, source) {
let params = {
query: query,
hideLinks: this.hide_links,
+ source: source,
+ lang: _systemPersonalityToDatabaseLang(this.system_personality)
};
let url = this._getFullURL(hostName + getPageByQueryURI, params);
this.load_uri(url);
@@ -110,7 +115,7 @@ const WikipediaWebView = new Lang.Class({
loadTitlesBySearchQuery: function (query) {
let params = {
query: query,
- lang: this.lang
+ lang: _systemPersonalityToDatabaseLang(this.system_personality)
};
let url = this._getFullURL(hostName + getTitlesByQueryURI, params);
this.load_uri(url);
@@ -143,7 +148,8 @@ const WikipediaWebView = new Lang.Class({
let parts = uri.split("/");
let suffix = parts[parts.length - 1];
let title = decodeURI(suffix.replace("_", " ", 'g'));
- this.loadArticleByTitle(title);
+ // FIXME: determine the source db from the link format?
+ this.loadArticleByTitle(title, 'Wikipedia');
return true;
} else if (GLib.uri_parse_scheme(uri).startsWith('browser-')) {
// Open everything that starts with 'browser-' in the system
@@ -161,3 +167,16 @@ const WikipediaWebView = new Lang.Class({
this.setAllowedLinks();
}
});
+
+/* Temporary helper function; remove this when the original article URI is
+stored inside the Elasticsearch database. FIXME */
+function _systemPersonalityToDatabaseLang(personality) {
+ switch (personality) {
+ case 'Guatemala':
+ case 'Mexico':
+ return 'es';
+ case 'Brazil':
+ return 'pt';
+ }
+ return 'en';
+}
diff --git a/wikipedia/models/article_model.js b/wikipedia/models/article_model.js
index 5c6cc15..c74da17 100644
--- a/wikipedia/models/article_model.js
+++ b/wikipedia/models/article_model.js
@@ -11,6 +11,10 @@ const ArticleModel = new Lang.Class({
'title': GObject.ParamSpec.string('title', 'Article Title', 'Human Readable Article Title',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
""),
+ 'source': GObject.ParamSpec.string('source', 'Source',
+ 'Source website or database that the article is from',
+ GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
+ ''),
'uri': GObject.ParamSpec.string('uri', 'Article URI', 'Title URI as stored in wikipedia database',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
"")
@@ -92,6 +96,7 @@ const ArticleModel = new Lang.Class({
function newFromJson(json) {
let retval = new ArticleModel({
title: json['title'],
+ source: json['source'],
uri: json['url']
});
retval.setCategories(json['categories']);
diff --git a/wikipedia/presenters/domain_wiki_presenter.js b/wikipedia/presenters/domain_wiki_presenter.js
index 3e59a01..ecd58a3 100644
--- a/wikipedia/presenters/domain_wiki_presenter.js
+++ b/wikipedia/presenters/domain_wiki_presenter.js
@@ -82,8 +82,8 @@ const DomainWikiPresenter = new Lang.Class({
// Respond to the category page's 'article-clicked' signal by loading that
// article and switching to the article page
- _onArticleClicked: function (articleList, title, uri) {
- this._view.set_article_info(title, uri);
+ _onArticleClicked: function (articleList, title, source, uri) {
+ this._view.set_article_info(title, source, uri);
this._view.show_article_page();
},
diff --git a/wikipedia/views/domain_wiki_view.js b/wikipedia/views/domain_wiki_view.js
index a238f6b..33a942d 100644
--- a/wikipedia/views/domain_wiki_view.js
+++ b/wikipedia/views/domain_wiki_view.js
@@ -182,9 +182,10 @@ const DomainWikiView = new Lang.Class({
* Method: set_article_info
* Proxy method to set the article displaying on the article page
*/
- set_article_info: function (title, uri) {
+ set_article_info: function (title, source, uri) {
// Note: Must set article title first
this._article_view.article_title = title;
+ this._article_view.article_source = source;
this._article_view.article_uri = uri;
},