From a823b1bdae8bf8a2ae8de03e36b428382c87ce56 Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Wed, 9 May 2012 12:09:23 -0700 Subject: [PATCH] Handling story-level original/story view bans, preventing iframe busts on nytimes/twitter. Thanks to @j4ded for the persistance. --- media/js/newsblur/reader.js | 56 +++++++++++++++++-------------- media/js/newsblur/reader_utils.js | 11 ++++++ 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/media/js/newsblur/reader.js b/media/js/newsblur/reader.js index 6790b6c80..0b0f72d10 100644 --- a/media/js/newsblur/reader.js +++ b/media/js/newsblur/reader.js @@ -1906,31 +1906,29 @@ }, set_correct_story_view_for_feed: function(feed_id, view) { - var feed = this.model.get_feed(feed_id); - view = view || this.model.view_setting(feed_id); - - if (feed && feed.has_exception && feed.exception_type == 'page') { - if (view == 'page') { - view = 'feed'; + var feed = this.model.get_feed(feed_id); + view = view || this.model.view_setting(feed_id); + + if (feed && feed.disabled_page) { + view = 'feed'; + $('.task_view_page').addClass('NB-disabled-page') + .addClass('NB-disabled'); + $('.task_view_story').addClass('NB-disabled-page') + .addClass('NB-disabled'); + } else if (feed && feed.has_exception && feed.exception_type == 'page') { + if (view == 'page') { + view = 'feed'; + } + $('.task_view_page').addClass('NB-exception-page'); + } else { + $('.task_view_page').removeClass('NB-disabled-page') + .removeClass('NB-disabled') + .removeClass('NB-exception-page'); + $('.task_view_story').removeClass('NB-disabled-page') + .removeClass('NB-disabled'); } - $('.task_view_page').addClass('NB-exception-page'); - } else if (feed && feed.disabled_page) { - if (view == 'page') { - view = 'feed'; - } - $('.task_view_page').addClass('NB-disabled-page') - .addClass('NB-disabled'); - $('.task_view_story').addClass('NB-disabled-page') - .addClass('NB-disabled'); - } else { - $('.task_view_page').removeClass('NB-disabled-page') - .removeClass('NB-disabled') - .removeClass('NB-exception-page'); - $('.task_view_story').removeClass('NB-disabled-page') - .removeClass('NB-disabled'); - } - this.story_view = view; + this.story_view = view; }, // =============== @@ -4182,8 +4180,16 @@ open_story_in_story_view: function(story, is_temporary) { if (!story) story = this.active_story; - this.switch_taskbar_view('story', is_temporary ? 'story' : false); - this.load_story_iframe(story, story.story_feed_id); + var feed = this.model.get_feed(story.story_feed_id); + if ((feed && feed.disabled_page) || + NEWSBLUR.utils.is_url_iframe_buster(story.story_permalink)) { + if (!is_temporary) { + this.switch_taskbar_view('feed', 'story'); + } + } else { + this.switch_taskbar_view('story', is_temporary ? 'story' : false); + this.load_story_iframe(story, story.story_feed_id); + } }, load_story_iframe: function(story, feed_id) { diff --git a/media/js/newsblur/reader_utils.js b/media/js/newsblur/reader_utils.js index 3f79e89a0..2df2b0d16 100644 --- a/media/js/newsblur/reader_utils.js +++ b/media/js/newsblur/reader_utils.js @@ -118,6 +118,17 @@ NEWSBLUR.utils = { } return $options; + }, + + is_url_iframe_buster: function(url) { + var BROKEN_URLS = [ + 'nytimes.com', + 'stackoverflow.com', + 'twitter.com' + ]; + return _.any(BROKEN_URLS, function(broken_url) { + return _.includes(url, broken_url); + }); } }; \ No newline at end of file