diff options
-rw-r--r-- | wikipedia/ArticleList.js | 9 | ||||
-rw-r--r-- | wikipedia/PrebuiltArticlesPage.js | 8 | ||||
-rw-r--r-- | wikipedia/WikipediaWebView.js | 31 | ||||
-rw-r--r-- | wikipedia/models/article_model.js | 5 | ||||
-rw-r--r-- | wikipedia/presenters/domain_wiki_presenter.js | 4 | ||||
-rw-r--r-- | wikipedia/views/domain_wiki_view.js | 3 |
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; }, |