diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index ca223706e..7454bfe0b 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -977,9 +977,9 @@ class Feed(models.Model): for tcat in entry.tags: if hasattr(tcat, 'label') and tcat.label: term = tcat.label - elif tcat.term: + elif hasattr(tcat, 'term') and tcat.term: term = tcat.term - else: + elif not term: continue qcat = term.strip() if ',' in qcat or '/' in qcat: diff --git a/media/css/reader.css b/media/css/reader.css index 244634206..2e2385329 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -4858,7 +4858,7 @@ form.opml_import_form input { top: auto; } -.NB-menu-manage li { +.NB-menu-manage li.NB-menu-item { margin: 0 0 0 0; padding: 0; cursor: pointer; @@ -4867,8 +4867,9 @@ form.opml_import_form input { background-color: #BAE3A8; } -.NB-menu-manage li:hover:not(.NB-disabled), -.NB-menu-manage li.NB-hover { +.NB-menu-manage li.NB-menu-item:hover:not(.NB-disabled), +.NB-menu-manage li.NB-menu-item:hover:not(.NB-active), +.NB-menu-manage li.NB-menu-item.NB-hover { background-color: #639510; color: white; } @@ -4919,7 +4920,7 @@ form.opml_import_form input { text-shadow: 0 1px 0 #F0F0F0; } -.NB-menu-manage li:hover:not(.NB-disabled) .NB-menu-manage-title { +.NB-menu-manage li.NB-menu-item:hover:not(.NB-disabled) .NB-menu-manage-title { text-shadow: 0 1px 0 #000; } @@ -4939,7 +4940,7 @@ form.opml_import_form input { color: #718C7B; } -.NB-menu-manage li:hover .NB-menu-manage-subtitle { +.NB-menu-manage li.NB-menu-item:hover .NB-menu-manage-subtitle { color: #D2E2F8; } .NB-menu-manage .NB-menu-manage-title { @@ -4959,11 +4960,6 @@ form.opml_import_form input { left: 10px; } -.NB-menu-manage .NB-menu-manage-feed, -.NB-menu-manage .NB-menu-manage-story { - position: relative; -} - .NB-menu-manage .NB-menu-manage-feed-info, .NB-menu-manage .NB-menu-manage-site-info { font-weight: bold; @@ -5109,7 +5105,7 @@ form.opml_import_form input { .NB-menu-manage .NB-menu-manage-confirm select { height: auto; } -.NB-menu-manage li.NB-menu-manage-confirm:hover { +.NB-menu-manage li.NB-menu-item.NB-menu-manage-confirm:hover { background-color: #BAE3A8; cursor: default; } @@ -5368,10 +5364,13 @@ form.opml_import_form input { font-size: 10px; color: #E0E0E0; } +.NB-menu-manage .NB-menu-manage-controls .segmented-control li:hover { + background-color: #639510; +} .NB-menu-manage .NB-menu-manage-controls .segmented-control li.NB-active { color: white; + background-color: transparent; } - /* ==================== */ /* = Statistics Modal = */ /* ==================== */ diff --git a/media/js/newsblur/reader/reader.js b/media/js/newsblur/reader/reader.js index 8fd0f5daa..238d2b2fa 100644 --- a/media/js/newsblur/reader/reader.js +++ b/media/js/newsblur/reader/reader.js @@ -2333,28 +2333,24 @@ 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') && $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-exception' }, [ + (feed.get('has_exception') && $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-exception' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Fix this misbehaving site') ])), (feed.get('has_exception') && $.make('li', { className: 'NB-menu-separator-inverse' })), - (feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-mark-read NB-menu-manage-feed-mark-read' }, [ + (feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-feed-mark-read' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read') ])), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-reload' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-reload' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Insta-fetch stories') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-stats' }, [ - $.make('div', { className: 'NB-menu-manage-image' }), - $.make('div', { className: 'NB-menu-manage-title' }, 'Statistics') - ]), $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-controls NB-menu-manage-controls-feed' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-controls NB-menu-manage-controls-feed' }, [ $.make('ul', { className: 'segmented-control NB-menu-manage-view-setting-order' }, [ - $.make('li', { className: 'NB-view-setting-order-oldest' }, 'Oldest'), - $.make('li', { className: 'NB-view-setting-order-newest NB-active' }, 'Newest first') + $.make('li', { className: 'NB-view-setting-order-newest NB-active' }, 'Newest first'), + $.make('li', { className: 'NB-view-setting-order-oldest' }, 'Oldest') ]), $.make('ul', { className: 'segmented-control NB-menu-manage-view-setting-readfilter' }, [ $.make('li', { className: 'NB-view-setting-readfilter-all NB-active' }, 'All stories'), @@ -2362,48 +2358,52 @@ ]) ]), $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-train' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-stats' }, [ + $.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-train' }, [ $.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' }), - // $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-recommend' }, [ + // $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-recommend' }, [ // $.make('div', { className: 'NB-menu-manage-image' }), // $.make('div', { className: 'NB-menu-manage-title' }, 'Recommend this site') // ]), // $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-settings' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-settings' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Site settings') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-move NB-menu-manage-feed-move' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-move NB-menu-manage-feed-move' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Move to folder') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-confirm NB-menu-manage-feed-move-confirm NB-modal-submit' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-feed-move-confirm NB-modal-submit' }, [ $.make('div', { className: 'NB-menu-manage-confirm-position'}, [ $.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-add-folders' }, NEWSBLUR.utils.make_folders(this.model)) ]) ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-rename NB-menu-manage-feed-rename' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-rename NB-menu-manage-feed-rename' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Rename this site') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-confirm NB-menu-manage-feed-rename-confirm NB-modal-submit' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-feed-rename-confirm NB-modal-submit' }, [ $.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', value: feed.get('feed_title') }) ]) ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete NB-menu-manage-feed-delete' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-feed-delete' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Delete this site') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete-confirm NB-menu-manage-feed-delete-confirm' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-feed-delete-confirm' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?') ]) @@ -2421,29 +2421,25 @@ 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') && $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-exception' }, [ + (feed.get('has_exception') && $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-exception' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Fix this misbehaving site') ])), (feed.get('has_exception') && $.make('li', { className: 'NB-menu-separator-inverse' })), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-social-profile' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-social-profile' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'View profile') ]), - $.make('li', { className: 'NB-menu-separator' }), - (feed.get('exception_type') != 'feed' && $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-mark-read NB-menu-manage-feed-mark-read' }, [ + (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' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read') ])), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-stats' }, [ - $.make('div', { className: 'NB-menu-manage-image' }), - $.make('div', { className: 'NB-menu-manage-title' }, 'Statistics') - ]), $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-controls NB-menu-manage-controls-feed' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-controls NB-menu-manage-controls-feed' }, [ $.make('ul', { className: 'segmented-control NB-menu-manage-view-setting-order' }, [ - $.make('li', { className: 'NB-view-setting-order-oldest' }, 'Oldest'), - $.make('li', { className: 'NB-view-setting-order-newest NB-active' }, 'Newest first') + $.make('li', { className: 'NB-view-setting-order-newest NB-active' }, 'Newest first'), + $.make('li', { className: 'NB-view-setting-order-oldest' }, 'Oldest') ]), $.make('ul', { className: 'segmented-control NB-menu-manage-view-setting-readfilter' }, [ $.make('li', { className: 'NB-view-setting-readfilter-all NB-active' }, 'All stories'), @@ -2451,21 +2447,25 @@ ]) ]), $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-train' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-stats' }, [ + $.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-train' }, [ $.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' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-settings' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-feed-settings' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Site settings') ]), - (feed.get('user_id') != NEWSBLUR.Globals.user_id && $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete NB-menu-manage-socialfeed-delete' }, [ + (feed.get('user_id') != NEWSBLUR.Globals.user_id && $.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-socialfeed-delete' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Unfollow') ])), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete-confirm NB-menu-manage-socialfeed-delete-confirm' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-socialfeed-delete-confirm' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Really unfollow?') ]) @@ -2479,49 +2479,49 @@ } 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-manage-feed NB-menu-manage-mark-read NB-menu-manage-folder-mark-read' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-mark-read NB-menu-manage-folder-mark-read' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Mark folder as read') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-folder-subscribe' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-folder-subscribe' }, [ $.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-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-controls NB-menu-manage-controls-folder' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-controls NB-menu-manage-controls-folder' }, [ $.make('ul', { className: 'segmented-control NB-menu-manage-view-setting-order' }, [ $.make('li', { className: 'NB-view-setting-order-oldest' }, 'Oldest'), $.make('li', { className: 'NB-view-setting-order-newest NB-active' }, 'Newest first') ]) ]), $.make('li', { className: 'NB-menu-separator' }), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-move NB-menu-manage-folder-move' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-move NB-menu-manage-folder-move' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Move to folder') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-confirm NB-menu-manage-folder-move-confirm NB-modal-submit' }, [ + $.make('li', { className: 'NB-menu-subitem NB-menu-manage-confirm NB-menu-manage-folder-move-confirm NB-modal-submit' }, [ $.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(this.model)) ]) ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-rename NB-menu-manage-folder-rename' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-rename NB-menu-manage-folder-rename' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Rename this folder') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-confirm NB-menu-manage-folder-rename-confirm NB-modal-submit' }, [ + $.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', value: feed_id }) ]) ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete NB-menu-manage-folder-delete' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-delete NB-menu-manage-folder-delete' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Delete this folder') ]), - $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-delete-confirm NB-menu-manage-folder-delete-confirm' }, [ + $.make('li', { className: 'NB-menu-item NB-menu-manage-delete-confirm NB-menu-manage-folder-delete-confirm' }, [ $.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?') ])