2012-05-17 20:50:08 -07:00
|
|
|
NEWSBLUR.Models.FeedOrFolder = Backbone.Model.extend({
|
|
|
|
|
|
|
|
initialize: function(model) {
|
|
|
|
if (_.isNumber(model)) {
|
2012-05-18 16:59:39 -07:00
|
|
|
this.feed = NEWSBLUR.assets.feeds.get(model);
|
2012-05-19 10:29:27 -07:00
|
|
|
this.feed.set('subscribed', true, {silent: true});
|
2012-05-18 16:59:39 -07:00
|
|
|
this.set('is_feed', true);
|
|
|
|
} else if (model) {
|
|
|
|
var title = _.keys(model)[0];
|
|
|
|
var children = model[title];
|
|
|
|
this.set('folder_title', title);
|
|
|
|
this.folders = new NEWSBLUR.Collections.Folders([], {title: title});
|
|
|
|
this.folders.parse(children);
|
2012-05-17 20:50:08 -07:00
|
|
|
}
|
2012-05-18 16:59:39 -07:00
|
|
|
},
|
|
|
|
|
|
|
|
is_feed: function() {
|
|
|
|
return this.get('is_feed', false);
|
2012-05-17 20:50:08 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
NEWSBLUR.Collections.Folders = Backbone.Collection.extend({
|
|
|
|
|
2012-05-18 16:59:39 -07:00
|
|
|
options: {
|
|
|
|
title: ''
|
|
|
|
},
|
|
|
|
|
|
|
|
initialize: function() {
|
|
|
|
this.comparator = NEWSBLUR.Collections.Folders.comparator;
|
|
|
|
},
|
|
|
|
|
2012-05-17 20:50:08 -07:00
|
|
|
model: NEWSBLUR.Models.FeedOrFolder,
|
|
|
|
|
|
|
|
parse: function(models) {
|
|
|
|
this.reset(models);
|
|
|
|
}
|
|
|
|
|
2012-05-18 16:59:39 -07:00
|
|
|
}, {
|
|
|
|
|
|
|
|
comparator: function(modelA, modelB) {
|
|
|
|
var sort_order = NEWSBLUR.assets.preference('feed_order');
|
|
|
|
var feedA, feedB;
|
|
|
|
if (modelA && modelA.e instanceof jQuery) feedA = NEWSBLUR.assets.feeds.get(parseInt(a.e.data('id'), 10));
|
|
|
|
if (modelB && modelB.e instanceof jQuery) feedB = NEWSBLUR.assets.feeds.get(parseInt(b.e.data('id'), 10));
|
|
|
|
if (modelA && modelA.is_feed()) feedA = modelA.model;
|
|
|
|
if (modelB && modelB.is_feed()) feedB = modelB.model;
|
|
|
|
|
|
|
|
// console.log(["feeds", sort_order, modelA, modelB, feedA, feedB]);
|
|
|
|
|
|
|
|
if (sort_order == 'ALPHABETICAL' || !sort_order) {
|
|
|
|
if (feedA && feedB) {
|
|
|
|
return feedA.get('feed_title').toLowerCase() > feedB.get('feed_title').toLowerCase() ? 1 : -1;
|
|
|
|
} else if (feedA && !feedB) {
|
|
|
|
return -1;
|
|
|
|
} else if (!feedA && feedB) {
|
|
|
|
return 1;
|
|
|
|
} else if (!feedA && !feedB && modelA && modelB && !modelA.is_feed() && !modelB.is_feed() && !(modelA.e instanceof jQuery) && !(modelB.e instanceof jQuery)) {
|
|
|
|
return modelA.get('folder_title').toLowerCase() > modelB.get('folder_title').toLowerCase() ? 1 : -1;
|
|
|
|
}
|
|
|
|
} else if (sort_order == 'MOSTUSED') {
|
|
|
|
if (feedA && feedB) {
|
|
|
|
return feedA.get('feed_opens') < feedB.get('feed_opens') ? 1 :
|
|
|
|
(feedA.get('feed_opens') > feedB.get('feed_opens') ? -1 :
|
|
|
|
(feedA.get('feed_title').toLowerCase() > feedB.get('feed_title').toLowerCase() ? 1 : -1));
|
|
|
|
} else if (feedA && !feedB) {
|
|
|
|
return -1;
|
|
|
|
} else if (!feedA && feedB) {
|
|
|
|
return 1;
|
|
|
|
} else if (!feedA && !feedB && modelA && modelB && !modelA.is_feed() && !modelB.is_feed() && !(modelA.e instanceof jQuery) && !(modelB.e instanceof jQuery)) {
|
|
|
|
return modelA.get('folder_title').toLowerCase() > modelB.get('folder_title').toLowerCase() ? 1 : -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-05-17 20:50:08 -07:00
|
|
|
});
|