mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
282 lines
9.7 KiB
JavaScript
282 lines
9.7 KiB
JavaScript
NEWSBLUR.Views.Sidebar = Backbone.View.extend({
|
|
|
|
el: '.NB-sidebar',
|
|
|
|
events: {
|
|
"click .NB-feeds-header-starred .NB-feedlist-collapse-icon": "collapse_starred_stories",
|
|
"click .NB-feeds-header-starred": "open_starred_stories",
|
|
"click .NB-feeds-header-read": "open_read_stories",
|
|
"click .NB-feeds-header-river-sites": "open_river_stories",
|
|
"click .NB-feeds-header-river-infrequent": "open_river_infrequent_stories",
|
|
"click .NB-feeds-header-river-blurblogs .NB-feedlist-collapse-icon": "collapse_river_blurblog",
|
|
"click .NB-feeds-header-river-blurblogs": "open_river_blurblogs_stories",
|
|
"click .NB-feeds-header-river-global": "open_river_global_stories",
|
|
"click .NB-feeds-header-river-dashboard": "show_splash_page"
|
|
},
|
|
|
|
initialize: function() {},
|
|
|
|
// ===========
|
|
// = Actions =
|
|
// ===========
|
|
|
|
check_starred_collapsed: function(options) {
|
|
options = options || {};
|
|
var collapsed = _.contains(NEWSBLUR.Preferences.collapsed_folders, 'starred');
|
|
|
|
if (collapsed) {
|
|
this.show_collapsed_starred(options);
|
|
}
|
|
|
|
return collapsed;
|
|
},
|
|
|
|
show_collapsed_starred: function(options) {
|
|
options = options || {};
|
|
var $header = NEWSBLUR.reader.$s.$starred_header;
|
|
var $folder = this.$('.NB-starred-folder');
|
|
|
|
$header.addClass('NB-folder-collapsed');
|
|
|
|
if (!options.skip_animation) {
|
|
$header.addClass('NB-feedlist-folder-title-recently-collapsed');
|
|
$header.one('mouseover', function() {
|
|
$header.removeClass('NB-feedlist-folder-title-recently-collapsed');
|
|
});
|
|
} else {
|
|
$folder.css({
|
|
display: 'none',
|
|
opacity: 0
|
|
});
|
|
}
|
|
},
|
|
|
|
check_searches_collapsed: function(options) {
|
|
options = options || {};
|
|
var collapsed = _.contains(NEWSBLUR.Preferences.collapsed_folders, 'searches');
|
|
|
|
if (collapsed) {
|
|
this.show_collapsed_searches(options);
|
|
}
|
|
|
|
return collapsed;
|
|
},
|
|
|
|
show_collapsed_searches: function(options) {
|
|
options = options || {};
|
|
var $header = NEWSBLUR.reader.$s.$starred_header;
|
|
var $folder = this.$('.NB-starred-folder');
|
|
|
|
$header.addClass('NB-folder-collapsed');
|
|
|
|
if (!options.skip_animation) {
|
|
$header.addClass('NB-feedlist-folder-title-recently-collapsed');
|
|
$header.one('mouseover', function() {
|
|
$header.removeClass('NB-feedlist-folder-title-recently-collapsed');
|
|
});
|
|
} else {
|
|
$folder.css({
|
|
display: 'none',
|
|
opacity: 0
|
|
});
|
|
}
|
|
},
|
|
|
|
check_river_blurblog_collapsed: function(options) {
|
|
options = options || {};
|
|
var show_folder_counts = NEWSBLUR.assets.preference('folder_counts');
|
|
var collapsed = _.contains(NEWSBLUR.Preferences.collapsed_folders, 'river_blurblog');
|
|
|
|
if (collapsed) {
|
|
this.show_collapsed_river_blurblog_count(options);
|
|
} else if (show_folder_counts) {
|
|
this.show_counts(options);
|
|
}
|
|
|
|
return collapsed;
|
|
},
|
|
|
|
show_collapsed_river_blurblog_count: function(options) {
|
|
options = options || {};
|
|
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
|
|
var $counts = $('.feed_counts_floater', $header);
|
|
var $river = $('.NB-feedlist-collapse-icon', $header);
|
|
var $folder = this.$('.NB-socialfeeds-folder');
|
|
|
|
$header.addClass('NB-folder-collapsed');
|
|
$counts.remove();
|
|
|
|
if (!options.skip_animation) {
|
|
// $river.animate({'opacity': 0}, {'duration': options.skip_animation ? 0 : 100});
|
|
$header.addClass('NB-feedlist-folder-title-recently-collapsed');
|
|
$header.one('mouseover', function() {
|
|
$river.css({'opacity': ''});
|
|
$header.removeClass('NB-feedlist-folder-title-recently-collapsed');
|
|
});
|
|
} else {
|
|
$folder.css({
|
|
display: 'none',
|
|
opacity: 0
|
|
});
|
|
}
|
|
|
|
this.show_counts(options);
|
|
},
|
|
|
|
show_counts: function(options) {
|
|
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
|
|
if (this.unread_count) {
|
|
this.unread_count.destroy();
|
|
}
|
|
this.unread_count = new NEWSBLUR.Views.UnreadCount({
|
|
collection: NEWSBLUR.assets.social_feeds
|
|
}).render();
|
|
var $counts = this.unread_count.$el;
|
|
|
|
if (this.options.feedbar) {
|
|
this.$('.NB-story-title-indicator-count').html($counts.clone());
|
|
} else {
|
|
$header.prepend($counts.css({
|
|
'opacity': 0
|
|
}));
|
|
}
|
|
$counts.animate({'opacity': 1}, {'duration': options.skip_animation ? 0 : 400});
|
|
},
|
|
|
|
hide_collapsed_river_blurblog_count: function() {
|
|
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
|
|
var $counts = $('.feed_counts_floater', $header);
|
|
var $river = $('.NB-feedlist-collapse-icon', $header);
|
|
|
|
$counts.animate({'opacity': 0}, {
|
|
'duration': 300
|
|
});
|
|
|
|
$river.animate({'opacity': .6}, {'duration': 400});
|
|
$header.removeClass('NB-feedlist-folder-title-recently-collapsed');
|
|
$header.one('mouseover', function() {
|
|
$river.css({'opacity': ''});
|
|
$header.removeClass('NB-feedlist-folder-title-recently-collapsed');
|
|
});
|
|
},
|
|
|
|
// ==========
|
|
// = Events =
|
|
// ==========
|
|
|
|
show_splash_page: function() {
|
|
NEWSBLUR.reader.show_splash_page();
|
|
},
|
|
|
|
open_starred_stories: function() {
|
|
return NEWSBLUR.reader.open_starred_stories();
|
|
},
|
|
|
|
open_read_stories: function() {
|
|
return NEWSBLUR.reader.open_read_stories();
|
|
},
|
|
|
|
open_river_stories: function() {
|
|
return NEWSBLUR.reader.open_river_stories();
|
|
},
|
|
|
|
open_river_infrequent_stories: function() {
|
|
return NEWSBLUR.reader.open_river_stories(null, null, {'infrequent': NEWSBLUR.assets.preference('infrequent_stories_per_month')});
|
|
},
|
|
|
|
collapse_river_blurblog: function(e, options) {
|
|
e.stopPropagation();
|
|
options = options || {};
|
|
|
|
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
|
|
var $folder = this.$('.NB-socialfeeds-folder');
|
|
|
|
// Hiding / Collapsing
|
|
if (options.force_collapse ||
|
|
($folder.length &&
|
|
$folder.eq(0).is(':visible'))) {
|
|
NEWSBLUR.assets.collapsed_folders('river_blurblog', true);
|
|
$header.addClass('NB-folder-collapsed');
|
|
$folder.animate({'opacity': 0}, {
|
|
'queue': false,
|
|
'duration': options.force_collapse ? 0 : 200,
|
|
'complete': _.bind(function() {
|
|
this.show_collapsed_river_blurblog_count();
|
|
$folder.slideUp({
|
|
'duration': 270,
|
|
'easing': 'easeOutQuart'
|
|
});
|
|
}, this)
|
|
});
|
|
}
|
|
// Showing / Expanding
|
|
else if ($folder.length &&
|
|
(!$folder.eq(0).is(':visible'))) {
|
|
NEWSBLUR.assets.collapsed_folders('river_blurblog', false);
|
|
$header.removeClass('NB-folder-collapsed');
|
|
if (!NEWSBLUR.assets.preference('folder_counts')) {
|
|
this.hide_collapsed_river_blurblog_count();
|
|
}
|
|
$folder.css({'opacity': 0}).slideDown({
|
|
'duration': 240,
|
|
'easing': 'easeInOutCubic',
|
|
'complete': function() {
|
|
$folder.animate({'opacity': 1}, {'queue': false, 'duration': 200});
|
|
}
|
|
});
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
collapse_starred_stories: function(e, options) {
|
|
e.stopPropagation();
|
|
options = options || {};
|
|
|
|
var $header = NEWSBLUR.reader.$s.$starred_header;
|
|
var $folder = this.$('.NB-starred-folder');
|
|
|
|
// Hiding / Collapsing
|
|
if (options.force_collapse ||
|
|
($folder.length &&
|
|
$folder.eq(0).is(':visible'))) {
|
|
NEWSBLUR.assets.collapsed_folders('starred', true);
|
|
$header.addClass('NB-folder-collapsed');
|
|
$folder.animate({'opacity': 0}, {
|
|
'queue': false,
|
|
'duration': options.force_collapse ? 0 : 200,
|
|
'complete': _.bind(function() {
|
|
this.show_collapsed_starred();
|
|
$folder.slideUp({
|
|
'duration': 270,
|
|
'easing': 'easeOutQuart'
|
|
});
|
|
}, this)
|
|
});
|
|
}
|
|
// Showing / Expanding
|
|
else if ($folder.length &&
|
|
(!$folder.eq(0).is(':visible'))) {
|
|
NEWSBLUR.assets.collapsed_folders('starred', false);
|
|
$header.removeClass('NB-folder-collapsed');
|
|
$folder.css({'opacity': 0}).slideDown({
|
|
'duration': 240,
|
|
'easing': 'easeInOutCubic',
|
|
'complete': function() {
|
|
$folder.animate({'opacity': 1}, {'queue': false, 'duration': 200});
|
|
}
|
|
});
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
open_river_blurblogs_stories: function() {
|
|
return NEWSBLUR.reader.open_river_blurblogs_stories();
|
|
},
|
|
|
|
open_river_global_stories: function() {
|
|
return NEWSBLUR.reader.open_river_blurblogs_stories({'global': true});
|
|
}
|
|
|
|
});
|