mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
174 lines
5.5 KiB
JavaScript
174 lines
5.5 KiB
JavaScript
NEWSBLUR.Views.TextTabView = Backbone.View.extend({
|
|
|
|
events: {
|
|
"click .NB-text-view-premium-only a" : function(e) {
|
|
e.preventDefault();
|
|
NEWSBLUR.reader.open_feedchooser_modal({'premium_only': true});
|
|
}
|
|
},
|
|
|
|
initialize: function() {
|
|
_.bindAll(this, 'render', 'error');
|
|
|
|
if (this.collection) {
|
|
this.collection.bind('change:selected', this.select_story, this);
|
|
}
|
|
},
|
|
|
|
destroy: function() {
|
|
this.remove();
|
|
},
|
|
|
|
// ===========
|
|
// = Actions =
|
|
// ===========
|
|
|
|
fetch_and_render: function(story, is_temporary) {
|
|
if (!story) story = NEWSBLUR.reader.active_story;
|
|
if (!story && is_temporary) {
|
|
NEWSBLUR.reader.show_next_story(1);
|
|
story = NEWSBLUR.reader.active_story;
|
|
}
|
|
if (!story) return;
|
|
|
|
if (is_temporary && _.contains(['split', 'full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.reader.switch_taskbar_view('text', {
|
|
skip_save_type: is_temporary ? 'text' : false
|
|
});
|
|
}
|
|
|
|
if (this.story == story) return;
|
|
|
|
this.story = story;
|
|
this.story_detail = new NEWSBLUR.Views.StoryDetailView({
|
|
model: this.story,
|
|
collection: this.story.collection,
|
|
show_feed_title: true,
|
|
skip_content: true,
|
|
text_view: true,
|
|
tagName: 'div',
|
|
inline_story_title: this.options.inline_story_title
|
|
}).render();
|
|
this.$el.html(this.story_detail.el);
|
|
this.$el.scrollTop(0);
|
|
this.story_detail.attach_handlers();
|
|
this.show_loading();
|
|
NEWSBLUR.assets.fetch_original_text(story.get('story_hash'), this.render, this.error);
|
|
|
|
return this;
|
|
},
|
|
|
|
render: function(data) {
|
|
if (!this.story) return;
|
|
|
|
if (data && (data.story_id != this.story.get('id') ||
|
|
data.feed_id != this.story.get('story_feed_id'))) {
|
|
return;
|
|
}
|
|
|
|
this.hide_loading();
|
|
var $content = this.$('.NB-feed-story-content');
|
|
|
|
if (!this.story.get('original_text')) {
|
|
this.error();
|
|
} else {
|
|
$content.html(this.story.original_text());
|
|
this.story_detail.attach_handlers();
|
|
this.resize_starred_tags();
|
|
}
|
|
$content.css('opacity', 0);
|
|
$content.show();
|
|
$content.animate({
|
|
'opacity': 1
|
|
}, {
|
|
duration: 250,
|
|
queue: false
|
|
});
|
|
|
|
if (!NEWSBLUR.Globals.is_premium) {
|
|
this.append_premium_only_notification();
|
|
}
|
|
},
|
|
|
|
unload: function() {
|
|
this.story = null;
|
|
this.$el.empty();
|
|
},
|
|
|
|
show_loading: function() {
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
NEWSBLUR.app.taskbar_info.show_stories_progress_bar(10, "Fetching text");
|
|
},
|
|
|
|
hide_loading: function() {
|
|
NEWSBLUR.app.taskbar_info.hide_stories_progress_bar();
|
|
},
|
|
|
|
error: function() {
|
|
this.hide_loading();
|
|
NEWSBLUR.app.taskbar_info.show_stories_error({}, "Sorry, the story\'s text<br />could not be extracted.");
|
|
|
|
var $content = this.$('.NB-feed-story-content');
|
|
$content.html(this.story.story_content());
|
|
this.story_detail.attach_handlers();
|
|
},
|
|
|
|
append_premium_only_notification: function() {
|
|
var $content = this.$('.NB-feed-story-content');
|
|
var $notice = $.make('div', { className: 'NB-text-view-premium-only' }, [
|
|
$.make('div', { className: 'NB-feed-story-premium-only-divider'}),
|
|
$.make('div', { className: 'NB-feed-story-premium-only-text'}, [
|
|
'The full ',
|
|
$.make('img', { src: NEWSBLUR.Globals['MEDIA_URL'] + 'img/icons/circular/nav_story_text_active.png' }),
|
|
' Text view is a ',
|
|
$.make('a', { href: '#', className: 'NB-splash-link' }, 'premium feature'),
|
|
'.'
|
|
])
|
|
]);
|
|
|
|
$notice.hide();
|
|
this.$('.NB-feed-story-premium-only').remove();
|
|
$content.after($notice);
|
|
this.$el.addClass('NB-premium-only');
|
|
|
|
$notice.css('opacity', 0);
|
|
$notice.show();
|
|
$notice.animate({'opacity': 1}, {'duration': 250, 'queue': false});
|
|
},
|
|
|
|
show_explainer_single_story_mode: function() {
|
|
var $empty = $.make("div", { className: "NB-story-list-empty" }, [
|
|
$.make('div', { className: 'NB-world' }),
|
|
'Select a story to read'
|
|
]);
|
|
|
|
this.$(".NB-story-list-empty").remove();
|
|
this.$el.append($empty);
|
|
},
|
|
|
|
resize_starred_tags: function() {
|
|
if (this.story.get('starred')) {
|
|
this.story_detail.save_view.reset_height({immediate: true});
|
|
}
|
|
},
|
|
|
|
|
|
// ==========
|
|
// = Events =
|
|
// ==========
|
|
|
|
select_story: function(story, selected) {
|
|
if (!selected) return;
|
|
|
|
// this.hide_loading(); // Not sure why this is here?
|
|
|
|
if ((NEWSBLUR.reader.story_view == 'text' &&
|
|
_.contains(['split', 'full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')))) {
|
|
if (NEWSBLUR.reader.flags['temporary_story_view']) {
|
|
NEWSBLUR.reader.switch_to_correct_view();
|
|
}
|
|
this.fetch_and_render(story);
|
|
}
|
|
}
|
|
|
|
});
|