summaryrefslogtreecommitdiff
path: root/wikipedia
diff options
context:
space:
mode:
authorPhilip Chimento <philip@endlessm.com>2013-10-31 13:48:27 -0700
committerPhilip Chimento <philip@endlessm.com>2013-10-31 13:48:27 -0700
commit088dcca6dd1a3223d59c0477133ed17b031f0ba9 (patch)
tree2393c64874d99ea74e77232617d5cad2e772f7ef /wikipedia
parent694d86d1a31e23bb55904f09a7945e919c467ac8 (diff)
Query articles with the 'source' parameter
We need to pass the 'source' parameter to NodeJS to indicate the source database that an article comes from. This should later be replaced by indicating this information in the database name. [endlessm/eos-sdk#383]
Diffstat (limited to 'wikipedia')
-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;
},