mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Deleting feeds.
This commit is contained in:
parent
220a00c682
commit
3f817f2937
7 changed files with 71 additions and 39 deletions
|
@ -300,8 +300,6 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
|||
data['include_favicons'] = true;
|
||||
}
|
||||
|
||||
if (this.feeds.length) this.feeds.remove();
|
||||
|
||||
this.feeds.fetch({
|
||||
success: pre_callback,
|
||||
error: error_callback
|
||||
|
@ -703,8 +701,7 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
|||
});
|
||||
},
|
||||
|
||||
delete_feed: function(feed_id, in_folder, callback, duplicate_feed) {
|
||||
if (!duplicate_feed) this.feeds.get(feed_id).destroy();
|
||||
delete_feed: function(feed_id, in_folder, callback) {
|
||||
if (NEWSBLUR.Globals.is_authenticated) {
|
||||
this.make_request('/reader/delete_feed', {
|
||||
'feed_id': feed_id,
|
||||
|
@ -782,7 +779,7 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
|||
|
||||
move_feed_to_folder: function(feed_id, in_folder, to_folder, callback) {
|
||||
var pre_callback = _.bind(function(data) {
|
||||
this.folders = data.folders;
|
||||
this.folders.reset(data.folders);
|
||||
return callback();
|
||||
}, this);
|
||||
|
||||
|
@ -795,7 +792,7 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
|||
|
||||
move_folder_to_folder: function(folder_name, in_folder, to_folder, callback) {
|
||||
var pre_callback = _.bind(function(data) {
|
||||
this.folders = data.folders;
|
||||
this.folders.reset(data.folders);
|
||||
return callback();
|
||||
}, this);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEWSBLUR.Models.Feed = Backbone.Model.extend({
|
||||
|
||||
initialize: function() {
|
||||
_.bindAll(this, 'on_change');
|
||||
_.bindAll(this, 'on_change', 'delete_feed');
|
||||
this.bind('change', this.on_change);
|
||||
this.views = [];
|
||||
},
|
||||
|
@ -10,6 +10,25 @@ NEWSBLUR.Models.Feed = Backbone.Model.extend({
|
|||
// NEWSBLUR.log(['Feed Change', this.changedAttributes(), this.previousAttributes()]);
|
||||
},
|
||||
|
||||
delete_feed: function(options) {
|
||||
options = options || {};
|
||||
var view = options.view || this.get_view();
|
||||
console.log(["Delete Feed", this, view, view.options.folder_title]);
|
||||
|
||||
NEWSBLUR.assets.delete_feed(this.id, view.options.folder_title);
|
||||
view.delete_feed();
|
||||
},
|
||||
|
||||
get_view: function($feed) {
|
||||
return _.detect(this.views, function(view) {
|
||||
if ($feed) {
|
||||
return view.el == $feed.get(0);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
is_social: function() {
|
||||
return false;
|
||||
},
|
||||
|
@ -37,9 +56,16 @@ NEWSBLUR.Collections.Feeds = Backbone.Collection.extend({
|
|||
},
|
||||
|
||||
parse: function(data) {
|
||||
_.each(data.feeds, function(feed) {
|
||||
feed.selected = false;
|
||||
});
|
||||
return data.feeds;
|
||||
},
|
||||
|
||||
selected: function() {
|
||||
return this.detect(function(feed) { return feed.get('selected'); });
|
||||
},
|
||||
|
||||
has_chosen_feeds: function() {
|
||||
return this.any(function(feed) {
|
||||
return feed.get('active');
|
||||
|
@ -47,9 +73,7 @@ NEWSBLUR.Collections.Feeds = Backbone.Collection.extend({
|
|||
},
|
||||
|
||||
deselect: function() {
|
||||
this.chain().select(function(feed) {
|
||||
return feed.get('selected');
|
||||
}).each(function(feed){
|
||||
this.each(function(feed){
|
||||
feed.set('selected', false);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -5,14 +5,20 @@ NEWSBLUR.Models.SocialSubscription = Backbone.Model.extend({
|
|||
this.set('page_url', '/social/page/' + this.get('user_id'));
|
||||
}
|
||||
|
||||
_.bindAll(this, 'on_change');
|
||||
_.bindAll(this, 'on_change', 'on_remove');
|
||||
this.bind('change', this.on_change);
|
||||
this.bind('remove', this.on_remove);
|
||||
this.views = [];
|
||||
},
|
||||
|
||||
on_change: function() {
|
||||
NEWSBLUR.log(['Social Feed Change', this.changedAttributes(), this.previousAttributes()]);
|
||||
},
|
||||
|
||||
on_remove: function() {
|
||||
console.log(["Remove Feed", this, this.views]);
|
||||
_.each(this.views, function(view) { view.remove(); });
|
||||
},
|
||||
|
||||
is_social: function() {
|
||||
return true;
|
||||
|
|
|
@ -5265,18 +5265,12 @@
|
|||
$confirm.slideUp(500);
|
||||
},
|
||||
|
||||
manage_menu_delete_feed: function(feed, $feed) {
|
||||
manage_menu_delete_feed: function(feed_id, $feed) {
|
||||
var self = this;
|
||||
var feed_id = feed || this.active_feed;
|
||||
$feed = $feed || this.find_feed_in_feed_list(feed_id);
|
||||
|
||||
var in_folder = $feed.parents('li.folder').eq(0).find('.folder_title_text').eq(0).text();
|
||||
var duplicate_feed = this.find_feed_in_feed_list(feed_id).length > 1;
|
||||
|
||||
this.delete_feed(feed_id, $feed);
|
||||
this.model.delete_feed(feed_id, in_folder, function() {
|
||||
self.delete_feed(feed_id, $feed);
|
||||
}, duplicate_feed);
|
||||
feed_id = feed_id || this.active_feed;
|
||||
var feed = this.model.get_feed(feed_id);
|
||||
var feed_view = feed.get_view($feed);
|
||||
feed.delete_feed({view: feed_view});
|
||||
},
|
||||
|
||||
show_confirm_unfollow_menu_item: function() {
|
||||
|
@ -5326,17 +5320,6 @@
|
|||
});
|
||||
},
|
||||
|
||||
delete_feed: function(feed_id, $feed) {
|
||||
var self = this;
|
||||
$feed = $feed || this.find_feed_in_feed_list(feed_id);
|
||||
$feed.slideUp(500);
|
||||
|
||||
if (this.active_feed == parseInt($feed.data('id'), 10)) {
|
||||
this.reset_feed();
|
||||
this.show_splash_page();
|
||||
}
|
||||
},
|
||||
|
||||
delete_folder: function(folder_name, $folder) {
|
||||
var self = this;
|
||||
var feeds = this.get_feed_ids_in_folder($folder);
|
||||
|
|
|
@ -67,7 +67,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
|
|||
}
|
||||
_.defer(_.bind(function() {
|
||||
NEWSBLUR.reader.open_dialog_after_feeds_loaded();
|
||||
|
||||
this.selected();
|
||||
if (NEWSBLUR.reader.socket) {
|
||||
NEWSBLUR.reader.send_socket_active_feeds();
|
||||
} else {
|
||||
|
@ -137,7 +137,14 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
|
|||
|
||||
selected: function(model, value, options) {
|
||||
var feed_view;
|
||||
|
||||
options = options || {};
|
||||
|
||||
if (!model) {
|
||||
model = NEWSBLUR.assets.feeds.selected();
|
||||
console.log(["selected models", model]);
|
||||
}
|
||||
if (!model) return;
|
||||
|
||||
if (options.$feed) {
|
||||
feed_view = _.detect(model.views, function(view) {
|
||||
return view.el == options.$feed[0];
|
||||
|
@ -153,6 +160,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
|
|||
scroll_to_show_selected_feed: function(feed_view) {
|
||||
var $feed_lists = this.$s.$feed_lists;
|
||||
var is_feed_visible = $feed_lists.isScrollVisible(feed_view.$el);
|
||||
console.log(["scroll_to_show_selected_feed", feed_view, feed_view.$el, is_feed_visible]);
|
||||
if (!is_feed_visible) {
|
||||
var container_offset = $feed_lists.position().top;
|
||||
var scroll = feed_view.$el.position().top;
|
||||
|
|
|
@ -14,7 +14,7 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
|
|||
},
|
||||
|
||||
initialize: function() {
|
||||
_.bindAll(this, 'render', 'changed');
|
||||
_.bindAll(this, 'render', 'changed', 'delete_feed');
|
||||
this.model.bind('change', this.changed);
|
||||
|
||||
if (this.model.is_social() && !this.model.get('feed_title')) {
|
||||
|
@ -205,6 +205,15 @@ NEWSBLUR.Views.Feed = Backbone.View.extend({
|
|||
toplevel: this.options.depth == 0
|
||||
});
|
||||
return false;
|
||||
},
|
||||
|
||||
delete_feed: function() {
|
||||
this.$el.slideUp(500);
|
||||
|
||||
if (this.model.get('selected')) {
|
||||
NEWSBLUR.reader.reset_feed();
|
||||
NEWSBLUR.reader.show_splash_page();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
|
@ -14,10 +14,15 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
|
|||
render: function() {
|
||||
var depth = this.options.depth;
|
||||
this.options.collapsed = _.contains(NEWSBLUR.Preferences.collapsed_folders, this.options.title);
|
||||
var $feeds = this.collection.map(function(item) {
|
||||
var $feeds = this.collection.map(_.bind(function(item) {
|
||||
var $model;
|
||||
if (item.is_feed()) {
|
||||
var feed_view = new NEWSBLUR.Views.Feed({model: item.feed, type: 'feed', depth: depth}).render();
|
||||
var feed_view = new NEWSBLUR.Views.Feed({
|
||||
model: item.feed,
|
||||
type: 'feed',
|
||||
depth: depth,
|
||||
folder_title: this.options.title
|
||||
}).render();
|
||||
item.feed.views.push(feed_view);
|
||||
return feed_view.el;
|
||||
} else {
|
||||
|
@ -27,7 +32,7 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
|
|||
title: item.get('folder_title')
|
||||
}).render().el;
|
||||
}
|
||||
});
|
||||
}, this));
|
||||
$feeds.push(this.make('div', { 'class': 'feed NB-empty' }));
|
||||
|
||||
var $folder = this.render_folder();
|
||||
|
|
Loading…
Add table
Reference in a new issue