Fixing scroll to feed for social feeds. Also fixing manage menu for folders.

This commit is contained in:
Samuel Clay 2012-05-23 16:02:32 -07:00
parent 9434ee5ef1
commit 620d07a2d2
5 changed files with 78 additions and 33 deletions

View file

@ -34,6 +34,13 @@ NEWSBLUR.Collections.SocialSubscriptions = Backbone.Collection.extend({
model : NEWSBLUR.Models.SocialSubscription,
parse: function(models) {
_.each(models, function(feed) {
feed.selected = false;
});
return models;
},
comparator: function(a, b) {
var sort_order = NEWSBLUR.reader.model.preference('feed_order');
var title_a = a.get('feed_title') || '';
@ -54,6 +61,10 @@ NEWSBLUR.Collections.SocialSubscriptions = Backbone.Collection.extend({
return 0;
},
selected: function() {
return this.detect(function(feed) { return feed.get('selected'); });
},
deselect: function() {
this.chain().select(function(feed) {
return feed.get('selected');

View file

@ -3499,7 +3499,7 @@
$indicator.removeClass('unread_threshold_positive')
.removeClass('unread_threshold_neutral')
.addClass('unread_threshold_negative');
$indicator.animate({'opacity': 0}, {'duration': 500});
$indicator.animate({'opacity': 0}, {'duration': 500}).css('display', 'none');
}
},
@ -6825,17 +6825,6 @@
self.open_river_stories();
});
// = Feed Bar =====================================================
$.targetIs(e, { tagSelector: '.NB-feed-like' }, function($t, $p){
e.preventDefault();
self.open_feed_intelligence_modal(1);
});
$.targetIs(e, { tagSelector: '.NB-feed-dislike' }, function($t, $p){
e.preventDefault();
self.open_feed_intelligence_modal(-1);
});
// = Stories ======================================================
var story_prevent_bubbling = false;

View file

@ -22,6 +22,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
}, this));
NEWSBLUR.assets.load_feeds();
NEWSBLUR.assets.social_feeds.bind('change:selected', this.selected);
NEWSBLUR.assets.feeds.bind('change:selected', this.selected);
},
@ -140,10 +141,10 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
options = options || {};
if (!model) {
model = NEWSBLUR.assets.feeds.selected();
model = NEWSBLUR.assets.feeds.selected() || NEWSBLUR.assets.social_feeds.selected();
console.log(["selected models", model]);
}
if (!model) return;
if (!model || !model.get('selected')) return;
if (options.$feed) {
feed_view = _.detect(model.views, function(view) {
@ -154,7 +155,9 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
feed_view = model.views[0];
}
this.scroll_to_show_selected_feed(feed_view);
if (feed_view) {
this.scroll_to_show_selected_feed(feed_view);
}
},
scroll_to_show_selected_feed: function(feed_view) {

View file

@ -9,8 +9,8 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
"contextmenu" : "show_manage_menu",
"click .NB-feedlist-manage-icon" : "show_manage_menu",
"click" : "open",
"mouseenter" : "add_hover_inverse_to_feed",
"mouseleave" : "remove_hover_inverse_from_feed"
"mouseenter" : "add_hover_inverse",
"mouseleave" : "remove_hover_inverse"
},
initialize: function() {
@ -172,20 +172,6 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
$(this.el).addClass(extra_classes);
},
add_hover_inverse_to_feed: function() {
if (NEWSBLUR.app.feed_list.is_sorting()) {
return;
}
if (this.$el.offset().top > $(window).height() - 314) {
this.$el.addClass('NB-hover-inverse');
}
},
remove_hover_inverse_from_feed: function() {
this.$el.removeClass('NB-hover-inverse');
},
// ===========
// = Actions =
// ===========
@ -196,6 +182,8 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
// ==========
open: function(e) {
if (this.options.type != 'feed') return;
if (NEWSBLUR.hotkeys.command) {
NEWSBLUR.reader.open_unread_stories_in_tabs(this.id);
} else if (this.model.is_social()) {
@ -209,7 +197,7 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
e.preventDefault();
e.stopPropagation();
// console.log(["showing manage menu", this.model.is_social() ? 'socialfeed' : 'feed', $(this.el), this]);
NEWSBLUR.reader.show_manage_menu(this.model.is_social() ? 'socialfeed' : 'feed', $(this.el), {
NEWSBLUR.reader.show_manage_menu(this.model.is_social() ? 'socialfeed' : 'feed', this.$el, {
feed_id: this.model.id,
toplevel: this.options.depth == 0
});
@ -223,6 +211,20 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
NEWSBLUR.reader.reset_feed();
NEWSBLUR.reader.show_splash_page();
}
},
add_hover_inverse: function() {
if (NEWSBLUR.app.feed_list.is_sorting()) {
return;
}
if (this.$el.offset().top > $(window).height() - 314) {
this.$el.addClass('NB-hover-inverse');
}
},
remove_hover_inverse: function() {
this.$el.removeClass('NB-hover-inverse');
}
});

View file

@ -11,6 +11,14 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
root: false
},
events: {
"contextmenu" : "show_manage_menu",
"click .NB-feedlist-manage-icon" : "show_manage_menu",
"click" : "open",
"mouseenter" : "add_hover_inverse",
"mouseleave" : "remove_hover_inverse"
},
render: function() {
var depth = this.options.depth;
this.options.collapsed = _.contains(NEWSBLUR.Preferences.collapsed_folders, this.options.title);
@ -45,7 +53,7 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
render_folder: function($feeds) {
var $folder = _.template('\
<% if (!root) { %>\
<div class="folder_title <% if (depth == 0) { %>NB-toplevel<% } %>">\
<div class="folder_title <% if (depth <= 1) { %>NB-toplevel<% } %>">\
<div class="NB-folder-icon"></div>\
<div class="NB-feedlist-collapse-icon" title="<% if (is_collapsed) { %>Expand Folder<% } else {%>Collapse Folder<% } %>"></div>\
<div class="NB-feedlist-manage-icon"></div>\
@ -62,6 +70,38 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
});
return $folder;
},
// ==========
// = Events =
// ==========
open: function(e) {
},
show_manage_menu: function(e) {
e.preventDefault();
e.stopPropagation();
// console.log(["showing manage menu", this.model.is_social() ? 'socialfeed' : 'feed', $(this.el), this]);
NEWSBLUR.reader.show_manage_menu('folder', this.$el, {
toplevel: this.options.depth == 0
});
return false;
},
add_hover_inverse: function() {
if (NEWSBLUR.app.feed_list.is_sorting()) {
return;
}
if (this.$el.offset().top > $(window).height() - 314) {
this.$el.addClass('NB-hover-inverse');
}
},
remove_hover_inverse: function() {
this.$el.removeClass('NB-hover-inverse');
}
});