1 Ext.define('FV.controller.Articles', {
2 extend: 'Ext.app.Controller',
8 views: ['article.Grid', 'article.Preview'],
17 ref: 'articlePreview',
18 selector: 'articlepreview'
21 xtype: 'articlepreview',
24 selector: 'articlepreview'
30 selectionchange: this.previewArticle
32 'articlegrid > tableview': {
33 itemdblclick: this.loadArticle,
34 refresh: this.selectArticle
36 'articlegrid button[action=openall]': {
37 click: this.openAllArticles
39 'articlepreview button[action=viewintab]': {
40 click: this.viewArticle
42 'articlepreview button[action=gotopost]': {
43 click: this.openArticle
48 selectArticle: function(view) {
49 var first = this.getArticlesStore().getAt(0);
51 view.getSelectionModel().select(first);
56 * Loads the given article into the preview panel
57 * @param {FV.model.Article} article The article to load
59 previewArticle: function(grid, articles) {
60 var article = articles[0],
61 articlePreview = this.getArticlePreview();
64 articlePreview.article = article;
65 articlePreview.update(article.data);
69 openArticle: function(btn) {
70 window.open(btn.up('articlepreview').article.get('link'));
73 openAllArticles: function() {
75 viewer = this.getViewer();
77 this.getArticlesStore().each(function(article) {
78 articles.push(this.loadArticle(null, article, true));
82 viewer.setActiveTab(articles[articles.length-1]);
85 viewArticle: function(btn) {
86 this.loadArticle(null, btn.up('articlepreview').article);
90 * Loads the given article into a new tab
91 * @param {FV.model.Article} article The article to load into a new tab
93 loadArticle: function(view, article, preventAdd) {
94 var viewer = this.getViewer(),
95 title = article.get('title'),
96 articleId = article.id;
98 tab = viewer.down('[articleId=' + articleId + ']');
100 tab = this.getArticleTab();
101 tab.down('button[action=viewintab]').destroy();
105 tab.article = article;
106 tab.articleId = articleId;
107 tab.update(article.data);
109 if (preventAdd !== true) {
111 viewer.setActiveTab(tab);