NEWSBLUR.ReaderFeedchooser = function(options) { options = options || {}; var defaults = { 'width': options.premium_only || options.chooser_only ? 600 : 900, 'height': 750, 'premium_only': false, 'chooser_only': false, 'onOpen': _.bind(function() { this.resize_modal(); }, this), 'onClose': _.bind(function() { if (!this.flags['has_saved'] && !this.model.flags['has_chosen_feeds']) { NEWSBLUR.reader.show_feed_chooser_button(); } dialog.data.hide().empty().remove(); dialog.container.hide().empty().remove(); dialog.overlay.fadeOut(200, function() { dialog.overlay.empty().remove(); $.modal.close(callback); }); $('.NB-modal-holder').empty().remove(); }, this) }; this.options = $.extend({}, defaults, options); this.model = NEWSBLUR.assets; this.runner(); }; NEWSBLUR.ReaderFeedchooser.prototype = new NEWSBLUR.Modal; NEWSBLUR.ReaderFeedchooser.prototype.constructor = NEWSBLUR.ReaderFeedchooser; _.extend(NEWSBLUR.ReaderFeedchooser.prototype, { runner: function() { var self = this; this.start = new Date(); this.MAX_FEEDS = 64; NEWSBLUR.assets.feeds.each(function(feed) { self.add_feed_to_decline(feed); }); this.make_modal(); this.make_paypal_button(); if (!this.options.premium_only) { this.initial_load_feeds(); } _.defer(_.bind(function() { this.update_counts(true); }, this)); this.flags = { 'has_saved': false }; this.open_modal(); this.$modal.bind('mousedown', $.rescope(this.handle_mousedown, this)); this.$modal.bind('change', $.rescope(this.handle_change, this)); }, make_modal: function () { var self = this; var $creditcards = $.make('div', { className: 'NB-creditcards' }, [ $.make('img', { src: NEWSBLUR.Globals.MEDIA_URL + "/img/reader/cc_stripe.svg" }), $.make('img', { src: NEWSBLUR.Globals.MEDIA_URL + "/img/reader/cc_visa.svg" }), $.make('img', { src: NEWSBLUR.Globals.MEDIA_URL + "/img/reader/cc_mastercard.svg" }), $.make('img', { src: NEWSBLUR.Globals.MEDIA_URL + "/img/reader/cc_amex.svg" }), $.make('img', { src: NEWSBLUR.Globals.MEDIA_URL + "/img/reader/cc_discover.svg" }) ]); this.$modal = $.make('div', { className: 'NB-modal-feedchooser NB-modal ' + (this.options.premium_only ? "NB-feedchooser-premium" : this.options.chooser_only ? "NB-feedchooser-chooser-only" : "NB-feedchooser-standard") }, [ // $.make('h2', { className: 'NB-modal-title' }, 'Choose Your '+this.MAX_FEEDS), (!this.options.chooser_only && $.make('div', { className: 'NB-feedchooser-type NB-right' }, [ (!this.options.premium_only && $.make('div', { className: 'NB-feedchooser-porpoise' }, 'OR')), $.make('div', { className: 'NB-feedchooser-premium-plan' }, [ $.make('div', { className: 'NB-feedchooser-info' }, [ $.make('div', { className: 'NB-feedchooser-info-type' }, [ 'Premium Subscription', $.make('span', { className: 'NB-feedchooser-subtitle-type-price' }, '$36/year'), ]) ]), $.make('ul', { className: 'NB-feedchooser-premium-bullets' }, [ $.make('li', { className: 'NB-1' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Enable every site by going premium' ]), $.make('li', { className: 'NB-2' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Sites updated up to 5x more often' ]), $.make('li', { className: 'NB-3' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'River of News (reading by folder)' ]), $.make('li', { className: 'NB-4' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Search sites and folders' ]), $.make('li', { className: 'NB-5' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Save stories with searchable tags' ]), $.make('li', { className: 'NB-6' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Privacy options for your blurblog' ]), $.make('li', { className: 'NB-7' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Custom RSS feeds for saved stories' ]), $.make('li', { className: 'NB-8' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Text view conveniently extracts the story' ]), $.make('li', { className: 'NB-9' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'You feed Lyric, NewsBlur\'s hungry hound, for ', $.make('span', { className: 'NB-feedchooser-hungry-dog' }, '6 days'), $.make('img', { className: 'NB-feedchooser-premium-poor-hungry-dog', src: NEWSBLUR.Globals.MEDIA_URL + '/img/reader/lyric.jpg' }) ]) ]), $.make('div', { className: 'NB-payment-providers' }, [ (!NEWSBLUR.Globals.is_premium && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ $.make('div', { className: "NB-provider-button-premium NB-modal-submit-button NB-modal-submit-green" }, [ "Upgrade to Premium" ]), $creditcards.clone() ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ $.make('span', { className: "NB-provider-text" }, "subscribe with "), $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "premium" }, "") ]) ])), (NEWSBLUR.Globals.is_premium && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: "NB-feedchooser-premium-already" }, [ $.make('div', { className: 'NB-feedchooser-premium-already-icon' }), $.make('div', { className: 'NB-feedchooser-premium-already-message' }, [ (NEWSBLUR.Globals.is_archive && "Your premium archive subscription includes everything above"), (!NEWSBLUR.Globals.is_archive && !NEWSBLUR.Globals.is_pro && "Your premium subscription is active") ]) ]) ])), (NEWSBLUR.Globals.is_premium && !NEWSBLUR.Globals.premium_renewal && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ $.make('div', { className: "NB-provider-button-premium NB-modal-submit-button NB-modal-submit-green" }, [ (NEWSBLUR.Globals.is_archive || NEWSBLUR.Globals.is_pro) && "Switch plans to a premium subscription", !(NEWSBLUR.Globals.is_archive || NEWSBLUR.Globals.is_pro) && "Restart your premium subscription", ]) ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $.make('span', { className: "NB-provider-text" }, "subscribe with ")), (NEWSBLUR.Globals.active_provider != "paypal" && $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "premium" }, "")), (NEWSBLUR.Globals.active_provider == "paypal" && $.make("div", { className: "NB-stripe-button-switch-premium NB-modal-submit-button NB-modal-submit-green" }, "Switch to Credit Card")), (NEWSBLUR.Globals.active_provider == "paypal" && $creditcards.clone()) ]) ])), (NEWSBLUR.Globals.is_premium && !NEWSBLUR.Globals.is_archive && !NEWSBLUR.Globals.is_pro && NEWSBLUR.Globals.premium_renewal && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ $.make('div', { className: "NB-provider-button-change NB-modal-submit-button NB-modal-submit-grey" }, [ "Change billing details" ]) ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $.make('span', { className: "NB-provider-text" }, "subscribe with ")), (NEWSBLUR.Globals.active_provider != "paypal" && $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "premium" }, "")), (NEWSBLUR.Globals.active_provider == "paypal" && $.make("div", { className: "NB-stripe-button-switch-premium NB-modal-submit-button NB-modal-submit-green" }, "Switch to Credit Card")), (NEWSBLUR.Globals.active_provider == "paypal" && $creditcards.clone()) ]) ])) ]) ]), $.make('div', { className: 'NB-feedchooser-premium-plan' }, [ $.make('div', { className: 'NB-feedchooser-info' }, [ $.make('div', { className: 'NB-feedchooser-info-type' }, [ 'Premium Archive Subscription', $.make('span', { className: 'NB-feedchooser-subtitle-type-price' }, '$99/year'), ]) ]), $.make('ul', { className: 'NB-feedchooser-premium-bullets NB-feedchooser-premium-archive-bullets' }, [ $.make('li', { className: 'NB-1' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Everything in the premium subscription, of course' ]), $.make('li', { className: 'NB-2' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Choose when stories are automatically marked as read' ]), $.make('li', { className: 'NB-3' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Every story from every site is archived and searchable forever' ]), $.make('li', { className: 'NB-4' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Feeds that support paging are back-filled in for a complete archive' ]), $.make('li', { className: 'NB-5' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Export trained stories from folders as RSS feeds' ]), $.make('li', { className: 'NB-6' }, [ $.make('div', { className: 'NB-feedchooser-premium-bullet-image' }), 'Stories can stay unread forever' ]) ]), $.make('div', { className: 'NB-payment-providers' }, [ (!NEWSBLUR.Globals.is_archive && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $creditcards.clone()), $.make('div', { className: "NB-provider-button-archive NB-modal-submit-button NB-modal-submit-green" }, [ "Upgrade to Premium Archive", (NEWSBLUR.Globals.active_provider == "paypal" && " with PayPal") ]), this.make_premium_archive_prorate_message(), ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $.make('span', { className: "NB-provider-text" }, "subscribe with ")), (NEWSBLUR.Globals.active_provider != "paypal" && $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "archive" }, "")), (NEWSBLUR.Globals.active_provider == "paypal" && $.make("div", { className: "NB-stripe-button-switch-archive NB-modal-submit-button NB-modal-submit-green" }, "Switch to Credit Card")), (NEWSBLUR.Globals.active_provider == "paypal" && $creditcards) ]) // $.make('div', { className: "NB-provider-note" }, "Note: Due to the intricacies of PayPal integration, you will be charged the full amount. If you switch to credit card, you will only be charged a prorated amount.") ])), (NEWSBLUR.Globals.is_archive && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: "NB-feedchooser-premium-already" }, [ $.make('div', { className: 'NB-feedchooser-premium-already-icon' }), $.make('div', { className: 'NB-feedchooser-premium-already-message' }, [ "Your premium archive subscription is active" ]) ]) ])), (NEWSBLUR.Globals.is_archive && !NEWSBLUR.Globals.premium_renewal && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ $.make('div', { className: "NB-provider-button-archive NB-modal-submit-button NB-modal-submit-green" }, [ !NEWSBLUR.Globals.is_archive && "Switch plans to a premium archive subscription", NEWSBLUR.Globals.is_archive && "Restart your premium archive subscription", ]) ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $.make('span', { className: "NB-provider-text" }, "subscribe with ")), (NEWSBLUR.Globals.active_provider != "paypal" && $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "archive" }, "")), (NEWSBLUR.Globals.active_provider == "paypal" && $.make("div", { className: "NB-stripe-button-switch-archive NB-modal-submit-button NB-modal-submit-green" }, "Switch to Credit Card")), (NEWSBLUR.Globals.active_provider == "paypal" && $creditcards.clone()) ]) ])), (NEWSBLUR.Globals.is_archive && !NEWSBLUR.Globals.is_pro && NEWSBLUR.Globals.premium_renewal && $.make("div", { className: "NB-feedchooser-premium-upgrade" }, [ $.make('div', { className: 'NB-provider-main' }, [ $.make('div', { className: "NB-provider-button-change NB-modal-submit-button NB-modal-submit-grey" }, [ "Change billing details" ]) ]), $.make('div', { className: 'NB-feedchooser-or-bar' }), $.make("div", { className: "NB-provider-alternate" }, [ (NEWSBLUR.Globals.active_provider != "paypal" && $.make('span', { className: "NB-provider-text" }, "subscribe with ")), (NEWSBLUR.Globals.active_provider != "paypal" && $.make("div", { className: "NB-splash-link NB-paypal-button", "data-plan": "archive" }, "")), (NEWSBLUR.Globals.active_provider == "paypal" && $.make("div", { className: "NB-stripe-button-switch-archive NB-modal-submit-button NB-modal-submit-green" }, "Switch to Credit Card")), (NEWSBLUR.Globals.active_provider == "paypal" && $creditcards.clone()) ]) ])) ]) ]) ])), (!this.options.premium_only && $.make('div', { className: 'NB-feedchooser-type NB-feedchooser-left' }, [ (!NEWSBLUR.Globals.is_premium && $.make('div', { className: 'NB-feedchooser-info' }, [ $.make('div', { className: 'NB-feedchooser-info-type' }, [ 'Standard Account', $.make('span', { className: 'NB-feedchooser-subtitle-type-price' }, 'Free'), ]), $.make('h2', { className: 'NB-modal-subtitle' }, [ $.make('b', [ 'You can follow up to ' + this.MAX_FEEDS + ' sites.' ]), $.make('br'), 'You can always change these.' ]), $.make('div', { className: 'NB-feedchooser-info-counts' }), $.make('div', { className: 'NB-feedchooser-info-sort' }, 'Auto-Selected By Popularity'), $.make('div', { className: 'NB-feedchooser-info-reset NB-splash-link' }, 'Reset to popular sites') ])), (this.options.chooser_only && $.make('div', { className: 'NB-feedchooser-info' }, [ $.make('h2', { className: 'NB-modal-title' }, [ $.make('div', { className: 'NB-icon' }), 'Mute sites', $.make('div', { className: 'NB-icon-dropdown' }) ]), $.make('div', { className: 'NB-feedchooser-info-reset NB-splash-link' }, 'Turn every site on'), $.make('div', { className: 'NB-feedchooser-info-counts' }) ])), this.make_feeds(), $.make('form', { className: 'NB-feedchooser-form' }, [ $.make('div', { className: 'NB-modal-submit' }, [ // $.make('div', { className: 'NB-modal-submit-or' }, 'or'), $.make('input', { type: 'submit', disabled: 'true', className: 'NB-disabled NB-modal-submit-button NB-modal-submit-save NB-modal-submit-green', value: 'Check what you like above...' }), $.make('input', { type: 'submit', className: 'NB-modal-submit-add NB-modal-submit-button NB-modal-submit-green', value: 'First, add sites' }) ]) ]).bind('submit', function (e) { e.preventDefault(); return false; }) ])) ]); }, make_premium_archive_prorate_message: function () { if (!_.contains(["paypal", "stripe"], NEWSBLUR.Globals.active_provider)) return; return $.make('div', { className: "NB-premium-prorate-message" }, "Your existing subscription will be prorated"); }, make_paypal_button: function() { jQuery.ajax({ type: "GET", url: NEWSBLUR.URLs.paypal_checkout_js, dataType: "script", cache: true }).done(_.bind(function() { $(".NB-paypal-button").each(function () { var $button = $(this); var plan = $button.data('plan'); var plan_id; if (NEWSBLUR.Globals.debug) { if (plan == 'premium') plan_id = "P-4RV31836YD8080909MHZROJY"; else if (plan == 'archive') plan_id = "P-2EG40290653242115MHZROQQ"; } else { if (plan == 'premium') plan_id = "P-48R22630SD810553FMHZONIY"; else if (plan == 'archive') plan_id = "P-5JM46230U31841226MHZOMZY"; } var random_id = 'paypal-' + Math.round(Math.random() * 100000); $button.attr('id', random_id); paypal.Buttons({ fundingSource: paypal.FUNDING.PAYPAL, style: { shape: 'rect', color: 'silver', layout: 'horizontal', label: 'paypal', }, createSubscription: function (data, actions) { return actions.subscription.create({ 'plan_id': plan_id, 'application_context': { 'shipping_preference': 'NO_SHIPPING', 'user_action': 'SUBSCRIBE_NOW' }, 'custom_id': NEWSBLUR.Globals.user_id }); }, onApprove: function (data, actions) { // Full available details console.log('Paypal approve result', data.subscriptionID, JSON.stringify(data, null, 2)); if (plan == "archive") { actions.redirect(NEWSBLUR.URLs.paypal_archive_return); } else { actions.redirect(NEWSBLUR.URLs.paypal_return); } }, onError: function (err) { console.log(err); } }).render('#' + random_id); }); }, this)); }, make_google_button: function() { var checkout = '
'; var $checkout = $(checkout); return $checkout; }, make_feeds: function() { var feeds = this.model.feeds; this.feed_count = _.unique(NEWSBLUR.assets.folders.feed_ids_in_folder({include_inactive: true})).length; this.feedlist = new NEWSBLUR.Views.FeedList({ feed_chooser: true, sorting: this.options.sorting }).make_feeds(); var $feeds = this.feedlist.$el; if (this.options.resize) { $feeds.css({'max-height': this.options.resize}); } if ($feeds.data('sortable')) $feeds.data('sortable').disable(); // Expand collapsed folders $('.NB-folder-collapsed', $feeds).css({ 'display': 'block', 'opacity': 1 }).removeClass('NB-folder-collapsed'); // Pretend unfetched feeds are fine $('.NB-feed-unfetched', $feeds).removeClass('NB-feed-unfetched'); // Make sure all folders are visible $('.NB-folder.NB-hidden', $feeds).removeClass('NB-hidden'); NEWSBLUR.assets.folders.sort(); NEWSBLUR.assets.feeds.off('change:highlighted') .on('change:highlighted', _.bind(this.change_selection, this)); return $feeds; }, resize_modal: function(previous_height) { var content_height = $('.NB-feedchooser-left', this.$modal).height() + 54; var container_height = this.$modal.parent().height(); if (content_height > container_height && previous_height != content_height) { var chooser_height = $('#NB-feedchooser-feeds').height(); var diff = Math.max(4, content_height - container_height); $('#NB-feedchooser-feeds').css({'max-height': chooser_height - diff}); _.defer(_.bind(function() { this.resize_modal(content_height); }, this), 1); } }, add_feed_to_decline: function(feed, update) { feed.highlight_in_all_folders(false, true, {silent: !update}); if (update) { this.update_counts(true); } }, add_feed_to_approve: function(feed, update) { feed.highlight_in_all_folders(true, false, {silent: false}); if (update) { this.update_counts(true); } }, change_selection: function(update) { this.update_counts(); }, update_counts: function(autoselected) { if (this.options.premium_only) return; var $count = $('.NB-feedchooser-info-counts'); var approved = this.feedlist.folder_view.highlighted_count(); var $submit = $('.NB-modal-submit-save', this.$modal); var difference = approved - this.MAX_FEEDS; var muted = this.feed_count - approved; $count.text(approved + '/' + Inflector.commas(this.feed_count)); if (NEWSBLUR.Globals.is_premium) { $submit.removeClass('NB-disabled').removeClass('NB-modal-submit-grey').attr('disabled', false); if (muted == 0) { $submit.val('Enable all ' + Inflector.pluralize('site', this.feed_count, true)); } else { $submit.val('Mute ' + Inflector.pluralize('site', muted, true)); } $count.toggleClass('NB-full', muted == 0); } else { $count.toggleClass('NB-full', approved == this.MAX_FEEDS); $count.toggleClass('NB-error', approved > this.MAX_FEEDS); if (!autoselected) { this.hide_autoselected_label(); } if (approved > this.MAX_FEEDS) { $submit.addClass('NB-disabled').addClass('NB-modal-submit-grey').attr('disabled', true).val('Too many sites! Deselect ' + ( difference == 1 ? '1 site...' : difference + ' sites...' )); } else { $submit.removeClass('NB-disabled').removeClass('NB-modal-submit-grey').attr('disabled', false).val('Turn on these '+ approved +' sites, please'); } } }, initial_load_feeds: function(reset) { var start = new Date(); var self = this; var feeds = this.model.get_feeds(); var approved = 0; // this.feedlist.folder_view.highlighted_count(); if (!feeds.size()) { _.defer(_.bind(function() { var $info = $('.NB-feedchooser-info', this.$modal); $('.NB-feedchooser-info-counts', $info).hide(); $('.NB-feedchooser-info-sort', $info).hide(); $('.NB-feedchooser-info-reset', $info).hide(); $('#NB-feedchooser-feeds').hide(); $('.NB-modal-submit-save').hide(); $('.NB-modal-submit-add').show(); }, this)); return; } if (reset) { feeds.each(function(feed) { self.add_feed_to_decline(feed, true); }); } var active_feeds = feeds.any(function(feed) { return feed.get('active'); }); if (!active_feeds || reset) { // Get feed subscribers bottom cut-off var min_subscribers = _.last( _.first( _.map(feeds.select(function(f) { return !f.has_exception; }), function(f) { return f.get('subs'); }).sort(function(a,b) { return b-a; }), this.MAX_FEEDS ) ); // Decline everything var approve_feeds = []; feeds.each(function(feed) { // self.add_feed_to_decline(feed); if (feed.get('subs') >= min_subscribers) { approve_feeds.push(feed); } }); // Approve feeds in subs _.each(approve_feeds, function(feed) { if (feed.get('subs') > min_subscribers && approved < self.MAX_FEEDS && !feed.get('has_exception')) { approved++; self.add_feed_to_approve(feed, false); } }); _.each(approve_feeds, function(feed) { if (feed.get('subs') == min_subscribers && approved < self.MAX_FEEDS) { approved++; self.add_feed_to_approve(feed, false); } }); this.show_autoselected_label(); } else { // Get active feeds var active_feeds = feeds.select(function(feed) { return feed.get('active'); }); // Approve or decline _.each(active_feeds, function(feed) { self.add_feed_to_approve(feed, false); }); this.hide_autoselected_label(); } this.update_counts(true); }, show_autoselected_label: function () { // console.log('show_autoselected_label'); $('.NB-feedchooser-info-sort', this.$modal).stop(); $('.NB-feedchooser-info-reset', this.$modal).stop().fadeOut(500, _.bind(function() { // console.log('show_autoselected_label done'); $('.NB-feedchooser-info-reset', this.$modal).hide(); $('.NB-feedchooser-info-sort', this.$modal).fadeIn(500); }, this)); }, hide_autoselected_label: function () { // console.log('hide_autoselected_label'); $('.NB-feedchooser-info-reset', this.$modal).stop(); $('.NB-feedchooser-info-sort', this.$modal).stop().fadeOut(500, _.bind(function() { // console.log('hide_autoselected_label done'); $('.NB-feedchooser-info-sort', this.$modal).hide(); $('.NB-feedchooser-info-reset', this.$modal).fadeIn(500); }, this)); }, save: function() { var self = this; var $submit = $('.NB-modal-submit-save', this.$modal); $submit.addClass('NB-disabled').removeClass('NB-modal-submit-green').val('Saving...'); var approve_list = _.pluck(NEWSBLUR.assets.feeds.filter(function(feed) { return feed.get('highlighted'); }), 'id'); console.log(["Saving", approve_list]); NEWSBLUR.reader.flags['reloading_feeds'] = true; this.model.save_feed_chooser(approve_list, function() { self.flags['has_saved'] = true; NEWSBLUR.reader.flags['reloading_feeds'] = false; NEWSBLUR.reader.hide_feed_chooser_button(); NEWSBLUR.assets.load_feeds(); $.modal.close(); }); }, close_and_add: function() { $.modal.close(function() { NEWSBLUR.add_feed = new NEWSBLUR.ReaderAddFeed(); }); }, open_stripe_form: function() { var renew = (this.options.renew ? "&renew=true" : ""); window.location.href = "/profile/stripe_form?plan=" + this.plan + renew; }, open_stripe_checkout: function (plan, $button) { if ($button.hasClass('NB-disabled')) return; $button.attr('disabled', 'disabled'); $button.removeClass('NB-modal-submit-red'); $button.text("Loading checkout..."); $button.addClass('NB-disabled').addClass('NB-modal-submit-grey').attr('disabled', true); $.redirectPost("/profile/switch_stripe_subscription", { "plan": plan }); }, open_paypal_checkout: function (plan, $button) { if ($button.hasClass('NB-disabled')) return; $button.attr('disabled', 'disabled'); $button.removeClass('NB-modal-submit-red'); $button.text("Loading PayPal..."); $button.addClass('NB-disabled').addClass('NB-modal-submit-grey').attr('disabled', true); $.redirectPost("/profile/switch_paypal_subscription", { "plan": plan }); }, // =========== // = Actions = // =========== handle_mousedown: function(elem, e) { var self = this; $.targetIs(e, { tagSelector: '.NB-modal-submit-save' }, _.bind(function($t, $p) { e.preventDefault(); this.save(); }, this)); $.targetIs(e, { tagSelector: '.NB-modal-submit-add' }, _.bind(function($t, $p) { e.preventDefault(); this.close_and_add(); }, this)); $.targetIs(e, { tagSelector: '.NB-stripe-button-switch-premium' }, _.bind(function($t, $p) { e.preventDefault(); this.open_stripe_checkout('premium', $t); }, this)); $.targetIs(e, { tagSelector: '.NB-stripe-button-switch-archive' }, _.bind(function($t, $p) { e.preventDefault(); this.open_stripe_checkout('archive', $t); }, this)); $.targetIs(e, { tagSelector: '.NB-paypal-button-archive' }, _.bind(function($t, $p) { e.preventDefault(); this.open_paypal_checkout('archive', $t); }, this)); $.targetIs(e, { tagSelector: '.NB-paypal-button-pro' }, _.bind(function($t, $p) { e.preventDefault(); this.open_paypal_checkout('pro', $t); }, this)); $.targetIs(e, { tagSelector: '.NB-provider-button-change' }, _.bind(function($t, $p) { e.preventDefault(); if (NEWSBLUR.Globals.active_provider == "stripe") { this.open_stripe_checkout('change_stripe', $t); } else if (NEWSBLUR.Globals.active_provider == "paypal") { this.open_paypal_checkout('change_paypal', $t); } }, this)); $.targetIs(e, { tagSelector: '.NB-provider-button-premium' }, _.bind(function($t, $p) { e.preventDefault(); if (!NEWSBLUR.Globals.active_provider || NEWSBLUR.Globals.active_provider == "stripe") { this.open_stripe_checkout('premium', $t); } else if (NEWSBLUR.Globals.active_provider == "paypal") { this.open_paypal_checkout('premium', $t); } }, this)); $.targetIs(e, { tagSelector: '.NB-provider-button-archive' }, _.bind(function($t, $p) { e.preventDefault(); if (!NEWSBLUR.Globals.active_provider || NEWSBLUR.Globals.active_provider == "stripe") { this.open_stripe_checkout('archive', $t); } else if (NEWSBLUR.Globals.active_provider == "paypal") { this.open_paypal_checkout('archive', $t); } }, this)); $.targetIs(e, { tagSelector: '.NB-provider-button-pro' }, _.bind(function($t, $p) { e.preventDefault(); if (!NEWSBLUR.Globals.active_provider || NEWSBLUR.Globals.active_provider == "stripe") { this.open_stripe_checkout('pro', $t); } else if (NEWSBLUR.Globals.active_provider == "paypal") { this.open_paypal_checkout('pro', $t); } }, this)); $.targetIs(e, { tagSelector: '.NB-feedchooser-info-reset' }, _.bind(function($t, $p) { e.preventDefault(); this.initial_load_feeds(true); }, this)); }, handle_change: function(elem, e) { }, handle_cancel: function() { var $cancel = $('.NB-modal-cancel', this.$modal); $cancel.click(function(e) { e.preventDefault(); $.modal.close(); }); } });