NewsBlur/media/js/newsblur/common/router.js
2018-01-18 15:34:58 -08:00

150 lines
No EOL
4.9 KiB
JavaScript

NEWSBLUR.Router = Backbone.Router.extend({
routes: {
"add/?": "add_site",
"try/?": "try_site",
"site/:site_id/:slug": "site",
"site/:site_id/": "site",
"site/:site_id": "site",
"read": "read",
"saved": "starred",
"saved/:tag": "starred",
"folder/saved": "starred",
"folder/saved/:tag": "starred",
"folder/:folder_name": "folder",
"folder/:folder_name/": "folder",
"social/:user_id/:slug": "social",
"social/:user_id/": "social",
"social/:user_id": "social",
"user/*user": "user"
},
add_site: function() {
NEWSBLUR.log(["add", window.location, $.getQueryString('url')]);
NEWSBLUR.reader.open_add_feed_modal({url: $.getQueryString('url')});
},
try_site: function() {
NEWSBLUR.log(["try", window.location]);
},
site: function(site_id, slug) {
// NEWSBLUR.log(["site", site_id, slug]);
site_id = parseInt(site_id, 10);
var feed = NEWSBLUR.assets.get_feed(site_id);
var query = this.extract_query();
if (query) {
NEWSBLUR.reader.flags.searching = true;
NEWSBLUR.reader.flags.search = query;
}
if (feed) {
NEWSBLUR.reader.open_feed(site_id, {router: true, force: true, search: query});
} else {
NEWSBLUR.reader.load_feed_in_tryfeed_view(site_id, {
router: true,
force: true,
search: query,
feed: {
feed_title: _.string.humanize(slug || "")
}
});
}
},
read: function() {
var options = {
router: true
};
var query = this.extract_query();
if (query) {
NEWSBLUR.reader.flags.searching = true;
NEWSBLUR.reader.flags.search = query;
options['search'] = query;
}
console.log(["read stories", options]);
NEWSBLUR.reader.open_read_stories(options);
},
starred: function(tag) {
var options = {
router: true,
tag: tag
};
var query = this.extract_query();
if (query) {
NEWSBLUR.reader.flags.searching = true;
NEWSBLUR.reader.flags.search = query;
options['search'] = query;
}
console.log(["starred", options, tag]);
NEWSBLUR.reader.open_starred_stories(options);
},
folder: function(folder_name) {
folder_name = folder_name.replace(/-/g, ' ');
// NEWSBLUR.log(["folder", folder_name]);
var options = {router: true};
var query = this.extract_query();
if (query) {
NEWSBLUR.reader.flags.searching = true;
NEWSBLUR.reader.flags.search = query;
options['search'] = query;
}
if (folder_name == "everything") {
NEWSBLUR.reader.open_river_stories(null, null, options);
} else if (folder_name == "infrequent") {
options.infrequent = NEWSBLUR.assets.preference('infrequent_stories_per_month');
NEWSBLUR.reader.open_river_stories(null, null, options);
} else if (folder_name == "blurblogs") {
NEWSBLUR.reader.open_river_blurblogs_stories(options);
} else if (folder_name == "global blurblogs") {
options['global'] = true;
NEWSBLUR.reader.open_river_blurblogs_stories(options);
} else {
var folder = NEWSBLUR.assets.get_folder(folder_name);
if (folder) {
NEWSBLUR.reader.open_river_stories(folder.folder_view.$el, folder, options);
}
}
},
social: function(user_id, slug) {
NEWSBLUR.log(["router:social", user_id, slug]);
var query = this.extract_query();
if (query) {
NEWSBLUR.reader.flags.searching = true;
NEWSBLUR.reader.flags.search = query;
}
var feed_id = "social:" + user_id;
if (NEWSBLUR.assets.get_feed(feed_id)) {
NEWSBLUR.reader.open_social_stories(feed_id, {router: true, force: true, search: query});
} else {
NEWSBLUR.reader.load_social_feed_in_tryfeed_view(feed_id, {
router: true,
force: true,
search: query,
feed: {
username: _.string.humanize(slug),
id: feed_id,
user_id: parseInt(user_id, 10),
feed_title: _.string.humanize(slug)
}
});
}
},
extract_query: function() {
var search = $.getQueryString('search');
var sanitized = search && search.replace(/[^\w\s]+/g, " ");
// console.log('extract_query', search, sanitized);
return sanitized;
},
user: function(user) {
NEWSBLUR.log(["user", user]);
}
});