From 1bb442a9d01f295658f96874e8dcb05ced9d577f Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Mon, 7 May 2012 16:26:31 -0700 Subject: [PATCH] Being much more aggressive about certain sites trying to take over the iframe. Blocking nytimes.com, twitter.com, and stackoverflow.com from even allowing an Original view. --- apps/rss_feeds/models.py | 11 +++++++++++ media/css/reader.css | 6 ++++++ media/js/newsblur/reader.js | 18 ++++++++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index 190d4ee89..2ec3adcf3 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -32,6 +32,12 @@ from utils.diff import HTMLDiff ENTRY_NEW, ENTRY_UPDATED, ENTRY_SAME, ENTRY_ERR = range(4) +BROKEN_PAGE_URLS = [ + 'nytimes.com', + 'stackoverflow.com', + 'twitter.com', +] + class Feed(models.Model): feed_address = models.URLField(max_length=255, db_index=True) feed_address_locked = models.NullBooleanField(default=False, blank=True, null=True) @@ -111,6 +117,11 @@ class Feed(models.Model): feed['exception_type'] = None feed['exception_code'] = self.exception_code + for broken_page in BROKEN_PAGE_URLS: + if broken_page in self.feed_link: + feed['disabled_page'] = True + break + if full: feed['feed_tags'] = json.decode(self.data.popular_tags) if self.data.popular_tags else [] feed['feed_authors'] = json.decode(self.data.popular_authors) if self.data.popular_authors else [] diff --git a/media/css/reader.css b/media/css/reader.css index 8d2446816..24bcbde02 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -2491,12 +2491,18 @@ background: transparent; .NB-taskbar .task_button.task_view_page.NB-exception-page .NB-task-image { background-image: url('/media/embed/icons/silk/exclamation.png'); } +.NB-taskbar .task_button.task_view_page.NB-disabled-page .NB-task-image { + background-image: url('/media/embed/icons/silk/error.png'); +} .NB-taskbar .task_button.task_view_feed .NB-task-image { background: transparent url('/media/embed/icons/silk/application_view_list.png') no-repeat 0 0; } .NB-taskbar .task_button.task_view_story .NB-task-image { background: transparent url('/media/embed/icons/silk/application_view_gallery.png') no-repeat 0 0; } +.NB-taskbar .task_button.task_view_story.NB-disabled-page .NB-task-image { + background-image: url('/media/embed/icons/silk/error.png'); +} .NB-taskbar .task_button.task_story_next_positive .NB-task-image { background: transparent url('/media/embed/icons/silk/bullet_green.png') no-repeat 0 0; } diff --git a/media/js/newsblur/reader.js b/media/js/newsblur/reader.js index 3e518c3c0..6790b6c80 100644 --- a/media/js/newsblur/reader.js +++ b/media/js/newsblur/reader.js @@ -1753,6 +1753,7 @@ $('.NB-selected', this.$s.$feed_list).removeClass('NB-selected'); this.$s.$body.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'); this.hide_content_pane_feed_counter(); // $('.feed_counts_floater').remove(); @@ -1913,8 +1914,20 @@ view = 'feed'; } $('.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-exception-page'); + $('.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; @@ -3079,7 +3092,6 @@ unload_feed_iframe: function() { var $feed_iframe = this.$s.$feed_iframe; var $taskbar_view_page = $('.NB-taskbar .task_view_page'); - $taskbar_view_page.removeClass('NB-disabled'); $taskbar_view_page.removeClass('NB-task-return'); this.flags['iframe_view_loaded'] = false; @@ -4023,6 +4035,8 @@ if (view == 'page' && feed && feed.has_exception && feed.exception_type == 'page') { this.open_feed_exception_modal(this.active_feed); return; + } else if (_.contains(['page', 'story'], view) && feed && feed.disabled_page) { + view = 'feed'; } else if ($('.task_button_view.task_view_'+view).hasClass('NB-disabled')) { return; }