mirror of
https://github.com/viq/NewsBlur.git
synced 2025-04-13 09:38:09 +00:00
7357 lines
346 KiB
JavaScript
7357 lines
346 KiB
JavaScript
(function ($) {
|
|
|
|
NEWSBLUR.Reader = Backbone.Router.extend({
|
|
|
|
init: function (options) {
|
|
|
|
var defaults = {};
|
|
// if (console && console.clear && _.isFunction(console.clear)) console.clear();
|
|
|
|
// ===========
|
|
// = Globals =
|
|
// ===========
|
|
|
|
NEWSBLUR.assets = new NEWSBLUR.AssetModel();
|
|
this.model = NEWSBLUR.assets;
|
|
this.story_view = 'page';
|
|
this.story_layout = 'split';
|
|
this.options = _.extend({}, defaults, options);
|
|
this.$s = {
|
|
$body: $('body'),
|
|
$layout: $('.NB-layout'),
|
|
$sidebar: $('.NB-sidebar'),
|
|
$feed_lists: $('.NB-feedlists'),
|
|
$feed_list: $('#feed_list'),
|
|
$social_feeds: $('.NB-socialfeeds-folder'),
|
|
$starred_feeds: $('.NB-starred-folder'),
|
|
$searches_feeds: $('.NB-searches-folder'),
|
|
$story_titles: $('#story_titles'),
|
|
$story_titles_header: $('.NB-story-titles-header'),
|
|
$content_pane: $('.content-pane'),
|
|
$story_taskbar: $('#story_taskbar'),
|
|
$story_pane: $('#story_pane .NB-story-pane-container'),
|
|
$feed_view: $('.NB-feed-story-view'),
|
|
$feed_scroll: $('.NB-feed-stories-container'),
|
|
$feed_stories: $('.NB-feed-stories'),
|
|
$feed_iframe: $('.NB-feed-iframe'),
|
|
$story_view: $('.NB-story-view'),
|
|
$story_iframe: $('.NB-story-iframe'),
|
|
$text_view: $('.NB-text-view'),
|
|
$intelligence_slider: $('.NB-intelligence-slider'),
|
|
$mouse_indicator: $('#mouse-indicator'),
|
|
$feed_link_loader: $('.NB-feeds-list-loader'),
|
|
$feed_link_error: $('.NB-feeds-list-error'),
|
|
$feeds_progress: $('#NB-progress'),
|
|
$dashboard: $('.NB-feeds-header-dashboard'),
|
|
$header_dashboard: $('.NB-feeds-header-river-dashboard'),
|
|
$river_sites_header: $('.NB-feeds-header-river-sites'),
|
|
$river_infrequent_header: $('.NB-feeds-header-river-infrequent'),
|
|
$river_blurblogs_header: $('.NB-feeds-header-river-blurblogs'),
|
|
$river_global_header: $('.NB-feeds-header-river-global'),
|
|
$starred_header: $('.NB-feeds-header-starred'),
|
|
$searches_header: $('.NB-feeds-header-searches'),
|
|
$read_header: $('.NB-feeds-header-read'),
|
|
$tryfeed_header: $('.NB-feeds-header-tryfeed'),
|
|
$taskbar: $('.NB-taskbar-view'),
|
|
$feedbar: $('.NB-feedbar'),
|
|
$add_button: $('.NB-task-add'),
|
|
$taskbar_options: $('.NB-taskbar-options'),
|
|
$search_header: $('.NB-search-header')
|
|
};
|
|
this.flags = {
|
|
'bouncing_callout': false,
|
|
'has_unfetched_feeds': false,
|
|
'count_unreads_after_import_working': false,
|
|
'sidebar_closed': this.options.hide_sidebar,
|
|
'splash_page_frontmost': true
|
|
};
|
|
this.locks = {};
|
|
this.counts = {
|
|
'page': 1,
|
|
'feature_page': 0,
|
|
'unfetched_feeds': 0,
|
|
'fetched_feeds': 0,
|
|
'recommended_feed_page': 0,
|
|
'interactions_page': 1,
|
|
'activities_page': 1,
|
|
'socket_reconnects': 0
|
|
};
|
|
this.cache = {
|
|
'iframe_story_positions': {},
|
|
'feed_view_story_positions': {},
|
|
'iframe_story_positions_keys': [],
|
|
'feed_view_story_positions_keys': [],
|
|
'river_feeds_with_unreads': [],
|
|
'$feed_in_social_feed_list': {}
|
|
};
|
|
this.views = {};
|
|
this.layout = {};
|
|
this.constants = {
|
|
FEED_REFRESH_INTERVAL: (1000 * 60) * 1, // 1 minute
|
|
FILL_OUT_PAGES: 100,
|
|
FIND_NEXT_UNREAD_STORY_TRIES: 100,
|
|
RIVER_STORIES_FOR_STANDARD_ACCOUNT: 3,
|
|
MIN_FEED_LIST_SIZE: 225,
|
|
MIN_STORY_LIST_SIZE: 68
|
|
};
|
|
|
|
// ==================
|
|
// = Event Handlers =
|
|
// ==================
|
|
|
|
$(window).bind('resize.reader', _.throttle($.rescope(this.resize_window, this), 1000));
|
|
this.$s.$body.bind('click.reader', $.rescope(this.handle_clicks, this));
|
|
this.$s.$body.bind('keyup.reader', $.rescope(this.handle_keyup, this));
|
|
this.handle_keystrokes();
|
|
|
|
// ==================
|
|
// = Initialization =
|
|
// ==================
|
|
|
|
var refresh_page = this.check_and_load_ssl();
|
|
if (refresh_page) return;
|
|
this.load_javascript_elements_on_page();
|
|
this.apply_resizable_layout();
|
|
this.add_body_classes();
|
|
NEWSBLUR.app.sidebar_header = new NEWSBLUR.Views.SidebarHeader({
|
|
feed_collection: NEWSBLUR.assets.feeds,
|
|
socialfeed_collection: NEWSBLUR.assets.social_feeds
|
|
});
|
|
NEWSBLUR.app.sidebar = new NEWSBLUR.Views.Sidebar();
|
|
NEWSBLUR.app.feed_list = new NEWSBLUR.Views.FeedList({ el: this.$s.$feed_list[0] });
|
|
NEWSBLUR.app.story_titles = new NEWSBLUR.Views.StoryTitlesView({
|
|
el: this.$s.$story_titles.find('.NB-story-titles'),
|
|
collection: NEWSBLUR.assets.stories
|
|
});
|
|
NEWSBLUR.app.story_list = new NEWSBLUR.Views.StoryListView({ collection: NEWSBLUR.assets.stories });
|
|
NEWSBLUR.app.original_tab_view = new NEWSBLUR.Views.OriginalTabView({ collection: NEWSBLUR.assets.stories });
|
|
NEWSBLUR.app.story_tab_view = new NEWSBLUR.Views.StoryTabView({ collection: NEWSBLUR.assets.stories });
|
|
NEWSBLUR.app.text_tab_view = new NEWSBLUR.Views.TextTabView({
|
|
el: this.$s.$text_view,
|
|
collection: NEWSBLUR.assets.stories
|
|
});
|
|
NEWSBLUR.app.feed_selector = new NEWSBLUR.Views.FeedSelector();
|
|
NEWSBLUR.app.follow_requests_module = new NEWSBLUR.Views.FollowRequestsModule();
|
|
NEWSBLUR.app.dashboard_search = new NEWSBLUR.Views.DashboardSearch();
|
|
NEWSBLUR.app.taskbar_info = new NEWSBLUR.Views.ReaderTaskbarInfo().render();
|
|
NEWSBLUR.app.story_titles_header = new NEWSBLUR.Views.StoryTitlesHeader();
|
|
NEWSBLUR.app.search_header = new NEWSBLUR.Views.FeedSearchHeader();
|
|
|
|
NEWSBLUR.assets.feeds.bind('reset', _.bind(function () {
|
|
this.load_dashboard_rivers();
|
|
this.load_intelligence_slider();
|
|
}, this));
|
|
|
|
this.handle_mouse_indicator_hover();
|
|
this.handle_login_and_signup_forms();
|
|
this.handle_wakeup();
|
|
this.apply_story_styling();
|
|
// this.load_recommended_feeds();
|
|
this.setup_dashboard_graphs();
|
|
this.setup_feedback_table();
|
|
this.setup_howitworks_hovers();
|
|
this.setup_unfetched_feed_check();
|
|
this.switch_story_layout();
|
|
this.load_delayed_stylesheets();
|
|
this.load_theme();
|
|
},
|
|
|
|
// ========
|
|
// = Page =
|
|
// ========
|
|
|
|
logout: function () {
|
|
console.log(['Logout']);
|
|
window.location.href = "/reader/logout";
|
|
},
|
|
|
|
check_and_load_ssl: function () {
|
|
if (window.location.protocol == 'http:' && this.model.preference('ssl')) {
|
|
window.location.href = window.location.href.replace('http:', 'https:');
|
|
return true;
|
|
}
|
|
},
|
|
|
|
load_javascript_elements_on_page: function () {
|
|
$('.NB-javascript').removeClass('NB-javascript');
|
|
},
|
|
|
|
resize_window: function () {
|
|
var flag;
|
|
var view = this.story_view;
|
|
|
|
if (this.flags['page_view_showing_feed_view']) {
|
|
view = 'feed';
|
|
flag = 'page';
|
|
} else if (this.flags['feed_view_showing_story_view']) {
|
|
view = 'story';
|
|
flag = 'story';
|
|
} else if (this.flags['temporary_story_view']) {
|
|
view = 'text';
|
|
flag = 'text';
|
|
}
|
|
|
|
this.flags.scrolling_by_selecting_story_title = true;
|
|
clearTimeout(this.locks.scrolling);
|
|
this.locks.scrolling = _.delay(_.bind(function () {
|
|
this.flags.scrolling_by_selecting_story_title = false;
|
|
}, this), 1000);
|
|
this.position_mouse_indicator();
|
|
|
|
this.switch_taskbar_view(view, {
|
|
skip_save_type: flag,
|
|
resize: true
|
|
});
|
|
|
|
if (_.contains(['split', 'list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.app.story_titles.fill_out();
|
|
} else {
|
|
NEWSBLUR.app.story_list.fill_out();
|
|
}
|
|
|
|
this.flags.fetch_story_locations_in_feed_view = this.flags.fetch_story_locations_in_feed_view ||
|
|
_.throttle(function () {
|
|
NEWSBLUR.app.story_list.reset_story_positions();
|
|
}, 2000);
|
|
this.flags.fetch_story_locations_in_feed_view();
|
|
this.adjust_for_narrow_window();
|
|
},
|
|
|
|
adjust_for_narrow_window: function () {
|
|
// Check if layout is ready or still being assembled
|
|
if (!NEWSBLUR.reader.layout.contentLayout) return;
|
|
|
|
var north, center, west;
|
|
var story_layout = NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout');
|
|
var content_width;
|
|
var $windows = this.$s.$body.add(this.$s.$feed_view)
|
|
.add(this.$s.$story_titles)
|
|
.add(this.$s.$text_view);
|
|
if (story_layout == 'split') {
|
|
north = NEWSBLUR.reader.layout.contentLayout.panes.north;
|
|
center = NEWSBLUR.reader.layout.contentLayout.panes.center;
|
|
west = NEWSBLUR.reader.layout.contentLayout.panes.west;
|
|
} else {
|
|
center = NEWSBLUR.reader.layout.rightLayout.panes.center;
|
|
}
|
|
|
|
if (center) {
|
|
var center_width = center.width();
|
|
var narrow = center_width < 980;
|
|
if (NEWSBLUR.assets.preference('story_button_placement') == "bottom") {
|
|
narrow = true;
|
|
}
|
|
$windows.toggleClass('NB-narrow-content', narrow);
|
|
var extranarrow = center_width < 666;
|
|
$windows.toggleClass('NB-extra-narrow-content', extranarrow);
|
|
var wide = center_width > 860;
|
|
$windows.toggleClass('NB-wide-content', wide);
|
|
var extrawide = center_width > 1180;
|
|
$windows.toggleClass('NB-extra-wide-content', extrawide);
|
|
this.flags.narrow_content = !!narrow;
|
|
content_width = center_width + (west ? west.width() : 0);
|
|
}
|
|
|
|
if ((north && north.width() < 640) ||
|
|
(content_width && content_width < 780)) {
|
|
$windows.addClass('NB-narrow');
|
|
} else {
|
|
$windows.removeClass('NB-narrow');
|
|
}
|
|
|
|
var pane = this.layout.outerLayout.panes.west;
|
|
var width = this.layout.outerLayout.state.west.size;
|
|
pane.toggleClass("NB-narrow-pane-blue", width < 306);
|
|
pane.toggleClass("NB-narrow-pane-green", width < 278);
|
|
pane.toggleClass("NB-narrow-pane-yellow", width < 258);
|
|
|
|
this.apply_tipsy_titles();
|
|
},
|
|
|
|
apply_resizable_layout: function (options) {
|
|
options = options || {};
|
|
var story_anchor = this.model.preference('story_pane_anchor');
|
|
|
|
if (options.right_side) {
|
|
this.layout.contentLayout && this.layout.contentLayout.destroy();
|
|
this.layout.rightLayout && this.layout.rightLayout.destroy();
|
|
// this.layout.leftCenterLayout && this.layout.leftCenterLayout.destroy();
|
|
// this.layout.leftLayout && this.layout.leftLayout.destroy();
|
|
// this.layout.outerLayout && this.layout.outerLayout.destroy();
|
|
|
|
var feed_stories_bin = $.make('div').append(this.$s.$feed_stories.children());
|
|
var story_titles_bin = $.make('div').append(this.$s.$story_titles.children());
|
|
}
|
|
|
|
$('.right-pane').removeClass('NB-story-pane-west')
|
|
.removeClass('NB-story-pane-north')
|
|
.removeClass('NB-story-pane-south')
|
|
.removeClass('NB-story-pane-hidden')
|
|
.toggleClass('NB-story-pane-' + story_anchor,
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'split');
|
|
if (!options.right_side) {
|
|
this.layout.outerLayout = this.$s.$layout.layout({
|
|
zIndex: 2,
|
|
fxName: "slideOffscreen",
|
|
fxSettings: { duration: 560, easing: "easeInOutQuint" },
|
|
center__paneSelector: ".right-pane",
|
|
west__paneSelector: ".left-pane",
|
|
west__size: this.model.preference('feed_pane_size'),
|
|
west__minSize: this.constants.MIN_FEED_LIST_SIZE,
|
|
west__onresize_end: _.bind(this.save_feed_pane_size, this),
|
|
west__onopen: _.bind(this.resize_window, this),
|
|
// west__initHidden: this.options.hide_sidebar,
|
|
west__spacing_open: this.options.hide_sidebar ? 1 : 1,
|
|
resizerDragOpacity: 0.6,
|
|
resizeWhileDragging: true,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0
|
|
});
|
|
|
|
this.layout.leftLayout = $('.left-pane').layout({
|
|
closable: false,
|
|
resizeWhileDragging: true,
|
|
fxName: "slideOffscreen",
|
|
fxSettings: { duration: 560, easing: "easeInOutQuint" },
|
|
animatePaneSizing: true,
|
|
north__paneSelector: ".left-north",
|
|
north__size: 37,
|
|
north__resizeable: false,
|
|
north__spacing_open: 0,
|
|
center__paneSelector: ".left-center",
|
|
center__resizable: false,
|
|
south__paneSelector: ".left-south",
|
|
south__size: 37,
|
|
south__resizable: false,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0,
|
|
south__spacing_open: 0
|
|
});
|
|
|
|
this.layout.leftCenterLayout = $('.left-center').layout({
|
|
closable: false,
|
|
slidable: false,
|
|
resizeWhileDragging: true,
|
|
center__paneSelector: ".left-center-content",
|
|
center__resizable: false,
|
|
south__paneSelector: ".left-center-footer",
|
|
south__size: 'auto',
|
|
south__resizable: false,
|
|
south__slidable: true,
|
|
south__spacing_open: 0,
|
|
south__spacing_closed: 0,
|
|
south__closable: true,
|
|
south__initClosed: true,
|
|
fxName: "slideOffscreen",
|
|
fxSettings_close: { duration: 560, easing: "easeInOutQuint" },
|
|
fxSettings_open: { duration: 0 },
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0
|
|
});
|
|
}
|
|
|
|
if (_.contains(['split', 'full'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
var rightLayoutOptions = {
|
|
resizeWhileDragging: true,
|
|
center__paneSelector: ".content-pane",
|
|
spacing_open: 0,
|
|
resizerDragOpacity: 0.6,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0,
|
|
fxName: "slideOffscreen",
|
|
fxSettings_close: { duration: 560, easing: "easeInOutQuint" },
|
|
fxSettings_open: { duration: 0, easing: "easeInOutQuint" },
|
|
north__paneSelector: ".content-north",
|
|
north__size: 37,
|
|
south__paneSelector: ".content-south",
|
|
south__size: 37
|
|
};
|
|
|
|
this.layout.rightLayout = $('.right-pane').layout(rightLayoutOptions);
|
|
|
|
var contentLayoutOptions = {
|
|
fxName: "slideOffscreen",
|
|
fxSettings_close: { duration: 560, easing: "easeInOutQuint" },
|
|
fxSettings_open: { duration: 0, easing: "easeInOutQuint" },
|
|
resizeWhileDragging: true,
|
|
center__paneSelector: ".content-center",
|
|
spacing_open: story_anchor == 'west' ? 1 : 1,
|
|
resizerDragOpacity: 0.6,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0
|
|
};
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
contentLayoutOptions[story_anchor + '__initHidden'] = true;
|
|
this.flags['story_titles_closed'] = true;
|
|
} else {
|
|
this.flags['story_titles_closed'] = false;
|
|
}
|
|
contentLayoutOptions[story_anchor + '__paneSelector'] = '.right-north';
|
|
contentLayoutOptions[story_anchor + '__minSize'] = this.constants.MIN_STORY_LIST_SIZE;
|
|
contentLayoutOptions[story_anchor + '__size'] = this.model.preference('story_titles_pane_size');
|
|
contentLayoutOptions[story_anchor + '__onresize_end'] = $.rescope(this.save_story_titles_pane_size, this);
|
|
contentLayoutOptions[story_anchor + '__onclose_start'] = $.rescope(this.toggle_story_titles_pane, this);
|
|
contentLayoutOptions[story_anchor + '__onopen_start'] = $.rescope(this.toggle_story_titles_pane, this);
|
|
this.layout.contentLayout = this.$s.$content_pane.layout(contentLayoutOptions);
|
|
} else if (_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
var rightLayoutOptions = {
|
|
resizeWhileDragging: true,
|
|
center__paneSelector: ".content-pane",
|
|
spacing_open: 0,
|
|
resizerDragOpacity: 0.6,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0,
|
|
fxName: "slideOffscreen",
|
|
fxSettings: { duration: 560, easing: "easeInOutQuint" },
|
|
north__paneSelector: ".content-north",
|
|
north__size: 37,
|
|
south__paneSelector: ".content-south",
|
|
south__size: 37
|
|
|
|
};
|
|
this.layout.rightLayout = $('.right-pane').layout(rightLayoutOptions);
|
|
|
|
var contentLayoutOptions = {
|
|
resizeWhileDragging: true,
|
|
center__paneSelector: ".right-north",
|
|
spacing_open: 0,
|
|
resizerDragOpacity: 0.6,
|
|
enableCursorHotkey: false,
|
|
togglerLength_open: 0
|
|
};
|
|
this.layout.contentLayout = this.$s.$content_pane.layout(contentLayoutOptions);
|
|
this.flags['story_titles_closed'] = false;
|
|
}
|
|
|
|
if (options.right_side) {
|
|
this.$s.$feed_stories.append(feed_stories_bin.children());
|
|
this.$s.$story_titles.append(story_titles_bin.children());
|
|
this.resize_window();
|
|
}
|
|
|
|
this.adjust_for_narrow_window();
|
|
this.add_drag_handles();
|
|
},
|
|
|
|
apply_tipsy_titles: function () {
|
|
$('.NB-task-add').tipsy('disable');
|
|
$('.NB-task-manage').tipsy('disable');
|
|
$('.NB-taskbar-button.NB-tipsy').each(function () {
|
|
$(this).tipsy('disable');
|
|
});
|
|
|
|
if (this.model.preference('show_tooltips')) {
|
|
$('.NB-task-add').tipsy({
|
|
gravity: 'sw',
|
|
delayIn: 375
|
|
}).tipsy('enable');
|
|
$('.NB-task-manage').tipsy({
|
|
gravity: 's',
|
|
delayIn: 375
|
|
}).tipsy('enable');
|
|
$('.NB-narrow .NB-taskbar-button.NB-tipsy').tipsy({
|
|
gravity: 's',
|
|
delayIn: 175,
|
|
title: 'tipsy-title'
|
|
}).each(function () {
|
|
$(this).tipsy('enable');
|
|
});
|
|
}
|
|
|
|
$('.NB-module-content-account-realtime').tipsy('disable').tipsy({
|
|
gravity: 'se',
|
|
delayIn: 0
|
|
}).tipsy('enable');
|
|
},
|
|
|
|
save_feed_pane_size: function (pane, $pane, state, options, name) {
|
|
if (!this.layout.outerLayout) return;
|
|
|
|
var feed_pane_size = this.layout.outerLayout.state.west.size;
|
|
|
|
$('#NB-splash').css('left', feed_pane_size);
|
|
this.adjust_for_narrow_window();
|
|
this.flags.set_feed_pane_size = this.flags.set_feed_pane_size || _.debounce(_.bind(function () {
|
|
var feed_pane_size = this.layout.outerLayout.state.west.size;
|
|
// console.log('debounced save_feed_pane_size', this, feed_pane_size);
|
|
this.model.preference('feed_pane_size', feed_pane_size);
|
|
this.flags.set_feed_pane_size = null;
|
|
}, this), 1000);
|
|
this.flags.set_feed_pane_size();
|
|
},
|
|
|
|
save_story_titles_pane_size: function (pane, $pane, state, options, name) {
|
|
if (!this.layout.contentLayout) return;
|
|
|
|
this.flags.scrolling_by_selecting_story_title = true;
|
|
clearTimeout(this.locks.scrolling);
|
|
|
|
var offset = 0;
|
|
if (this.story_view == 'feed') {
|
|
offset = this.$s.$feed_iframe.width();
|
|
} else if (this.story_view == 'story') {
|
|
offset = 2 * this.$s.$feed_iframe.width();
|
|
}
|
|
this.$s.$story_pane.css('left', -1 * offset);
|
|
|
|
this.flags.set_story_titles_size = this.flags.set_story_titles_size || _.debounce(_.bind(function () {
|
|
var story_titles_size = this.layout.contentLayout.state[this.model.preference('story_pane_anchor')].size;
|
|
this.model.preference('story_titles_pane_size', story_titles_size);
|
|
this.flags.set_story_titles_size = null;
|
|
this.locks.scrolling = _.delay(_.bind(function () {
|
|
this.flags.scrolling_by_selecting_story_title = false;
|
|
}, this), 100);
|
|
}, this), 1000);
|
|
this.flags.set_story_titles_size();
|
|
|
|
this.flags.resize_window = this.flags.resize_window || _.debounce(_.bind(function () {
|
|
this.resize_window();
|
|
this.flags.resize_window = null;
|
|
}, this), 10);
|
|
this.flags.resize_window();
|
|
|
|
},
|
|
|
|
add_drag_handles: function () {
|
|
var $resizer = NEWSBLUR.reader.layout.outerLayout.resizers.west;
|
|
if ($resizer.find(".NB-task-drag").length) return;
|
|
|
|
$resizer.append($.make('div', { className: "NB-task-drag" }, [
|
|
$.make('div', { className: "NB-task-image" })
|
|
])).css('overflow', 'visible');
|
|
},
|
|
|
|
add_body_classes: function () {
|
|
this.$s.$body.toggleClass('NB-is-premium', NEWSBLUR.Globals.is_premium);
|
|
this.$s.$body.toggleClass('NB-is-anonymous', NEWSBLUR.Globals.is_anonymous);
|
|
this.$s.$body.toggleClass('NB-is-authenticated', NEWSBLUR.Globals.is_authenticated);
|
|
if (!!this.model.preference('full_width_story')) {
|
|
this.model.preference('story_position', 'stretch');
|
|
this.model.preference('full_width_story', false); // Turn off to ignore and deprecate
|
|
}
|
|
var columns;
|
|
switch (this.model.preference('dashboard_columns')) {
|
|
case 1:
|
|
columns = "single";
|
|
break;
|
|
case 2:
|
|
columns = "double";
|
|
break;
|
|
case 3:
|
|
columns = "triple";
|
|
break;
|
|
}
|
|
this.$s.$body.removeClass('NB-pref-story-position-stretch')
|
|
.removeClass('NB-pref-story-position-left')
|
|
.removeClass('NB-pref-story-position-center')
|
|
.removeClass('NB-pref-story-position-right')
|
|
.toggleClass('NB-pref-story-position-' + this.model.preference('story_position'));
|
|
this.$s.$body.removeClass('NB-dashboard-columns-single')
|
|
.removeClass('NB-dashboard-columns-double')
|
|
.removeClass('NB-dashboard-columns-triple')
|
|
.toggleClass('NB-dashboard-columns-' + columns);
|
|
},
|
|
|
|
load_delayed_stylesheets: function () {
|
|
_.delay(function () {
|
|
var $stylesheets = $("head link");
|
|
$stylesheets.each(function () {
|
|
var $ss = $(this);
|
|
if (!$ss.attr('delay')) return;
|
|
$("head").append($.make('link', {
|
|
rel: $ss.attr('rel'),
|
|
type: $ss.attr('type'),
|
|
href: $ss.attr('delay')
|
|
}));
|
|
});
|
|
}, 500);
|
|
},
|
|
|
|
hide_splash_page: function () {
|
|
var self = this;
|
|
var resize = false;
|
|
if (!$('.right-pane').is(':visible')) {
|
|
resize = true;
|
|
}
|
|
this.$s.$body.addClass('NB-show-reader');
|
|
this.flags['splash_page_frontmost'] = false;
|
|
this.$s.$header_dashboard.removeClass('NB-selected');
|
|
|
|
if (resize) {
|
|
this.$s.$layout.layout().resizeAll();
|
|
this.adjust_for_narrow_window();
|
|
}
|
|
|
|
this.apply_tipsy_titles();
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
this.setup_ftux_signup_callout();
|
|
}
|
|
},
|
|
|
|
show_splash_page: function (skip_router) {
|
|
this.reset_feed();
|
|
this.open_sidebar();
|
|
this.$s.$body.removeClass('NB-show-reader');
|
|
this.$s.$header_dashboard.addClass('NB-selected');
|
|
this.flags['splash_page_frontmost'] = true;
|
|
|
|
if (!skip_router) {
|
|
NEWSBLUR.log(["Navigating to splash"]);
|
|
NEWSBLUR.router.navigate('');
|
|
}
|
|
},
|
|
|
|
animate_progress_bar: function ($bar, seconds, percentage) {
|
|
var self = this;
|
|
percentage = percentage || 0;
|
|
seconds = parseFloat(Math.max(1, parseInt(seconds, 10)), 10);
|
|
var time;
|
|
if (percentage > 90) {
|
|
time = seconds;
|
|
} else if (percentage > 80) {
|
|
time = seconds / 8;
|
|
} else if (percentage > 70) {
|
|
time = seconds / 16;
|
|
} else if (percentage > 60) {
|
|
time = seconds / 40;
|
|
} else if (percentage > 50) {
|
|
time = seconds / 80;
|
|
} else if (percentage > 40) {
|
|
time = seconds / 160;
|
|
} else if (percentage > 30) {
|
|
time = seconds / 200;
|
|
} else if (percentage > 20) {
|
|
time = seconds / 300;
|
|
} else if (percentage > 10) {
|
|
time = seconds / 400;
|
|
} else {
|
|
time = seconds / 500;
|
|
}
|
|
|
|
if (percentage <= 100) {
|
|
this.locks['animate_progress_bar'] = setTimeout(function () {
|
|
percentage += 1;
|
|
$bar.progressbar({ value: percentage });
|
|
self.animate_progress_bar($bar, seconds, percentage);
|
|
}, time * 1000);
|
|
}
|
|
},
|
|
|
|
blur_to_page: function (options) {
|
|
options = options || {};
|
|
|
|
if (options.manage_menu) {
|
|
$('.NB-menu-manage-container .NB-menu-manage :focus').blur();
|
|
} else {
|
|
$(':focus').blur();
|
|
}
|
|
},
|
|
|
|
// ==============
|
|
// = Navigation =
|
|
// ==============
|
|
|
|
active_story_view: function (feed_id) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
if (_.string.startsWith(feed_id, 'river:')) {
|
|
if (this.active_story && this.active_story.get('story_feed_id')) {
|
|
feed_id = this.active_story.get('story_feed_id');
|
|
console.log(['Hijacking view setting', feed_id, ' --> ',
|
|
this.active_story && this.active_story.get('story_feed_id'), NEWSBLUR.assets.view_setting(feed_id, 'view')]);
|
|
}
|
|
}
|
|
|
|
return feed_id;
|
|
},
|
|
|
|
show_next_story: function (direction) {
|
|
var story = NEWSBLUR.assets.stories.get_next_story(direction, {
|
|
score: this.get_unread_view_score()
|
|
});
|
|
console.log(['story show_next_story', story, direction]);
|
|
if (story) {
|
|
story.set('selected', true);
|
|
}
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full' &&
|
|
!NEWSBLUR.assets.stories.no_more_stories) {
|
|
var visible = NEWSBLUR.assets.stories.visible();
|
|
var visible_count = visible.length;
|
|
var visible_index = visible.indexOf(this.active_story);
|
|
|
|
if (visible_index >= visible_count - 3) {
|
|
this.load_page_of_feed_stories();
|
|
}
|
|
}
|
|
},
|
|
|
|
show_next_unread_story: function () {
|
|
var unread_count = this.get_total_unread_count();
|
|
|
|
if (this.flags['feed_list_showing_starred']) {
|
|
this.slide_intelligence_slider(0);
|
|
this.flags['feed_list_showing_starred'] = false;
|
|
this.open_next_unread_story_across_feeds();
|
|
} else if (unread_count) {
|
|
var next_story = NEWSBLUR.assets.stories.get_next_unread_story();
|
|
if (next_story) {
|
|
this.counts['find_next_unread_on_page_of_feed_stories_load'] = 0;
|
|
next_story.set('selected', true);
|
|
} else if (this.counts['find_next_unread_on_page_of_feed_stories_load'] <
|
|
this.constants.FIND_NEXT_UNREAD_STORY_TRIES &&
|
|
!NEWSBLUR.assets.stories.no_more_stories) {
|
|
// Nothing up, nothing down, but still unread. Load 1 page then find it.
|
|
this.counts['find_next_unread_on_page_of_feed_stories_load'] += 1;
|
|
this.load_page_of_feed_stories();
|
|
} else if (this.counts['find_next_unread_on_page_of_feed_stories_load'] >=
|
|
this.constants.FIND_NEXT_UNREAD_STORY_TRIES) {
|
|
this.open_next_unread_story_across_feeds(true);
|
|
}
|
|
}
|
|
},
|
|
|
|
open_next_unread_story_across_feeds: function (force_next_feed) {
|
|
var unread_count = !force_next_feed && this.active_feed && this.get_total_unread_count();
|
|
|
|
if (!unread_count && !this.flags['feed_list_showing_starred']) {
|
|
if (this.flags.river_view && !this.flags.social_view) {
|
|
var $next_folder = this.get_next_unread_folder(1);
|
|
var folder = NEWSBLUR.assets.folders.get_view($next_folder);
|
|
if (folder != this.active_folder) {
|
|
this.open_river_stories($next_folder, folder && folder.model);
|
|
}
|
|
} else {
|
|
// Find next feed with unreads
|
|
var $next_feed = this.get_next_unread_feed(1);
|
|
if (!$next_feed || !$next_feed.length) return;
|
|
var next_feed_id = $next_feed.data('id');
|
|
if (next_feed_id == this.active_feed) return;
|
|
|
|
if (NEWSBLUR.utils.is_feed_social(next_feed_id)) {
|
|
this.open_social_stories(next_feed_id, { force: true, $feed: $next_feed });
|
|
} else {
|
|
next_feed_id = parseInt(next_feed_id, 10);
|
|
this.open_feed(next_feed_id, { force: true, $feed: $next_feed });
|
|
}
|
|
}
|
|
}
|
|
|
|
this.show_next_unread_story();
|
|
},
|
|
|
|
show_last_unread_story: function () {
|
|
var unread_count = this.get_total_unread_count();
|
|
|
|
if (unread_count) {
|
|
var last_story = NEWSBLUR.assets.stories.get_last_unread_story(unread_count);
|
|
|
|
if (last_story) {
|
|
this.counts['find_last_unread_on_page_of_feed_stories_load'] = 0;
|
|
last_story.set('selected', true);
|
|
} else if (this.counts['find_last_unread_on_page_of_feed_stories_load'] < this.constants.FILL_OUT_PAGES &&
|
|
!NEWSBLUR.assets.stories.no_more_stories) {
|
|
// Nothing up, nothing down, but still unread. Load 1 page then find it.
|
|
this.counts['find_last_unread_on_page_of_feed_stories_load'] += 1;
|
|
this.load_page_of_feed_stories();
|
|
}
|
|
}
|
|
},
|
|
|
|
select_story_in_feed: function (options) {
|
|
options = _.extend({}, options);
|
|
var story_id = this.flags['select_story_in_feed'];
|
|
var story = NEWSBLUR.assets.stories.get(story_id);
|
|
if (!story) story = NEWSBLUR.assets.stories.get_by_story_hash(story_id);
|
|
// NEWSBLUR.log(['select_story_in_feed', story_id, story, this.story_view, this.counts['select_story_in_feed'], this.flags['no_more_stories']]);
|
|
|
|
if (story) {
|
|
this.counts['select_story_in_feed'] = 0;
|
|
this.flags['select_story_in_feed'] = null;
|
|
_.delay(_.bind(function () {
|
|
story.set('selected', true, { scroll_to_comments: options.scroll_to_comments });
|
|
}, this), 100);
|
|
} else if (this.counts['select_story_in_feed'] < this.constants.FILL_OUT_PAGES &&
|
|
!NEWSBLUR.assets.stories.no_more_stories) {
|
|
// Nothing up, nothing down, but still not found. Load 1 page then find it.
|
|
this.counts['select_story_in_feed'] += 1;
|
|
this.load_page_of_feed_stories();
|
|
} else {
|
|
this.counts['select_story_in_feed'] = 0;
|
|
this.flags['select_story_in_feed'] = null;
|
|
}
|
|
},
|
|
|
|
show_previous_story: function () {
|
|
NEWSBLUR.assets.stories.select_previous_story();
|
|
},
|
|
|
|
show_next_feed: function (direction, $current_feed) {
|
|
var $feed_list = this.$s.$feed_list.add(this.$s.$social_feeds);
|
|
|
|
if (this.flags.river_view && !this.flags.social_view) {
|
|
return this.show_next_folder(direction, $current_feed);
|
|
}
|
|
|
|
var $next_feed = this.get_next_feed(direction, $current_feed, {
|
|
include_selected: true,
|
|
feed_id: this.active_feed
|
|
});
|
|
|
|
if (!$next_feed || $current_feed == $next_feed) return;
|
|
if ($current_feed && $current_feed.data('id') == $next_feed.data('id')) return;
|
|
|
|
var next_feed_id = $next_feed.data('id');
|
|
if (next_feed_id && next_feed_id == this.active_feed) {
|
|
this.show_next_feed(direction, $next_feed);
|
|
} else if (NEWSBLUR.utils.is_feed_social(next_feed_id)) {
|
|
this.open_social_stories(next_feed_id, { force: true, $feed: $next_feed });
|
|
} else {
|
|
next_feed_id = parseInt(next_feed_id, 10);
|
|
this.open_feed(next_feed_id, { force: true, $feed: $next_feed });
|
|
}
|
|
},
|
|
|
|
show_next_folder: function (direction, $current_folder) {
|
|
var $next_folder = this.get_next_folder(direction, $current_folder);
|
|
|
|
if (!$next_folder) return;
|
|
|
|
var folder = NEWSBLUR.assets.folders.get_view($next_folder);
|
|
|
|
this.open_river_stories($next_folder, folder && folder.model);
|
|
},
|
|
|
|
get_next_feed: function (direction, $current_feed, options) {
|
|
options = options || {};
|
|
var self = this;
|
|
var $feed_list = this.$s.$feed_list.add(this.$s.$social_feeds);
|
|
if (!$current_feed) {
|
|
$current_feed = $('.selected', $feed_list);
|
|
}
|
|
if (options.feed_id && $current_feed && $current_feed.length) {
|
|
var current_feed = NEWSBLUR.assets.get_feed(options.feed_id);
|
|
if (current_feed) {
|
|
var selected_title_view = current_feed.get("selected_title_view");
|
|
if (selected_title_view) {
|
|
$current_feed = selected_title_view.$el;
|
|
}
|
|
}
|
|
}
|
|
var $next_feed,
|
|
scroll;
|
|
var $feeds = $('.feed:visible:not(.NB-empty)', $feed_list);
|
|
if (!$current_feed.length) {
|
|
if (options.include_selected) {
|
|
$feeds = $feeds.add('.NB-feedlists .feed.NB-selected');
|
|
}
|
|
$current_feed = $('.feed:visible:not(.NB-empty)', $feed_list)[direction == -1 ? 'last' : 'first']();
|
|
$next_feed = $current_feed;
|
|
} else {
|
|
var current_feed = 0;
|
|
$feeds.each(function (i) {
|
|
if (this == $current_feed[0]) {
|
|
current_feed = i;
|
|
return false;
|
|
}
|
|
});
|
|
$next_feed = $feeds.eq((current_feed + direction) % ($feeds.length));
|
|
}
|
|
|
|
return $next_feed;
|
|
},
|
|
|
|
get_next_folder: function (direction, $current_folder) {
|
|
var self = this;
|
|
var $feed_list = this.$s.$feed_list.add(this.$s.$social_feeds);
|
|
var $current_folder = $('.folder.NB-selected', $feed_list);
|
|
var $folders = $('li.folder:visible:not(.NB-empty)', $feed_list);
|
|
var current_folder = 0;
|
|
|
|
$folders.each(function (i) {
|
|
if (this == $current_folder[0]) {
|
|
current_folder = i;
|
|
return false;
|
|
}
|
|
});
|
|
|
|
var next_folder_index = (current_folder + direction) % ($folders.length);
|
|
var $next_folder = $folders.eq(next_folder_index);
|
|
|
|
return $next_folder;
|
|
},
|
|
|
|
get_next_unread_feed: function (direction, $current_feed) {
|
|
var self = this;
|
|
var $feed_list = this.$s.$feed_list.add(this.$s.$social_feeds);
|
|
$current_feed = $current_feed || $('.selected', $feed_list);
|
|
var unread_view = this.get_unread_view_name();
|
|
var $next_feed;
|
|
var current_feed;
|
|
|
|
var $feeds = $('.feed:visible:not(.NB-empty)', $feed_list).filter(function () {
|
|
var $this = $(this);
|
|
if ($this.hasClass('selected')) {
|
|
return true;
|
|
} else if (unread_view == 'positive') {
|
|
return $this.is('.unread_positive');
|
|
} else if (unread_view == 'neutral') {
|
|
return $this.is('.unread_positive,.unread_neutral');
|
|
} else if (unread_view == 'negative') {
|
|
return $this.is('.unread_positive,.unread_neutral,.unread_negative');
|
|
}
|
|
}).add('.NB-feedlists .feed.NB-selected');
|
|
if (!$current_feed.length) {
|
|
$next_feed = $feeds.first();
|
|
} else {
|
|
$feeds.each(function (i) {
|
|
if (this == $current_feed.get(0)) {
|
|
current_feed = i;
|
|
return false;
|
|
}
|
|
});
|
|
$next_feed = $feeds.eq((current_feed + direction) % ($feeds.length));
|
|
}
|
|
|
|
return $next_feed;
|
|
},
|
|
|
|
get_next_unread_folder: function (direction) {
|
|
var self = this;
|
|
var $feed_list = this.$s.$feed_list.add(this.$s.$social_feeds);
|
|
var $current_folder = $('.folder.NB-selected', $feed_list);
|
|
var unread_view = this.get_unread_view_name();
|
|
var $next_folder;
|
|
var current_folder = 0;
|
|
var $folders = $('li.folder:visible:not(.NB-empty)', $feed_list);
|
|
|
|
$folders = $folders.filter(function () {
|
|
var $this = $(this);
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($current_folder);
|
|
var folder_model = folder_view && folder_view.model;
|
|
if (!folder_model) return false;
|
|
|
|
var counts = folder_model.collection.unread_counts();
|
|
|
|
if (this == $current_folder[0]) return true;
|
|
|
|
if (unread_view == 'positive') {
|
|
return counts.ps;
|
|
} else if (unread_view == 'neutral') {
|
|
return counts.ps + counts.nt;
|
|
} else if (unread_view == 'negative') {
|
|
return counts.ps + counts.nt + counts.ng;
|
|
}
|
|
});
|
|
|
|
$folders.each(function (i) {
|
|
if (this == $current_folder[0]) {
|
|
current_folder = i;
|
|
return false;
|
|
}
|
|
});
|
|
$next_folder = $folders.eq((current_folder + direction) % ($folders.length));
|
|
return $next_folder;
|
|
},
|
|
|
|
page_in_story: function (amount, direction) {
|
|
amount = parseInt(amount, 10) / 100.0;
|
|
var page_height = this.$s.$story_pane.height();
|
|
if (_.contains(['list', 'grid', 'magazine'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
page_height = this.$s.$story_titles.height();
|
|
}
|
|
var scroll_height = parseInt(page_height * amount, 10);
|
|
var feed_view = NEWSBLUR.assets.preference('feed_view_single_story') &&
|
|
((this.story_view == 'feed' && !this.flags['temporary_story_view']) ||
|
|
this.flags['page_view_showing_feed_view']);
|
|
var text_view = this.story_view == 'text' || this.flags['temporary_story_view'];
|
|
|
|
this.scroll_in_story(scroll_height, direction);
|
|
|
|
if (NEWSBLUR.assets.preference('space_bar_action') == 'scroll_only') return;
|
|
if (NEWSBLUR.assets.preference('space_bar_action') == 'next_unread_50') {
|
|
page_height = page_height / 2 + 36;
|
|
}
|
|
|
|
if (!this.active_story || !this.active_story.get('selected')) {
|
|
this.open_next_unread_story_across_feeds();
|
|
} else if (_.contains(['split', 'full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
if (direction > 0) {
|
|
if (feed_view) {
|
|
var scroll_top = this.$s.$feed_scroll.scrollTop();
|
|
var story_height = this.$s.$feed_scroll.find('.NB-feed-story.NB-selected').height() - 12;
|
|
if (page_height + scroll_top >= story_height) {
|
|
this.open_next_unread_story_across_feeds();
|
|
}
|
|
} else if (text_view) {
|
|
var scroll_top = this.$s.$text_view.scrollTop();
|
|
var story_height = this.$s.$text_view.find('.NB-feed-story').height() - 24;
|
|
if (page_height + scroll_top >= story_height) {
|
|
this.open_next_unread_story_across_feeds();
|
|
}
|
|
}
|
|
} else if (split_layout && direction < 0) {
|
|
if (feed_view || text_view) {
|
|
var scroll_top = this.$s.$feed_scroll.scrollTop();
|
|
if (scroll_top == 0) {
|
|
this.show_previous_story();
|
|
}
|
|
}
|
|
}
|
|
} else if (_.contains(['list', 'grid', 'magazine'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
var scroll_top = this.$s.$story_titles.scrollTop();
|
|
var $story = this.active_story.story_title_view.$el;
|
|
var story_height = $story.height();
|
|
var story_offset = $story.position().top;
|
|
console.log(['space list', $story[0], scroll_top, story_height, story_offset, story_height + story_offset - scroll_height, page_height]);
|
|
if (direction > 0 &&
|
|
(story_height + story_offset - scroll_height + 52 < 0 ||
|
|
story_height + story_offset + 52 < page_height)) {
|
|
this.open_next_unread_story_across_feeds();
|
|
} else if (direction < 0 && story_offset >= 0) {
|
|
this.show_previous_story();
|
|
}
|
|
}
|
|
},
|
|
|
|
scroll_in_story: function (amount, direction) {
|
|
var dir = '+';
|
|
if (direction == -1) {
|
|
dir = '-';
|
|
}
|
|
// NEWSBLUR.log(['scroll_in_story', this.$s.$story_pane, direction, amount]);
|
|
if (_.contains(['list', 'grid', 'magazine'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
this.$s.$story_titles.stop().scrollTo({
|
|
top: dir + '=' + amount,
|
|
left: '+=0'
|
|
}, 130, { queue: false });
|
|
} else if (this.story_view == 'page' &&
|
|
!this.flags['page_view_showing_feed_view'] &&
|
|
!this.flags['temporary_story_view']) {
|
|
this.$s.$feed_iframe.stop().scrollTo({
|
|
top: dir + '=' + amount,
|
|
left: '+=0'
|
|
}, 130, { queue: false });
|
|
} else if ((this.story_view == 'feed' &&
|
|
!this.flags['temporary_story_view']) ||
|
|
this.flags['page_view_showing_feed_view']) {
|
|
this.$s.$feed_scroll.stop().scrollTo({
|
|
top: dir + '=' + amount,
|
|
left: '+=0'
|
|
}, 130, { queue: false });
|
|
} else if (this.story_view == 'text' ||
|
|
this.flags['temporary_story_view']) {
|
|
this.$s.$text_view.stop().scrollTo({
|
|
top: dir + '=' + amount,
|
|
left: '+=0'
|
|
}, 130, { queue: false });
|
|
}
|
|
|
|
this.show_mouse_indicator();
|
|
// _.delay(_.bind(this.hide_mouse_indicator, this), 350);
|
|
},
|
|
|
|
find_story_with_action_preference_on_open_feed: function () {
|
|
var open_feed_action = this.model.preference('open_feed_action');
|
|
|
|
if (!this.active_story && open_feed_action == 'newest' &&
|
|
!this.flags['feed_list_showing_starred']) {
|
|
this.show_next_unread_story();
|
|
} else if (!this.active_story &&
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full' &&
|
|
NEWSBLUR.assets.preference('feed_view_single_story')) {
|
|
this.show_next_unread_story();
|
|
}
|
|
},
|
|
|
|
// =============
|
|
// = Feed Pane =
|
|
// =============
|
|
|
|
sort_feeds: function ($feeds) {
|
|
$('.feed', $feeds).tsort('', { sortFunction: NEWSBLUR.Collections.Folders.comparator });
|
|
$('.folder', $feeds).tsort('.folder_title_text');
|
|
},
|
|
|
|
load_sortable_feeds: function () {
|
|
var self = this;
|
|
|
|
this.$s.$feed_list.sortable({
|
|
items: '.feed,li.folder',
|
|
connectWith: 'ul.folder,.feed.NB-empty',
|
|
placeholder: 'NB-feeds-list-highlight',
|
|
axis: 'y',
|
|
distance: 4,
|
|
cursor: 'move',
|
|
containment: '#feed_list',
|
|
tolerance: 'pointer',
|
|
scrollSensitivity: 35,
|
|
start: function (e, ui) {
|
|
self.flags['sorting_feed'] = true;
|
|
ui.placeholder.attr('class', ui.item.attr('class') + ' NB-feeds-list-highlight');
|
|
NEWSBLUR.app.feed_list.start_sorting();
|
|
ui.item.addClass('NB-feed-sorting');
|
|
ui.placeholder.data('id', ui.item.data('id'));
|
|
if (ui.item.is('.folder')) {
|
|
ui.placeholder.html(ui.item.children().clone());
|
|
ui.item.data('previously_collapsed', ui.item.data('collapsed'));
|
|
self.collapse_folder(ui.item.children('.folder_title'), true);
|
|
self.collapse_folder(ui.placeholder.children('.folder_title'), true);
|
|
ui.item.css('height', ui.item.children('.folder_title').outerHeight(true) + 'px');
|
|
ui.helper.css('height', ui.helper.children('.folder_title').outerHeight(true) + 'px');
|
|
} else {
|
|
ui.placeholder.html(ui.item.children().clone());
|
|
}
|
|
},
|
|
change: function (e, ui) {
|
|
var $feeds = ui.placeholder.closest('ul.folder');
|
|
self.sort_feeds($feeds);
|
|
},
|
|
stop: function (e, ui) {
|
|
setTimeout(function () {
|
|
self.flags['sorting_feed'] = false;
|
|
}, 100);
|
|
ui.item.removeClass('NB-feed-sorting');
|
|
NEWSBLUR.app.feed_list.end_sorting();
|
|
self.sort_feeds(e.target);
|
|
self.save_feed_order();
|
|
ui.item.css({ 'backgroundColor': '#D7DDE6' })
|
|
.animate({ 'backgroundColor': '#F0F076' }, { 'duration': 800 })
|
|
.animate({ 'backgroundColor': '#D7DDE6' }, { 'duration': 1000 });
|
|
if (ui.item.is('.folder') && !ui.item.data('previously_collapsed')) {
|
|
self.collapse_folder(ui.item.children('.folder_title'));
|
|
self.collapse_folder(ui.placeholder.children('.folder_title'));
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
save_feed_order: function () {
|
|
var combine_folders = function ($folder) {
|
|
var folders = [];
|
|
var $items = $folder.children('li.folder, .feed');
|
|
|
|
for (var i = 0, i_count = $items.length; i < i_count; i++) {
|
|
var $item = $items.eq(i);
|
|
|
|
if ($item.hasClass('feed')) {
|
|
var feed_id = parseInt($item.data('id'), 10);
|
|
if (feed_id) {
|
|
folders.push(feed_id);
|
|
}
|
|
} else if ($item.hasClass('folder')) {
|
|
var folder_title = $item.find('.folder_title_text').eq(0).text();
|
|
var child_folders = {};
|
|
child_folders[folder_title] = combine_folders($item.children('ul.folder').eq(0));
|
|
folders.push(child_folders);
|
|
}
|
|
}
|
|
|
|
return folders;
|
|
};
|
|
|
|
var combined_folders = combine_folders(this.$s.$feed_list);
|
|
// NEWSBLUR.log(['Save new folder/feed order', {'combined': combined_folders}]);
|
|
this.model.save_feed_order(combined_folders);
|
|
},
|
|
|
|
show_feed_chooser_button: function () {
|
|
var self = this;
|
|
var $progress = this.$s.$feeds_progress;
|
|
var $bar = $('.NB-progress-bar', $progress);
|
|
var percentage = 0;
|
|
|
|
$('.NB-progress-title', $progress).text('Get Started');
|
|
$('.NB-progress-counts', $progress).hide();
|
|
$('.NB-progress-percentage', $progress).hide();
|
|
$progress.addClass('NB-progress-error').addClass('NB-progress-big');
|
|
$('.NB-progress-link', $progress).html($.make('div', {
|
|
className: 'NB-modal-submit-button NB-modal-submit-green NB-menu-manage-feedchooser'
|
|
}, ['Choose your 64 sites']));
|
|
|
|
this.show_progress_bar();
|
|
},
|
|
|
|
hide_feed_chooser_button: function () {
|
|
var $progress = this.$s.$feeds_progress;
|
|
var $bar = $('.NB-progress-bar', $progress);
|
|
$progress.removeClass('NB-progress-error').removeClass('NB-progress-big');
|
|
|
|
this.hide_progress_bar();
|
|
},
|
|
|
|
open_dialog_after_feeds_loaded: function (options) {
|
|
options = options || {};
|
|
if (!NEWSBLUR.Globals.is_authenticated) return;
|
|
|
|
if (!NEWSBLUR.assets.folders.length ||
|
|
!NEWSBLUR.assets.preference('has_setup_feeds')) {
|
|
if (options.delayed_import || this.flags.delayed_import) {
|
|
this.setup_ftux_add_feed_callout("Check your email...");
|
|
} else if (options.finished_intro || NEWSBLUR.assets.preference('has_setup_feeds')) {
|
|
this.setup_ftux_add_feed_callout();
|
|
} else if (!NEWSBLUR.intro || !NEWSBLUR.intro.flags.open) {
|
|
_.defer(_.bind(this.open_intro_modal, this), 100);
|
|
}
|
|
} else if (!NEWSBLUR.assets.flags['has_chosen_feeds'] &&
|
|
NEWSBLUR.assets.folders.length) {
|
|
if (NEWSBLUR.Globals.is_premium) {
|
|
this.model.save_feed_chooser(null, function () {
|
|
NEWSBLUR.reader.hide_feed_chooser_button();
|
|
NEWSBLUR.assets.load_feeds();
|
|
});
|
|
} else {
|
|
_.defer(_.bind(this.open_feedchooser_modal, this), 100);
|
|
}
|
|
} else if (!NEWSBLUR.Globals.is_premium &&
|
|
NEWSBLUR.assets.feeds.active().length > 64) {
|
|
_.defer(_.bind(this.open_feedchooser_modal, this), 100);
|
|
}
|
|
},
|
|
|
|
// ================
|
|
// = Progress Bar =
|
|
// ================
|
|
|
|
check_feed_fetch_progress: function () {
|
|
$.extend(this.counts, {
|
|
'unfetched_feeds': 0,
|
|
'fetched_feeds': 0
|
|
});
|
|
|
|
var counts = this.model.count_unfetched_feeds();
|
|
this.counts['unfetched_feeds'] = counts['unfetched_feeds'];
|
|
this.counts['fetched_feeds'] = counts['fetched_feeds'];
|
|
|
|
if (this.counts['unfetched_feeds'] == 0) {
|
|
this.flags['has_unfetched_feeds'] = false;
|
|
this.hide_unfetched_feed_progress();
|
|
} else {
|
|
this.flags['has_unfetched_feeds'] = true;
|
|
this.show_unfetched_feed_progress();
|
|
}
|
|
},
|
|
|
|
show_progress_bar: function () {
|
|
var $layout = this.$s.$feeds_progress.parents('.left-center').layout();
|
|
if (!this.flags['showing_progress_bar']) {
|
|
this.flags['showing_progress_bar'] = true;
|
|
$layout.open('south');
|
|
}
|
|
$layout.sizePane('south');
|
|
},
|
|
|
|
hide_progress_bar: function (permanent) {
|
|
var self = this;
|
|
|
|
if (permanent) {
|
|
this.model.preference('hide_fetch_progress', true);
|
|
}
|
|
|
|
this.flags['showing_progress_bar'] = false;
|
|
this.$s.$feeds_progress.parents('.left-center').layout().close('south');
|
|
},
|
|
|
|
show_unfetched_feed_progress: function () {
|
|
var self = this;
|
|
var $progress = this.$s.$feeds_progress;
|
|
var percentage = parseInt(this.counts['fetched_feeds'] / (this.counts['unfetched_feeds'] + this.counts['fetched_feeds']) * 100, 10);
|
|
|
|
$('.NB-progress-title', $progress).text('Fetching your feeds');
|
|
$('.NB-progress-counts', $progress).show();
|
|
$('.NB-progress-counts-fetched', $progress).text(this.counts['fetched_feeds']);
|
|
$('.NB-progress-counts-total', $progress).text(this.counts['unfetched_feeds'] + this.counts['fetched_feeds']);
|
|
$('.NB-progress-percentage', $progress).show().text(percentage + '%');
|
|
$('.NB-progress-bar', $progress).progressbar({
|
|
value: percentage
|
|
});
|
|
|
|
if (!$progress.is(':visible') && !this.model.preference('hide_fetch_progress')) {
|
|
setTimeout(function () {
|
|
self.show_progress_bar();
|
|
}, 1000);
|
|
}
|
|
|
|
this.setup_feed_refresh(true);
|
|
},
|
|
|
|
hide_unfetched_feed_progress: function (permanent) {
|
|
if (permanent) {
|
|
this.model.preference('hide_fetch_progress', true);
|
|
}
|
|
|
|
this.setup_feed_refresh();
|
|
this.hide_progress_bar();
|
|
},
|
|
|
|
// ===============================
|
|
// = Feed bar - Individual Feeds =
|
|
// ===============================
|
|
|
|
reset_feed: function (options) {
|
|
options = options || {};
|
|
|
|
$.extend(this.flags, {
|
|
'scrolling_by_selecting_story_title': false,
|
|
'page_view_showing_feed_view': false,
|
|
'feed_view_showing_story_view': false,
|
|
'temporary_story_view': false,
|
|
'story_titles_loaded': false,
|
|
'iframe_prevented_from_loading': false,
|
|
'pause_feed_refreshing': false,
|
|
'feed_list_showing_manage_menu': false,
|
|
'unread_threshold_temporarily': null,
|
|
'river_view': false,
|
|
'social_view': false,
|
|
'starred_view': false,
|
|
'select_story_in_feed': null,
|
|
'global_blurblogs': false,
|
|
'reloading_feeds': false
|
|
});
|
|
|
|
$.extend(this.cache, {
|
|
'iframe': {},
|
|
'iframe_stories': {},
|
|
'iframe_story_positions': {},
|
|
'feed_view_story_positions': {},
|
|
'iframe_story_positions_keys': [],
|
|
'feed_view_story_positions_keys': [],
|
|
'river_feeds_with_unreads': [],
|
|
'prefetch_last_story': 0,
|
|
'prefetch_iteration': 0,
|
|
'feed_title_floater_story_id': null,
|
|
'$feed_in_social_feed_list': {}
|
|
});
|
|
|
|
$.extend(this.counts, {
|
|
'page': 1,
|
|
'find_next_unread_on_page_of_feed_stories_load': 0,
|
|
'find_last_unread_on_page_of_feed_stories_load': 0,
|
|
'select_story_in_feed': 0
|
|
});
|
|
|
|
// console.log(['reset feed', options, options.search]);
|
|
|
|
if (_.isUndefined(options.search)) {
|
|
this.flags.search = "";
|
|
this.flags.searching = false;
|
|
}
|
|
this.$s.$feed_scroll.scrollTop(0);
|
|
this.$s.$starred_header.removeClass('NB-selected');
|
|
this.$s.$read_header.removeClass('NB-selected');
|
|
this.$s.$river_sites_header.removeClass('NB-selected');
|
|
this.$s.$river_infrequent_header.removeClass('NB-selected');
|
|
this.$s.$river_blurblogs_header.removeClass('NB-selected');
|
|
this.$s.$river_global_header.removeClass('NB-selected');
|
|
this.$s.$tryfeed_header.removeClass('NB-selected');
|
|
this.$s.$layout.removeClass('NB-view-river');
|
|
$('.task_view_page', this.$s.$taskbar).removeClass('NB-disabled');
|
|
$('.task_view_story', this.$s.$taskbar).removeClass('NB-disabled');
|
|
$('.task_view_page', this.$s.$taskbar).removeClass('NB-task-return');
|
|
clearTimeout(this.flags['next_fetch']);
|
|
|
|
if (this.flags['showing_feed_in_tryfeed_view'] ||
|
|
this.flags['showing_social_feed_in_tryfeed_view']) {
|
|
this.hide_tryfeed_view();
|
|
}
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
if (options.router) {
|
|
this.$s.$layout.layout().show('west', true);
|
|
this.$s.$layout.show();
|
|
}
|
|
this.hide_tryout_signup_button();
|
|
}
|
|
|
|
this.model.feeds.deselect();
|
|
this.model.stories.deselect();
|
|
this.model.starred_feeds.deselect();
|
|
this.model.searches_feeds.deselect();
|
|
if (_.string.contains(this.active_feed, 'social:')) {
|
|
this.model.social_feeds.deselect();
|
|
}
|
|
if (_.string.contains(this.active_feed, 'river:')) {
|
|
this.model.folders.deselect();
|
|
}
|
|
|
|
this.active_folder = null;
|
|
this.active_feed = null;
|
|
this.active_story = null;
|
|
|
|
NEWSBLUR.assets.stories.reset();
|
|
NEWSBLUR.app.feed_selector.hide_feed_selector();
|
|
NEWSBLUR.app.original_tab_view.unload_feed_iframe();
|
|
NEWSBLUR.app.story_tab_view.unload_story_iframe();
|
|
NEWSBLUR.app.text_tab_view.unload();
|
|
},
|
|
|
|
reload_feed: function (options) {
|
|
options = options || {};
|
|
|
|
if (this.flags['starred_view'] && this.flags['starred_tag']) {
|
|
options['tag'] = this.flags['starred_tag'];
|
|
this.open_starred_stories(options);
|
|
} else if (this.flags['starred_view']) {
|
|
this.open_starred_stories(options);
|
|
} else if (this.active_feed == 'read') {
|
|
this.open_read_stories(options);
|
|
} else if (this.flags['social_view'] &&
|
|
this.active_feed == 'river:blurblogs') {
|
|
this.open_river_blurblogs_stories();
|
|
} else if (this.flags['social_view'] &&
|
|
this.active_feed == 'river:global') {
|
|
this.open_river_blurblogs_stories({ 'global': true });
|
|
} else if (this.flags['social_view']) {
|
|
this.open_social_stories(this.active_feed, options);
|
|
} else if (this.flags['river_view']) {
|
|
if (this.active_feed == 'river:infrequent') {
|
|
options.infrequent = NEWSBLUR.assets.preference('infrequent_stories_per_month');
|
|
}
|
|
this.open_river_stories(this.active_folder &&
|
|
this.active_folder.folder_view &&
|
|
this.active_folder.folder_view.$el,
|
|
this.active_folder,
|
|
options);
|
|
} else if (this.active_feed) {
|
|
this.open_feed(this.active_feed, options);
|
|
}
|
|
|
|
if (options.search && !_.contains(['feed', 'text', 'story'], this.story_view)) {
|
|
this.switch_taskbar_view('feed', {
|
|
skip_save_type: true
|
|
});
|
|
}
|
|
},
|
|
|
|
open_feed: function (feed_id, options) {
|
|
options = options || {};
|
|
var self = this;
|
|
var $story_titles = this.$s.$story_titles;
|
|
var feed = this.model.get_feed(feed_id) || options.feed;
|
|
var temp = feed && feed.get('temp') && !feed.get('subscribed');
|
|
|
|
if (!feed || (temp && !options.try_feed)) {
|
|
// Setup tryfeed views first, then come back here.
|
|
console.log(["Temp open feed", feed_id, feed, options, temp]);
|
|
options.feed = options.feed && options.feed.attributes;
|
|
return this.load_feed_in_tryfeed_view(feed_id, options);
|
|
}
|
|
|
|
this.flags['opening_feed'] = true;
|
|
|
|
if (options.try_feed || feed) {
|
|
this.reset_feed(options);
|
|
this.hide_splash_page();
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
this.active_feed = feed.id;
|
|
this.next_feed = feed.id;
|
|
|
|
if (options.$feed) {
|
|
var selected_title_view = _.detect(feed.views, function (view) {
|
|
return view.el == options.$feed.get(0);
|
|
});
|
|
if (selected_title_view) {
|
|
feed.set("selected_title_view", selected_title_view, { silent: true });
|
|
}
|
|
}
|
|
if (options.feed && options.feed.set) {
|
|
options.feed.set('selected', true, options);
|
|
} else {
|
|
feed.set('selected', true, options);
|
|
}
|
|
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
this.iframe_scroll = null;
|
|
this.set_correct_story_view_for_feed(feed.id);
|
|
this.make_feed_title_in_stories();
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
|
|
_.delay(_.bind(function () {
|
|
if (!options.delay || feed.id == self.next_feed) {
|
|
this.model.load_feed(feed.id, 1, true, $.rescope(this.post_open_feed, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error);
|
|
}
|
|
}, this), options.delay || 0);
|
|
|
|
if (_.contains(['split', 'full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
(!this.story_view || this.story_view == 'page')) {
|
|
_.delay(_.bind(function () {
|
|
if (!options.delay || feed.id == this.next_feed) {
|
|
NEWSBLUR.app.original_tab_view.load_feed_iframe(feed.id);
|
|
}
|
|
}, this), options.delay || 0);
|
|
} else {
|
|
NEWSBLUR.app.original_tab_view.unload_feed_iframe();
|
|
NEWSBLUR.app.story_tab_view.unload_story_iframe();
|
|
NEWSBLUR.app.text_tab_view.unload();
|
|
this.flags['iframe_prevented_from_loading'] = true;
|
|
}
|
|
this.setup_mousemove_on_views();
|
|
|
|
if (!options.silent) {
|
|
var feed_title = feed.get('feed_title') || '';
|
|
var slug = _.string.words(_.string.clean(feed_title.replace(/[^a-z0-9\. ]/ig, ''))).join('-').toLowerCase();
|
|
var url = "site/" + feed.id + "/" + slug;
|
|
if (window.location.search.length) {
|
|
url = url + window.location.search;
|
|
}
|
|
if (!_.string.include(window.location.pathname, url)) {
|
|
NEWSBLUR.log(["Navigating to url", url]);
|
|
NEWSBLUR.router.navigate(url);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
post_open_feed: function (e, data, first_load) {
|
|
if (!data) {
|
|
NEWSBLUR.log(["No data from feed, trying again..."]);
|
|
return this.open_feed(this.active_feed, { force: true });
|
|
}
|
|
var stories = data.stories;
|
|
var tags = data.tags;
|
|
var feed_id = data.feed_id;
|
|
|
|
if (data.dupe_feed_id && this.active_feed == data.dupe_feed_id) {
|
|
this.active_feed = data.feed_id;
|
|
}
|
|
|
|
this.flags['opening_feed'] = false;
|
|
this.load_next_after_load();
|
|
NEWSBLUR.app.story_titles_header.show_feed_hidden_story_title_indicator(first_load);
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
if (this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
this.show_next_unread_story(true);
|
|
} else if (this.counts['find_last_unread_on_page_of_feed_stories_load']) {
|
|
this.show_last_unread_story(true);
|
|
} else if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
this.flags['story_titles_loaded'] = true;
|
|
if (first_load) {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
this.position_mouse_indicator();
|
|
|
|
if (_.contains(['story', 'text'], this.story_view) &&
|
|
!this.active_story &&
|
|
_.contains(['split', 'full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
!this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
if (this.story_view == 'text') {
|
|
NEWSBLUR.app.text_tab_view.show_explainer_single_story_mode();
|
|
} else if (this.story_view == 'story') {
|
|
NEWSBLUR.app.story_tab_view.show_explainer_single_story_mode();
|
|
}
|
|
}
|
|
}
|
|
|
|
NEWSBLUR.app.taskbar_info.hide_stories_progress_bar();
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
this.show_tryout_signup_button();
|
|
} else if (this.flags['showing_feed_in_tryfeed_view']) {
|
|
this.show_tryfeed_add_button();
|
|
this.correct_tryfeed_title();
|
|
}
|
|
},
|
|
|
|
load_next_after_load: function () {
|
|
if (this.flags['loaded_next_after_load']) return;
|
|
this.flags['loaded_next_after_load'] = true;
|
|
|
|
var next = $.getQueryString('next') || $.getQueryString('test');
|
|
var add_url = $.getQueryString('add') || $.getQueryString('url');
|
|
var story = $.getQueryString('story');
|
|
if (next == 'notifications') {
|
|
_.defer(function () {
|
|
NEWSBLUR.reader.open_notifications_modal(NEWSBLUR.assets.active_feed && NEWSBLUR.assets.active_feed.id);
|
|
});
|
|
}
|
|
if (add_url) {
|
|
NEWSBLUR.reader.open_add_feed_modal({ url: url });
|
|
}
|
|
if (story) {
|
|
this.flags['select_story_in_feed'] = story;
|
|
}
|
|
|
|
// if (window.history.replaceState && !$.getQueryString('test')) {
|
|
// // In case this needs to be found again: window.location.href = BACKBONE
|
|
// window.history.replaceState({}, null, '/');
|
|
// }
|
|
},
|
|
|
|
set_correct_story_view_for_feed: function (feed_id, view) {
|
|
feed_id = feed_id || this.active_feed;
|
|
feed_id = this.active_story_view(feed_id);
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
var $original_tabs = $('.task_view_page, .task_view_story');
|
|
var $page_tab = $('.task_view_page');
|
|
view = view || NEWSBLUR.assets.view_setting(feed_id);
|
|
// console.log(['set_correct_story_view_for_feed', feed_id, view]);
|
|
|
|
$original_tabs.removeClass('NB-disabled-page')
|
|
.removeClass('NB-disabled')
|
|
.removeClass('NB-hidden')
|
|
.removeClass('NB-exception-page');
|
|
$original_tabs.each(function () {
|
|
$(this).tipsy('disable');
|
|
});
|
|
|
|
if (feed && view == 'original' &&
|
|
(feed.get('disabled_page') ||
|
|
NEWSBLUR.utils.is_url_iframe_buster(feed.get('feed_link')))) {
|
|
view = 'feed';
|
|
$original_tabs.addClass('NB-disabled-page')
|
|
.addClass('NB-disabled')
|
|
.attr('title', 'The original page has been disabled by the publisher.')
|
|
.tipsy({
|
|
gravity: 'n',
|
|
fade: true,
|
|
delayIn: 200
|
|
});
|
|
$original_tabs.each(function () {
|
|
$(this).tipsy('enable');
|
|
});
|
|
} else if (this.flags.river_view) {
|
|
$page_tab.addClass('NB-disabled');
|
|
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
|
|
} else if (feed && feed.get('has_exception') && feed.get('exception_type') == 'page') {
|
|
if (view == 'page') {
|
|
view = 'feed';
|
|
}
|
|
$('.task_view_page').addClass('NB-exception-page');
|
|
}
|
|
|
|
|
|
var $split = $(".NB-task-layout-split");
|
|
var $list = $(".NB-task-layout-list");
|
|
var $grid = $(".NB-task-layout-grid");
|
|
var $magazine = $(".NB-task-layout-magazine");
|
|
var $full = $(".NB-task-layout-full");
|
|
var story_layout = NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout');
|
|
this.$s.$story_titles[0].className = this.$s.$story_titles[0].className.replace(/ ?NB-layout-\w+/gi, '');
|
|
this.$s.$story_titles.addClass('NB-layout-' + story_layout);
|
|
|
|
if (story_layout == 'list') {
|
|
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
|
|
$('.NB-taskbar-button.task_view_story').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_text').addClass('NB-last');
|
|
$full.removeClass('NB-active');
|
|
$split.removeClass('NB-active');
|
|
$list.addClass('NB-active');
|
|
$grid.removeClass('NB-active');
|
|
$magazine.removeClass('NB-active');
|
|
} else if (story_layout == 'grid') {
|
|
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
|
|
$('.NB-taskbar-button.task_view_story').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_text').addClass('NB-last');
|
|
$full.removeClass('NB-active');
|
|
$split.removeClass('NB-active');
|
|
$list.removeClass('NB-active');
|
|
$grid.addClass('NB-active');
|
|
$magazine.removeClass('NB-active');
|
|
} else if (story_layout == 'magazine') {
|
|
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
|
|
$('.NB-taskbar-button.task_view_story').addClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_text').addClass('NB-last');
|
|
$full.removeClass('NB-active');
|
|
$split.removeClass('NB-active');
|
|
$list.removeClass('NB-active');
|
|
$grid.removeClass('NB-active');
|
|
$magazine.addClass('NB-active');
|
|
} else if (story_layout == 'split') {
|
|
if (!this.flags.river_view) {
|
|
$('.NB-taskbar-button.task_view_page').removeClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').removeClass('NB-first');
|
|
}
|
|
$('.NB-taskbar-button.task_view_story').removeClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_text').removeClass('NB-last');
|
|
$full.removeClass('NB-active');
|
|
$split.addClass('NB-active');
|
|
$list.removeClass('NB-active');
|
|
$grid.removeClass('NB-active');
|
|
$magazine.removeClass('NB-active');
|
|
} else if (story_layout == 'full') {
|
|
if (!this.flags.river_view) {
|
|
$('.NB-taskbar-button.task_view_page').removeClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_feed').removeClass('NB-first');
|
|
}
|
|
$('.NB-taskbar-button.task_view_story').removeClass('NB-hidden');
|
|
$('.NB-taskbar-button.task_view_text').removeClass('NB-last');
|
|
$full.addClass('NB-active');
|
|
$split.removeClass('NB-active');
|
|
$list.removeClass('NB-active');
|
|
$grid.removeClass('NB-active');
|
|
$magazine.removeClass('NB-active');
|
|
}
|
|
|
|
if (_.contains(['starred', 'read'], feed_id)) {
|
|
$page_tab.addClass('NB-disabled');
|
|
}
|
|
|
|
// console.log(['setting reader.story_view', view, " was:", this.story_view]);
|
|
this.story_view = view;
|
|
},
|
|
|
|
// ================
|
|
// = Story Layout =
|
|
// ================
|
|
|
|
switch_story_layout: function (story_layout, force) {
|
|
var feed_layout = NEWSBLUR.assets.view_setting(this.active_feed, 'layout');
|
|
var active_layout = this.story_layout;
|
|
var original_layout = this.story_layout;
|
|
story_layout = story_layout || feed_layout || active_layout;
|
|
|
|
// console.log(['switch_story_layout', active_layout, feed_layout, story_layout, this.active_feed, story_layout == active_layout]);
|
|
if (story_layout == active_layout && !force) return;
|
|
|
|
this.story_layout = story_layout;
|
|
|
|
if (!this.active_feed) return;
|
|
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, { 'layout': story_layout });
|
|
|
|
this.set_correct_story_view_for_feed();
|
|
this.apply_resizable_layout({ right_side: true });
|
|
|
|
NEWSBLUR.app.story_titles.render({ immediate: !!force });
|
|
|
|
if (story_layout == 'list') {
|
|
if (this.active_story) {
|
|
this.active_story.story_title_view.toggle_selected();
|
|
}
|
|
NEWSBLUR.app.story_list.clear();
|
|
} else if (story_layout == 'grid') {
|
|
if (this.active_story) {
|
|
this.active_story.story_title_view.toggle_selected();
|
|
}
|
|
NEWSBLUR.app.story_list.clear();
|
|
} else if (story_layout == 'magazine') {
|
|
if (this.active_story) {
|
|
this.active_story.story_title_view.toggle_selected();
|
|
}
|
|
NEWSBLUR.app.story_list.clear();
|
|
} else if (story_layout == 'split') {
|
|
NEWSBLUR.app.story_list.render();
|
|
if (this.active_story) {
|
|
NEWSBLUR.app.story_list.show_only_selected_story();
|
|
this.active_story.story_title_view.toggle_selected();
|
|
this.active_story.story_view.toggle_selected();
|
|
}
|
|
} else if (story_layout == 'full') {
|
|
NEWSBLUR.app.story_list.render();
|
|
if (this.active_story) {
|
|
NEWSBLUR.app.story_list.show_only_selected_story();
|
|
this.active_story.story_title_view.toggle_selected();
|
|
this.active_story.story_view.toggle_selected();
|
|
} else {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
}
|
|
}
|
|
|
|
this.switch_to_correct_view();
|
|
this.make_feed_title_in_stories();
|
|
this.add_body_classes();
|
|
|
|
_.defer(function () {
|
|
NEWSBLUR.app.story_titles.scroll_to_selected_story();
|
|
NEWSBLUR.app.story_list.scroll_to_selected_story();
|
|
NEWSBLUR.app.feed_list.scroll_to_selected();
|
|
if (_.contains(['split', 'list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.app.story_titles.fill_out();
|
|
} else {
|
|
NEWSBLUR.app.story_list.fill_out();
|
|
}
|
|
});
|
|
},
|
|
|
|
// ==================
|
|
// = Saved Searches =
|
|
// ==================
|
|
|
|
open_saved_search: function (options) {
|
|
var search_model = options.search_model;
|
|
var feed_id = search_model.get('feed_id');
|
|
var query = search_model.get('query');
|
|
var feed_model = NEWSBLUR.assets.get_feed(feed_id);
|
|
NEWSBLUR.reader.flags.searching = true;
|
|
NEWSBLUR.reader.flags.search = query;
|
|
options['search'] = query;
|
|
options['router'] = true;
|
|
search_model.set('selected', true);
|
|
options.feed = options.search_model;
|
|
|
|
if (feed_id == 'river:') {
|
|
this.open_river_stories(options.$feed, feed_model, options);
|
|
} else if (feed_id == 'river:infrequent') {
|
|
options.infrequent = NEWSBLUR.assets.preference('infrequent_stories_per_month');
|
|
this.open_river_stories(options.$feed, feed_model, options);
|
|
} else if (_.string.startsWith(feed_id, 'river:')) {
|
|
this.open_river_stories(options.$feed, feed_model, options);
|
|
} else if (feed_id == "read") {
|
|
this.open_read_stories(options);
|
|
} else if (feed_id == 'starred') {
|
|
this.open_starred_stories(options);
|
|
} else if (_.string.startsWith(feed_id, 'starred:')) {
|
|
options.tag = feed_model.tag_slug();
|
|
this.open_starred_stories(options);
|
|
} else if (_.string.startsWith(feed_id, 'feed:')) {
|
|
this.open_feed(parseInt(feed_id.replace('feed:', ''), 10), options);
|
|
} else if (_.string.startsWith(feed_id, 'social:')) {
|
|
this.open_social_stories(feed_id, options);
|
|
}
|
|
|
|
window.history.replaceState({}, "", $.updateQueryString('search', query, window.location.pathname));
|
|
|
|
NEWSBLUR.reader.reload_feed(options);
|
|
NEWSBLUR.app.story_titles_header.show_hidden_story_titles();
|
|
},
|
|
|
|
// ===================
|
|
// = Starred Stories =
|
|
// ===================
|
|
|
|
update_starred_counts: function () {
|
|
NEWSBLUR.assets.update_starred_counts(_.bind(function (data) {
|
|
this.update_starred_count();
|
|
}, this));
|
|
},
|
|
|
|
update_starred_count: function () {
|
|
var starred_count = this.model.starred_count;
|
|
var $starred_count = $('.NB-feeds-header-count', this.$s.$starred_header);
|
|
var $starred_container = this.$s.$starred_header.closest('.NB-feeds-header-container');
|
|
|
|
if (starred_count <= 0) {
|
|
this.$s.$starred_header.addClass('NB-empty');
|
|
$starred_count.text('');
|
|
$starred_container.slideUp(350);
|
|
} else if (starred_count > 0) {
|
|
$starred_count.text(starred_count);
|
|
this.$s.$starred_header.removeClass('NB-empty');
|
|
$starred_container.slideDown(350);
|
|
}
|
|
},
|
|
|
|
open_starred_stories: function (options) {
|
|
options = options || {};
|
|
var $story_titles = this.$s.$story_titles;
|
|
|
|
this.reset_feed(options);
|
|
this.hide_splash_page();
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
this.iframe_scroll = null;
|
|
if (options.tag && !options.model) {
|
|
if (options.tag == 'highlights') {
|
|
var model = NEWSBLUR.assets.starred_feeds.detect(function (feed) {
|
|
return feed.get('is_highlights');
|
|
});
|
|
} else {
|
|
var model = NEWSBLUR.assets.starred_feeds.detect(function (feed) {
|
|
return feed.tag_slug() == options.tag || feed.get('tag') == options.tag;
|
|
});
|
|
}
|
|
if (model) {
|
|
options.model = model;
|
|
options.tag = model.get('tag');
|
|
options.highlights = model.get('is_highlights');
|
|
if (options.highlights) options.tag = "highlights";
|
|
}
|
|
}
|
|
if (options.tag == "highlights") {
|
|
this.active_feed = options.model.id;
|
|
this.flags['starred_tag'] = "highlights";
|
|
options.model.set('selected', true);
|
|
} else if (options.tag) {
|
|
this.active_feed = options.model.id;
|
|
this.flags['starred_tag'] = options.model.get('tag');
|
|
if (options.feed) {
|
|
options.feed.set('selected', true);
|
|
} else {
|
|
options.model.set('selected', true);
|
|
}
|
|
} else {
|
|
this.active_feed = 'starred';
|
|
if (options.feed) {
|
|
options.feed.set('selected', true);
|
|
} else {
|
|
this.$s.$starred_header.addClass('NB-selected');
|
|
}
|
|
this.flags['starred_tag'] = null;
|
|
}
|
|
this.flags['starred_view'] = true;
|
|
this.$s.$layout.addClass('NB-view-river');
|
|
this.flags.river_view = true;
|
|
|
|
$('.task_view_page', this.$s.$taskbar).addClass('NB-disabled');
|
|
var explicit_view_setting = this.model.view_setting(this.active_feed, 'view');
|
|
if (!explicit_view_setting || explicit_view_setting == 'page') {
|
|
explicit_view_setting = 'feed';
|
|
}
|
|
this.set_correct_story_view_for_feed(this.active_feed, explicit_view_setting);
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
this.setup_mousemove_on_views();
|
|
this.make_feed_title_in_stories();
|
|
NEWSBLUR.app.feed_list.scroll_to_show_selected_folder();
|
|
|
|
if (!options.silent) {
|
|
var url = "/saved";
|
|
if (options.model) {
|
|
url += "/" + options.model.tag_slug();
|
|
}
|
|
if (window.location.pathname != url) {
|
|
NEWSBLUR.log(["Navigating to url", url]);
|
|
NEWSBLUR.router.navigate(url);
|
|
}
|
|
}
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
|
|
this.model.fetch_starred_stories(1, this.flags['starred_tag'], this.flags['starred_tag'] == 'highlights', _.bind(this.post_open_starred_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, true);
|
|
|
|
|
|
},
|
|
|
|
post_open_starred_stories: function (data, first_load) {
|
|
if (!this.flags['starred_view']) return;
|
|
|
|
// NEWSBLUR.log(['post_open_starred_stories', data.stories.length, first_load]);
|
|
this.flags['opening_feed'] = false;
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
if (first_load) {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
}
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
this.flags['story_titles_loaded'] = true;
|
|
},
|
|
|
|
// =====================
|
|
// = Read Stories Feed =
|
|
// =====================
|
|
|
|
open_read_stories: function (options) {
|
|
options = options || {};
|
|
var $story_titles = this.$s.$story_titles;
|
|
|
|
this.reset_feed(options);
|
|
this.hide_splash_page();
|
|
this.active_feed = 'read';
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
this.iframe_scroll = null;
|
|
this.$s.$read_header.addClass('NB-selected');
|
|
this.$s.$layout.addClass('NB-view-river');
|
|
this.flags.river_view = true;
|
|
|
|
$('.task_view_page', this.$s.$taskbar).addClass('NB-disabled');
|
|
var explicit_view_setting = this.model.view_setting(this.active_feed, 'view');
|
|
if (!explicit_view_setting || explicit_view_setting == 'page') {
|
|
explicit_view_setting = 'feed';
|
|
}
|
|
this.set_correct_story_view_for_feed(this.active_feed, explicit_view_setting);
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
this.setup_mousemove_on_views();
|
|
this.make_feed_title_in_stories();
|
|
|
|
if (!options.silent) {
|
|
var url = "/read";
|
|
if (window.location.pathname != url) {
|
|
NEWSBLUR.log(["Navigating to url", url]);
|
|
NEWSBLUR.router.navigate(url);
|
|
}
|
|
}
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
|
|
this.model.fetch_read_stories(1, _.bind(this.post_open_read_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, true);
|
|
},
|
|
|
|
post_open_read_stories: function (data, first_load) {
|
|
if (this.active_feed == 'read') {
|
|
// NEWSBLUR.log(['post_open_read_stories', data.stories.length, first_load]);
|
|
this.flags['opening_feed'] = false;
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
if (first_load) {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
}
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
this.flags['story_titles_loaded'] = true;
|
|
}
|
|
},
|
|
|
|
// =================
|
|
// = River of News =
|
|
// =================
|
|
|
|
open_river_stories: function ($folder, folder, options) {
|
|
options = options || {};
|
|
var $story_titles = this.$s.$story_titles;
|
|
$folder = $folder || this.$s.$feed_list;
|
|
var folder_title = folder && folder.get('folder_title') || "Everything";
|
|
|
|
this.reset_feed(options);
|
|
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
this.hide_splash_page();
|
|
if (options.infrequent) {
|
|
folder_title = "Infrequent";
|
|
this.active_feed = 'river:infrequent';
|
|
if (options.feed) {
|
|
options.feed.set('selected', true);
|
|
} else {
|
|
this.$s.$river_infrequent_header.addClass('NB-selected');
|
|
}
|
|
} else if (!folder || folder.get('fake') || !folder.get('folder_title')) {
|
|
this.active_feed = 'river:';
|
|
if (options.feed) {
|
|
options.feed.set('selected', true);
|
|
} else {
|
|
this.$s.$river_sites_header.addClass('NB-selected');
|
|
}
|
|
} else {
|
|
this.active_feed = 'river:' + folder_title;
|
|
if (options.feed) {
|
|
options.feed.set('selected', true);
|
|
} else {
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($folder) ||
|
|
this.active_folder && this.active_folder.folder_view;
|
|
folder_view.model.set('selected', true);
|
|
}
|
|
}
|
|
this.active_folder = folder || NEWSBLUR.assets.folders;
|
|
|
|
this.iframe_scroll = null;
|
|
this.flags['opening_feed'] = true;
|
|
this.$s.$layout.addClass('NB-view-river');
|
|
this.flags.river_view = true;
|
|
|
|
$('.task_view_page', this.$s.$taskbar).addClass('NB-disabled');
|
|
var explicit_view_setting = this.model.view_setting(this.active_feed, 'view');
|
|
if (!explicit_view_setting || explicit_view_setting == 'page') {
|
|
explicit_view_setting = 'feed';
|
|
}
|
|
this.set_correct_story_view_for_feed(this.active_feed, explicit_view_setting);
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
this.setup_mousemove_on_views();
|
|
this.make_feed_title_in_stories();
|
|
NEWSBLUR.app.feed_list.scroll_to_show_selected_folder();
|
|
|
|
if (!options.silent) {
|
|
var slug = folder_title.replace(/ /g, '-').toLowerCase();
|
|
var url = "folder/" + slug;
|
|
if (!_.string.include(window.location.pathname, url)) {
|
|
NEWSBLUR.log(["Navigating to url", url]);
|
|
NEWSBLUR.router.navigate(url);
|
|
}
|
|
}
|
|
|
|
var visible_only = this.model.view_setting(this.active_feed, 'read_filter') == 'unread';
|
|
if (NEWSBLUR.reader.flags.search) visible_only = false;
|
|
if (NEWSBLUR.reader.flags.feed_list_showing_starred) visible_only = false;
|
|
var feeds;
|
|
if (visible_only) {
|
|
feeds = _.pluck(this.active_folder.feeds_with_unreads(), 'id');
|
|
if (!feeds.length) {
|
|
feeds = this.active_folder.feed_ids_in_folder();
|
|
}
|
|
} else {
|
|
feeds = this.active_folder.feed_ids_in_folder();
|
|
}
|
|
this.cache['river_feeds_with_unreads'] = feeds;
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
// NEWSBLUR.app.taskbar_info.show_stories_progress_bar(feeds.length);
|
|
if (options.dashboard_transfer) {
|
|
NEWSBLUR.assets.stories.reset(options.dashboard_transfer.map(function (story) {
|
|
return story.toJSON();
|
|
}));
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
this.model.fetch_river_stories(this.active_feed, feeds, 1, { 'infrequent': options.infrequent },
|
|
_.bind(this.post_open_river_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else {
|
|
this.model.fetch_river_stories(this.active_feed, feeds, 1, { 'infrequent': options.infrequent },
|
|
_.bind(this.post_open_river_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, true);
|
|
}
|
|
},
|
|
|
|
post_open_river_stories: function (data, first_load) {
|
|
if (!data) {
|
|
return NEWSBLUR.app.taskbar_info.show_stories_error(data);
|
|
}
|
|
|
|
if (this.active_feed && _.isString(this.active_feed) &&
|
|
this.active_feed.indexOf('river:') != -1) {
|
|
this.flags['opening_feed'] = false;
|
|
NEWSBLUR.app.story_titles_header.show_feed_hidden_story_title_indicator(first_load);
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
this.flags['story_titles_loaded'] = true;
|
|
if (this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
this.show_next_unread_story(true);
|
|
} else if (this.counts['find_last_unread_on_page_of_feed_stories_load']) {
|
|
this.show_last_unread_story(true);
|
|
} else if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
// NEWSBLUR.app.taskbar_info.hide_stories_progress_bar(_.bind(function() {
|
|
if (first_load) {
|
|
this.position_mouse_indicator();
|
|
}
|
|
// }, this));
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
this.show_tryout_signup_button();
|
|
} else if (first_load) {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
if (NEWSBLUR.assets.preference('feed_view_single_story') &&
|
|
!this.active_story &&
|
|
_.contains(['full'], NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
!this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
this.show_next_story(1);
|
|
}
|
|
|
|
}
|
|
}
|
|
},
|
|
|
|
// ===================
|
|
// = River Blurblogs =
|
|
// ===================
|
|
|
|
open_river_blurblogs_stories: function (options) {
|
|
options = options || {};
|
|
var $story_titles = this.$s.$story_titles;
|
|
var folder_title = options.global ? "Global Blurblogs" : "Blurblogs";
|
|
|
|
this.reset_feed(options);
|
|
this.hide_splash_page();
|
|
|
|
this.active_feed = options.global ? 'river:global' : 'river:blurblogs';
|
|
this.active_folder = new Backbone.Model({
|
|
id: this.active_feed,
|
|
folder_title: options.global ? "Global Shared Stories" : "All Shared Stories",
|
|
fake: true,
|
|
show_options: true
|
|
});
|
|
|
|
if (options.global) {
|
|
this.$s.$river_global_header.addClass('NB-selected');
|
|
} else {
|
|
this.$s.$river_blurblogs_header.addClass('NB-selected');
|
|
}
|
|
|
|
this.iframe_scroll = null;
|
|
this.flags['opening_feed'] = true;
|
|
this.$s.$layout.addClass('NB-view-river');
|
|
this.flags.river_view = true;
|
|
this.flags.social_view = true;
|
|
this.flags.global_blurblogs = options.global;
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
$('.task_view_page', this.$s.$taskbar).addClass('NB-disabled');
|
|
var explicit_view_setting = this.model.view_setting(this.active_feed, 'view');
|
|
if (!explicit_view_setting || explicit_view_setting == 'page') {
|
|
explicit_view_setting = 'feed';
|
|
}
|
|
this.set_correct_story_view_for_feed(this.active_feed, explicit_view_setting);
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
this.setup_mousemove_on_views();
|
|
this.make_feed_title_in_stories();
|
|
NEWSBLUR.app.feed_list.scroll_to_show_selected_folder();
|
|
|
|
if (!options.silent) {
|
|
var slug = folder_title.replace(/ /g, '-').toLowerCase();
|
|
var url = "folder/" + slug;
|
|
if (!_.string.include(window.location.pathname, url)) {
|
|
NEWSBLUR.log(["Navigating to url", url]);
|
|
NEWSBLUR.router.navigate(url);
|
|
}
|
|
}
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
NEWSBLUR.app.taskbar_info.show_stories_progress_bar(100); // Assume 100 followees for popular
|
|
if (options.dashboard_transfer) {
|
|
NEWSBLUR.assets.stories.reset(options.dashboard_transfer.map(function (story) {
|
|
return story.toJSON();
|
|
}));
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
this.model.fetch_river_blurblogs_stories(this.active_feed, 1,
|
|
{ 'global': this.flags.global_blurblogs },
|
|
_.bind(this.post_open_river_blurblogs_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else {
|
|
this.model.fetch_river_blurblogs_stories(this.active_feed, 1,
|
|
{ 'global': this.flags.global_blurblogs },
|
|
_.bind(this.post_open_river_blurblogs_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, true);
|
|
}
|
|
},
|
|
|
|
post_open_river_blurblogs_stories: function (data, first_load) {
|
|
// NEWSBLUR.log(['post_open_river_stories', data, this.active_feed]);
|
|
if (!data) {
|
|
return NEWSBLUR.app.taskbar_info.show_stories_error(data);
|
|
}
|
|
|
|
if (this.active_feed && _.isString(this.active_feed) &&
|
|
this.active_feed.indexOf('river:') != -1) {
|
|
this.flags['opening_feed'] = false;
|
|
NEWSBLUR.app.story_titles_header.show_feed_hidden_story_title_indicator(first_load);
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
this.flags['story_titles_loaded'] = true;
|
|
if (this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
this.show_next_unread_story(true);
|
|
} else if (this.counts['find_last_unread_on_page_of_feed_stories_load']) {
|
|
this.show_last_unread_story(true);
|
|
} else if (this.counts['select_story_in_feed'] ||
|
|
this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
if (first_load) {
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
this.position_mouse_indicator();
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_progress_bar();
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
this.show_tryout_signup_button();
|
|
}
|
|
}
|
|
},
|
|
|
|
// ==================
|
|
// = Social Stories =
|
|
// ==================
|
|
|
|
open_social_stories: function (feed_id, options) {
|
|
// NEWSBLUR.log(["open_social_stories", feed_id, options]);
|
|
options = options || {};
|
|
if (_.isNumber(feed_id)) feed_id = "social:" + feed_id;
|
|
|
|
var feed = this.model.get_feed(feed_id);
|
|
var $story_titles = this.$s.$story_titles;
|
|
var $social_feed = this.find_social_feed_with_feed_id(feed_id);
|
|
|
|
if (!feed && !options.try_feed) {
|
|
// Setup tryfeed views first, then come back here.
|
|
var socialsub = this.model.add_social_feed({
|
|
id: feed_id,
|
|
user_id: parseInt(feed_id.replace('social:', ''), 10)
|
|
});
|
|
return this.load_social_feed_in_tryfeed_view(socialsub, options);
|
|
}
|
|
|
|
this.reset_feed(options);
|
|
this.hide_splash_page();
|
|
|
|
this.active_feed = feed.id;
|
|
this.next_feed = feed.id;
|
|
this.flags.river_view = false;
|
|
this.flags.social_view = true;
|
|
if (options.story_id) {
|
|
this.flags['select_story_in_feed'] = options.story_id;
|
|
}
|
|
|
|
this.iframe_scroll = null;
|
|
this.flags['opening_feed'] = true;
|
|
if (options.feed) {
|
|
options.feed.set('selected', true, options);
|
|
} else {
|
|
feed.set('selected', true, options);
|
|
}
|
|
this.set_correct_story_view_for_feed(this.active_feed);
|
|
this.make_feed_title_in_stories();
|
|
this.$s.$layout.addClass('NB-view-river');
|
|
|
|
// TODO: Only make feed the default for blurblogs, not overriding an explicit pref.
|
|
this.switch_taskbar_view(this.story_view);
|
|
this.switch_story_layout();
|
|
this.setup_mousemove_on_views();
|
|
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
NEWSBLUR.app.taskbar_info.show_stories_progress_bar();
|
|
|
|
if (options.dashboard_transfer) {
|
|
NEWSBLUR.assets.stories.reset(options.dashboard_transfer.map(function (story) {
|
|
return story.toJSON();
|
|
}));
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
}
|
|
this.model.fetch_social_stories(this.active_feed, 1,
|
|
_.bind(this.post_open_social_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else {
|
|
this.model.fetch_social_stories(this.active_feed, 1,
|
|
_.bind(this.post_open_social_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, true);
|
|
}
|
|
|
|
if (this.story_view == 'page') {
|
|
_.delay(_.bind(function () {
|
|
if (!options.delay || feed.id == this.next_feed) {
|
|
NEWSBLUR.app.original_tab_view.load_feed_iframe();
|
|
}
|
|
}, this), options.delay || 0);
|
|
} else {
|
|
this.flags['iframe_prevented_from_loading'] = true;
|
|
}
|
|
|
|
if (!options.silent && feed.get('feed_title')) {
|
|
var slug = _.string.words(_.string.clean(feed.get('feed_title').replace(/[^a-z0-9\. ]/ig, ''))).join('-').toLowerCase();
|
|
var url = "social/" + feed.get('user_id') + "/" + slug;
|
|
if (!_.string.include(window.location.pathname, url)) {
|
|
var params = {};
|
|
if (_.string.include(window.location.pathname, "social/" + feed.get('user_id'))) {
|
|
params['replace'] = true;
|
|
}
|
|
NEWSBLUR.log(["Navigating to social", url, window.location.pathname]);
|
|
NEWSBLUR.router.navigate(url, params);
|
|
}
|
|
} else if (!feed.get('feed_title')) {
|
|
NEWSBLUR.log(["No feed title on social", feed]);
|
|
NEWSBLUR.router.navigate('');
|
|
}
|
|
},
|
|
|
|
post_open_social_stories: function (data, first_load) {
|
|
// NEWSBLUR.log(['post_open_river_stories', data, this.active_feed, this.flags['select_story_in_feed']]);
|
|
if (!data) {
|
|
return NEWSBLUR.app.taskbar_info.show_stories_error(data);
|
|
}
|
|
|
|
if (this.active_feed && NEWSBLUR.utils.is_feed_social(this.active_feed)) {
|
|
this.flags['opening_feed'] = false;
|
|
// this.show_story_titles_above_intelligence_level({'animate': false});
|
|
NEWSBLUR.app.story_titles_header.show_feed_hidden_story_title_indicator(first_load);
|
|
this.flags['story_titles_loaded'] = true;
|
|
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
|
|
this.select_story_in_feed();
|
|
} else if (this.counts['find_next_unread_on_page_of_feed_stories_load']) {
|
|
this.show_next_unread_story(true);
|
|
} else if (this.counts['find_last_unread_on_page_of_feed_stories_load']) {
|
|
this.show_last_unread_story(true);
|
|
}
|
|
if (first_load) {
|
|
NEWSBLUR.app.taskbar_info.hide_stories_progress_bar();
|
|
this.find_story_with_action_preference_on_open_feed();
|
|
this.position_mouse_indicator();
|
|
}
|
|
NEWSBLUR.app.taskbar_info.hide_stories_progress_bar();
|
|
if (NEWSBLUR.Globals.is_anonymous) {
|
|
this.show_tryout_signup_button();
|
|
} else if (this.flags['showing_social_feed_in_tryfeed_view']) {
|
|
this.show_tryfeed_follow_button();
|
|
this.correct_tryfeed_title();
|
|
}
|
|
}
|
|
},
|
|
|
|
find_social_feed_with_feed_id: function (feed_id) {
|
|
if (_.contains(this.cache.$feed_in_social_feed_list, feed_id)) {
|
|
return this.cache.$feed_in_social_feed_list[feed_id];
|
|
}
|
|
|
|
var $social_feeds = this.$s.$social_feeds;
|
|
var $feeds = $([]);
|
|
|
|
$('.feed', $social_feeds).each(function () {
|
|
if ($(this).data('id') == feed_id) {
|
|
$feeds.push($(this).get(0));
|
|
}
|
|
});
|
|
|
|
this.cache.$feed_in_social_feed_list[feed_id] = $feeds;
|
|
|
|
return $feeds;
|
|
},
|
|
|
|
// ==========================
|
|
// = Story Pane - All Views =
|
|
// ==========================
|
|
|
|
switch_to_correct_view: function (options) {
|
|
options = options || {};
|
|
// NEWSBLUR.log(['Found story', this.story_view, options.found_story_in_page, this.flags['page_view_showing_feed_view'], this.flags['feed_view_showing_story_view']]);
|
|
|
|
if (options.story_not_found) {
|
|
// Story not found, show in feed view with link to page view
|
|
if (this.story_view == 'page' && !this.flags['page_view_showing_feed_view']) {
|
|
// NEWSBLUR.log(['turn on feed view', this.flags['page_view_showing_feed_view'], this.flags['feed_view_showing_story_view']]);
|
|
this.flags['page_view_showing_feed_view'] = true;
|
|
this.flags['feed_view_showing_story_view'] = false;
|
|
this.flags['temporary_story_view'] = false;
|
|
this.switch_taskbar_view('feed', { skip_save_type: 'page' });
|
|
NEWSBLUR.app.story_list.show_stories_preference_in_feed_view();
|
|
}
|
|
} else if (_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
(this.story_view == 'page' || this.story_view == 'story')) {
|
|
this.switch_taskbar_view('feed', { skip_save_type: 'layout' });
|
|
} else if (this.story_view == 'page' && this.flags['page_view_showing_feed_view']) {
|
|
// NEWSBLUR.log(['turn off feed view', this.flags['page_view_showing_feed_view'], this.flags['feed_view_showing_story_view']]);
|
|
this.flags['page_view_showing_feed_view'] = false;
|
|
this.flags['feed_view_showing_story_view'] = false;
|
|
this.flags['temporary_story_view'] = false;
|
|
this.switch_taskbar_view('page');
|
|
} else if (this.flags['feed_view_showing_story_view']) {
|
|
// NEWSBLUR.log(['turn off story view', this.flags['page_view_showing_feed_view'], this.flags['feed_view_showing_story_view']]);
|
|
this.flags['page_view_showing_feed_view'] = false;
|
|
this.flags['feed_view_showing_story_view'] = false;
|
|
this.flags['temporary_story_view'] = false;
|
|
this.switch_taskbar_view(this.story_view, { skip_save_type: true });
|
|
} else if (this.flags['temporary_story_view']) {
|
|
// NEWSBLUR.log(['turn off story view', this.flags['page_view_showing_feed_view'], this.flags['feed_view_showing_story_view']]);
|
|
this.flags['page_view_showing_feed_view'] = false;
|
|
this.flags['feed_view_showing_story_view'] = false;
|
|
this.flags['temporary_story_view'] = false;
|
|
this.switch_taskbar_view(this.story_view, { skip_save_type: true });
|
|
}
|
|
},
|
|
|
|
mark_active_story_read: function () {
|
|
if (!this.active_story) return;
|
|
var story_id = this.active_story.id;
|
|
var story = this.model.get_story(story_id);
|
|
if (this.active_story && !this.active_story.get('read_status')) {
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
} else if (this.active_story && this.active_story.get('read_status')) {
|
|
NEWSBLUR.assets.stories.mark_unread(story);
|
|
}
|
|
},
|
|
|
|
maybe_mark_all_as_read: function () {
|
|
if (_.contains(['river:blurblogs', 'river:global'], this.active_feed)) {
|
|
return;
|
|
} else if (this.flags.social_view) {
|
|
this.mark_feed_as_read();
|
|
} else if (this.flags.river_view) {
|
|
if (this.active_feed == 'river:' && NEWSBLUR.assets.preference('mark_read_river_confirm')) {
|
|
this.open_mark_read_modal({ days: 0 });
|
|
} else {
|
|
this.mark_folder_as_read();
|
|
}
|
|
} else if (!this.flags.river_view && !this.flags.social_view) {
|
|
this.mark_feed_as_read();
|
|
}
|
|
},
|
|
|
|
mark_feed_as_read: function (feed_id, days_back, direction) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
this.mark_feeds_as_read([feed_id], days_back, direction);
|
|
|
|
if (!direction && NEWSBLUR.assets.preference('markread_nextfeed') == 'nextfeed' &&
|
|
NEWSBLUR.reader.active_feed == feed_id) {
|
|
this.show_next_feed(1);
|
|
}
|
|
},
|
|
|
|
mark_folder_as_read: function (folder, days_back, direction) {
|
|
var folder = folder || this.active_folder;
|
|
var feeds = folder.feed_ids_in_folder({ unreads_only: true });
|
|
|
|
if (direction) {
|
|
var order = NEWSBLUR.assets.view_setting(this.active_feed, 'order');
|
|
if ((direction == "newer" && order == "oldest") || (direction == "older" && order == "newest")) {
|
|
var unread_counts = folder.unread_counts && folder.unread_counts() || folder.folders.unread_counts();
|
|
var total = unread_counts['nt'] + unread_counts['ps'];
|
|
if (total > 100) {
|
|
if (!window.confirm("This will mark up to " + Inflector.commas(total) + " stories as read. Are you sure?")) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
this.mark_feeds_as_read(feeds, days_back, direction);
|
|
|
|
if (!direction && NEWSBLUR.assets.preference('markread_nextfeed') == 'nextfeed' &&
|
|
NEWSBLUR.reader.active_folder == folder) {
|
|
this.show_next_feed(1);
|
|
}
|
|
},
|
|
|
|
mark_feeds_as_read: function (feeds, days_back, direction) {
|
|
var options = {};
|
|
var order = NEWSBLUR.assets.view_setting(this.active_feed, 'order');
|
|
var stories_not_visible = true;
|
|
var cutoff_timestamp = parseInt(NEWSBLUR.utils.days_back_to_timestamp(days_back) || 0, 10);
|
|
if (!days_back && this.model.stories.length &&
|
|
_.contains(feeds, this.model.stories.first().get('story_feed_id')) &&
|
|
order == 'newest') {
|
|
cutoff_timestamp = this.model.stories.first().get('story_timestamp');
|
|
}
|
|
|
|
if ((order == 'newest' && direction == 'newer') || (order == 'oldest' && direction == 'older')) {
|
|
var stories = this.model.stories.select(function (story) {
|
|
return direction == 'newer' ? story.get('story_timestamp') >= cutoff_timestamp :
|
|
story.get('story_timestamp') <= cutoff_timestamp;
|
|
});
|
|
feeds = _.unique(_.map(stories, function (story) { return story.get('story_feed_id'); }));
|
|
}
|
|
|
|
if (this.active_feed == 'river:infrequent') options.infrequent = NEWSBLUR.assets.preference('infrequent_stories_per_month');
|
|
|
|
this.model.mark_feed_as_read(feeds, cutoff_timestamp, direction, options,
|
|
_.bind(function () {
|
|
if (feeds.length == 1) {
|
|
this.feed_unread_count(feeds[0]);
|
|
} else if (!this.socket || !this.socket || !this.socket.connected) {
|
|
this.force_feeds_refresh(null, false, feeds);
|
|
}
|
|
}, this));
|
|
},
|
|
|
|
open_story_trainer: function (story_id, feed_id, options) {
|
|
options = options || {};
|
|
story_id = story_id || this.active_story && this.active_story.id;
|
|
feed_id = feed_id || (story_id && this.model.get_story(story_id).get('story_feed_id'));
|
|
var story = this.model.get_story(story_id);
|
|
// console.log(["open_story_trainer", story_id, feed_id, options]);
|
|
|
|
if (story_id && feed_id) {
|
|
options['feed_loaded'] = !this.flags['river_view'];
|
|
if (this.flags['social_view']) {
|
|
options['feed_loaded'] = true;
|
|
}
|
|
if (this.flags['social_view'] && !_.string.contains(this.active_feed, 'river:')) {
|
|
options['social_feed_id'] = this.active_feed;
|
|
} else if (this.flags['social_view'] && story.get('friend_user_ids')) {
|
|
options['social_feed_id'] = 'social:' + story.get('friend_user_ids')[0];
|
|
}
|
|
NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierStory(story_id, feed_id, options);
|
|
}
|
|
},
|
|
|
|
// ===========
|
|
// = Send To =
|
|
// ===========
|
|
|
|
send_story_to_instapaper: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.instapaper.com/edit';
|
|
var instapaper_url = [
|
|
url,
|
|
'?url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(instapaper_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_readitlater: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://getpocket.com/save';
|
|
var readitlater_url = [
|
|
url,
|
|
'?url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(readitlater_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_tumblr: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.tumblr.com/share';
|
|
var tumblr_url = [
|
|
url,
|
|
'?v=3&u=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&t=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(tumblr_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_blogger: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.blogger.com/blog-this.g';
|
|
var blogger_url = [
|
|
url,
|
|
'?n=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&source=newsblur&b=',
|
|
encodeURIComponent(story.get('story_permalink'))
|
|
].join('');
|
|
window.open(blogger_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_delicious: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'http://www.delicious.com/save';
|
|
var delicious_url = [
|
|
url,
|
|
'?v=6&url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(delicious_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_twitter: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://x.com/intent/post';
|
|
var twitter_url = [
|
|
url,
|
|
'?text=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&via=NewsBlur'
|
|
].join('');
|
|
window.open(twitter_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_facebook: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.facebook.com/sharer/sharer.php';
|
|
var facebook_url = [
|
|
url,
|
|
'?u=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&t=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(facebook_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_pinboard: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://pinboard.in/add/?';
|
|
var pinboard_url = [
|
|
url,
|
|
'url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&tags=',
|
|
encodeURIComponent(story.get('story_tags').join(', '))
|
|
].join('');
|
|
window.open(pinboard_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_raindrop: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://app.raindrop.io/add?';
|
|
var raindrop_url = [
|
|
url,
|
|
'link=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&tags=',
|
|
encodeURIComponent(story.get('story_tags').join(', '))
|
|
].join('');
|
|
window.open(raindrop_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_pinterest: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.pinterest.com/pin/find/?';
|
|
var pinterest_url = [
|
|
url,
|
|
'url=',
|
|
encodeURIComponent(story.get('story_permalink'))
|
|
].join('');
|
|
window.open(pinterest_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_buffer: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://bufferapp.com/add?source=newsblur&';
|
|
var buffer_url = [
|
|
url,
|
|
'url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&text=',
|
|
encodeURIComponent(story.get('story_title'))
|
|
].join('');
|
|
window.open(buffer_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_diigo: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.diigo.com/post?';
|
|
var url = [
|
|
url,
|
|
'url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&tags=',
|
|
encodeURIComponent(story.get('story_tags').join(', '))
|
|
].join('');
|
|
window.open(url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_evernote: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://www.evernote.com/clip.action?';
|
|
var url = [
|
|
url,
|
|
'url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&tags=',
|
|
encodeURIComponent(story.get('story_tags').join(', '))
|
|
].join('');
|
|
window.open(url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_googleplus: function (story_id) {
|
|
var story = this.model.get_story(story_id);
|
|
var url = 'https://plus.google.com/share';
|
|
var googleplus_url = [
|
|
url,
|
|
'?url=',
|
|
encodeURIComponent(story.get('story_permalink')),
|
|
'&title=',
|
|
encodeURIComponent(story.get('story_title')),
|
|
'&tags=',
|
|
encodeURIComponent(story.get('story_tags').join(', '))
|
|
].join('');
|
|
window.open(googleplus_url, '_blank');
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
send_story_to_email: function (story) {
|
|
NEWSBLUR.reader_send_email = new NEWSBLUR.ReaderSendEmail(story);
|
|
NEWSBLUR.assets.stories.mark_read(story, { skip_delay: true });
|
|
},
|
|
|
|
// ===========
|
|
// = Stories =
|
|
// ===========
|
|
|
|
load_page_of_feed_stories: function (options) {
|
|
options = _.extend({}, { 'scroll_to_loadbar': true }, options);
|
|
var $story_titles = this.$s.$story_titles;
|
|
var feed_id = this.active_feed;
|
|
var feed = this.model.get_feed(feed_id);
|
|
|
|
// console.log(['load_page_of_feed_stories', this.flags['opening_feed'], this.counts['page']]);
|
|
if (this.flags['opening_feed']) return;
|
|
|
|
this.flags['opening_feed'] = true;
|
|
this.counts['page'] += 1;
|
|
if (NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout') == 'full') {
|
|
NEWSBLUR.app.story_list.show_loading(options);
|
|
} else {
|
|
NEWSBLUR.app.story_titles.show_loading(options);
|
|
}
|
|
|
|
if (this.active_feed == 'river:infrequent') options.infrequent = NEWSBLUR.assets.preference('infrequent_stories_per_month');
|
|
|
|
if (this.flags['starred_view']) {
|
|
this.model.fetch_starred_stories(this.counts['page'], this.flags['starred_tag'], this.flags['starred_tag'] == 'highlights', _.bind(this.post_open_starred_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else if (this.active_feed == 'read') {
|
|
this.model.fetch_read_stories(this.counts['page'], _.bind(this.post_open_read_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else if (this.flags['social_view'] && _.contains(['river:blurblogs', 'river:global'], this.active_feed)) {
|
|
this.model.fetch_river_blurblogs_stories(this.active_feed,
|
|
this.counts['page'],
|
|
{ 'global': this.flags.global_blurblogs },
|
|
_.bind(this.post_open_river_blurblogs_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else if (this.flags['social_view']) {
|
|
this.model.fetch_social_stories(this.active_feed,
|
|
this.counts['page'], _.bind(this.post_open_social_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else if (this.flags['river_view']) {
|
|
this.model.fetch_river_stories(this.active_feed, this.cache['river_feeds_with_unreads'],
|
|
this.counts['page'], { 'infrequent': options.infrequent },
|
|
_.bind(this.post_open_river_stories, this),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error, false);
|
|
} else {
|
|
this.model.load_feed(feed_id, this.counts['page'], false,
|
|
$.rescope(this.post_open_feed, this), NEWSBLUR.app.taskbar_info.show_stories_error);
|
|
}
|
|
},
|
|
|
|
make_feed_title_in_stories: function (options) {
|
|
NEWSBLUR.app.search_header.render();
|
|
|
|
if ((this.flags.search || this.flags.searching)
|
|
&& NEWSBLUR.app.story_titles_header.search_has_focus()) {
|
|
console.log(["make_feed_title_in_stories not destroying", this.flags.search]);
|
|
return;
|
|
}
|
|
|
|
if (NEWSBLUR.app.story_titles_header) {
|
|
NEWSBLUR.app.story_titles_header.remove();
|
|
}
|
|
|
|
NEWSBLUR.app.story_titles_header.render({
|
|
feed_id: this.active_feed,
|
|
layout: NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')
|
|
});
|
|
},
|
|
|
|
feed_title: function (feed_id) {
|
|
if (!feed_id) {
|
|
feed_id = this.active_feed;
|
|
}
|
|
var feed_title;
|
|
|
|
if (feed_id == 'river:') {
|
|
feed_title = "All Site Stories";
|
|
} else if (feed_id == 'river:global') {
|
|
feed_title = "Global Shared Stories";
|
|
} else if (feed_id == 'river:blurblogs') {
|
|
feed_title = "All Shared Stories";
|
|
} else if (feed_id == 'river:infrequent') {
|
|
feed_title = "Infrequent Site Stories";
|
|
} else if (_.string.startsWith(feed_id, 'river:')) {
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) return;
|
|
feed_title = feed.get('folder_title');
|
|
} else if (feed_id == "read") {
|
|
feed_title = "Read Stories";
|
|
} else if (_.string.startsWith(feed_id, 'starred')) {
|
|
feed_title = "Saved Stories";
|
|
var tag = feed_id.replace('starred:', '');
|
|
var model = NEWSBLUR.assets.starred_feeds.detect(function (feed) {
|
|
return feed.tag_slug() == tag || feed.get('tag') == tag;
|
|
});
|
|
if (model && model.get('tag')) {
|
|
feed_title = feed_title + " - " + model.get('tag');
|
|
} else if (model && model.get('feed_title')) {
|
|
feed_title = feed_title + " - " + model.get('feed_title');
|
|
}
|
|
} else if (_.string.startsWith(feed_id, 'feed:') || _.isNumber(feed_id)) {
|
|
if (!_.isNumber(feed_id)) {
|
|
feed_id = parseInt(feed_id.replace('feed:', ''), 10);
|
|
}
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) return;
|
|
|
|
feed_title = feed.get('feed_title');
|
|
} else if (_.string.startsWith(feed_id, 'social:')) {
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) return;
|
|
|
|
feed_title = feed.get('feed_title');
|
|
} else if (_.string.startsWith(feed_id, 'search:')) {
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) return;
|
|
|
|
feed_title = feed.get('feed_title');
|
|
}
|
|
|
|
return feed_title;
|
|
},
|
|
|
|
open_feed_intelligence_modal: function (score, feed_id, feed_loaded) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
if (feed_id) {
|
|
NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierFeed(feed_id, {
|
|
'score': score,
|
|
'feed_loaded': feed_loaded
|
|
});
|
|
}
|
|
},
|
|
|
|
open_trainer_modal: function (score) {
|
|
var feed_id = this.active_feed;
|
|
|
|
// NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierFeed(feed_id, {'score': score});
|
|
NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierTrainer({ 'score': score });
|
|
},
|
|
|
|
open_friends_modal: function () {
|
|
NEWSBLUR.assets.preference('has_found_friends', true);
|
|
NEWSBLUR.reader.check_hide_getting_started();
|
|
|
|
NEWSBLUR.reader_friends = new NEWSBLUR.ReaderFriends();
|
|
},
|
|
|
|
open_profile_editor_modal: function () {
|
|
NEWSBLUR.reader_profile_editor = new NEWSBLUR.ReaderProfileEditor();
|
|
},
|
|
|
|
open_recommend_modal: function (feed_id) {
|
|
NEWSBLUR.recommend_feed = new NEWSBLUR.ReaderRecommendFeed(feed_id);
|
|
},
|
|
|
|
open_tutorial_modal: function () {
|
|
NEWSBLUR.tutorial = new NEWSBLUR.ReaderTutorial();
|
|
},
|
|
|
|
open_intro_modal: function (options) {
|
|
NEWSBLUR.intro = new NEWSBLUR.ReaderIntro(options);
|
|
},
|
|
|
|
open_user_admin_modal: function (options) {
|
|
$.modal.close(function () {
|
|
NEWSBLUR.user_admin = new NEWSBLUR.ReaderUserAdmin(options);
|
|
});
|
|
},
|
|
|
|
open_story_options_popover: function () {
|
|
NEWSBLUR.StoryOptionsPopover.create({
|
|
anchor: this.$s.$taskbar_options
|
|
});
|
|
},
|
|
|
|
show_authentication_lost: function () {
|
|
NEWSBLUR.auth_lost = new NEWSBLUR.ReaderAuthLost();
|
|
},
|
|
|
|
check_hide_getting_started: function (force) {
|
|
var feeds = this.model.preference('has_setup_feeds');
|
|
var friends = this.model.preference('has_found_friends');
|
|
var trained = this.model.preference('has_trained_intelligence');
|
|
|
|
if (force ||
|
|
(friends && trained && feeds)) {
|
|
var $gettingstarted = $('.NB-module-gettingstarted');
|
|
$gettingstarted.animate({
|
|
'opacity': 0
|
|
}, {
|
|
'duration': 380,
|
|
'complete': function () {
|
|
$gettingstarted.slideUp(350);
|
|
}
|
|
});
|
|
this.model.preference('hide_getting_started', true);
|
|
} else {
|
|
var $progress = $(".NB-intro-progress");
|
|
var $sites = $('.NB-intro-goal-sites');
|
|
var $findfriends = $('.NB-intro-goal-friends');
|
|
var $trainer = $('.NB-intro-goal-train');
|
|
|
|
$sites.toggleClass('NB-done', feeds);
|
|
$findfriends.toggleClass('NB-done', friends);
|
|
$trainer.toggleClass('NB-done', trained);
|
|
|
|
$sites.toggleClass('NB-not-done', !feeds);
|
|
$findfriends.toggleClass('NB-not-done', !friends);
|
|
$trainer.toggleClass('NB-not-done', !trained);
|
|
|
|
$(".bar-first", $progress).toggleClass('bar-striped', !feeds);
|
|
$(".bar-second", $progress).toggleClass('bar-striped', !friends);
|
|
}
|
|
},
|
|
|
|
// ==========================
|
|
// = Story Pane - Feed View =
|
|
// ==========================
|
|
|
|
apply_story_styling: function (reset_stories) {
|
|
var $body = this.$s.$body;
|
|
$body.removeClass('NB-theme-sans-serif')
|
|
.removeClass('NB-theme-serif')
|
|
.removeClass('NB-theme-gotham')
|
|
.removeClass('NB-theme-sentinel')
|
|
.removeClass('NB-theme-whitney')
|
|
.removeClass('NB-theme-chronicle');
|
|
$body.addClass('NB-theme-' + NEWSBLUR.Preferences['story_styling']);
|
|
|
|
$body.removeClass('NB-theme-size-xs')
|
|
.removeClass('NB-theme-size-s')
|
|
.removeClass('NB-theme-size-m')
|
|
.removeClass('NB-theme-size-l')
|
|
.removeClass('NB-theme-size-xl');
|
|
$body.addClass('NB-theme-size-' + NEWSBLUR.Preferences['story_size']);
|
|
$body.removeClass('NB-theme-feed-size-xs')
|
|
.removeClass('NB-theme-feed-size-s')
|
|
.removeClass('NB-theme-feed-size-m')
|
|
.removeClass('NB-theme-feed-size-l')
|
|
.removeClass('NB-theme-feed-size-xl');
|
|
$body.addClass('NB-theme-feed-size-' + NEWSBLUR.Preferences['feed_size']);
|
|
$body.removeClass('NB-theme-feed-font-whitney')
|
|
.removeClass('NB-theme-feed-font-lucida')
|
|
.removeClass('NB-theme-feed-font-gotham');
|
|
$body.addClass('NB-theme-feed-font-' + NEWSBLUR.Preferences['feed_font']);
|
|
|
|
$body.removeClass('NB-line-spacing-xs')
|
|
.removeClass('NB-line-spacing-s')
|
|
.removeClass('NB-line-spacing-m')
|
|
.removeClass('NB-line-spacing-l')
|
|
.removeClass('NB-line-spacing-xl');
|
|
$body.addClass('NB-line-spacing-' + NEWSBLUR.Preferences['story_line_spacing']);
|
|
|
|
$body.removeClass('NB-density-compact')
|
|
.removeClass('NB-density-comfortable');
|
|
$body.addClass('NB-density-' + NEWSBLUR.Preferences['density']);
|
|
|
|
$body.removeClass('NB-content-preview-title')
|
|
.removeClass('NB-content-preview-small')
|
|
.removeClass('NB-content-preview-medium')
|
|
.removeClass('NB-content-preview-large');
|
|
$body.addClass('NB-content-preview-' + NEWSBLUR.Preferences['show_content_preview']);
|
|
|
|
$body.removeClass('NB-image-preview-none')
|
|
.removeClass('NB-image-preview-small-left')
|
|
.removeClass('NB-image-preview-small-right')
|
|
.removeClass('NB-image-preview-large-left')
|
|
.removeClass('NB-image-preview-large-right');
|
|
$body.addClass('NB-image-preview-' + NEWSBLUR.Preferences['image_preview']);
|
|
|
|
if (reset_stories) {
|
|
this.show_story_titles_above_intelligence_level({ 'animate': true, 'follow': true });
|
|
NEWSBLUR.app.dashboard_rivers.left.redraw();
|
|
NEWSBLUR.app.dashboard_rivers.right.redraw();
|
|
NEWSBLUR.app.story_titles.render({ "immediate": true });
|
|
this.switch_story_layout(null, true);
|
|
}
|
|
|
|
this.load_theme();
|
|
},
|
|
|
|
// ===================
|
|
// = Taskbar - Story =
|
|
// ===================
|
|
|
|
switch_taskbar_view: function (view, options) {
|
|
options = options || {};
|
|
var self = this;
|
|
var $story_pane = this.$s.$story_pane;
|
|
var feed_id = this.active_story_view();
|
|
var feed = this.model.get_feed(feed_id);
|
|
view = view || this.story_view;
|
|
// NEWSBLUR.log(['switch_taskbar_view', view, options.skip_save_type, feed]);
|
|
|
|
if (view == 'page' && feed && feed.get('has_exception') &&
|
|
feed.get('exception_type') == 'page') {
|
|
this.open_feed_exception_modal();
|
|
return;
|
|
} else if (_.contains(['page', 'story'], view) &&
|
|
feed && (feed.get('disabled_page') ||
|
|
NEWSBLUR.utils.is_url_iframe_buster(feed.get('feed_link')))) {
|
|
view = 'feed';
|
|
} else if ($('.task_view_' + view).hasClass('NB-disabled') ||
|
|
$('.task_view_' + view).hasClass('NB-hidden')) {
|
|
return;
|
|
} else if (_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
_.contains(['page', 'story'], view)) {
|
|
view = 'feed';
|
|
}
|
|
|
|
var $taskbar_buttons = $('.NB-taskbar-view .NB-taskbar-button');
|
|
var $feed_view = this.$s.$feed_view;
|
|
var $feed_iframe = this.$s.$feed_iframe;
|
|
var $to_feed_arrow = $('.NB-taskbar .NB-task-view-to-feed-arrow');
|
|
var $to_story_arrow = $('.NB-taskbar .NB-task-view-to-story-arrow');
|
|
var $to_text_arrow = $('.NB-taskbar .NB-task-view-to-text-arrow');
|
|
|
|
if (!options.skip_save_type && this.story_view != view) {
|
|
this.model.view_setting(feed_id, { 'view': view });
|
|
}
|
|
|
|
NEWSBLUR.app.taskbar_info.hide_stories_error();
|
|
$to_feed_arrow.hide();
|
|
$to_story_arrow.hide();
|
|
$to_text_arrow.hide();
|
|
this.flags['page_view_showing_feed_view'] = false;
|
|
this.flags['feed_view_showing_story_view'] = false;
|
|
this.flags['temporary_story_view'] = false;
|
|
if (options.skip_save_type == 'page') {
|
|
$to_feed_arrow.show();
|
|
this.flags['page_view_showing_feed_view'] = true;
|
|
} else if (options.skip_save_type == 'story') {
|
|
$to_story_arrow.show();
|
|
this.flags['feed_view_showing_story_view'] = true;
|
|
} else if (options.skip_save_type == 'text') {
|
|
$to_text_arrow.show();
|
|
this.flags['temporary_story_view'] = true;
|
|
} else {
|
|
$taskbar_buttons.removeClass('NB-active');
|
|
$('.NB-taskbar-button.task_view_' + view).addClass('NB-active');
|
|
this.story_view = view;
|
|
}
|
|
|
|
this.flags.scrolling_by_selecting_story_title = true;
|
|
clearInterval(this.locks.scrolling);
|
|
this.locks.scrolling = setTimeout(function () {
|
|
self.flags.scrolling_by_selecting_story_title = false;
|
|
}, 550);
|
|
if (view == 'page') {
|
|
// NEWSBLUR.log(["iframe_prevented_from_loading", this.flags['iframe_prevented_from_loading']]);
|
|
if (this.flags['iframe_prevented_from_loading']) {
|
|
NEWSBLUR.app.original_tab_view.load_feed_iframe();
|
|
}
|
|
NEWSBLUR.app.original_tab_view.scroll_to_selected_story(this.active_story, {
|
|
immediate: true,
|
|
only_if_hidden: options.resize
|
|
});
|
|
|
|
$story_pane.animate({
|
|
'left': 0
|
|
}, {
|
|
'easing': 'easeInOutQuint',
|
|
'duration': this.model.preference('animations') ? 550 : 0,
|
|
'queue': false
|
|
});
|
|
} else if (view == 'feed') {
|
|
NEWSBLUR.app.story_list.scroll_to_selected_story(this.active_story, {
|
|
immediate: true,
|
|
only_if_hidden: options.resize
|
|
});
|
|
NEWSBLUR.app.story_list.show_stories_preference_in_feed_view();
|
|
NEWSBLUR.app.story_titles.scroll_to_selected_story(this.active_story);
|
|
|
|
$story_pane.animate({
|
|
'left': -1 * $feed_iframe.width()
|
|
}, {
|
|
'easing': 'easeInOutQuint',
|
|
'duration': this.model.preference('animations') ? 550 : 0,
|
|
'queue': false
|
|
});
|
|
|
|
NEWSBLUR.app.story_list.reset_story_positions();
|
|
if (!options.resize && this.active_story &&
|
|
_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.app.text_tab_view.unload();
|
|
if (this.active_story.get('selected')) {
|
|
this.active_story.story_title_view.render_inline_story_detail();
|
|
}
|
|
}
|
|
} else if (view == 'text') {
|
|
NEWSBLUR.app.story_titles.scroll_to_selected_story(this.active_story);
|
|
|
|
$story_pane.animate({
|
|
'left': -2 * $feed_iframe.width()
|
|
}, {
|
|
'easing': 'easeInOutQuint',
|
|
'duration': this.model.preference('animations') ? 550 : 0,
|
|
'queue': false
|
|
});
|
|
if (_.contains(['split', 'full'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.app.text_tab_view.fetch_and_render();
|
|
if (!this.active_story) {
|
|
NEWSBLUR.app.text_tab_view.show_explainer_single_story_mode();
|
|
}
|
|
} else if (!options.resize && this.active_story &&
|
|
this.active_story.get('selected') &&
|
|
_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
this.active_story.story_title_view.render_inline_story_detail();
|
|
}
|
|
} else if (view == 'story') {
|
|
$story_pane.animate({
|
|
'left': -3 * $feed_iframe.width()
|
|
}, {
|
|
'easing': 'easeInOutQuint',
|
|
'duration': this.model.preference('animations') ? 550 : 0,
|
|
'queue': false
|
|
});
|
|
if (!this.active_story) {
|
|
NEWSBLUR.app.story_tab_view.show_explainer_single_story_mode();
|
|
} else if (!options.resize) {
|
|
NEWSBLUR.app.story_tab_view.open_story();
|
|
}
|
|
}
|
|
|
|
this.setup_mousemove_on_views();
|
|
},
|
|
|
|
switch_taskbar_view_direction: function (direction) {
|
|
var $active = $('.NB-taskbar-view .NB-active');
|
|
var view;
|
|
|
|
if (_.contains(['list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
if (direction == -1) {
|
|
if ($active.hasClass('task_view_feed')) {
|
|
// view = 'page';
|
|
} else if ($active.hasClass('task_view_text')) {
|
|
view = 'feed';
|
|
}
|
|
} else if (direction == 1) {
|
|
if ($active.hasClass('task_view_feed')) {
|
|
view = 'text';
|
|
} else if ($active.hasClass('task_view_text')) {
|
|
// view = 'story';
|
|
}
|
|
}
|
|
} else {
|
|
if (direction == -1) {
|
|
if ($active.hasClass('task_view_page')) {
|
|
// view = 'page';
|
|
} else if ($active.hasClass('task_view_feed')) {
|
|
view = 'page';
|
|
} else if ($active.hasClass('task_view_text')) {
|
|
view = 'feed';
|
|
} else if ($active.hasClass('task_view_story')) {
|
|
view = 'text';
|
|
}
|
|
} else if (direction == 1) {
|
|
if ($active.hasClass('task_view_page')) {
|
|
view = 'feed';
|
|
} else if ($active.hasClass('task_view_feed')) {
|
|
view = 'text';
|
|
} else if ($active.hasClass('task_view_text')) {
|
|
view = 'story';
|
|
} else if ($active.hasClass('task_view_story')) {
|
|
// view = 'text';
|
|
}
|
|
}
|
|
}
|
|
|
|
if (view) {
|
|
this.switch_taskbar_view(view);
|
|
}
|
|
},
|
|
|
|
// ===================
|
|
// = Taskbar - Feeds =
|
|
// ===================
|
|
|
|
open_add_feed_modal: function (options) {
|
|
clearInterval(this.flags['bouncing_callout']);
|
|
$.modal.close();
|
|
|
|
if (NEWSBLUR.Globals.is_anonymous && NEWSBLUR.welcome) {
|
|
NEWSBLUR.welcome.show_signin_form();
|
|
} else {
|
|
NEWSBLUR.add_feed = NEWSBLUR.ReaderAddFeed.create(options);
|
|
}
|
|
},
|
|
|
|
open_manage_feed_modal: function (feed_id) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
NEWSBLUR.manage_feed = new NEWSBLUR.ReaderManageFeed(feed_id);
|
|
},
|
|
|
|
open_mark_read_modal: function (options) {
|
|
NEWSBLUR.mark_read = new NEWSBLUR.ReaderMarkRead(options);
|
|
},
|
|
|
|
open_keyboard_shortcuts_modal: function () {
|
|
NEWSBLUR.keyboard = new NEWSBLUR.ReaderKeyboard();
|
|
},
|
|
|
|
open_goodies_modal: function () {
|
|
NEWSBLUR.goodies = new NEWSBLUR.ReaderGoodies();
|
|
},
|
|
|
|
open_notifications_modal: function (feed_id) {
|
|
NEWSBLUR.notifications = new NEWSBLUR.ReaderNotifications(feed_id);
|
|
},
|
|
|
|
open_newsletters_modal: function () {
|
|
NEWSBLUR.newsletters = new NEWSBLUR.ReaderNewsletters();
|
|
},
|
|
|
|
open_facebook_modal: function () {
|
|
NEWSBLUR.facebook_dialog = new NEWSBLUR.ReaderFacebook(this.active_story.get('story_permalink'), this.active_story.get('shared_comments'));
|
|
},
|
|
|
|
open_preferences_modal: function () {
|
|
NEWSBLUR.preferences = new NEWSBLUR.ReaderPreferences();
|
|
},
|
|
|
|
open_account_modal: function (options) {
|
|
NEWSBLUR.account = new NEWSBLUR.ReaderAccount(options);
|
|
},
|
|
|
|
open_feedchooser_modal: function (options) {
|
|
NEWSBLUR.feedchooser = new NEWSBLUR.ReaderFeedchooser(options);
|
|
},
|
|
|
|
open_organizer_modal: function (options) {
|
|
NEWSBLUR.organizer = new NEWSBLUR.ReaderOrganizer(options);
|
|
},
|
|
|
|
open_feed_exception_modal: function (feed_id, options) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
NEWSBLUR.feed_exception = new NEWSBLUR.ReaderFeedException(feed_id, options);
|
|
},
|
|
|
|
open_feed_statistics_modal: function (feed_id) {
|
|
feed_id = feed_id || this.active_feed;
|
|
|
|
NEWSBLUR.statistics = new NEWSBLUR.ReaderStatistics(feed_id);
|
|
},
|
|
|
|
open_social_profile_modal: function (user_id) {
|
|
if (!user_id) user_id = NEWSBLUR.Globals.user_id;
|
|
if (_.string.contains(user_id, 'social:')) {
|
|
user_id = parseInt(user_id.replace('social:', ''), 10);
|
|
}
|
|
NEWSBLUR.social_profile = new NEWSBLUR.ReaderSocialProfile(user_id);
|
|
},
|
|
|
|
close_social_profile: function () {
|
|
if (NEWSBLUR.social_profile) {
|
|
NEWSBLUR.social_profile.close();
|
|
}
|
|
},
|
|
|
|
switch_feed_font: function (feed_font) {
|
|
this.model.preference('feed_font', feed_font);
|
|
this.apply_story_styling();
|
|
},
|
|
|
|
switch_feed_font_size: function (feed_size) {
|
|
this.model.preference('feed_size', feed_size);
|
|
this.apply_story_styling();
|
|
},
|
|
|
|
switch_density: function (density) {
|
|
this.model.preference('density', density);
|
|
this.apply_story_styling();
|
|
},
|
|
|
|
switch_theme: function (theme) {
|
|
this.model.preference('theme', theme);
|
|
this.apply_story_styling();
|
|
},
|
|
|
|
load_theme: function () {
|
|
var theme = NEWSBLUR.assets.theme();
|
|
var auto_theme = NEWSBLUR.assets.preference('theme'); // Add auto
|
|
var feed_font = NEWSBLUR.assets.preference('feed_font');
|
|
var feed_size = NEWSBLUR.assets.preference('feed_size');
|
|
var density = NEWSBLUR.assets.preference('density');
|
|
|
|
if (!this.flags.watching_system_theme && window.matchMedia) {
|
|
var darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
|
|
try {
|
|
// Chrome & Firefox
|
|
darkMediaQuery.addEventListener('change', _.bind(function (e) {
|
|
console.log(['Chrome/FF switching themes', e]);
|
|
this.load_theme();
|
|
}, this));
|
|
} catch (e1) {
|
|
try {
|
|
// Safari
|
|
darkMediaQuery.addListener(_.bind(function (e) {
|
|
console.log(['Safari switching themes', e]);
|
|
this.load_theme();
|
|
}, this));
|
|
} catch (e2) {
|
|
console.error(e2);
|
|
}
|
|
}
|
|
this.flags.watching_system_theme = true;
|
|
}
|
|
|
|
// Select theme options in manage menu on the dashboard
|
|
$('.NB-theme-option').removeClass('NB-active');
|
|
$('.NB-options-theme-' + auto_theme).addClass('NB-active');
|
|
$('.NB-feed-font-option').removeClass('NB-active');
|
|
$('.NB-options-feed-font-' + feed_font).addClass('NB-active');
|
|
$('.NB-feed-size-option').removeClass('NB-active');
|
|
$('.NB-options-feed-size-' + feed_size).addClass('NB-active');
|
|
$('.NB-density-option').removeClass('NB-active');
|
|
$('.NB-options-density-' + density).addClass('NB-active');
|
|
|
|
$("body").addClass('NB-theme-transitioning');
|
|
|
|
if (theme == 'dark') {
|
|
$("body").addClass('NB-dark');
|
|
} else {
|
|
$("body").removeClass('NB-dark');
|
|
}
|
|
|
|
_.delay(function () {
|
|
$("body").removeClass("NB-theme-transitioning");
|
|
}, 2000);
|
|
},
|
|
|
|
close_interactions_popover: function () {
|
|
NEWSBLUR.InteractionsPopover.close();
|
|
},
|
|
|
|
toggle_sidebar: function () {
|
|
if (this.flags['sidebar_closed']) {
|
|
this.open_sidebar();
|
|
return true;
|
|
} else {
|
|
this.close_sidebar();
|
|
return false;
|
|
}
|
|
},
|
|
|
|
close_sidebar: function () {
|
|
this.layout.outerLayout.hide('west');
|
|
this.resize_window();
|
|
this.flags['sidebar_closed'] = true;
|
|
NEWSBLUR.app.story_titles_header.watch_toggled_sidebar();
|
|
},
|
|
|
|
open_sidebar: function () {
|
|
this.layout.outerLayout.open('west');
|
|
this.resize_window();
|
|
this.flags['sidebar_closed'] = false;
|
|
NEWSBLUR.app.story_titles_header.watch_toggled_sidebar();
|
|
},
|
|
|
|
toggle_story_titles_pane: function (update_layout) {
|
|
if (this.flags['story_titles_closed']) {
|
|
this.open_story_titles_pane(update_layout === true);
|
|
} else {
|
|
this.close_story_titles_pane(update_layout === true);
|
|
}
|
|
},
|
|
|
|
close_story_titles_pane: function (update_layout) {
|
|
var story_anchor = this.model.preference('story_pane_anchor');
|
|
if (update_layout) {
|
|
NEWSBLUR.reader.layout.contentLayout.hide(story_anchor);
|
|
}
|
|
this.resize_window();
|
|
this.flags['story_titles_closed'] = true;
|
|
},
|
|
|
|
open_story_titles_pane: function (update_layout) {
|
|
var story_anchor = this.model.preference('story_pane_anchor');
|
|
if (update_layout) {
|
|
NEWSBLUR.reader.layout.contentLayout.open(story_anchor);
|
|
}
|
|
this.resize_window();
|
|
this.flags['story_titles_closed'] = false;
|
|
_.defer(function () {
|
|
NEWSBLUR.app.story_titles.scroll_to_selected_story();
|
|
});
|
|
},
|
|
|
|
// =======================
|
|
// = Sidebar Manage Menu =
|
|
// =======================
|
|
|
|
make_manage_menu: function (type, feed_id, story_id, inverse, $item) {
|
|
var $manage_menu;
|
|
// NEWSBLUR.log(["make_manage_menu", type, feed_id, story_id, inverse, $item]);
|
|
|
|
if (type == 'site') {
|
|
var show_chooser = !NEWSBLUR.Globals.is_premium && NEWSBLUR.Globals.is_authenticated;
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage' }, [
|
|
$.make('li', { className: 'NB-menu-manage-site-info' }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('span', { className: 'NB-menu-manage-title' }, "Manage NewsBlur")
|
|
]).corner('top 8px').corner('bottom 0px'),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-site-mark-read', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark everything as read'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Choose how many days back')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-trainer', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence Trainer'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Accurate filters are happy filters')
|
|
]),
|
|
(show_chooser && $.make('li', { className: 'NB-menu-item NB-menu-manage-feedchooser', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Choose Your 64 sites'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Enable the sites you want')
|
|
])),
|
|
(NEWSBLUR.Globals.is_premium && $.make('li', { className: 'NB-menu-item NB-menu-manage-feedchooser', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mute Sites'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Temporarily turn off feeds')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-organizer', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Organize Sites'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Cleanup and rearrange feeds')
|
|
]),
|
|
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-keyboard', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Keyboard shortcuts')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-tutorial', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Tips & Tricks')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-goodies', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Goodies & Mobile Apps')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-statistics', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Statistics & History')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-notifications', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Notifications')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-newsletters', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Email Newsletters')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-import', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Import or upload sites')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-account', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-logout NB-modal-submit-green NB-modal-submit-button' }, 'Logout'),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Account')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-profile-editor', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Profile & Blurblog')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-friends', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Friends & Followers')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-preferences', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Preferences')
|
|
]),
|
|
(show_chooser && $.make('li', { className: 'NB-menu-separator' })),
|
|
(show_chooser && $.make('li', { className: 'NB-menu-item NB-menu-manage-premium', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Upgrade to premium')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-font' }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('ul', { className: 'segmented-control NB-options-feed-font' }, [
|
|
$.make('li', { className: 'NB-feed-font-option NB-options-feed-font-whitney NB-theme-feed-font-whitney', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Whitney'
|
|
]),
|
|
$.make('li', { className: 'NB-feed-font-option NB-options-feed-font-lucida NB-theme-feed-font-lucida', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Lucida Grande'
|
|
]),
|
|
$.make('li', { className: 'NB-feed-font-option NB-options-feed-font-gotham NB-theme-feed-font-gotham', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Gotham'
|
|
])
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-size' }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('ul', { className: 'segmented-control NB-options-feed-size' }, [
|
|
$.make('li', { className: 'NB-feed-size-option NB-options-feed-size-xs', role: "button" }, 'XS'),
|
|
$.make('li', { className: 'NB-feed-size-option NB-options-feed-size-s', role: "button" }, 'S'),
|
|
$.make('li', { className: 'NB-feed-size-option NB-options-feed-size-m', role: "button" }, 'M'),
|
|
$.make('li', { className: 'NB-feed-size-option NB-options-feed-size-l', role: "button" }, 'L'),
|
|
$.make('li', { className: 'NB-feed-size-option NB-options-feed-size-xl', role: "button" }, 'XL')
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-density' }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('ul', { className: 'segmented-control NB-menu-manage-options-density' }, [
|
|
$.make('li', { className: 'NB-density-option NB-options-density-compact', role: "button" }, 'Compact'),
|
|
$.make('li', { className: 'NB-density-option NB-options-density-comfortable NB-active', role: "button" }, 'Comfortable')
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-theme' }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('ul', { className: 'segmented-control NB-options-theme' }, [
|
|
$.make('li', { className: 'NB-theme-option NB-options-theme-light', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Light'
|
|
]),
|
|
$.make('li', { className: 'NB-theme-option NB-options-theme-dark', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Dark'
|
|
]),
|
|
$.make('li', { className: 'NB-theme-option NB-options-theme-auto', role: "button" }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
'Auto'
|
|
])
|
|
])
|
|
])
|
|
]);
|
|
$manage_menu.addClass('NB-menu-manage-notop');
|
|
var theme = this.model.preference('theme');
|
|
$(".NB-options-theme-light", $manage_menu).toggleClass('NB-active', theme == 'light');
|
|
$(".NB-options-theme-dark", $manage_menu).toggleClass('NB-active', theme == 'dark');
|
|
$(".NB-options-theme-auto", $manage_menu).toggleClass('NB-active', theme == 'auto');
|
|
var feed_font = this.model.preference('feed_font');
|
|
$(".NB-options-feed-font-whitney", $manage_menu).toggleClass('NB-active', feed_font == 'whitney');
|
|
$(".NB-options-feed-font-lucida", $manage_menu).toggleClass('NB-active', feed_font == 'lucida');
|
|
$(".NB-options-feed-font-gotham", $manage_menu).toggleClass('NB-active', feed_font == 'gotham');
|
|
var feed_size = this.model.preference('feed_size');
|
|
$(".NB-options-feed-size-xs", $manage_menu).toggleClass('NB-active', feed_size == 'xs');
|
|
$(".NB-options-feed-size-s", $manage_menu).toggleClass('NB-active', feed_size == 's');
|
|
$(".NB-options-feed-size-m", $manage_menu).toggleClass('NB-active', feed_size == 'm');
|
|
$(".NB-options-feed-size-l", $manage_menu).toggleClass('NB-active', feed_size == 'l');
|
|
$(".NB-options-feed-size-xl", $manage_menu).toggleClass('NB-active', feed_size == 'xl');
|
|
var density = this.model.preference('density');
|
|
$(".NB-options-density-compact", $manage_menu).toggleClass('NB-active', density == 'compact');
|
|
$(".NB-options-density-comfortable", $manage_menu).toggleClass('NB-active', density == 'comfortable');
|
|
} else if (type == 'feed') {
|
|
var feed = this.model.get_feed(feed_id);
|
|
if (!feed) return;
|
|
var unread_count = this.get_total_unread_count(feed_id);
|
|
var tab_unread_count = Math.min(25, unread_count);
|
|
var muted = !feed.get('active');
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-feed' }, [
|
|
$.make('li', { className: 'NB-menu-separator-inverse' }),
|
|
(feed.get('has_exception') && feed.get('exception_type') == 'feed' && $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-exception', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Fix this misbehaving site')
|
|
])),
|
|
(feed.get('has_exception') && feed.get('exception_type') == 'feed' && $.make('li', { className: 'NB-menu-separator-inverse' })),
|
|
(feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-feed-mark-read', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-reload', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Insta-fetch stories')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-stats', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Statistics')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-settings', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Site settings')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-notifications', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Notifications')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-train', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence trainer'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'What you like and dislike.')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
(NEWSBLUR.Globals.is_admin && $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-recommend', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Recommend this site')
|
|
])),
|
|
(NEWSBLUR.Globals.is_admin && $.make('li', { className: 'NB-menu-separator' })),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-move NB-menu-manage-feed-move', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-move-save NB-menu-manage-feed-move-save NB-modal-submit-green NB-modal-submit-button' }, 'Save'),
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Change folders')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-feed-move-confirm NB-modal-submit', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-confirm-position' }, [
|
|
$.make('div', { className: 'NB-change-folders' })
|
|
])
|
|
]),
|
|
(muted && $.make('li', { className: 'NB-menu-item NB-menu-manage-unmute NB-menu-manage-feed-unmute', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Un-mute this site')
|
|
])),
|
|
(!muted && $.make('li', { className: 'NB-menu-item NB-menu-manage-mute NB-menu-manage-feed-mute', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mute this site')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-rename NB-menu-manage-feed-rename', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Rename this site')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-feed-rename-confirm NB-modal-submit', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-confirm-position' }, [
|
|
$.make('div', { className: 'NB-menu-manage-rename-save NB-menu-manage-feed-rename-save NB-modal-submit-green NB-modal-submit-button' }, 'Save'),
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('input', { name: 'new_title', className: 'NB-menu-manage-title NB-input', value: feed.get('feed_title') })
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-feed-delete', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Delete this site')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-feed-delete-confirm', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?')
|
|
])
|
|
]);
|
|
$manage_menu.data('feed_id', feed_id);
|
|
$manage_menu.data('$feed', $item);
|
|
if (feed_id && unread_count == 0) {
|
|
$('.NB-menu-manage-feed-mark-read', $manage_menu).addClass('NB-disabled');
|
|
}
|
|
} else if (type == 'socialfeed') {
|
|
var feed = this.model.get_feed(feed_id);
|
|
if (!feed) return;
|
|
var unread_count = this.get_total_unread_count(feed_id);
|
|
var tab_unread_count = Math.min(25, unread_count);
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-feed' }, [
|
|
$.make('li', { className: 'NB-menu-separator-inverse' }),
|
|
(feed.get('has_exception') && feed.get('exception_type') == 'feed' && $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-exception', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Fix this misbehaving site')
|
|
])),
|
|
(feed.get('has_exception') && feed.get('exception_type') == 'feed' && $.make('li', { className: 'NB-menu-separator-inverse' })),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-social-profile', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'View profile')
|
|
]),
|
|
(feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-separator' })),
|
|
(feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-feed-mark-read', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-stats', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Statistics')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-settings', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Site settings')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-train', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence trainer'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'What you like and dislike.')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
(feed.get('user_id') != NEWSBLUR.Globals.user_id && $.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-socialfeed-delete', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Unfollow')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-socialfeed-delete-confirm', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Really unfollow?')
|
|
])
|
|
]);
|
|
$manage_menu.data('feed_id', feed_id);
|
|
$manage_menu.data('$feed', $item);
|
|
if (feed_id && unread_count == 0) {
|
|
$('.NB-menu-manage-feed-mark-read', $manage_menu).addClass('NB-disabled');
|
|
}
|
|
} else if (type == 'starred') {
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-feed' }, [
|
|
$.make('li', { className: 'NB-menu-separator-inverse' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-feed-settings', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Tag settings')
|
|
])
|
|
]);
|
|
$manage_menu.data('feed_id', feed_id);
|
|
$manage_menu.data('$feed', $item);
|
|
} else if (type == 'search') {
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-feed' }, [
|
|
$.make('li', { className: 'NB-menu-separator-inverse' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete-search', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Delete saved search')
|
|
])
|
|
]);
|
|
$manage_menu.data('feed_id', feed_id);
|
|
$manage_menu.data('$feed', $item);
|
|
} else if (type == 'folder') {
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-folder' }, [
|
|
$.make('li', { className: 'NB-menu-separator-inverse' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-folder-mark-read', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark folder as read')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-folder-subscribe', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Add a site to this folder')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-folder-subfolder', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Create a new subfolder')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-folder-settings', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Folder settings')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-move NB-menu-manage-folder-move', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Move to folder')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-folder-move-confirm NB-modal-submit', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-confirm-position' }, [
|
|
$.make('div', { className: 'NB-menu-manage-move-save NB-menu-manage-folder-move-save NB-modal-submit-green NB-modal-submit-button' }, 'Save'),
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-add-folders' }, NEWSBLUR.utils.make_folders())
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-rename NB-menu-manage-folder-rename', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Rename this folder')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-folder-rename-confirm NB-modal-submit' }, [
|
|
$.make('div', { className: 'NB-menu-manage-confirm-position' }, [
|
|
$.make('div', { className: 'NB-menu-manage-rename-save NB-menu-manage-folder-rename-save NB-modal-submit-green NB-modal-submit-button' }, 'Save'),
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('input', { name: 'new_title', className: 'NB-menu-manage-title NB-input', value: feed_id })
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-folder-delete', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Delete this folder')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-folder-delete-confirm', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?')
|
|
])
|
|
]);
|
|
$manage_menu.data('folder_name', feed_id);
|
|
$manage_menu.data('$folder', $item);
|
|
} else if (type == 'story') {
|
|
var feed = this.model.get_feed(feed_id);
|
|
var story = this.model.get_story(story_id);
|
|
var starred_class = story.get('starred') ? ' NB-story-starred ' : '';
|
|
var starred_title = story.get('starred') ? 'Unsave this story' : 'Save this story';
|
|
var shared_class = story.get('shared') ? ' NB-story-shared ' : '';
|
|
var shared_title = story.get('shared') ? 'Shared' : 'Share to your Blurblog';
|
|
var order = NEWSBLUR.assets.view_setting(this.active_feed, 'order');
|
|
story.story_share_menu_view = new NEWSBLUR.Views.StoryShareView({
|
|
model: story
|
|
});
|
|
|
|
$manage_menu = $.make('ul', { className: 'NB-menu-manage NB-menu-manage-story ' + starred_class + shared_class }, [
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story-open', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('input', { name: 'story_permalink', className: 'NB-menu-manage-open-input NB-input', value: story.get('story_permalink') }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Open')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
(story.get('read_status') && $.make('li', { className: 'NB-menu-item NB-menu-manage-story-unread', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark as unread')
|
|
])),
|
|
(!story.get('read_status') && $.make('li', { className: 'NB-menu-item NB-menu-manage-story-read', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story-star', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, starred_title)
|
|
]),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story-thirdparty' }, [
|
|
(NEWSBLUR.Preferences['story_share_facebook'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-facebook' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Facebook').parent().addClass('NB-menu-manage-highlight-facebook');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-facebook');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_twitter'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-twitter' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Twitter').parent().addClass('NB-menu-manage-highlight-twitter');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-twitter');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_readitlater'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-readitlater' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Pocket (RIL)').parent().addClass('NB-menu-manage-highlight-readitlater');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-readitlater');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_tumblr'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-tumblr' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Tumblr').parent().addClass('NB-menu-manage-highlight-tumblr');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-tumblr');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_blogger'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-blogger' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Blogger').parent().addClass('NB-menu-manage-highlight-blogger');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-blogger');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_delicious'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-delicious' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Delicious').parent().addClass('NB-menu-manage-highlight-delicious');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-delicious');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_pinboard'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-pinboard' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Pinboard').parent().addClass('NB-menu-manage-highlight-pinboard');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-pinboard');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_raindrop'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-raindrop' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Raindrop.io').parent().addClass('NB-menu-manage-highlight-raindrop');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-raindrop');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_pinterest'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-pinterest' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Pinterest').parent().addClass('NB-menu-manage-highlight-pinterest');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-pinterest');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_buffer'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-buffer' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Buffer').parent().addClass('NB-menu-manage-highlight-buffer');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-buffer');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_diigo'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-diigo' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Diigo').parent().addClass('NB-menu-manage-highlight-diigo');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-diigo');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_evernote'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-evernote' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Evernote').parent().addClass('NB-menu-manage-highlight-evernote');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-evernote');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_googleplus'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-googleplus' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Google+').parent().addClass('NB-menu-manage-highlight-googleplus');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-googleplus');
|
|
}, this))),
|
|
(NEWSBLUR.Preferences['story_share_instapaper'] && $.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-instapaper' }).bind('mouseenter', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Instapaper').parent().addClass('NB-menu-manage-highlight-instapaper');
|
|
}, this)).bind('mouseleave', _.bind(function (e) {
|
|
$(e.target).siblings('.NB-menu-manage-title').text('Email story').parent().removeClass('NB-menu-manage-highlight-instapaper');
|
|
}, this))),
|
|
$.make('div', { className: 'NB-menu-manage-thirdparty-icon NB-menu-manage-thirdparty-email', role: "button" }),
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Email story')
|
|
]).bind('click', _.bind(function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var $target = $(e.target);
|
|
if ($target.hasClass('NB-menu-manage-thirdparty-facebook')) {
|
|
this.send_story_to_facebook(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-twitter')) {
|
|
this.send_story_to_twitter(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-readitlater')) {
|
|
this.send_story_to_readitlater(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-tumblr')) {
|
|
this.send_story_to_tumblr(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-blogger')) {
|
|
this.send_story_to_blogger(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-delicious')) {
|
|
this.send_story_to_delicious(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-pinboard')) {
|
|
this.send_story_to_pinboard(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-raindrop')) {
|
|
this.send_story_to_raindrop(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-pinterest')) {
|
|
this.send_story_to_pinterest(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-buffer')) {
|
|
this.send_story_to_buffer(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-diigo')) {
|
|
this.send_story_to_diigo(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-evernote')) {
|
|
this.send_story_to_evernote(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-googleplus')) {
|
|
this.send_story_to_googleplus(story.id);
|
|
} else if ($target.hasClass('NB-menu-manage-thirdparty-instapaper')) {
|
|
this.send_story_to_instapaper(story.id);
|
|
} else {
|
|
this.send_story_to_email(story);
|
|
}
|
|
}, this)),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story NB-menu-manage-story-share', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, shared_title)
|
|
]),
|
|
$.make('li', { className: 'NB-menu-subitem NB-menu-manage-story NB-menu-manage-confirm NB-menu-manage-story-share-confirm NB-modal-submit', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-confirm-position' }, [
|
|
story.story_share_menu_view.render().el
|
|
])
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story-train', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence trainer'),
|
|
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'What you like and dislike.')
|
|
]),
|
|
$.make('li', { className: 'NB-menu-separator' }),
|
|
(order == "newest" && $.make('li', { className: 'NB-menu-item NB-menu-manage-story-mark-read-newer NB-up', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark newer stories read')
|
|
])),
|
|
$.make('li', { className: 'NB-menu-item NB-menu-manage-story-mark-read-older ' + (order == "oldest" ? "NB-up" : "NB-down"), role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark older stories read')
|
|
]),
|
|
(order == "oldest" && $.make('li', { className: 'NB-menu-item NB-menu-manage-story-mark-read-newer NB-down', role: "button" }, [
|
|
$.make('div', { className: 'NB-menu-manage-image' }),
|
|
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark newer stories read')
|
|
]))
|
|
]);
|
|
$manage_menu.data('feed_id', feed_id);
|
|
$manage_menu.data('story_id', story_id);
|
|
$manage_menu.data('$story', $item);
|
|
|
|
// this.update_share_button_label($('.NB-sideoption-share-comments', $manage_menu));
|
|
}
|
|
|
|
return $manage_menu;
|
|
},
|
|
|
|
show_manage_menu: function (type, $item, options) {
|
|
var self = this;
|
|
var options = _.extend({
|
|
'toplevel': false,
|
|
'inverse': false
|
|
}, options);
|
|
var $manage_menu_container = $('.NB-menu-manage-container');
|
|
|
|
clearTimeout(this.flags.closed_manage_menu);
|
|
this.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
|
|
// If another menu is open, hide it first.
|
|
// If this menu is already open, then hide it instead.
|
|
if (($item && $item[0] == $manage_menu_container.data('item')) &&
|
|
parseInt($manage_menu_container.css('opacity'), 10) == 1) {
|
|
this.hide_manage_menu(type, $item);
|
|
return;
|
|
} else {
|
|
this.hide_manage_menu(type, $item);
|
|
}
|
|
|
|
if ($item.hasClass('NB-empty')) return;
|
|
|
|
$item.addClass('NB-showing-menu');
|
|
|
|
// Create menu, size and position it, then attach to the right place.
|
|
var feed_id, inverse, story_id;
|
|
if (type == 'folder') {
|
|
feed_id = options.folder_title;
|
|
inverse = options.inverse || $item.hasClass("NB-hover-inverse");
|
|
} else if (type == 'feed') {
|
|
feed_id = options.feed_id;
|
|
inverse = options.inverse || $item.hasClass("NB-hover-inverse");
|
|
} else if (type == 'socialfeed') {
|
|
feed_id = options.feed_id;
|
|
inverse = options.inverse || $item.hasClass("NB-hover-inverse");
|
|
} else if (type == 'starred') {
|
|
feed_id = options.feed_id;
|
|
inverse = options.inverse || $item.hasClass("NB-hover-inverse");
|
|
} else if (type == 'search') {
|
|
feed_id = options.feed_id;
|
|
inverse = options.inverse || $item.hasClass("NB-hover-inverse");
|
|
} else if (type == 'story') {
|
|
story_id = options.story_id;
|
|
if ($item.hasClass('NB-hover-inverse')) inverse = true;
|
|
} else if (type == 'site') {
|
|
$('.NB-task-manage').tipsy('hide');
|
|
$('.NB-task-manage').tipsy('disable');
|
|
if (options.inverse) inverse = true;
|
|
}
|
|
var toplevel = options.toplevel || $item.hasClass("NB-toplevel") ||
|
|
$item.children('.folder_title').hasClass("NB-toplevel");
|
|
var $manage_menu = this.make_manage_menu(type, feed_id, story_id, inverse, $item);
|
|
$manage_menu_container.empty().append($manage_menu);
|
|
$manage_menu_container.data('item', $item && $item[0]);
|
|
$('.NB-task-manage').parents('.NB-taskbar').css('z-index', 2);
|
|
if (type == 'site') {
|
|
if (inverse) {
|
|
$('li', $manage_menu_container).each(function () {
|
|
$(this).prependTo($(this).parent());
|
|
});
|
|
$manage_menu_container.corner('bottom 8px').corner('top 0px');
|
|
$('.NB-menu-manage-site-info', $manage_menu_container).hide();
|
|
} else {
|
|
$manage_menu_container.corner('top 8px').corner('bottom 0px');
|
|
}
|
|
|
|
if ($item.hasClass('NB-task-manage')) {
|
|
$manage_menu_container.align($item, 'top -left', {
|
|
'top': 0,
|
|
'left': -2
|
|
});
|
|
} else if (options.right) {
|
|
$manage_menu_container.align($item, '-top -left', {
|
|
'top': -34,
|
|
'left': 0
|
|
});
|
|
} else {
|
|
$manage_menu_container.align($item, '-top left', {
|
|
'top': -24,
|
|
'left': 20
|
|
});
|
|
}
|
|
if (options.body) {
|
|
$manage_menu_container.appendTo(this.$s.$body);
|
|
$manage_menu_container.css('z-index', $("#simplemodal-container").css('z-index'));
|
|
}
|
|
$('.NB-task-manage').addClass('NB-hover');
|
|
} else if (type == 'feed' || type == 'folder' || type == 'story' ||
|
|
type == 'socialfeed' || type == 'starred' || type == 'search') {
|
|
var left, top;
|
|
// NEWSBLUR.log(['menu open', $item, inverse, toplevel, type]);
|
|
if (inverse) {
|
|
var $align = $item;
|
|
if (type == 'feed') {
|
|
left = toplevel ? 2 : -22;
|
|
top = toplevel ? 1 : 5;
|
|
} else if (type == 'socialfeed' || type == 'starred' || type == 'search') {
|
|
left = 2;
|
|
top = 4;
|
|
} else if (type == 'folder') {
|
|
left = toplevel ? 8 : -20;
|
|
top = toplevel ? 6 : 6;
|
|
} else if (type == 'story') {
|
|
left = 7;
|
|
top = 3;
|
|
$align = $('.NB-story-manage-icon,.NB-feed-story-manage-icon', $item);
|
|
if (!$align.is(':visible')) {
|
|
$align = $('.NB-storytitles-sentiment,.NB-feed-story-sentiment', $item);
|
|
}
|
|
}
|
|
|
|
$manage_menu_container.align($align, 'top -left', {
|
|
'top': -1 * top,
|
|
'left': left
|
|
});
|
|
|
|
$manage_menu_container.corner('br 8px').corner('bl top 0px');
|
|
$('li', $manage_menu_container).each(function () {
|
|
$(this).prependTo($(this).parent());
|
|
});
|
|
} else {
|
|
var $align = $item;
|
|
if (type == 'feed') {
|
|
left = toplevel ? 0 : -2;
|
|
top = toplevel ? 20 : 19;
|
|
$align = $('.NB-feedlist-manage-icon', $item);
|
|
} else if (type == 'socialfeed' || type == 'starred' || type == 'search') {
|
|
left = toplevel ? 0 : -18;
|
|
top = toplevel ? 20 : 21;
|
|
$align = $('.NB-feedlist-manage-icon', $item);
|
|
} else if (type == 'folder') {
|
|
left = toplevel ? 8 : -22;
|
|
top = toplevel ? 24 : 21;
|
|
} else if (type == 'story') {
|
|
left = 7;
|
|
top = 19;
|
|
$align = $('.NB-story-manage-icon,.NB-feed-story-manage-icon', $item);
|
|
if (!$align.is(':visible')) {
|
|
$align = $('.NB-storytitles-sentiment,.NB-feed-story-sentiment', $item);
|
|
}
|
|
}
|
|
$manage_menu_container.align($align, '-bottom -left', {
|
|
'top': top,
|
|
'left': left
|
|
});
|
|
$manage_menu_container.corner('tr 8px').corner('tl bottom 0px');
|
|
}
|
|
}
|
|
$manage_menu_container.stop().css({ 'display': 'block', 'opacity': 1 });
|
|
|
|
// Create and position the arrow tab
|
|
if (type == 'feed' || type == 'folder' || type == 'story' ||
|
|
type == 'socialfeed' || type == 'starred' || type == 'search') {
|
|
var $arrow = $.make('div', { className: 'NB-menu-manage-arrow' }, [
|
|
$.make('div', { className: 'NB-icon' })
|
|
]);
|
|
if (inverse) {
|
|
$arrow.corner('bottom 5px').corner('top 0px');
|
|
$manage_menu_container.append($arrow);
|
|
$manage_menu_container.addClass('NB-inverse');
|
|
} else {
|
|
$arrow.corner('top 5px').corner('bottom 0px');
|
|
$manage_menu_container.prepend($arrow);
|
|
$manage_menu_container.removeClass('NB-inverse');
|
|
}
|
|
}
|
|
|
|
// Hide menu on click outside menu.
|
|
_.defer(function () {
|
|
var close_menu_handler = function (e) {
|
|
_.defer(function () {
|
|
$(document).bind('click.menu', function (e) {
|
|
// console.log(['click outside menu']);
|
|
self.hide_manage_menu(type, $item, false);
|
|
});
|
|
});
|
|
};
|
|
if (options.rightclick) {
|
|
// console.log(['mouseup.menu', close_menu_handler]);
|
|
$(document).one('mouseup.menu', close_menu_handler);
|
|
} else {
|
|
// console.log(['close menu']);
|
|
close_menu_handler();
|
|
}
|
|
});
|
|
|
|
// Hide menu on mouseout (on a delay).
|
|
$manage_menu_container.hover(function () {
|
|
clearTimeout(self.flags.closed_manage_menu);
|
|
}, function () {
|
|
clearTimeout(self.flags.closed_manage_menu);
|
|
self.flags.closed_manage_menu = setTimeout(function () {
|
|
if (self.flags.closed_manage_menu) {
|
|
self.hide_manage_menu(type, $item, true);
|
|
}
|
|
}, 1000);
|
|
});
|
|
|
|
// Hide menu on esc.
|
|
$(document).add($('input,textarea', $manage_menu_container))
|
|
.unbind('keydown.manage_menu')
|
|
.bind('keydown.manage_menu', 'esc', function (e) {
|
|
e.preventDefault();
|
|
self.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
self.hide_manage_menu(type, $item, true);
|
|
});
|
|
if (type == 'story') {
|
|
var share = _.bind(function (e) {
|
|
e.preventDefault();
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
story.story_share_menu_view.mark_story_as_shared({ 'source': 'menu' });
|
|
}, this);
|
|
$('.NB-sideoption-share-comments', $manage_menu_container).bind('keydown', 'ctrl+return', share);
|
|
$('.NB-sideoption-share-comments', $manage_menu_container).bind('keydown', 'meta+return', share);
|
|
}
|
|
|
|
// Hide menu on scroll.
|
|
var $scroll;
|
|
this.flags['feed_list_showing_manage_menu'] = true;
|
|
if (type == 'feed' || type == 'socialfeed' || type == 'starred' || type == 'search') {
|
|
$scroll = this.$s.$feed_list.parent();
|
|
} else if (type == 'story') {
|
|
$scroll = this.$s.$story_titles.add(this.$s.$feed_scroll);
|
|
}
|
|
$scroll && $scroll.unbind('scroll.manage_menu').bind('scroll.manage_menu', function (e) {
|
|
if (self.flags['feed_list_showing_manage_menu']) {
|
|
self.hide_manage_menu(type, $item, true);
|
|
} else {
|
|
$scroll.unbind('scroll.manage_menu');
|
|
}
|
|
});
|
|
},
|
|
|
|
hide_manage_menu: function (type, $item, animate) {
|
|
var $manage_menu_container = $('.NB-menu-manage-container');
|
|
var height = $manage_menu_container.outerHeight();
|
|
if (this.flags['showing_confirm_input_on_manage_menu'] && animate) return;
|
|
// NEWSBLUR.log(['hide_manage_menu', type, $item, animate, $manage_menu_container.css('opacity')]);
|
|
|
|
clearTimeout(this.flags.closed_manage_menu);
|
|
this.flags['feed_list_showing_manage_menu'] = false;
|
|
$(document).unbind('click.menu');
|
|
$(document).unbind('mouseup.menu');
|
|
$(document).add($('input,textarea', $manage_menu_container))
|
|
.unbind('keydown.manage_menu');
|
|
|
|
if (this.model.preference('show_tooltips')) {
|
|
$('.NB-task-manage').tipsy('enable');
|
|
}
|
|
|
|
if ($item) $item.removeClass('NB-showing-menu');
|
|
|
|
if (animate) {
|
|
$manage_menu_container.stop().animate({
|
|
'opacity': 0
|
|
}, {
|
|
'duration': 250,
|
|
'queue': false,
|
|
'complete': function () {
|
|
$manage_menu_container.css({ 'display': 'none', 'opacity': 0 });
|
|
}
|
|
});
|
|
} else {
|
|
$manage_menu_container.css({ 'display': 'none', 'opacity': 0 });
|
|
}
|
|
$('.NB-task-manage').removeClass('NB-hover');
|
|
|
|
this.blur_to_page({ manage_menu: true });
|
|
},
|
|
|
|
// ========================
|
|
// = Manage menu - Delete =
|
|
// ========================
|
|
|
|
show_confirm_delete_menu_item: function () {
|
|
var $delete = $('.NB-menu-manage-feed-delete,.NB-menu-manage-folder-delete');
|
|
var $confirm = $('.NB-menu-manage-feed-delete-confirm,.NB-menu-manage-folder-delete-confirm');
|
|
|
|
$delete.addClass('NB-menu-manage-feed-delete-cancel');
|
|
$('.NB-menu-manage-title', $delete).text('Cancel delete');
|
|
$confirm.slideDown(500);
|
|
},
|
|
|
|
hide_confirm_delete_menu_item: function () {
|
|
var $delete = $('.NB-menu-manage-feed-delete,.NB-menu-manage-folder-delete');
|
|
var $confirm = $('.NB-menu-manage-feed-delete-confirm,.NB-menu-manage-folder-delete-confirm');
|
|
|
|
$delete.removeClass('NB-menu-manage-feed-delete-cancel');
|
|
|
|
var text = $delete.hasClass('NB-menu-manage-folder-delete') ?
|
|
'Delete this folder' :
|
|
'Delete this site';
|
|
$('.NB-menu-manage-title', $delete).text(text);
|
|
$confirm.slideUp(500);
|
|
},
|
|
|
|
manage_menu_delete_feed: function (feed_id, $feed) {
|
|
var self = this;
|
|
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 });
|
|
},
|
|
|
|
manage_menu_delete_search: function (search_model_id, $feed) {
|
|
var search_model = NEWSBLUR.assets.get_search_feeds(search_model_id);
|
|
NEWSBLUR.assets.delete_saved_search(search_model.get('feed_id'), search_model.get('query'), _.bind(function (e) {
|
|
console.log(['Saved searches', e]);
|
|
}, this));
|
|
|
|
},
|
|
|
|
show_confirm_unfollow_menu_item: function () {
|
|
var $unfollow = $('.NB-menu-manage-socialfeed-delete');
|
|
var $confirm = $('.NB-menu-manage-socialfeed-delete-confirm');
|
|
|
|
$unfollow.addClass('NB-menu-manage-socialfeed-delete-cancel');
|
|
$('.NB-menu-manage-title', $unfollow).text('Cancel unfollow');
|
|
$confirm.slideDown(500);
|
|
},
|
|
|
|
hide_confirm_unfollow_menu_item: function () {
|
|
var $unfollow = $('.NB-menu-manage-socialfeed-delete,.NB-menu-manage-folder-delete');
|
|
var $confirm = $('.NB-menu-manage-socialfeed-delete-confirm,.NB-menu-manage-folder-delete-confirm');
|
|
|
|
$unfollow.removeClass('NB-menu-manage-socialfeed-delete-cancel');
|
|
|
|
$('.NB-menu-manage-title', $unfollow).text('Unfollow');
|
|
$confirm.slideUp(500);
|
|
},
|
|
|
|
manage_menu_unfollow_feed: function (feed, $feed) {
|
|
var self = this;
|
|
var feed_id = feed || this.active_feed;
|
|
|
|
this.model.unfollow_user(feed_id, function () {
|
|
NEWSBLUR.app.feed_list.make_social_feeds();
|
|
});
|
|
},
|
|
|
|
|
|
manage_menu_delete_folder: function (folder_title, $folder) {
|
|
var self = this;
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($folder) ||
|
|
this.active_folder.folder_view;
|
|
|
|
folder_view.model.delete_folder();
|
|
},
|
|
|
|
// ========================
|
|
// = Manage menu - Move =
|
|
// ========================
|
|
|
|
show_confirm_move_menu_item: function (feed_id, $feed) {
|
|
var self = this;
|
|
var $move = $('.NB-menu-manage-feed-move,.NB-menu-manage-folder-move');
|
|
var $confirm = $('.NB-menu-manage-feed-move-confirm,.NB-menu-manage-folder-move-confirm');
|
|
var $position = $('.NB-menu-manage-confirm-position', $confirm);
|
|
var $add = $(".NB-add-folders,.NB-change-folders", $confirm);
|
|
var $save = $(".NB-menu-manage-feed-move-save");
|
|
var $select = $('select', $confirm);
|
|
var isFeed = _.isNumber(feed_id);
|
|
|
|
if (isFeed) {
|
|
var feed = this.model.get_feed(feed_id);
|
|
var feed_view = feed.get_view($feed, true);
|
|
var in_folder = feed_view.options.folder_title;
|
|
feed.set('menu_folders', null, { silent: true });
|
|
var $folders = this.make_folders_multiselect(feed);
|
|
$add.html($folders);
|
|
$save.addClass("NB-disabled").attr('disabled', "disabled").text('Select folders');
|
|
} else {
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($feed) ||
|
|
this.active_folder.folder_view;
|
|
var in_folder = folder_view.collection.options.title;
|
|
}
|
|
|
|
$move.addClass('NB-menu-manage-feed-move-cancel');
|
|
$('.NB-menu-manage-title', $move).text('Cancel');
|
|
$position.css('position', 'relative');
|
|
var height = $confirm.height();
|
|
$position.css('position', 'absolute');
|
|
$confirm.css({ 'height': 0, 'display': 'block' }).animate({ 'height': height }, {
|
|
'duration': 380,
|
|
'easing': 'easeOutQuart'
|
|
});
|
|
if (isFeed) {
|
|
$save.fadeIn(380);
|
|
}
|
|
this.flags['showing_confirm_input_on_manage_menu'] = true;
|
|
|
|
if (!_.isNumber(feed_id)) {
|
|
$('select', $confirm).focus().select();
|
|
$('option', $select).each(function () {
|
|
if ($(this).attr('value') == in_folder) {
|
|
$(this).prop('selected', 'selected');
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
make_folders_multiselect: function (feed, in_folders) {
|
|
var folders = NEWSBLUR.assets.get_folders();
|
|
if (!in_folders) in_folders = feed.in_folders();
|
|
in_folders = _.unique(in_folders.concat(feed.get('menu_folders') || []));
|
|
feed.set('menu_folders', in_folders, { silent: true });
|
|
var $options = $.make('div', { className: 'NB-folders' });
|
|
var $option = this.make_folder_selectable('Top Level', '', 0, _.any(in_folders, function (folder) {
|
|
return !folder;
|
|
}));
|
|
$options.append($option);
|
|
|
|
$options = this.make_folders_multiselect_options($options, folders, 1, in_folders);
|
|
|
|
return $options;
|
|
},
|
|
|
|
make_folders_multiselect_options: function ($options, items, depth, in_folders) {
|
|
var self = this;
|
|
items.each(function (item) {
|
|
if (item.is_folder()) {
|
|
var title = item.get('folder_title');
|
|
var $option = self.make_folder_selectable(title, title, depth, _.contains(in_folders, title));
|
|
$options.append($option);
|
|
$options = self.make_folders_multiselect_options($options, item.folders, depth + 1, in_folders);
|
|
}
|
|
});
|
|
|
|
return $options;
|
|
},
|
|
|
|
make_folder_selectable: function (folder_title, folder_value, depth, selected) {
|
|
return $.make('div', {
|
|
className: "NB-folder-option " + (selected ? "NB-folder-option-active" : ""),
|
|
style: 'padding-left: ' + depth * 12 + 'px;'
|
|
}, [
|
|
$.make('div', { className: 'NB-icon-add' }),
|
|
$.make('div', { className: 'NB-icon' }),
|
|
$.make('div', { className: 'NB-folder-option-title' }, folder_title)
|
|
]).data('folder', folder_value);
|
|
},
|
|
|
|
switch_change_folder: function (feed_id, folder_value) {
|
|
var feed = this.model.get_feed(feed_id);
|
|
var in_folders = feed.get('menu_folders');
|
|
|
|
if (_.contains(in_folders, folder_value)) {
|
|
in_folders = _.without(in_folders, folder_value);
|
|
} else {
|
|
in_folders = in_folders.concat(folder_value);
|
|
}
|
|
|
|
feed.set('menu_folders', in_folders, { silent: true });
|
|
|
|
this.render_change_folders(feed, in_folders);
|
|
},
|
|
|
|
render_change_folders: function (feed, in_folders) {
|
|
var $confirm = $('.NB-menu-manage-feed-move-confirm,.NB-menu-manage-folder-move-confirm');
|
|
var $add = $(".NB-add-folders,.NB-change-folders", $confirm);
|
|
var $save = $(".NB-menu-manage-feed-move-save");
|
|
|
|
var $folders = this.make_folders_multiselect(feed, in_folders);
|
|
$add.html($folders);
|
|
|
|
if (_.isEqual(in_folders, feed.in_folders())) {
|
|
$save.addClass("NB-disabled").attr('disabled', "disabled").text('Select folders');
|
|
} else {
|
|
$save.toggleClass("NB-disabled", !in_folders.length)
|
|
.attr('disabled', !in_folders.length ? "disabled" : false);
|
|
}
|
|
|
|
if (!in_folders.length) {
|
|
$save.text('Select a folder');
|
|
} else {
|
|
$save.text("Save " + Inflector.pluralize(' folder', in_folders.length, true));
|
|
}
|
|
},
|
|
|
|
show_add_folder_in_menu: function (feed_id, $folder, folder) {
|
|
var self = this;
|
|
|
|
if ($folder.siblings('.NB-add-folder-form').length) {
|
|
var feed = this.model.get_feed(feed_id);
|
|
var in_folders = feed.get('menu_folders');
|
|
this.render_change_folders(feed, in_folders);
|
|
return;
|
|
}
|
|
|
|
var $add = $.make('div', { className: 'NB-add-folder-form' }, [
|
|
$.make('div', { className: 'NB-icon' }),
|
|
$.make('input', { className: 'NB-input', placeholder: "New folder name..." }),
|
|
$.make('div', { className: 'NB-menu-manage-add-folder-save NB-modal-submit-green NB-modal-submit-button' }, 'Add')
|
|
]).data('in_folder', $folder.data('folder')).data('feed_id', feed_id);
|
|
$add.css('paddingLeft', parseInt($folder.css('paddingLeft'), 10) + 12);
|
|
$folder.after($add);
|
|
|
|
$('input', $add).focus().bind('keyup', 'return', function (e) {
|
|
self.add_folder_to_folder();
|
|
}).bind('keyup', 'esc', function (e) {
|
|
var feed = self.model.get_feed(feed_id);
|
|
var in_folders = feed.get('menu_folders');
|
|
self.render_change_folders(feed, in_folders);
|
|
});
|
|
},
|
|
|
|
add_folder_to_folder: function () {
|
|
var $form = $('.NB-add-folder-form');
|
|
var folder_name = $('.NB-input', $form).val();
|
|
var parent_folder = $form.data('in_folder');
|
|
|
|
this.model.save_add_folder(folder_name, parent_folder,
|
|
$.rescope(this.post_add_folder_to_folder, this));
|
|
},
|
|
|
|
post_add_folder_to_folder: function (e, data) {
|
|
if (data.folders) {
|
|
NEWSBLUR.assets.folders.reset(_.compact(data.folders), { parse: true });
|
|
}
|
|
|
|
var $form = $('.NB-add-folder-form');
|
|
var feed_id = $form.data('feed_id');
|
|
var feed = this.model.get_feed(feed_id);
|
|
var in_folders = feed.get('menu_folders');
|
|
|
|
NEWSBLUR.assets.feeds.trigger('reset');
|
|
|
|
this.render_change_folders(feed, in_folders);
|
|
},
|
|
|
|
manage_menu_move_feed: function (feed_id, $feed) {
|
|
var self = this;
|
|
var feed_id = feed_id || this.active_feed;
|
|
var feed = this.model.get_feed(feed_id);
|
|
var in_folders = feed.get('menu_folders');
|
|
var feed_view = feed.get_view($feed);
|
|
|
|
var moved = feed.move_to_folders(in_folders, { view: feed_view });
|
|
this.hide_confirm_move_menu_item(moved);
|
|
if (moved) {
|
|
_.delay(_.bind(function () {
|
|
this.hide_manage_menu('feed', $feed, true);
|
|
}, this), 500);
|
|
}
|
|
},
|
|
|
|
manage_menu_move_folder: function (folder, $folder) {
|
|
var self = this;
|
|
var to_folder = $('.NB-menu-manage-folder-move-confirm select').val();
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($folder) ||
|
|
this.active_folder.folder_view;
|
|
var in_folder = folder_view.collection.options.title;
|
|
var folder_name = folder_view.options.folder_title;
|
|
var child_folders = folder_view.collection.child_folder_names();
|
|
|
|
if (to_folder == in_folder ||
|
|
to_folder == folder_name ||
|
|
_.contains(child_folders, to_folder)) {
|
|
return this.hide_confirm_move_menu_item();
|
|
}
|
|
|
|
var moved = folder_view.model.move_to_folder(to_folder, { view: folder_view });
|
|
this.hide_confirm_move_menu_item(moved);
|
|
if (moved) {
|
|
_.delay(_.bind(function () {
|
|
this.hide_manage_menu('folder', $folder, true);
|
|
}, this), 500);
|
|
}
|
|
},
|
|
|
|
hide_confirm_move_menu_item: function (moved) {
|
|
var $move_folder = $('.NB-menu-manage-folder-move');
|
|
var $move_feed = $('.NB-menu-manage-feed-move');
|
|
var $confirm_folder = $('.NB-menu-manage-folder-move-confirm');
|
|
var $confirm_feed = $('.NB-menu-manage-feed-move-confirm');
|
|
var $save = $(".NB-menu-manage-feed-move-save");
|
|
|
|
$move_folder.removeClass('NB-menu-manage-feed-move-cancel');
|
|
$move_feed.removeClass('NB-menu-manage-feed-move-cancel');
|
|
var text_folder = 'Move to folder';
|
|
var text_feed = 'Change folders';
|
|
if (moved) {
|
|
text_folder = 'Moved';
|
|
text_feed = 'Moved';
|
|
$move_folder.addClass('NB-active');
|
|
$move_feed.addClass('NB-active');
|
|
} else {
|
|
$move_folder.removeClass('NB-active');
|
|
$move_feed.removeClass('NB-active');
|
|
}
|
|
$('.NB-menu-manage-title', $move_folder).text(text_folder);
|
|
$('.NB-menu-manage-title', $move_feed).text(text_feed);
|
|
$confirm_feed.slideUp(500);
|
|
$confirm_folder.slideUp(500);
|
|
$save.hide();
|
|
this.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
},
|
|
|
|
manage_menu_mute_feed: function (feed_id, unmute) {
|
|
var approve_list = _.pluck(NEWSBLUR.assets.feeds.filter(function (feed) {
|
|
if (unmute) {
|
|
return feed.get('active') || feed.get('id') == feed_id;
|
|
}
|
|
return feed.get('active') && feed.get('id') != feed_id;
|
|
}), 'id');
|
|
|
|
console.log(["Saving", approve_list, feed_id]);
|
|
|
|
NEWSBLUR.reader.flags['reloading_feeds'] = true;
|
|
this.model.save_feed_chooser(approve_list, _.bind(function () {
|
|
this.flags['has_saved'] = true;
|
|
NEWSBLUR.reader.flags['reloading_feeds'] = false;
|
|
NEWSBLUR.reader.hide_feed_chooser_button();
|
|
NEWSBLUR.assets.load_feeds();
|
|
this.hide_manage_menu();
|
|
}, this));
|
|
},
|
|
|
|
// ========================
|
|
// = Manage menu - Rename =
|
|
// ========================
|
|
|
|
show_confirm_rename_menu_item: function () {
|
|
var self = this;
|
|
var $rename = $('.NB-menu-manage-feed-rename,.NB-menu-manage-folder-rename');
|
|
var $confirm = $('.NB-menu-manage-feed-rename-confirm,.NB-menu-manage-folder-rename-confirm');
|
|
var $position = $('.NB-menu-manage-confirm-position', $confirm);
|
|
|
|
$rename.addClass('NB-menu-manage-feed-rename-cancel');
|
|
$('.NB-menu-manage-title', $rename).text('Cancel rename');
|
|
$position.css('position', 'relative');
|
|
var height = $confirm.height();
|
|
$position.css('position', 'absolute');
|
|
$confirm.css({ 'height': 0, 'display': 'block' }).animate({ 'height': height }, {
|
|
'duration': 380,
|
|
'easing': 'easeOutQuart'
|
|
});
|
|
$('input', $confirm).focus().select();
|
|
this.flags['showing_confirm_input_on_manage_menu'] = true;
|
|
$('.NB-menu-manage-feed-rename-confirm input.NB-menu-manage-title').bind('keyup', 'return', function (e) {
|
|
var $t = $(e.target);
|
|
var feed_id = $t.closest('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.closest('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_rename_feed(feed_id, $feed);
|
|
});
|
|
$('.NB-menu-manage-folder-rename-confirm input.NB-menu-manage-title').bind('keyup', 'return', function (e) {
|
|
var $t = $(e.target);
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.manage_menu_rename_folder(folder_name, $folder);
|
|
});
|
|
},
|
|
|
|
hide_confirm_rename_menu_item: function (renamed) {
|
|
var $rename = $('.NB-menu-manage-feed-rename,.NB-menu-manage-folder-rename');
|
|
var $confirm = $('.NB-menu-manage-feed-rename-confirm,.NB-menu-manage-folder-rename-confirm');
|
|
|
|
$rename.removeClass('NB-menu-manage-feed-rename-cancel');
|
|
var text = $rename.hasClass('NB-menu-manage-folder-rename') ?
|
|
'Rename this folder' :
|
|
'Rename this site';
|
|
if (renamed) {
|
|
text = 'Renamed';
|
|
$rename.addClass('NB-active');
|
|
} else {
|
|
$rename.removeClass('NB-active');
|
|
}
|
|
$('.NB-menu-manage-title', $rename).text(text);
|
|
$confirm.slideUp(500);
|
|
this.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
},
|
|
|
|
manage_menu_rename_feed: function (feed_id) {
|
|
var feed_id = feed_id || this.active_feed;
|
|
var feed = this.model.get_feed(feed_id);
|
|
var new_title = $('.NB-menu-manage-feed-rename-confirm .NB-menu-manage-title').val();
|
|
|
|
if (new_title.length > 0) feed.rename(new_title);
|
|
this.hide_confirm_rename_menu_item(true);
|
|
},
|
|
|
|
manage_menu_rename_folder: function (folder, $folder) {
|
|
var self = this;
|
|
var new_folder_name = $('.NB-menu-manage-folder-rename-confirm .NB-menu-manage-title').val();
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($folder) ||
|
|
this.active_folder.folder_view;
|
|
|
|
if (new_folder_name.length > 0) folder_view.model.rename(new_folder_name);
|
|
this.hide_confirm_rename_menu_item(true);
|
|
},
|
|
|
|
// =============================
|
|
// = Manage Menu - Share Story =
|
|
// =============================
|
|
|
|
show_confirm_story_share_menu_item: function (story_id) {
|
|
var self = this;
|
|
if (!story_id) story_id = $('.NB-menu-manage').data('story_id');
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
var $share = $('.NB-menu-manage-story-share');
|
|
var $confirm = $('.NB-menu-manage-story-share-confirm');
|
|
var $story_share = story.story_share_menu_view.$el;
|
|
var $position = $('.NB-menu-manage-confirm-position', $confirm);
|
|
|
|
$share.addClass('NB-menu-manage-story-share-cancel');
|
|
$('.NB-menu-manage-title', $share).text('Cancel share');
|
|
$confirm.css({ 'height': 0, 'display': 'block' });
|
|
story.story_share_menu_view.toggle_feed_story_share_dialog({ immediate: true });
|
|
$position.css('position', 'relative');
|
|
var height = $story_share.height();
|
|
$position.css('position', 'absolute');
|
|
$confirm.css({ 'height': 0, 'display': 'block' }).animate({ 'height': height }, {
|
|
'duration': 380,
|
|
'easing': 'easeOutQuart'
|
|
});
|
|
$('textarea', $confirm).focus().select();
|
|
this.flags['showing_confirm_input_on_manage_menu'] = true;
|
|
},
|
|
|
|
hide_confirm_story_share_menu_item: function (shared) {
|
|
var story_id = $('.NB-menu-manage-container .NB-menu-manage').data('story_id');
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
var $share = $('.NB-menu-manage-story-share');
|
|
var $confirm = $('.NB-menu-manage-story-share-confirm');
|
|
|
|
$share.removeClass('NB-menu-manage-story-share-cancel');
|
|
var text = 'Share to your Blurblog';
|
|
if (shared) {
|
|
text = 'Shared';
|
|
$share.addClass('NB-active');
|
|
} else {
|
|
$share.removeClass('NB-active');
|
|
}
|
|
$('.NB-menu-manage-title', $share).text(text);
|
|
$confirm.slideUp(500, _.bind(function () {
|
|
if (shared && story) {
|
|
this.hide_manage_menu('story', story.story_title_view.$el, true);
|
|
}
|
|
}, this));
|
|
this.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
|
|
},
|
|
|
|
// ====================
|
|
// = Dashboard Rivers =
|
|
// ====================
|
|
|
|
load_dashboard_rivers: function (force) {
|
|
if (!NEWSBLUR.Globals.is_authenticated) return;
|
|
if (!NEWSBLUR.assets.dashboard_rivers.length) {
|
|
// Create dashboard rivers if none exist by choosing folders
|
|
this.choose_dashboard_rivers();
|
|
return;
|
|
}
|
|
if (!force && NEWSBLUR.app.dashboard_rivers) return;
|
|
|
|
NEWSBLUR.app.dashboard_rivers = {
|
|
'left': new NEWSBLUR.Views.DashboardRivers({ side: 'left' }),
|
|
'right': new NEWSBLUR.Views.DashboardRivers({ side: 'right' })
|
|
};
|
|
},
|
|
|
|
choose_dashboard_rivers: function () {
|
|
var existing_rivers = NEWSBLUR.assets.dashboard_rivers;
|
|
var sides = existing_rivers.count_sides();
|
|
|
|
if (!existing_rivers.contains(function (river) {
|
|
river.get('river_id') == "river:";
|
|
})) {
|
|
NEWSBLUR.assets.save_dashboard_river("river:", "left", 0, _.bind(function () {
|
|
NEWSBLUR.assets.save_dashboard_river("river:infrequent", "left", 1, _.bind(function () {
|
|
NEWSBLUR.assets.save_dashboard_river("river:global", "left", 2, _.bind(function () {
|
|
this.load_dashboard_rivers();
|
|
}, this), function (e) {
|
|
console.log(['Error saving dashboard river', e]);
|
|
});
|
|
}, this), function (e) {
|
|
console.log(['Error saving dashboard river', e]);
|
|
});
|
|
}, this), function (e) {
|
|
console.log(['Error saving dashboard river', e]);
|
|
});
|
|
}
|
|
},
|
|
|
|
// ==========================
|
|
// = Taskbar - Intelligence =
|
|
// ==========================
|
|
|
|
load_intelligence_slider: function () {
|
|
var self = this;
|
|
var $slider = this.$s.$intelligence_slider;
|
|
var unread_view = this.get_unread_view_score();
|
|
|
|
if (unread_view == 0 && !NEWSBLUR.assets.preference('hide_read_feeds')) {
|
|
unread_view = -1;
|
|
}
|
|
this.slide_intelligence_slider(unread_view, true);
|
|
},
|
|
|
|
toggle_focus_in_slider: function () {
|
|
var $slider = this.$s.$intelligence_slider;
|
|
var $focus = $(".NB-intelligence-slider-green", $slider);
|
|
var $unread = $(".NB-intelligence-slider-yellow", $slider);
|
|
var unread_view = this.get_unread_view_name();
|
|
var all_mode = !NEWSBLUR.assets.preference('hide_read_feeds');
|
|
var starred_mode = this.flags['feed_list_showing_starred'];
|
|
if (!NEWSBLUR.assets.feeds.size()) return;
|
|
|
|
var view_not_empty;
|
|
if (unread_view == 'starred') {
|
|
view_not_empty = NEWSBLUR.assets.starred_feeds.any(function (feed) {
|
|
return feed.get('count');
|
|
});
|
|
} else if (unread_view == 'positive') {
|
|
view_not_empty = NEWSBLUR.assets.feeds.any(function (feed) {
|
|
return feed.get('ps');
|
|
}) || NEWSBLUR.assets.social_feeds.any(function (feed) {
|
|
return feed.get('ps');
|
|
});
|
|
} else {
|
|
view_not_empty = NEWSBLUR.assets.feeds.any(function (feed) {
|
|
return feed.get('ps') || feed.get('nt');
|
|
}) || NEWSBLUR.assets.social_feeds.any(function (feed) {
|
|
return feed.get('ps') || feed.get('nt');
|
|
});
|
|
}
|
|
$(".NB-feeds-list-empty").remove();
|
|
// console.log(["toggle_focus_in_slider", unread_view, view_not_empty, starred_mode]);
|
|
if (!view_not_empty && !all_mode && !starred_mode) {
|
|
var $empty = $.make("div", { className: "NB-feeds-list-empty" }, [
|
|
'You have no unread stories',
|
|
unread_view == 'positive' ? " in Focus mode." : ".",
|
|
$.make('br'),
|
|
$.make('br'),
|
|
unread_view == 'positive' ? 'Switch to All or Unread.' : ""
|
|
]);
|
|
this.$s.$feed_list.after($empty);
|
|
} else if (!view_not_empty && starred_mode) {
|
|
var $empty = $.make("div", { className: "NB-feeds-list-empty" }, [
|
|
'You have no saved stories.',
|
|
$.make('br'),
|
|
$.make('br'),
|
|
'Switch to All or Unread.'
|
|
]);
|
|
this.$s.$feed_list.after($empty);
|
|
}
|
|
// $focus.css('display', show_focus ? 'block' : 'none');
|
|
// if (!show_focus) {
|
|
// $unread.addClass("NB-last");
|
|
// if (NEWSBLUR.assets.preference('unread_view') > 0) {
|
|
// this.slide_intelligence_slider(0);
|
|
// }
|
|
// } else {
|
|
// $unread.removeClass("NB-last");
|
|
// this.model.preference('lock_green_slider', true);
|
|
// }
|
|
},
|
|
|
|
slide_intelligence_slider: function (value, initial_load) {
|
|
var $slider = this.$s.$intelligence_slider;
|
|
var real_value = value;
|
|
|
|
var showing_starred = this.flags['feed_list_showing_starred'];
|
|
this.flags['feed_list_showing_starred'] = value == 2;
|
|
|
|
if (value <= -1) {
|
|
value = 0;
|
|
if (!initial_load) {
|
|
NEWSBLUR.assets.preference('hide_read_feeds', 0);
|
|
}
|
|
NEWSBLUR.assets.preference('unread_view', 0);
|
|
} else if (value == 0) {
|
|
if (!initial_load) {
|
|
NEWSBLUR.assets.preference('hide_read_feeds', 1);
|
|
}
|
|
NEWSBLUR.assets.preference('unread_view', 0);
|
|
} else if (value >= 2) {
|
|
if (!initial_load) {
|
|
NEWSBLUR.assets.preference('hide_read_feeds', 1);
|
|
}
|
|
NEWSBLUR.assets.preference('unread_view', 2);
|
|
} else if (value > 0) {
|
|
if (!initial_load) {
|
|
NEWSBLUR.assets.preference('hide_read_feeds', 1);
|
|
}
|
|
NEWSBLUR.assets.preference('unread_view', 1);
|
|
}
|
|
this.flags['unread_threshold_temporarily'] = null;
|
|
this.switch_feed_view_unread_view(value);
|
|
if (NEWSBLUR.app.story_titles_header && this.model.active_feed) {
|
|
NEWSBLUR.app.story_titles_header.show_feed_hidden_story_title_indicator(true);
|
|
}
|
|
this.show_story_titles_above_intelligence_level({ 'animate': true, 'follow': true });
|
|
this.toggle_focus_in_slider();
|
|
if (!initial_load && this.flags['feed_list_showing_starred'] != showing_starred) {
|
|
this.reload_feed();
|
|
}
|
|
NEWSBLUR.app.sidebar_header.toggle_hide_read_preference();
|
|
NEWSBLUR.app.sidebar_header.count();
|
|
NEWSBLUR.assets.folders.update_all_folder_visibility();
|
|
NEWSBLUR.app.feed_list.scroll_to_selected();
|
|
if (NEWSBLUR.app.dashboard_rivers && !initial_load) {
|
|
NEWSBLUR.app.dashboard_rivers['left'].load_all_stories();
|
|
NEWSBLUR.app.dashboard_rivers['right'].load_all_stories();
|
|
}
|
|
this.force_feeds_refresh();
|
|
$('.NB-active', $slider).removeClass('NB-active');
|
|
if (this.flags['feed_list_showing_starred']) {
|
|
$('.NB-intelligence-slider-blue', $slider).addClass('NB-active');
|
|
} else if (real_value < 0) {
|
|
$('.NB-intelligence-slider-red', $slider).addClass('NB-active');
|
|
} else if (real_value > 0) {
|
|
$('.NB-intelligence-slider-green', $slider).addClass('NB-active');
|
|
} else {
|
|
$('.NB-intelligence-slider-yellow', $slider).addClass('NB-active');
|
|
}
|
|
},
|
|
|
|
move_intelligence_slider: function (direction) {
|
|
var unread_view = this.model.preference('unread_view');
|
|
if (!this.model.preference('hide_read_feeds')) unread_view = -1;
|
|
var value = unread_view + direction;
|
|
this.slide_intelligence_slider(value);
|
|
},
|
|
|
|
toggle_read_filter: function () {
|
|
var read_filter = NEWSBLUR.assets.view_setting(this.active_feed, 'read_filter');
|
|
var setting = {
|
|
'read_filter': (read_filter == 'unread' ? 'all' : 'unread')
|
|
};
|
|
var changed = NEWSBLUR.assets.view_setting(this.active_feed, setting);
|
|
if (!changed) return;
|
|
|
|
NEWSBLUR.reader.reload_feed(setting);
|
|
},
|
|
|
|
switch_feed_view_unread_view: function (unread_view) {
|
|
if (!_.isNumber(unread_view)) unread_view = this.get_unread_view_score();
|
|
var $sidebar = this.$s.$sidebar;
|
|
var unread_view_name = this.get_unread_view_name(unread_view);
|
|
var $next_story_button = $('.NB-task-story-next-unread');
|
|
var $story_title_indicator = $('.NB-story-title-indicator', this.$story_titles);
|
|
|
|
this.$s.$body.removeClass('NB-intelligence-positive')
|
|
.removeClass('NB-intelligence-neutral')
|
|
.removeClass('NB-intelligence-negative')
|
|
.removeClass('NB-intelligence-starred')
|
|
.addClass('NB-intelligence-' + unread_view_name);
|
|
|
|
$sidebar.removeClass('unread_view_positive')
|
|
.removeClass('unread_view_neutral')
|
|
.removeClass('unread_view_negative')
|
|
.removeClass('unread_view_starred')
|
|
.addClass('unread_view_' + unread_view_name);
|
|
|
|
$next_story_button.removeClass('NB-task-story-next-positive')
|
|
.removeClass('NB-task-story-next-neutral')
|
|
.removeClass('NB-task-story-next-negative')
|
|
.removeClass('NB-task-story-next-starred')
|
|
.addClass('NB-task-story-next-' + unread_view_name);
|
|
|
|
$story_title_indicator.removeClass('unread_threshold_positive')
|
|
.removeClass('unread_threshold_neutral')
|
|
.removeClass('unread_threshold_negative')
|
|
.removeClass('unread_threshold_starred')
|
|
.addClass('unread_threshold_' + unread_view_name);
|
|
|
|
NEWSBLUR.assets.stories.each(function (story) {
|
|
story.unset('visible');
|
|
});
|
|
},
|
|
|
|
get_unread_view_score: function (ignore_temp) {
|
|
if (this.flags['feed_list_showing_starred']) return -1;
|
|
if (this.flags['unread_threshold_temporarily'] && !ignore_temp) {
|
|
var score_name = this.flags['unread_threshold_temporarily'];
|
|
if (score_name == 'neutral') {
|
|
return 0;
|
|
} else if (score_name == 'negative') {
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
return this.model.preference('unread_view');
|
|
},
|
|
|
|
get_unread_view_name: function (unread_view, ignore_temp) {
|
|
if (this.flags['unread_threshold_temporarily'] && !ignore_temp) {
|
|
return this.flags['unread_threshold_temporarily'];
|
|
}
|
|
|
|
if (typeof unread_view == 'undefined' || unread_view === null) {
|
|
unread_view = this.get_unread_view_score(ignore_temp);
|
|
}
|
|
|
|
if (this.flags['feed_list_showing_starred']) return 'starred';
|
|
|
|
return (unread_view > 0
|
|
? 'positive'
|
|
: unread_view < 0
|
|
? 'negative'
|
|
: 'neutral');
|
|
},
|
|
|
|
get_unread_count: function (feed_id) {
|
|
var total = 0;
|
|
feed_id = feed_id || this.active_feed;
|
|
var feed = this.model.get_feed(feed_id);
|
|
|
|
if (_.contains(['starred', 'read'], feed_id)) {
|
|
// Umm, no. Not yet.
|
|
} else if (feed && feed.unread_counts) {
|
|
return feed.unread_counts();
|
|
} else if (this.flags['river_view'] && !this.flags['social_view']) {
|
|
var collection;
|
|
if (!this.active_folder.folder_view) {
|
|
// River blurblog gets a special collection
|
|
collection = NEWSBLUR.assets.folders;
|
|
} else {
|
|
collection = this.active_folder.folders;
|
|
}
|
|
return collection.unread_counts();
|
|
} else if (this.flags['river_view'] && this.flags['social_view']) {
|
|
return NEWSBLUR.assets.social_feeds.unread_counts();
|
|
}
|
|
|
|
return {};
|
|
},
|
|
|
|
get_total_unread_count: function (feed_id) {
|
|
var counts = this.get_unread_count(feed_id);
|
|
var unread_view_name = this.get_unread_view_name();
|
|
|
|
if (unread_view_name == 'positive') {
|
|
return counts['ps'];
|
|
} else if (unread_view_name == 'neutral') {
|
|
return counts['ps'] + counts['nt'];
|
|
} else if (unread_view_name == 'negative') {
|
|
return counts['ps'] + counts['nt'] + counts['ng'];
|
|
} else if (unread_view_name == 'starred') {
|
|
return counts['st'];
|
|
}
|
|
},
|
|
|
|
show_story_titles_above_intelligence_level: function (opts) {
|
|
var defaults = {
|
|
'unread_view_name': null,
|
|
'animate': true,
|
|
'follow': false,
|
|
'temporary': false
|
|
};
|
|
var options = $.extend({}, defaults, opts);
|
|
var self = this;
|
|
var $story_titles = this.$s.$story_titles;
|
|
var unread_view_name = options['unread_view_name'] || this.get_unread_view_name();
|
|
|
|
if (this.model.stories.length > 18) {
|
|
options['animate'] = false;
|
|
}
|
|
|
|
if (this.flags['unread_threshold_temporarily']) {
|
|
options['temporary'] = true;
|
|
}
|
|
|
|
NEWSBLUR.assets.stories.trigger('render:intelligence', options);
|
|
|
|
if (!NEWSBLUR.assets.preference('feed_view_single_story')) {
|
|
_.delay(function () {
|
|
NEWSBLUR.app.story_list.reset_story_positions();
|
|
}, 500);
|
|
}
|
|
|
|
NEWSBLUR.app.story_list.show_correct_explainer();
|
|
|
|
// NEWSBLUR.log(['Showing correct stories', this.story_view, unread_view_name, $stories_show.length, $stories_hide.length]);
|
|
if (_.contains(['split', 'list', 'grid', 'magazine'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
NEWSBLUR.app.story_titles.fill_out();
|
|
} else {
|
|
NEWSBLUR.app.story_list.fill_out();
|
|
}
|
|
|
|
if (options.follow && this.active_story) {
|
|
NEWSBLUR.app.story_list.scroll_to_selected_story(self.active_story);
|
|
NEWSBLUR.app.story_titles.scroll_to_selected_story(self.active_story);
|
|
}
|
|
},
|
|
|
|
// ===================
|
|
// = Feed Refreshing =
|
|
// ===================
|
|
|
|
force_instafetch_stories: function (feed_id) {
|
|
var self = this;
|
|
feed_id = feed_id || this.active_feed;
|
|
var feed = this.model.get_feed(feed_id);
|
|
if (!feed) return;
|
|
feed.set({
|
|
fetched_once: false,
|
|
has_exception: false
|
|
});
|
|
|
|
this.model.save_exception_retry(feed_id, _.bind(this.force_feed_refresh, this, feed_id),
|
|
NEWSBLUR.app.taskbar_info.show_stories_error);
|
|
},
|
|
|
|
setup_socket_realtime_unread_counts: function (force) {
|
|
if (!force && NEWSBLUR.Globals.is_anonymous) return;
|
|
// if (!force && !NEWSBLUR.Globals.is_premium) return;
|
|
if (this.socket && !this.socket.connected) {
|
|
this.socket.connect();
|
|
} else if (force || !this.socket || !this.socket.connected) {
|
|
var server = window.location.protocol + '//' + window.location.hostname;
|
|
var https = _.string.startsWith(window.location.protocol, 'https');
|
|
var local = false && _.any(['nb.local.com'], function (hostname) {
|
|
return _.string.contains(window.location.host, hostname);
|
|
});
|
|
var port = https ? 443 : 80;
|
|
if (local) {
|
|
port = https ? 8889 : 8888;
|
|
}
|
|
this.socket = this.socket || io.connect(server + ":" + port, {
|
|
"reconnection delay": 2000,
|
|
"connect timeout": 2000,
|
|
"path": "/v3/socket.io",
|
|
"transports": ['websocket'],
|
|
"upgrade": false
|
|
});
|
|
|
|
// this.socket.refresh_feeds = _.debounce(_.bind(this.force_feeds_refresh, this), 1000*10);
|
|
this.socket.on('connect', _.bind(function () {
|
|
var active_feeds = this.send_socket_active_feeds();
|
|
NEWSBLUR.log(["Connected to real-time pubsub with " + active_feeds.length + " feeds."]);
|
|
this.flags.feed_refreshing_in_realtime = true;
|
|
this.setup_feed_refresh();
|
|
NEWSBLUR.assets.stories.retry_failed_marked_read_stories();
|
|
|
|
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating in real-time'));
|
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites in real-time...').removeClass('NB-error').addClass('NB-active');
|
|
this.apply_tipsy_titles();
|
|
}, this));
|
|
|
|
this.socket.removeAllListeners('feed:update');
|
|
this.socket.on('feed:update', _.bind(this.handle_realtime_update, this));
|
|
|
|
this.socket.removeAllListeners('feed:story:new');
|
|
this.socket.on('feed:story:new', _.bind(function (feed_id, message) {
|
|
var story_hash = message.split(',')[0];
|
|
var timestamp = message.split(',')[1];
|
|
NEWSBLUR.log(['Real-time new story', feed_id, story_hash, timestamp, message]);
|
|
if (NEWSBLUR.app.dashboard_rivers) {
|
|
NEWSBLUR.app.dashboard_rivers['left'].new_story(story_hash, timestamp);
|
|
NEWSBLUR.app.dashboard_rivers['right'].new_story(story_hash, timestamp);
|
|
}
|
|
}, this));
|
|
|
|
this.socket.removeAllListeners(NEWSBLUR.Globals.username);
|
|
this.socket.removeAllListeners("user:update");
|
|
this.socket.on('user:update', _.bind(this.handle_realtime_update, this));
|
|
|
|
|
|
this.socket.on('disconnect', _.bind(function () {
|
|
NEWSBLUR.log(["Lost connection to real-time pubsub. Falling back to polling."]);
|
|
this.flags.feed_refreshing_in_realtime = false;
|
|
this.setup_feed_refresh();
|
|
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
|
this.apply_tipsy_titles();
|
|
}, this));
|
|
this.socket.on('error', _.bind(function () {
|
|
NEWSBLUR.log(["Can't connect to real-time pubsub."]);
|
|
this.flags.feed_refreshing_in_realtime = false;
|
|
this.setup_feed_refresh();
|
|
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
|
this.apply_tipsy_titles();
|
|
_.delay(_.bind(this.setup_socket_realtime_unread_counts, this), Math.random() * 60 * 1000);
|
|
}, this));
|
|
this.socket.on('reconnect_failed', _.bind(function () {
|
|
console.log(["Socket.io reconnect failed"]);
|
|
}, this));
|
|
this.socket.on('reconnect', _.bind(function () {
|
|
console.log(["Socket.io reconnected successfully!"]);
|
|
}, this));
|
|
this.socket.on('reconnecting', _.bind(function () {
|
|
console.log(["Socket.io reconnecting..."]);
|
|
}, this));
|
|
}
|
|
|
|
// this.watch_navigator_online();
|
|
},
|
|
|
|
handle_realtime_update: function (username, message) {
|
|
if (_.isNumber(username) || !isNaN(username)) {
|
|
var feed_id = username;
|
|
NEWSBLUR.log(['Real-time feed update', feed_id, message]);
|
|
var feed = this.model.get_feed(feed_id);
|
|
if (feed && !feed.get('fetched_once')) {
|
|
this.force_feed_refresh(feed_id);
|
|
} else {
|
|
this.feed_unread_count(feed_id, {
|
|
realtime: true
|
|
});
|
|
}
|
|
} else {
|
|
NEWSBLUR.log(['Real-time user update', username, message]);
|
|
if (this.flags.social_view) return;
|
|
if (_.string.startsWith(message, 'feed:')) {
|
|
feed_id = parseInt(message.replace('feed:', ''), 10);
|
|
var active_feed_ids = [];
|
|
if (this.active_folder && this.active_folder.length) {
|
|
active_feed_ids = this.active_folder.feed_ids_in_folder();
|
|
}
|
|
if (feed_id != this.active_feed &&
|
|
!_.contains(active_feed_ids, feed_id)) {
|
|
NEWSBLUR.log(['Real-time user update for feed', username, feed_id]);
|
|
this.feed_unread_count(feed_id);
|
|
}
|
|
} else if (_.string.startsWith(message, 'story:read')) {
|
|
NEWSBLUR.log(['Real-time user update for read story', username, message]);
|
|
var story_hash = message.replace('story:read:', '');
|
|
NEWSBLUR.assets.stories.mark_read_pubsub(story_hash);
|
|
if (NEWSBLUR.app.dashboard_rivers) {
|
|
NEWSBLUR.app.dashboard_rivers['left'].mark_read_pubsub(story_hash);
|
|
NEWSBLUR.app.dashboard_rivers['right'].mark_read_pubsub(story_hash);
|
|
}
|
|
} else if (_.string.startsWith(message, 'story:unread')) {
|
|
NEWSBLUR.log(['Real-time user update for unread story', username, message]);
|
|
var story_hash = message.replace('story:unread:', '');
|
|
NEWSBLUR.assets.stories.mark_unread_pubsub(story_hash);
|
|
if (NEWSBLUR.app.dashboard_rivers) {
|
|
NEWSBLUR.app.dashboard_rivers['left'].mark_unread_pubsub(story_hash);
|
|
NEWSBLUR.app.dashboard_rivers['right'].mark_unread_pubsub(story_hash);
|
|
}
|
|
} else if (_.string.startsWith(message, 'story:starred') ||
|
|
_.string.startsWith(message, 'story:unstarred')) {
|
|
this.update_starred_counts();
|
|
} else if (_.string.startsWith(message, 'social:')) {
|
|
if (message != this.active_feed) {
|
|
NEWSBLUR.log(['Real-time user update for social', username, message]);
|
|
this.feed_unread_count(message);
|
|
}
|
|
} else if (message == "interaction:new") {
|
|
this.update_interactions_count();
|
|
} else if (_.string.startsWith(message, "notification:setup:")) {
|
|
message = message.replace('notification:setup:', '');
|
|
this.push_notification_setup(parseInt(message, 10));
|
|
} else if (_.string.startsWith(message, "notification:")) {
|
|
message = message.replace('notification:', '');
|
|
var story_hash = message.slice(0, message.indexOf(','));
|
|
var story_title = message.slice(message.indexOf(',') + 1);
|
|
this.push_notification(story_hash, story_title);
|
|
} else if (_.string.startsWith(message, "search_index_complete:")) {
|
|
message = message.replace('search_index_complete:', '');
|
|
if (NEWSBLUR.app.active_search) {
|
|
NEWSBLUR.app.active_search.update_indexing_progress(message);
|
|
}
|
|
} else if (_.string.startsWith(message, "refresh:")) {
|
|
var feeds = message.replace('refresh:', '').split(",");
|
|
this.force_feeds_refresh(null, false, feeds);
|
|
} else if (_.string.startsWith(message, "reload:")) {
|
|
if (!NEWSBLUR.reader.flags['reloading_feeds']) {
|
|
console.log(["Reloading feeds due to server reload", NEWSBLUR.reader.flags['reloading_feeds']]);
|
|
NEWSBLUR.assets.load_feeds();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
watch_navigator_online: function () {
|
|
window.removeEventListener('online', _.bind(this.setup_socket_realtime_unread_counts, this));
|
|
window.removeEventListener('offline', _.bind(this.setup_socket_realtime_unread_counts, this));
|
|
window.addEventListener('online', _.bind(this.setup_socket_realtime_unread_counts, this));
|
|
window.addEventListener('offline', _.bind(this.setup_socket_realtime_unread_counts, this));
|
|
},
|
|
|
|
send_socket_active_feeds: function () {
|
|
if (!this.socket) return;
|
|
|
|
var active_feeds = _.compact(this.model.feeds.map(function (feed) {
|
|
return feed.get('active') && feed.id;
|
|
}));
|
|
active_feeds = active_feeds.concat(this.model.social_feeds.pluck('id'));
|
|
|
|
if (active_feeds.length) {
|
|
this.socket.emit('subscribe:feeds', active_feeds, NEWSBLUR.Globals.username);
|
|
}
|
|
|
|
return active_feeds;
|
|
},
|
|
|
|
handle_wakeup: function () {
|
|
$.dreamOn();
|
|
$.wakeUp(_.bind(function () {
|
|
console.log(["Wakeup, reconnecting to real-time socket.io...", new Date()]);
|
|
this.setup_socket_realtime_unread_counts();
|
|
}, this), {}, 1 * 1000);
|
|
},
|
|
|
|
setup_feed_refresh: function (new_feeds) {
|
|
var refresh_interval = this.constants.FEED_REFRESH_INTERVAL;
|
|
var feed_count = this.model.feeds.size();
|
|
|
|
if (!NEWSBLUR.Globals.is_premium) {
|
|
refresh_interval *= 2;
|
|
}
|
|
if (feed_count > 250) {
|
|
refresh_interval *= 2;
|
|
}
|
|
if (feed_count > 500) {
|
|
refresh_interval *= 1.5;
|
|
}
|
|
if (this.flags['feed_refreshing_in_realtime'] && !this.flags['has_unfetched_feeds'] &&
|
|
this.socket && this.socket.connected) {
|
|
refresh_interval *= 10;
|
|
}
|
|
|
|
if (new_feeds && feed_count < 250) {
|
|
refresh_interval = (1000 * 60) * 1 / 6;
|
|
} else if (new_feeds && feed_count < 500) {
|
|
refresh_interval = (1000 * 60) * 1 / 4;
|
|
}
|
|
|
|
// 10 second minimum
|
|
refresh_interval = Math.max(10 * 1000, refresh_interval);
|
|
|
|
// Add 0-100% random delay
|
|
refresh_interval = parseInt(refresh_interval * (1 + Math.random()), 10);
|
|
|
|
clearInterval(this.flags.feed_refresh);
|
|
|
|
this.flags.feed_refresh = setInterval(function () {
|
|
if (!NEWSBLUR.reader.flags['pause_feed_refreshing']) {
|
|
NEWSBLUR.reader.force_feeds_refresh();
|
|
}
|
|
}, refresh_interval);
|
|
this.flags.refresh_interval = parseInt(refresh_interval / 1000, 10);
|
|
if (!this.socket || !this.socket.connected) {
|
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error');
|
|
this.apply_tipsy_titles();
|
|
}
|
|
NEWSBLUR.log(["Setting refresh interval to every " + this.flags.refresh_interval + " seconds."]);
|
|
// if (this.socket && !this.socket.connected) {
|
|
// // force disconnected since it's probably in a bad reconnect state.
|
|
// console.log(["Forcing socket disconnection...", this.socket]);
|
|
// this.socket.disconnect();
|
|
// }
|
|
},
|
|
|
|
force_feed_refresh: function (feed_id, new_feed_id) {
|
|
feed_id = feed_id || this.active_feed;
|
|
new_feed_id = _.isNumber(new_feed_id) && new_feed_id || feed_id;
|
|
console.log(["force_feed_refresh", feed_id, new_feed_id]);
|
|
this.force_feeds_refresh(function () {
|
|
// Open the feed back up if it is being refreshed and is still open.
|
|
if (NEWSBLUR.reader.active_feed == feed_id || NEWSBLUR.reader.active_feed == new_feed_id) {
|
|
NEWSBLUR.reader.open_feed(new_feed_id, { force: true });
|
|
}
|
|
|
|
NEWSBLUR.reader.check_feed_fetch_progress();
|
|
}, true, new_feed_id, NEWSBLUR.app.taskbar_info.show_stories_error);
|
|
},
|
|
|
|
force_feeds_refresh: function (callback, replace_active_feed, feed_id, error_callback) {
|
|
if (callback) {
|
|
this.cache.refresh_callback = callback;
|
|
} else {
|
|
delete this.cache.refresh_callback;
|
|
}
|
|
|
|
this.flags['pause_feed_refreshing'] = true;
|
|
this.model.refresh_feeds(_.bind(function (data) {
|
|
this.post_feed_refresh(data);
|
|
}, this), this.flags['has_unfetched_feeds'], feed_id, error_callback);
|
|
|
|
if (this.socket && this.socket.connected) {
|
|
NEWSBLUR.assets.stories.retry_failed_marked_read_stories();
|
|
}
|
|
},
|
|
|
|
post_feed_refresh: function (data) {
|
|
var feeds = this.model.feeds;
|
|
|
|
if (this.cache.refresh_callback && $.isFunction(this.cache.refresh_callback)) {
|
|
this.cache.refresh_callback(feeds);
|
|
delete this.cache.refresh_callback;
|
|
}
|
|
|
|
NEWSBLUR.app.sidebar_header.update_interactions_count(data.interactions_count);
|
|
|
|
this.flags['refresh_inline_feed_delay'] = false;
|
|
this.flags['pause_feed_refreshing'] = false;
|
|
this.check_feed_fetch_progress();
|
|
this.toggle_focus_in_slider();
|
|
},
|
|
|
|
feed_unread_count: function (feed_id, options) {
|
|
options = options || {};
|
|
feed_id = feed_id || this.active_feed;
|
|
if (!feed_id) return;
|
|
|
|
var feed = this.model.get_feed(feed_id);
|
|
if (!feed) return;
|
|
|
|
var subs = feed.get('num_subscribers');
|
|
var delay = options.realtime ? subs * 2 : 0; // 1,000 subs = 2 seconds
|
|
|
|
_.delay(_.bind(function () {
|
|
this.model.feed_unread_count(feed_id, options.callback);
|
|
}, this), Math.random() * delay);
|
|
},
|
|
|
|
update_interactions_count: function () {
|
|
this.model.interactions_count(function (data) {
|
|
NEWSBLUR.app.sidebar_header.update_interactions_count(data.interactions_count);
|
|
}, $.noop);
|
|
},
|
|
|
|
push_notification_setup: function (feed_id) {
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) {
|
|
console.log(['Notification setup failed, no feed!', feed_id]);
|
|
}
|
|
Push.create("NewsBlur", {
|
|
body: feed.get('feed_title') + " notifications are setup",
|
|
icon: $.favicon(feed),
|
|
timeout: 3000,
|
|
onClick: function () {
|
|
window.focus();
|
|
this.close();
|
|
}
|
|
});
|
|
},
|
|
|
|
push_notification: function (story_hash, story_title) {
|
|
var feed_id = story_hash.slice(0, story_hash.indexOf(':'));
|
|
var feed = NEWSBLUR.assets.get_feed(feed_id);
|
|
if (!feed) {
|
|
console.log(['Error: Couldn\'t find find for notification', feed_id, story_hash, story_title]);
|
|
return;
|
|
}
|
|
|
|
Push.create(feed.get('feed_title'), {
|
|
body: story_title,
|
|
icon: $.favicon(feed),
|
|
timeout: 4000,
|
|
onClick: function () {
|
|
window.focus();
|
|
this.close();
|
|
console.log(['push open', feed_id, story_hash, window.NEWSBLUR]);
|
|
window.NEWSBLUR.reader.open_feed(feed_id, {
|
|
'story_id': story_hash
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
// ===================
|
|
// = Mouse Indicator =
|
|
// ===================
|
|
|
|
setup_mousemove_on_views: function () {
|
|
this.hide_mouse_indicator();
|
|
|
|
if (this.story_view == 'story' ||
|
|
this.story_view == 'text' ||
|
|
this.flags['feed_view_showing_story_view'] ||
|
|
this.flags['temporary_story_view']) {
|
|
this.hide_mouse_indicator();
|
|
} else {
|
|
_.delay(_.bind(this.show_mouse_indicator, this), 350);
|
|
}
|
|
},
|
|
|
|
hide_mouse_indicator: function () {
|
|
var self = this;
|
|
|
|
if (!this.flags['mouse_indicator_hidden']) {
|
|
this.flags['mouse_indicator_hidden'] = true;
|
|
this.$s.$mouse_indicator.animate({ 'opacity': 0, 'left': -10 }, {
|
|
'duration': 200,
|
|
'queue': false,
|
|
'complete': function () {
|
|
self.flags['mouse_indicator_hidden'] = true;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
show_mouse_indicator: function () {
|
|
var self = this;
|
|
|
|
if (NEWSBLUR.assets.preference('feed_view_single_story')) return;
|
|
|
|
if (this.flags['mouse_indicator_hidden']) {
|
|
this.flags['mouse_indicator_hidden'] = false;
|
|
this.$s.$mouse_indicator.animate({ 'opacity': 1, 'left': 0 }, {
|
|
'duration': 200,
|
|
'queue': false,
|
|
'complete': function () {
|
|
self.flags['mouse_indicator_hidden'] = false;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
handle_mouse_indicator_hover: function () {
|
|
var self = this;
|
|
var $callout = $('.NB-callout-mouse-indicator');
|
|
$('.NB-callout-text', $callout).text('Lock');
|
|
$callout.corner('5px');
|
|
|
|
this.$s.$mouse_indicator.hover(function () {
|
|
if (self.model.preference('lock_mouse_indicator')) {
|
|
$('.NB-callout-text', $callout).text('Unlock');
|
|
} else {
|
|
$('.NB-callout-text', $callout).text('Lock');
|
|
}
|
|
self.flags['still_hovering_on_mouse_indicator'] = true;
|
|
setTimeout(function () {
|
|
if (self.flags['still_hovering_on_mouse_indicator']) {
|
|
$callout.css({
|
|
'display': 'block'
|
|
}).animate({
|
|
'opacity': 1,
|
|
'left': '20px'
|
|
}, { 'duration': 200, 'queue': false });
|
|
}
|
|
}, 50);
|
|
}, function () {
|
|
self.flags['still_hovering_on_mouse_indicator'] = false;
|
|
$callout.animate({ 'opacity': 0, 'left': '-100px' }, { 'duration': 200, 'queue': false });
|
|
});
|
|
},
|
|
|
|
lock_mouse_indicator: function () {
|
|
var self = this;
|
|
var $callout = $('.NB-callout-mouse-indicator');
|
|
|
|
if (self.model.preference('lock_mouse_indicator')) {
|
|
self.model.preference('lock_mouse_indicator', 0);
|
|
$('.NB-callout-text', $callout).text('Unlocked');
|
|
} else {
|
|
|
|
self.model.preference('lock_mouse_indicator', this.cache.mouse_position_y);
|
|
$('.NB-callout-text', $callout).text('Locked');
|
|
}
|
|
|
|
setTimeout(function () {
|
|
self.flags['still_hovering_on_mouse_indicator'] = true;
|
|
$callout.fadeOut(200);
|
|
}, 500);
|
|
},
|
|
|
|
position_mouse_indicator: function () {
|
|
if (!_.contains(['split', 'full'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) return;
|
|
|
|
var position = this.model.preference('lock_mouse_indicator');
|
|
var container = this.layout.contentLayout.state.container.innerHeight - 30;
|
|
|
|
if (position <= 0 || position > container) {
|
|
position = 20; // Start with a 20 offset
|
|
} else {
|
|
position = position - 8; // Compensate for mouse indicator height.
|
|
}
|
|
|
|
this.$s.$mouse_indicator.css('top', position);
|
|
// console.log(["position_mouse_indicator", NEWSBLUR.reader.cache.mouse_position_y, position]);
|
|
this.cache.mouse_position_y = position;
|
|
},
|
|
|
|
// ==========================
|
|
// = Login and Signup Forms =
|
|
// ==========================
|
|
|
|
handle_login_and_signup_forms: function () {
|
|
var self = this;
|
|
var $hidden_inputs = $('.NB-signup-hidden');
|
|
var $signup_username = $('input[name=signup-username]');
|
|
|
|
$signup_username.bind('focus', function () {
|
|
$hidden_inputs.slideDown(300);
|
|
}).bind('blur', function () {
|
|
if ($signup_username.val().length < 1) {
|
|
$hidden_inputs.slideUp(300);
|
|
}
|
|
});
|
|
},
|
|
|
|
// ==================
|
|
// = Features Board =
|
|
// ==================
|
|
|
|
load_feature_page: function (direction) {
|
|
var self = this;
|
|
var $module = $('.NB-module-features');
|
|
var $next = $('.NB-module-features .NB-module-next-page');
|
|
var $previous = $('.NB-module-features .NB-module-previous-page');
|
|
|
|
$module.addClass('NB-loading');
|
|
|
|
if (direction == -1 && this.counts['feature_page'] <= 0) {
|
|
$module.removeClass('NB-loading');
|
|
this.counts['feature_page'] = 0;
|
|
return;
|
|
}
|
|
if (direction == 1 && this.flags['features_last_page']) {
|
|
$module.removeClass('NB-loading');
|
|
return;
|
|
}
|
|
|
|
this.model.get_features_page(this.counts['feature_page'] + direction, function (features) {
|
|
$module.removeClass('NB-loading');
|
|
|
|
if (!features) return;
|
|
|
|
self.counts['feature_page'] += direction;
|
|
|
|
var $table = $.make('table', { className: 'NB-features', cellSpacing: 0, cellPadding: 0 });
|
|
for (var f in features) {
|
|
if (f == 3) break;
|
|
var feature = features[f];
|
|
var $tr = $.make('tr', { className: 'NB-module-feature' }, [
|
|
$.make('td', { className: 'NB-module-feature-date' }, feature.date),
|
|
$.make('td', { className: 'NB-module-feature-description' }, feature.description)
|
|
]);
|
|
$table.append($tr);
|
|
}
|
|
|
|
$('.NB-module-features .NB-features').replaceWith($table);
|
|
|
|
var features_count = features.length;
|
|
if (features_count < 4) {
|
|
$next.addClass('NB-disabled');
|
|
self.flags['features_last_page'] = true;
|
|
} else {
|
|
$next.removeClass('NB-disabled');
|
|
self.flags['features_last_page'] = false;
|
|
}
|
|
if (self.counts['feature_page'] > 0) {
|
|
$previous.removeClass('NB-disabled');
|
|
} else {
|
|
$previous.addClass('NB-disabled');
|
|
}
|
|
|
|
}, function () {
|
|
$module.removeClass('NB-loading');
|
|
});
|
|
},
|
|
|
|
setup_howitworks_hovers: function () {
|
|
var $page_indicators = $('.NB-module-howitworks .NB-module-page-indicator');
|
|
$page_indicators.bind('mouseenter', _.bind(function (e) {
|
|
var page = $(e.target).prevAll('.NB-module-page-indicator').length;
|
|
this.load_howitworks_page(page);
|
|
}, this));
|
|
},
|
|
|
|
load_howitworks_page: function (page) {
|
|
var self = this;
|
|
var $next = $('.NB-module-howitworks .NB-module-next-page');
|
|
var $previous = $('.NB-module-howitworks .NB-module-previous-page');
|
|
var $pages = $('.NB-howitworks-page');
|
|
var $page_indicators = $('.NB-module-howitworks .NB-module-page-indicator');
|
|
var pages_count = $pages.length;
|
|
|
|
if (page == -1) {
|
|
return;
|
|
}
|
|
if (page >= pages_count) {
|
|
return;
|
|
}
|
|
|
|
$pages.removeClass("NB-active");
|
|
$page_indicators.removeClass("NB-active");
|
|
$pages.eq(page).addClass("NB-active");
|
|
$page_indicators.eq(page).addClass("NB-active");
|
|
|
|
if (page >= pages_count - 1) {
|
|
$next.addClass('NB-disabled');
|
|
} else {
|
|
$next.removeClass('NB-disabled');
|
|
}
|
|
if (page <= 0) {
|
|
$previous.addClass('NB-disabled');
|
|
} else {
|
|
$previous.removeClass('NB-disabled');
|
|
}
|
|
},
|
|
|
|
// ========
|
|
// = FTUX =
|
|
// ========
|
|
|
|
setup_ftux_add_feed_callout: function (message) {
|
|
var self = this;
|
|
if (this.flags['bouncing_callout']) return;
|
|
|
|
$('.NB-callout-ftux .NB-callout-text').text(message || 'First things first...');
|
|
$('.NB-callout-ftux').corner('5px');
|
|
$('.NB-callout-ftux').css({
|
|
'opacity': 0,
|
|
'display': 'block'
|
|
}).animate({
|
|
'opacity': 1,
|
|
'bottom': 36
|
|
}, {
|
|
'duration': 750,
|
|
'easing': 'easeInOutQuint'
|
|
}).each(function () {
|
|
var $this = $(this);
|
|
self.flags['bouncing_callout'] = setInterval(function () {
|
|
$this.animate({ 'bottom': '+=2px' }, { 'duration': 200, 'easing': 'easeInOutQuint' })
|
|
.animate({ 'bottom': '+=0px' }, { 'duration': 50 })
|
|
.animate({ 'bottom': '-=2px' }, { 'duration': 200, 'easing': 'easeInOutQuint' });
|
|
}, 1000);
|
|
});
|
|
},
|
|
|
|
setup_ftux_signup_callout: function () {
|
|
var self = this;
|
|
|
|
if (!this.flags['bouncing_callout']) {
|
|
$('.NB-callout-ftux-signup .NB-callout-text').text('Signup');
|
|
$('.NB-callout-ftux-signup').corner('5px');
|
|
$('.NB-callout-ftux-signup').css({
|
|
'opacity': 0,
|
|
'display': 'block'
|
|
}).animate({
|
|
'opacity': 1,
|
|
'bottom': 36
|
|
}, {
|
|
'duration': 750,
|
|
'easing': 'easeInOutQuint'
|
|
}).each(function () {
|
|
var $this = $(this);
|
|
self.flags['bouncing_callout'] = setInterval(function () {
|
|
$this.animate({ 'bottom': '+=2px' }, { 'duration': 200, 'easing': 'easeInOutQuint' })
|
|
.animate({ 'bottom': '+=0px' }, { 'duration': 50 })
|
|
.animate({ 'bottom': '-=2px' }, { 'duration': 200, 'easing': 'easeInOutQuint' });
|
|
}, 10000);
|
|
});
|
|
}
|
|
},
|
|
|
|
// =============================
|
|
// = Import from Google Reader =
|
|
// =============================
|
|
|
|
start_count_unreads_after_import: function () {
|
|
var self = this;
|
|
var $progress = this.$s.$feeds_progress;
|
|
var $bar = $('.NB-progress-bar', $progress);
|
|
var percentage = 0;
|
|
var feeds_count = _.keys(this.model.feeds).length;
|
|
|
|
if (!this.flags['pause_feed_refreshing'] || this.flags['has_unfetched_feeds']) return;
|
|
|
|
this.flags['count_unreads_after_import_working'] = true;
|
|
|
|
$('.NB-progress-title', $progress).text('Counting is difficult');
|
|
$('.NB-progress-counts', $progress).hide();
|
|
$('.NB-progress-percentage', $progress).hide();
|
|
$bar.progressbar({
|
|
value: percentage
|
|
});
|
|
|
|
setTimeout(function () {
|
|
if (self.flags['count_unreads_after_import_working']) {
|
|
self.animate_progress_bar($bar, feeds_count / 30);
|
|
self.show_progress_bar();
|
|
}
|
|
}, 500);
|
|
},
|
|
|
|
finish_count_unreads_after_import: function (data) {
|
|
data = data || {};
|
|
$('.NB-progress-bar', this.$s.$feeds_progress).progressbar({
|
|
value: 100
|
|
});
|
|
this.flags['count_unreads_after_import_working'] = false;
|
|
clearTimeout(this.locks['animate_progress_bar']);
|
|
this.$s.$feed_link_loader.fadeOut(250);
|
|
this.$s.$feed_link_error.css({ 'display': 'none' });
|
|
this.setup_feed_refresh();
|
|
if (!this.flags['has_unfetched_feeds']) {
|
|
this.hide_progress_bar();
|
|
}
|
|
},
|
|
|
|
// =====================
|
|
// = Recommended Feeds =
|
|
// =====================
|
|
|
|
load_recommended_feeds: function () {
|
|
// Reload recommended feeds every 60 minutes.
|
|
clearInterval(this.locks.load_recommended_feed);
|
|
this.locks.load_recommended_feed = setInterval(_.bind(function () {
|
|
this.load_recommended_feed(0, true);
|
|
}, this), 60 * 60 * 1000);
|
|
},
|
|
|
|
load_feed_in_tryfeed_view: function (feed_id, options) {
|
|
options = options || {};
|
|
var feed = _.extend({
|
|
id: feed_id,
|
|
feed_id: feed_id,
|
|
feed_title: options.feed && options.feed.feed_title,
|
|
temp: true
|
|
}, options.feed && options.feed.attributes);
|
|
var $tryfeed_container = this.$s.$tryfeed_header.closest('.NB-feeds-header-container');
|
|
|
|
this.reset_feed(options);
|
|
feed = this.model.set_feed(feed_id, feed);
|
|
|
|
$('.NB-feeds-header-title', this.$s.$tryfeed_header).text(feed.get('feed_title'));
|
|
$('.NB-feeds-header-icon', this.$s.$tryfeed_header).attr('src', $.favicon(feed));
|
|
|
|
$tryfeed_container.slideDown(350, _.bind(function () {
|
|
options.force = true;
|
|
options.try_feed = true;
|
|
this.open_feed(feed_id, options);
|
|
this.flags['showing_feed_in_tryfeed_view'] = true;
|
|
this.$s.$tryfeed_header.addClass('NB-selected');
|
|
}, this));
|
|
},
|
|
|
|
load_social_feed_in_tryfeed_view: function (social_feed, options) {
|
|
options = options || {};
|
|
if (_.isNumber(social_feed)) {
|
|
social_feed = this.model.get_feed('social:' + social_feed);
|
|
} else if (_.isString(social_feed)) {
|
|
social_feed = this.model.get_feed(social_feed);
|
|
}
|
|
|
|
if (!social_feed) {
|
|
social_feed = this.model.add_social_feed(options.feed);
|
|
}
|
|
|
|
var $tryfeed_container = this.$s.$tryfeed_header.closest('.NB-feeds-header-container');
|
|
|
|
this.reset_feed();
|
|
|
|
$('.NB-feeds-header-title', this.$s.$tryfeed_header).text(social_feed.get('username'));
|
|
$('.NB-feeds-header-icon', this.$s.$tryfeed_header).attr('src', $.favicon(social_feed));
|
|
|
|
$tryfeed_container.slideDown(350, _.bind(function () {
|
|
this.open_social_stories(social_feed.get('id'), options);
|
|
this.switch_taskbar_view('feed');
|
|
this.switch_story_layout();
|
|
this.flags['showing_social_feed_in_tryfeed_view'] = true;
|
|
this.$s.$tryfeed_header.addClass('NB-selected');
|
|
}, this));
|
|
},
|
|
|
|
hide_tryfeed_view: function () {
|
|
var $tryfeed_container = this.$s.$tryfeed_header.closest('.NB-feeds-header-container');
|
|
$tryfeed_container.slideUp(350);
|
|
this.$s.$story_taskbar.find('.NB-tryfeed-add').remove();
|
|
this.$s.$story_taskbar.find('.NB-tryfeed-follow').remove();
|
|
this.flags['showing_feed_in_tryfeed_view'] = false;
|
|
this.flags['showing_social_feed_in_tryfeed_view'] = false;
|
|
},
|
|
|
|
show_tryfeed_add_button: function () {
|
|
if (this.$s.$story_taskbar.find('.NB-tryfeed-add:visible').length) return;
|
|
|
|
var $add = $.make('div', { className: 'NB-modal-submit' }, [
|
|
$.make('div', { className: 'NB-tryfeed-add NB-modal-submit-green NB-modal-submit-button' }, 'Subscribe')
|
|
]).css({ 'opacity': 0 });
|
|
this.$s.$story_taskbar.append($add);
|
|
$add.animate({ 'opacity': 1 }, { 'duration': 600 });
|
|
},
|
|
|
|
correct_tryfeed_title: function () {
|
|
var feed = this.model.get_feed(this.active_feed);
|
|
$('.NB-feeds-header-title', this.$s.$tryfeed_header).text(feed.get('feed_title'));
|
|
this.make_feed_title_in_stories();
|
|
},
|
|
|
|
show_tryfeed_follow_button: function () {
|
|
if (this.$s.$story_taskbar.find('.NB-tryfeed-follow:visible').length) return;
|
|
|
|
var $add = $.make('div', { className: 'NB-modal-submit' }, [
|
|
$.make('div', { className: 'NB-tryfeed-follow NB-modal-submit-green NB-modal-submit-button' }, 'Follow')
|
|
]).css({ 'opacity': 0 });
|
|
this.$s.$story_taskbar.append($add);
|
|
$add.animate({ 'opacity': 1 }, { 'duration': 600 });
|
|
},
|
|
|
|
show_tryout_signup_button: function () {
|
|
if (this.$s.$story_taskbar.find('.NB-tryout-signup:visible').length) return;
|
|
|
|
var $add = $.make('div', { className: 'NB-modal-submit' }, [
|
|
$.make('div', { className: 'NB-tryout-signup NB-modal-submit-green NB-modal-submit-button' }, 'Sign Up')
|
|
]).css({ 'opacity': 0 });
|
|
this.$s.$story_taskbar.append($add);
|
|
$add.animate({ 'opacity': 1 }, { 'duration': 600 });
|
|
},
|
|
|
|
hide_tryout_signup_button: function () {
|
|
this.$s.$story_taskbar.find('.NB-tryout-signup:visible').remove();
|
|
},
|
|
|
|
add_recommended_feed: function (feed_id) {
|
|
feed_id = feed_id || this.active_feed;
|
|
var feed_address = this.model.get_feed(feed_id).get('feed_address');
|
|
|
|
this.open_add_feed_modal({ url: feed_address });
|
|
},
|
|
|
|
follow_user_in_tryfeed: function (feed_id) {
|
|
var self = this;
|
|
var socialsub = this.model.get_feed(feed_id);
|
|
this.model.follow_user(socialsub.get('user_id'), function (data) {
|
|
NEWSBLUR.app.feed_list.make_social_feeds();
|
|
self.open_social_stories(feed_id);
|
|
});
|
|
},
|
|
|
|
approve_feed_in_moderation_queue: function (feed_id) {
|
|
var self = this;
|
|
var $module = $('.NB-module-recommended.NB-recommended-unmoderated');
|
|
$module.addClass('NB-loading');
|
|
var date = $('.NB-recommended-moderation-date').val();
|
|
|
|
this.model.approve_feed_in_moderation_queue(feed_id, date, function (resp) {
|
|
if (!resp) return;
|
|
$module.removeClass('NB-loading');
|
|
$module.replaceWith(resp);
|
|
self.load_javascript_elements_on_page();
|
|
});
|
|
},
|
|
|
|
decline_feed_in_moderation_queue: function (feed_id) {
|
|
var self = this;
|
|
var $module = $('.NB-module-recommended.NB-recommended-unmoderated');
|
|
$module.addClass('NB-loading');
|
|
|
|
this.model.decline_feed_in_moderation_queue(feed_id, function (resp) {
|
|
if (!resp) return;
|
|
$module.removeClass('NB-loading');
|
|
$module.replaceWith(resp);
|
|
self.load_javascript_elements_on_page();
|
|
});
|
|
},
|
|
|
|
load_recommended_feed: function (direction, refresh, unmoderated) {
|
|
var self = this;
|
|
var $module = unmoderated ?
|
|
$('.NB-module-recommended.NB-recommended-unmoderated') :
|
|
$('.NB-module-recommended:not(.NB-recommended-unmoderated)');
|
|
|
|
if (!refresh) {
|
|
$module.addClass('NB-loading');
|
|
}
|
|
direction = direction || 0;
|
|
|
|
this.model.load_recommended_feed(this.counts['recommended_feed_page'] + direction,
|
|
!!refresh, unmoderated, function (resp) {
|
|
$module.removeClass('NB-loading');
|
|
if (!resp) return;
|
|
$module.replaceWith(resp);
|
|
self.counts['recommended_feed_page'] += direction;
|
|
self.load_javascript_elements_on_page();
|
|
}, function () {
|
|
$module.removeClass('NB-loading');
|
|
});
|
|
},
|
|
|
|
// ====================
|
|
// = Dashboard Graphs =
|
|
// ====================
|
|
|
|
setup_dashboard_graphs: function () {
|
|
// Reload dashboard graphs every 30 min in debug, 1 min for staff, 10 minutes otherwise.
|
|
var reload_interval = NEWSBLUR.Globals.debug ? 30 * 60 * 1000 : NEWSBLUR.Globals.is_staff ? 60 * 1000 : 10 * 60 * 1000;
|
|
|
|
clearInterval(this.locks.load_dashboard_graphs);
|
|
this.locks.load_dashboard_graphs = setInterval(_.bind(function () {
|
|
this.load_dashboard_graphs();
|
|
}, this), reload_interval * (Math.random() * (1.25 - 0.75) + 0.75));
|
|
},
|
|
|
|
load_dashboard_graphs: function () {
|
|
var self = this;
|
|
var $module = $('.NB-module-site-stats');
|
|
$module.addClass('NB-loading');
|
|
|
|
this.model.load_dashboard_graphs(function (resp) {
|
|
$module.removeClass('NB-loading');
|
|
if (!resp) return;
|
|
$module.replaceWith(resp);
|
|
self.load_javascript_elements_on_page();
|
|
}, function () {
|
|
$module.removeClass('NB-loading');
|
|
});
|
|
},
|
|
|
|
setup_feedback_table: function () {
|
|
// Reload feedback every 30 min in debug, 30 sec for staff, 10 minutes otherwise.
|
|
var reload_interval = NEWSBLUR.Globals.debug ? 30 * 60 * 1000 : NEWSBLUR.Globals.is_staff ? 0.5 * 60 * 1000 : 10 * 60 * 1000;
|
|
|
|
clearInterval(this.locks.load_feedback_table);
|
|
this.locks.load_feedback_table = setInterval(_.bind(function () {
|
|
this.load_feedback_table();
|
|
this.load_feature_page(0);
|
|
}, this), reload_interval * (Math.random() * (1.25 - 0.75) + 0.75));
|
|
},
|
|
|
|
load_feedback_table: function () {
|
|
var self = this;
|
|
var $module = $('.NB-feedback-table');
|
|
$module.addClass('NB-loading');
|
|
|
|
this.model.load_feedback_table(function (resp) {
|
|
$module.removeClass('NB-loading');
|
|
if (!resp) return;
|
|
$module.replaceWith(resp);
|
|
self.load_javascript_elements_on_page();
|
|
}, function () {
|
|
$module.removeClass('NB-loading');
|
|
});
|
|
},
|
|
|
|
// ===================
|
|
// = Unfetched Feeds =
|
|
// ===================
|
|
|
|
setup_unfetched_feed_check: function () {
|
|
clearInterval(this.locks.unfetched_feed_check);
|
|
this.locks.unfetched_feed_check = setInterval(_.bind(function () {
|
|
var unfetched_feeds = NEWSBLUR.assets.unfetched_feeds();
|
|
if (unfetched_feeds.length) {
|
|
this.force_instafetch_stories(unfetched_feeds[0].id);
|
|
}
|
|
}, this), 60 * 1 * 1000);
|
|
},
|
|
|
|
// ==========
|
|
// = Events =
|
|
// ==========
|
|
|
|
handle_clicks: function (elem, e) {
|
|
var self = this;
|
|
var stopPropagation = false;
|
|
|
|
// NEWSBLUR.log(['click', e, e.button]);
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-feeds-list-retry' }, function ($t, $p) {
|
|
NEWSBLUR.app.feed_list.retry();
|
|
});
|
|
|
|
// = Taskbar ======================================================
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-task-add' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.open_add_feed_modal();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-task-manage' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.show_manage_menu('site', $t);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-account-settings' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.show_manage_menu('site', $t, { inverse: true });
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-modal-title' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var $item = $(".NB-icon", $t);
|
|
if ($item.length) {
|
|
self.show_manage_menu('site', $item, { inverse: true, right: true, body: true });
|
|
}
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-story-titles-expand-sidebar' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.open_sidebar();
|
|
});
|
|
|
|
// = Context Menu ================================================
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-open-input' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
self.flags['showing_confirm_input_on_manage_menu'] = true;
|
|
$t.select().blur(function () {
|
|
self.flags['showing_confirm_input_on_manage_menu'] = false;
|
|
});
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-train' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.open_feed_intelligence_modal(1, feed_id, false);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-train' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var story_id = $t.parents('.NB-menu-manage').data('story_id');
|
|
self.open_story_trainer(story_id, feed_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-recommend' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.open_recommend_modal(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-mark-read-newer' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var story_id = $t.closest('.NB-menu-manage').data('story_id');
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
var timestamp = story.get('story_timestamp');
|
|
|
|
if (self.flags.river_view && !self.flags.social_view) {
|
|
self.mark_folder_as_read(self.active_folder, timestamp, 'newer');
|
|
} else {
|
|
self.mark_feed_as_read(self.active_feed, timestamp, 'newer');
|
|
}
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-mark-read-older' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var story_id = $t.closest('.NB-menu-manage').data('story_id');
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
var timestamp = story.get('story_timestamp');
|
|
|
|
if (self.flags.river_view && !self.flags.social_view) {
|
|
self.mark_folder_as_read(self.active_folder, timestamp, 'older');
|
|
} else {
|
|
self.mark_feed_as_read(self.active_feed, timestamp, 'older');
|
|
}
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-trainer' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_trainer_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-tutorial' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_tutorial_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-intro' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_intro_modal({ page_number: 1 });
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-stats' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
NEWSBLUR.log(['statistics feed_id', feed_id]);
|
|
self.open_feed_statistics_modal(feed_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-settings' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.open_feed_exception_modal(feed_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-notifications' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.open_notifications_modal(feed_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-settings' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var folder_title = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
|
|
self.open_feed_exception_modal(folder_title, {
|
|
folder_title: folder_title,
|
|
$folder: $folder
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-reload' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.force_instafetch_stories(feed_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-delete' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
if ($t.hasClass('NB-menu-manage-feed-delete-cancel') ||
|
|
$t.hasClass('NB-menu-manage-folder-delete-cancel')) {
|
|
self.hide_confirm_delete_menu_item();
|
|
} else if ($t.hasClass('NB-menu-manage-feed-delete') ||
|
|
$t.hasClass('NB-menu-manage-folder-delete')) {
|
|
self.show_confirm_delete_menu_item();
|
|
} else if ($t.hasClass('NB-menu-manage-socialfeed-delete-cancel')) {
|
|
self.hide_confirm_unfollow_menu_item();
|
|
} else if ($t.hasClass('NB-menu-manage-socialfeed-delete')) {
|
|
self.show_confirm_unfollow_menu_item();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-delete-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_delete_feed(feed_id, $feed);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-delete-search' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var search_model_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_delete_search(search_model_id, $feed);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-socialfeed-delete-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_unfollow_feed(feed_id, $feed);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-delete-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.manage_menu_delete_folder(folder_name, $folder);
|
|
});
|
|
var adding_icon = false;
|
|
$.targetIs(e, { tagSelector: '.NB-icon-add', childOf: '.NB-menu-manage' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
adding_icon = true;
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $folder = $t.parents('.NB-folder-option');
|
|
var folder = $folder.data('folder');
|
|
self.show_add_folder_in_menu(feed_id, $folder, folder || '');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-folder-option', childOf: '.NB-menu-manage' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
if (adding_icon) return;
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.switch_change_folder(feed_id, $t.data('folder') || '');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-move' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
|
|
if ($t.hasClass('NB-menu-manage-feed-move-cancel') ||
|
|
$t.hasClass('NB-menu-manage-folder-move-cancel')) {
|
|
self.hide_confirm_move_menu_item();
|
|
} else {
|
|
self.show_confirm_move_menu_item(feed_id || folder_name, $feed || $folder);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-add-folder-save' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
self.add_folder_to_folder();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-move-save' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.manage_menu_move_folder(folder_name, $folder);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-move-save' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
if ($t.hasClass('NB-disabled')) return;
|
|
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_move_feed(feed_id, $feed);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-move-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-move-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-controls' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-mute' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
self.manage_menu_mute_feed($t.parents('.NB-menu-manage').data('feed_id'), false);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-unmute' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
self.manage_menu_mute_feed($t.parents('.NB-menu-manage').data('feed_id'), true);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-rename' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
if ($t.hasClass('NB-menu-manage-feed-rename-cancel') ||
|
|
$t.hasClass('NB-menu-manage-folder-rename-cancel')) {
|
|
self.hide_confirm_rename_menu_item();
|
|
} else {
|
|
self.show_confirm_rename_menu_item();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-rename-save' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.manage_menu_rename_folder(folder_name, $folder);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-rename-save' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
var $feed = $t.parents('.NB-menu-manage').data('$feed');
|
|
self.manage_menu_rename_feed(feed_id, $feed);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-rename-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-rename-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-share' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var story_id = $t.parents('.NB-menu-manage').data('story_id');
|
|
if ($t.hasClass('NB-menu-manage-story-share-cancel')) {
|
|
self.hide_confirm_story_share_menu_item(story_id);
|
|
} else {
|
|
self.show_confirm_story_share_menu_item(story_id);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-share-confirm' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-mark-read' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.mark_feed_as_read(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-mark-read' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
var folder_view = NEWSBLUR.assets.folders.get_view($folder) ||
|
|
self.active_folder.folder_view;
|
|
self.mark_folder_as_read(folder_view.model);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-subscribe' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.open_add_feed_modal({ folder_title: folder_name });
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-folder-subfolder' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var folder_name = $t.parents('.NB-menu-manage').data('folder_name');
|
|
var $folder = $t.parents('.NB-menu-manage').data('$folder');
|
|
self.open_add_feed_modal({ folder_title: folder_name, init_folder: true });
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-open' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!self.flags['showing_confirm_input_on_manage_menu']) {
|
|
var story_id = $t.closest('.NB-menu-manage-story').data('story_id');
|
|
var story = self.model.get_story(story_id);
|
|
story.open_story_in_new_tab(true);
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-star' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var story_id = $t.closest('.NB-menu-manage-story').data('story_id');
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
story.toggle_starred();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-exception' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
self.open_feed_exception_modal(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-site-mark-read' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_mark_read_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-social-profile' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
|
|
$.modal.close(function () {
|
|
self.open_social_profile_modal(feed_id);
|
|
});
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-keyboard' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_keyboard_shortcuts_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-goodies' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_goodies_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-statistics' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_feed_statistics_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-notifications' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_notifications_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-newsletters' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_newsletters_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-import' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
NEWSBLUR.reader.open_intro_modal({
|
|
'page_number': 2,
|
|
'force_import': true
|
|
});
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-friends' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_friends_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-profile-editor' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_profile_editor_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-preferences' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_preferences_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-theme' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-theme-light' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_theme('light');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-theme-dark' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_theme('dark');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-theme-auto' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_theme('auto');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-font' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-font-whitney' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font('whitney');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-font-lucida' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font('lucida');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-font-gotham' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font('gotham');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-size' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-size-xs' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font_size('xs');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-size-s' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font_size('s');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-size-m' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font_size('m');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-size-l' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font_size('l');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-feed-size-xl' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_feed_font_size('xl');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-density-compact' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_density('compact');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-options-density-comfortable' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_density('comfortable');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-logout' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.logout();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-account' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
|
|
if (!$t.hasClass('NB-disabled') && !$($t.prevObject).hasClass('NB-menu-manage-logout')) {
|
|
$.modal.close(function () {
|
|
self.open_account_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-feedchooser' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_feedchooser_modal({
|
|
'chooser_only': NEWSBLUR.Globals.is_premium
|
|
});
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-organizer' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_organizer_modal();
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-premium' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
$.modal.close(function () {
|
|
self.open_feedchooser_modal({ 'premium_only': true });
|
|
});
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-account-upgrade' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_feedchooser_modal({ 'premium_only': true });
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-account-train' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_trainer_modal();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-friends-button' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_friends_modal();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-launch-tutorial' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_tutorial_modal();
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-launch-intro' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_intro_modal({ page_number: 2 });
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-premium-button' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.open_feedchooser_modal({ 'premium_only': true });
|
|
}
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-gettingstarted-hide' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
self.check_hide_getting_started(true);
|
|
}
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-unread' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var story_id = $t.closest('.NB-menu-manage').data('story_id');
|
|
var story = self.model.get_story(story_id);
|
|
NEWSBLUR.assets.stories.mark_unread(story);
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-menu-manage-story-read' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var story_id = $t.closest('.NB-menu-manage').data('story_id');
|
|
var story = self.model.get_story(story_id);
|
|
NEWSBLUR.assets.stories.mark_read(story);
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.task_view_page:not(.NB-task-return)' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view('page');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.task_view_feed' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view('feed');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.task_view_story' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view('story');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.task_view_text' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view('text');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-task-return' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
NEWSBLUR.app.original_tab_view.load_feed_iframe();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-story-next-unread' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.open_next_unread_story_across_feeds();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-story-next' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.show_next_story(1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-story-previous' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.show_next_story(-1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-layout-full' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_story_layout('full');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-layout-split' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_story_layout('split');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-layout-list' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_story_layout('list');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-layout-grid' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_story_layout('grid');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-button.NB-task-layout-magazine' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.switch_story_layout('magazine');
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-taskbar-options' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.open_story_options_popover();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-intelligence-slider-control' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var unread_value;
|
|
if ($t.hasClass('NB-intelligence-slider-red')) {
|
|
unread_value = -1;
|
|
} else if ($t.hasClass('NB-intelligence-slider-yellow')) {
|
|
unread_value = 0;
|
|
} else if ($t.hasClass('NB-intelligence-slider-green')) {
|
|
unread_value = 1;
|
|
} else if ($t.hasClass('NB-intelligence-slider-blue')) {
|
|
unread_value = 2;
|
|
}
|
|
|
|
self.slide_intelligence_slider(unread_value);
|
|
});
|
|
|
|
// =====================
|
|
// = Recommended Feeds =
|
|
// =====================
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-statistics' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
$('.NB-module-recommended').addClass('NB-loading');
|
|
self.model.load_canonical_feed(feed_id, function () {
|
|
$('.NB-module-recommended').removeClass('NB-loading');
|
|
self.open_feed_statistics_modal(feed_id);
|
|
});
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-intelligence' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
$('.NB-module-recommended').addClass('NB-loading');
|
|
self.model.load_canonical_feed(feed_id, function () {
|
|
$('.NB-module-recommended').removeClass('NB-loading');
|
|
self.open_feed_intelligence_modal(1, feed_id);
|
|
});
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-try' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var $recommended_feeds = $('.NB-module-recommended');
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
self.open_feed(feed_id, {
|
|
'feed': new NEWSBLUR.Models.Feed({
|
|
'feed_title': $('.NB-recommended-title', $recommended_feeds).text(),
|
|
'favicon_url': $('.NB-recommended-favicon', $recommended_feeds).attr('src'),
|
|
'temp': true
|
|
})
|
|
});
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-add' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
$('.NB-module-recommended').addClass('NB-loading');
|
|
self.model.load_canonical_feed(feed_id, function () {
|
|
$('.NB-module-recommended').removeClass('NB-loading');
|
|
self.add_recommended_feed(feed_id);
|
|
});
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-decline' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
self.decline_feed_in_moderation_queue(feed_id);
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-recommended-approve' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-recommended').data('feed-id');
|
|
self.approve_feed_in_moderation_queue(feed_id);
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-module-recommended .NB-module-next-page' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var unmoderated = $t.closest('.NB-module-recommended').hasClass('NB-recommended-unmoderated');
|
|
self.load_recommended_feed(1, false, unmoderated);
|
|
}
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-module-recommended .NB-module-previous-page' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
if (!$t.hasClass('NB-disabled')) {
|
|
var unmoderated = $t.closest('.NB-module-recommended').hasClass('NB-recommended-unmoderated');
|
|
self.load_recommended_feed(-1, false, unmoderated);
|
|
}
|
|
});
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-tryfeed-add' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = self.active_feed;
|
|
self.add_recommended_feed(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-tryfeed-follow' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = self.active_feed;
|
|
self.follow_user_in_tryfeed(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-tryout-signup' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.show_splash_page();
|
|
if (NEWSBLUR.welcome) {
|
|
NEWSBLUR.welcome.show_signin_form();
|
|
}
|
|
});
|
|
|
|
// = Interactions Module ==========================================
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-interaction-follow, .NB-activity-follow' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var user_id = $t.data('userId');
|
|
var username = $t.closest('.NB-interaction').find('.NB-interaction-username').text();
|
|
|
|
self.close_interactions_popover();
|
|
self.model.add_user_profiles([{ user_id: user_id, username: username }]);
|
|
self.open_social_profile_modal(user_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-interaction-comment_reply, .NB-interaction-reply_reply, .NB-interaction-story_reshare, .NB-interaction-comment_like, .NB-activity-comment_reply, .NB-activity-comment_like, .NB-activity-sharedstory' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var $interaction = $t.closest('.NB-interaction');
|
|
var feed_id = $interaction.data('feedId');
|
|
var story_id = $interaction.data('contentId');
|
|
var user_id = $interaction.data('userId');
|
|
var username = $interaction.data('username');
|
|
|
|
self.close_interactions_popover();
|
|
self.close_social_profile();
|
|
if (self.model.get_feed(feed_id)) {
|
|
self.open_social_stories(feed_id, { 'story_id': story_id });
|
|
} else {
|
|
var comment_user_matches = feed_id.match(/social:(\d+)/, '$1');
|
|
if (comment_user_matches) user_id = parseInt(comment_user_matches[1], 10);
|
|
var socialsub = self.model.add_social_feed({
|
|
id: feed_id,
|
|
user_id: user_id,
|
|
username: username
|
|
});
|
|
self.load_social_feed_in_tryfeed_view(socialsub, { 'story_id': story_id });
|
|
}
|
|
});
|
|
|
|
// = Activities Module ==========================================
|
|
|
|
$.targetIs(e, { tagSelector: '.NB-activity-star' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var story_id = $t.closest('.NB-interaction').data('contentId');
|
|
|
|
self.close_interactions_popover();
|
|
self.close_social_profile();
|
|
self.open_starred_stories({ 'story_id': story_id });
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-activity-feedsub' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var feed_id = $t.closest('.NB-interaction').data('feedId');
|
|
|
|
self.close_interactions_popover();
|
|
self.close_social_profile();
|
|
self.open_feed(feed_id);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-activity-opml_import' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.close_interactions_popover();
|
|
self.close_social_profile();
|
|
|
|
NEWSBLUR.reader.open_intro_modal({
|
|
'page_number': 2,
|
|
'force_import': true
|
|
});
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-activity-opml_export' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.close_interactions_popover();
|
|
self.close_social_profile();
|
|
|
|
self.open_account_modal();
|
|
});
|
|
|
|
// = One-offs =====================================================
|
|
|
|
var clicked = false;
|
|
$.targetIs(e, { tagSelector: '#mouse-indicator' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.lock_mouse_indicator();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-load-user-profile img' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.open_social_profile_modal();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-progress-close' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.hide_unfetched_feed_progress(true);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-next-page', childOf: '.NB-module-features' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.load_feature_page(1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-previous-page', childOf: '.NB-module-features' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
self.load_feature_page(-1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-next-page', childOf: '.NB-module-howitworks' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var page = $('.NB-howitworks-page.NB-active').prevAll('.NB-howitworks-page').length;
|
|
self.load_howitworks_page(page + 1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-previous-page', childOf: '.NB-module-howitworks' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var page = $('.NB-howitworks-page.NB-active').prevAll('.NB-howitworks-page').length;
|
|
self.load_howitworks_page(page - 1);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-module-page-indicator', childOf: '.NB-module-howitworks' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
var page = $t.prevAll('.NB-module-page-indicator').length;
|
|
self.load_howitworks_page(page);
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-splash-meta-about' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
NEWSBLUR.about = new NEWSBLUR.About();
|
|
});
|
|
$.targetIs(e, { tagSelector: '.NB-splash-meta-faq' }, function ($t, $p) {
|
|
e.preventDefault();
|
|
NEWSBLUR.faq = new NEWSBLUR.Faq();
|
|
});
|
|
|
|
},
|
|
|
|
handle_keyup: function (elem, e) {
|
|
var self = this;
|
|
|
|
},
|
|
|
|
handle_keystrokes: function () {
|
|
var self = this;
|
|
var $document = $(document);
|
|
|
|
NEWSBLUR.hotkeys.initialize();
|
|
|
|
$document.bind('keydown', '?', function (e) {
|
|
e.preventDefault();
|
|
self.open_keyboard_shortcuts_modal();
|
|
});
|
|
$document.bind('keydown', 'shift+/', function (e) {
|
|
e.preventDefault();
|
|
self.open_keyboard_shortcuts_modal();
|
|
});
|
|
$document.bind('keydown', 'down', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.assets.preference('keyboard_verticalarrows') == 'scroll') {
|
|
var amount = NEWSBLUR.assets.preference('arrow_scroll_spacing');
|
|
self.scroll_in_story(amount, 1);
|
|
} else {
|
|
self.show_next_story(1);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'up', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.assets.preference('keyboard_verticalarrows') == 'scroll') {
|
|
var amount = NEWSBLUR.assets.preference('arrow_scroll_spacing');
|
|
self.scroll_in_story(amount, -1);
|
|
} else {
|
|
self.show_next_story(-1);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'j', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_story(1);
|
|
});
|
|
$document.bind('keydown', 'k', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_story(-1);
|
|
});
|
|
$document.bind('keydown', 'shift+j', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(1);
|
|
});
|
|
$document.bind('keydown', 'shift+k', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(-1);
|
|
});
|
|
$document.bind('keydown', 'shift+n', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(1);
|
|
});
|
|
$document.bind('keydown', 'shift+p', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(-1);
|
|
});
|
|
$document.bind('keydown', 'shift+down', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(1);
|
|
});
|
|
$document.bind('keydown', 'shift+up', function (e) {
|
|
e.preventDefault();
|
|
self.show_next_feed(-1);
|
|
});
|
|
$document.bind('keydown', 'left', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.assets.preference('keyboard_horizontalarrows') == 'site') {
|
|
self.show_next_feed(-1);
|
|
} else {
|
|
self.switch_taskbar_view_direction(-1);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'right', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.assets.preference('keyboard_horizontalarrows') == 'site') {
|
|
self.show_next_feed(1);
|
|
} else {
|
|
self.switch_taskbar_view_direction(1);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'h', function (e) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view_direction(-1);
|
|
});
|
|
$document.bind('keydown', 'l', function (e) {
|
|
e.preventDefault();
|
|
self.switch_taskbar_view_direction(1);
|
|
});
|
|
$document.bind('keydown', 'r', function (e) {
|
|
e.preventDefault();
|
|
if (self.active_feed) {
|
|
self.reload_feed();
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+r', function (e) {
|
|
e.preventDefault();
|
|
if (self.active_feed) {
|
|
self.force_instafetch_stories();
|
|
}
|
|
});
|
|
$document.bind('keydown', 'enter', function (e) {
|
|
e.preventDefault();
|
|
if (self.flags['feed_view_showing_story_view']) {
|
|
self.switch_to_correct_view();
|
|
} else {
|
|
NEWSBLUR.app.story_tab_view.prepare_story(null, true);
|
|
NEWSBLUR.app.story_tab_view.open_story();
|
|
}
|
|
});
|
|
$document.bind('keydown', 'return', function (e) {
|
|
e.preventDefault();
|
|
if (self.flags['feed_view_showing_story_view']) {
|
|
self.switch_to_correct_view();
|
|
} else {
|
|
NEWSBLUR.app.story_tab_view.prepare_story(null, true);
|
|
NEWSBLUR.app.story_tab_view.open_story();
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+enter', function (e) {
|
|
e.preventDefault();
|
|
if (_.contains(['list', 'grid'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
if (!self.active_story) NEWSBLUR.reader.show_next_story(1);
|
|
self.active_story.story_title_view.render_inline_story_detail(true);
|
|
} else if (self.flags['temporary_story_view']) {
|
|
self.switch_to_correct_view();
|
|
} else {
|
|
NEWSBLUR.app.text_tab_view.fetch_and_render(null, true);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+return', function (e) {
|
|
e.preventDefault();
|
|
if (_.contains(['list', 'grid'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout'))) {
|
|
if (!self.active_story) NEWSBLUR.reader.show_next_story(1);
|
|
self.active_story.story_title_view.render_inline_story_detail(true);
|
|
} else if (self.flags['temporary_story_view']) {
|
|
self.switch_to_correct_view();
|
|
} else {
|
|
NEWSBLUR.app.text_tab_view.fetch_and_render(null, true);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'space', function (e) {
|
|
e.preventDefault();
|
|
var amount = NEWSBLUR.assets.preference('space_scroll_spacing');
|
|
self.page_in_story(amount, 1);
|
|
});
|
|
$document.bind('keydown', 'shift+space', function (e) {
|
|
e.preventDefault();
|
|
var amount = NEWSBLUR.assets.preference('space_scroll_spacing');
|
|
self.page_in_story(amount, -1);
|
|
});
|
|
$document.bind('keydown', 'shift+u', function (e) {
|
|
e.preventDefault();
|
|
self.toggle_sidebar();
|
|
});
|
|
$document.bind('keydown', 'shift+f', function (e) {
|
|
e.preventDefault();
|
|
self.toggle_sidebar();
|
|
self.toggle_story_titles_pane(true);
|
|
});
|
|
$document.bind('keydown', 'n', function (e) {
|
|
e.preventDefault();
|
|
self.open_next_unread_story_across_feeds();
|
|
});
|
|
$document.bind('keydown', 'p', function (e) {
|
|
e.preventDefault();
|
|
self.show_previous_story();
|
|
});
|
|
$document.bind('keydown', 'c', function (e) {
|
|
e.preventDefault();
|
|
NEWSBLUR.app.story_list.scroll_to_selected_story(self.active_story, {
|
|
scroll_to_comments: true,
|
|
scroll_offset: -50
|
|
});
|
|
});
|
|
$document.bind('keydown', 'x', function (e) {
|
|
e.preventDefault();
|
|
var story = NEWSBLUR.reader.active_story;
|
|
if (story && story.get('selected')) {
|
|
NEWSBLUR.reader.active_story.set('selected', false);
|
|
} else if (story && !story.get('selected')) {
|
|
NEWSBLUR.reader.active_story.set('selected', true);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+x', function (e) {
|
|
e.preventDefault();
|
|
NEWSBLUR.reader.active_story.story_view.expand_story();
|
|
});
|
|
$document.bind('keydown', 'shift+y', function (e) {
|
|
e.preventDefault();
|
|
if (!NEWSBLUR.reader.active_story) return;
|
|
var story = NEWSBLUR.assets.get_story(NEWSBLUR.reader.active_story);
|
|
var timestamp = story.get('story_timestamp');
|
|
var direction = 'newer';
|
|
var order = NEWSBLUR.assets.view_setting(self.active_feed, 'order');
|
|
if (order == 'oldest') direction = 'older';
|
|
|
|
if (self.flags.river_view && !self.flags.social_view) {
|
|
self.mark_folder_as_read(self.active_folder, timestamp, direction);
|
|
} else {
|
|
self.mark_feed_as_read(self.active_feed, timestamp, direction);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+b', function (e) {
|
|
e.preventDefault();
|
|
if (!NEWSBLUR.reader.active_story) return;
|
|
var story = NEWSBLUR.assets.get_story(NEWSBLUR.reader.active_story);
|
|
var timestamp = story.get('story_timestamp');
|
|
var direction = 'older';
|
|
var order = NEWSBLUR.assets.view_setting(self.active_feed, 'order');
|
|
if (order == 'oldest') direction = 'newer';
|
|
|
|
if (self.flags.river_view && !self.flags.social_view) {
|
|
self.mark_folder_as_read(self.active_folder, timestamp, direction);
|
|
} else {
|
|
self.mark_feed_as_read(self.active_feed, timestamp, direction);
|
|
}
|
|
});
|
|
$document.bind('keydown', 'm', function (e) {
|
|
e.preventDefault();
|
|
// self.show_last_unread_story();
|
|
self.mark_active_story_read();
|
|
});
|
|
$document.bind('keydown', 'shift+m', function (e) {
|
|
e.preventDefault();
|
|
self.show_last_unread_story();
|
|
});
|
|
$document.bind('keydown', 'b', function (e) {
|
|
e.preventDefault();
|
|
self.show_previous_story();
|
|
});
|
|
$document.bind('keydown', 's', function (e) {
|
|
e.preventDefault();
|
|
if (self.active_story) {
|
|
var story_id = self.active_story.id;
|
|
var story = NEWSBLUR.assets.get_story(story_id);
|
|
story.toggle_starred();
|
|
}
|
|
});
|
|
$document.bind('keypress', '+', function (e) {
|
|
e.preventDefault();
|
|
self.move_intelligence_slider(1);
|
|
});
|
|
$document.bind('keypress', '-', function (e) {
|
|
e.preventDefault();
|
|
self.move_intelligence_slider(-1);
|
|
});
|
|
$document.bind('keypress', 'shift+l', function (e) {
|
|
e.preventDefault();
|
|
self.toggle_read_filter();
|
|
});
|
|
$document.bind('keypress', 'shift+d', function (e) {
|
|
e.preventDefault();
|
|
self.show_splash_page();
|
|
});
|
|
$document.bind('keydown', 'esc', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.assets.preference("keyboard-ignore-esc")) return;
|
|
if (!_.keys($.modal.impl.d).length &&
|
|
!NEWSBLUR.ReaderPopover.is_open() &&
|
|
!self.flags['feed_list_showing_manage_menu']) {
|
|
self.show_splash_page();
|
|
}
|
|
});
|
|
$document.bind('keypress', 't', function (e) {
|
|
e.preventDefault();
|
|
self.open_story_trainer();
|
|
});
|
|
$document.bind('keypress', 'shift+t', function (e) {
|
|
e.preventDefault();
|
|
self.open_feed_intelligence_modal(1);
|
|
});
|
|
$document.bind('keypress', 'a', function (e) {
|
|
e.preventDefault();
|
|
self.open_add_feed_modal();
|
|
});
|
|
$document.bind('keypress', 'o', function (e) {
|
|
e.preventDefault();
|
|
var story_id = self.active_story;
|
|
if (!story_id) return;
|
|
var story = self.model.get_story(story_id);
|
|
story.open_story_in_new_tab(true);
|
|
});
|
|
$document.bind('keypress', 'v', function (e) {
|
|
e.preventDefault();
|
|
var story_id = self.active_story;
|
|
if (!story_id) return;
|
|
var story = self.model.get_story(story_id);
|
|
story.open_story_in_new_tab(true);
|
|
});
|
|
$document.bind('keypress', 'shift+v', function (e) {
|
|
e.preventDefault();
|
|
var story_id = self.active_story;
|
|
if (!story_id) return;
|
|
var story = self.model.get_story(story_id);
|
|
story.open_story_in_new_tab();
|
|
});
|
|
$document.bind('keypress', 'e', function (e) {
|
|
e.preventDefault();
|
|
var story = self.active_story;
|
|
if (!story) return;
|
|
self.send_story_to_email(story);
|
|
});
|
|
$document.bind('keydown', 'shift+a', function (e) {
|
|
e.preventDefault();
|
|
self.maybe_mark_all_as_read();
|
|
});
|
|
$document.bind('keydown', 'shift+e', function (e) {
|
|
e.preventDefault();
|
|
self.open_river_stories();
|
|
});
|
|
$document.bind('keydown', 'u', function (e) {
|
|
e.preventDefault();
|
|
self.mark_active_story_read();
|
|
});
|
|
$document.bind('keydown', 'g', function (e) {
|
|
e.preventDefault();
|
|
NEWSBLUR.app.feed_selector.toggle();
|
|
});
|
|
$document.bind('keydown', '/', function (e) {
|
|
e.preventDefault();
|
|
if (NEWSBLUR.app.story_titles_header.search_view) {
|
|
NEWSBLUR.app.story_titles_header.search_view.focus();
|
|
}
|
|
});
|
|
$document.bind('keydown', 'shift+s', function (e) {
|
|
e.preventDefault();
|
|
if (self.active_story) {
|
|
var view = 'feed';
|
|
if (_.contains(['split', 'full'],
|
|
NEWSBLUR.assets.view_setting(NEWSBLUR.reader.active_feed, 'layout')) &&
|
|
_.contains(['page', 'story'], self.story_view)) {
|
|
view = 'title';
|
|
}
|
|
self.active_story.open_share_dialog(e, view);
|
|
}
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
})(jQuery);
|