diff options
author | Philip Chimento <philip@endlessm.com> | 2013-10-23 21:53:22 -0700 |
---|---|---|
committer | Philip Chimento <philip@endlessm.com> | 2013-10-23 22:00:01 -0700 |
commit | 2e5e489fa7b64e70f014e0a60bcbd2234b3fe4c1 (patch) | |
tree | 82c3bccd1b9bc39ea3c4e25ad1366acb26e42a6f /wikipedia/presenters | |
parent | 48022e98522f56905986d0d6b3b50277554f974a (diff) |
wiki: Functionality unchanged with new JSON format
Reorganizes the various models, presenters, and views, so that the wiki
apps work unchanged with the new JSON export format. Also refactors so
that there is less linkage between models, presenters, and views, so
further updates will hopefully be less extensive.
[endlessm/eos-sdk#367]
Diffstat (limited to 'wikipedia/presenters')
-rw-r--r-- | wikipedia/presenters/domain_wiki_presenter.js | 66 |
1 files changed, 14 insertions, 52 deletions
diff --git a/wikipedia/presenters/domain_wiki_presenter.js b/wikipedia/presenters/domain_wiki_presenter.js index 12479b6..05af35e 100644 --- a/wikipedia/presenters/domain_wiki_presenter.js +++ b/wikipedia/presenters/domain_wiki_presenter.js @@ -37,24 +37,15 @@ const DomainWikiPresenter = new Lang.Class({ this.initAppInfoFromJsonFile(app_filename); this.initPageRankFromJsonFile(linked_articles_filename); - this._view.set_categories(this._model.getCategories()); + let firstLevel = this._model.getMainCategory().getSubcategories(); + firstLevel.push(this._model.getMainCategory()); + this._view.set_categories(firstLevel); let linked_articles = this._model.getLinkedArticles(); let to_show = linked_articles["app_articles"].concat(linked_articles["extra_linked_articles"]); this._view.set_showable_links(to_show); }, - initArticleModels: function(articles) { - let _articles = new Array(); - for(let i = 0; i < articles.length; i++) { - let humanTitle = articles[i].title; - let wikipediaURL = articles[i].url; - let newArticle = new ArticleModel.ArticleModel({ title: humanTitle, uri: wikipediaURL}); - _articles.push(newArticle); - } - return _articles; - }, - initPageRankFromJsonFile: function(filename){ let articles = JSON.parse(Utils.load_file_from_resource(filename)); this._model.setLinkedArticles(articles); @@ -62,54 +53,25 @@ const DomainWikiPresenter = new Lang.Class({ initAppInfoFromJsonFile: function(filename) { let app_content = JSON.parse(Utils.load_file_from_resource(filename)); - this._view.set_lang(_pathnameToLanguage(filename)); - let categories = app_content['categories']; - let cat_length = categories.length - let category_models = new Array(); - for(let i = 0; i < cat_length; i++){ - let category = categories[i]; - let categoryModel = this.initCategory(category); - let articles = category['articles']; - let articleModels = []; - if(!(articles.length == 0)) { - //if the category has no articles, then we cannot initialize them. - //This happens if the main category isn't clickable. - articleModels = this.initArticleModels(articles); - } - categoryModel.addArticles(articleModels); - category_models.push(categoryModel); - } - this._model.addCategories(category_models); + this._model.loadFromJson(app_content); }, - initCategory: function(category){ - let image_uri = category['image_file']; - let image_thumbnail_uri = category['image_thumb_uri']; - let params = {description:category['content_text'], image_uri:image_uri, - image_thumbnail_uri:image_thumbnail_uri, title:category['category_name'], - is_main_category:category['is_main_category']}; - return new CategoryModel.CategoryModel(params); - }, - - _onCategoryClicked: function(page, title, index) { - this._current_category = index; - let category = this._model.getCategories()[index]; - let articles = this._model.getArticlesForCategoryIndex(index); - - let titles = new Array(); - for(let i = 0; i < articles.length; i++){ - titles.push(articles[i].title); - } + // Respond to the front page's 'category-clicked' signal by loading the + // articles belonging to that category and switching to the category page + _onCategoryClicked: function (page, categoryId) { + let newCategory = this._model.getCategory(categoryId); + let articles = this._model.getArticlesForCategory(categoryId); - this._view.set_category_info(category, titles); + this._view.set_category_info(newCategory, articles); this._view.transition_page(Endless.PageManagerTransitionType.SLIDE_LEFT, 'category'); }, - _onArticleClicked: function(article_list, title, index) { - let articles = this._model.getArticlesForCategoryIndex(this._current_category); - this._view.set_article_info(articles[index]); + // 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); this._view.transition_page(Endless.PageManagerTransitionType.SLIDE_LEFT, 'article'); }, |