Folder/feed action menus. All that's needed is positioning when too close to the bottom of the screen.

This commit is contained in:
Samuel Clay 2010-09-12 13:50:27 -04:00
parent 2b2305d08f
commit 5866aefe74
4 changed files with 318 additions and 152 deletions

View file

@ -472,12 +472,18 @@ a img {
top: -1px; top: -1px;
width: 20px; width: 20px;
height: 22px; height: 22px;
background: transparent url('../img/icons/silk/bullet_arrow_right.png') no-repeat 0px 3px; background: transparent url('../img/icons/silk/bullet_arrow_right.png') no-repeat 3px 4px;
}
#feed_list .folder_title .NB-feedlist-manage-icon {
background-position: 3px 3px;
} }
#feed_list .feed .NB-feedlist-manage-icon:hover, #feed_list .feed .NB-feedlist-manage-icon:hover,
#feed_list .folder_title .NB-feedlist-manage-icon:hover { #feed_list .folder_title .NB-feedlist-manage-icon:hover {
background: transparent url('../img/icons/silk/bullet_arrow_down.png') no-repeat -1px 3px; background: transparent url('../img/icons/silk/bullet_arrow_down.png') no-repeat 3px 4px;
}
#feed_list .folder_title .NB-feedlist-manage-icon:hover {
background-position: 3px 3px;
} }
#feed_list .feed.NB-toplevel .NB-feedlist-manage-icon, #feed_list .feed.NB-toplevel .NB-feedlist-manage-icon,
@ -485,14 +491,15 @@ a img {
left: 0; left: 0;
opacity: 1; opacity: 1;
display: none; display: none;
background-position: 4px 3px !important; background-position: 5px 4px;
}
#feed_list .folder_title.NB-toplevel .NB-feedlist-manage-icon {
background-position: 5px 3px;
} }
#feed_list .feed.NB-hover .NB-feedlist-manage-icon, #feed_list .feed.NB-hover .NB-feedlist-manage-icon,
#feed_list .folder_title.NB-hover .NB-feedlist-manage-icon { #feed_list .folder_title.NB-hover .NB-feedlist-manage-icon {
opacity: 1; opacity: 1;
display: block; display: block;
background-position: 3px 3px;
} }
#feed_list .feed.NB-hover.NB-toplevel .feed_favicon { #feed_list .feed.NB-hover.NB-toplevel .feed_favicon {
@ -502,6 +509,16 @@ a img {
background: none; background: none;
} }
#feed_list .feed.NB-manage-menu-showing > .NB-feedlist-manage-icon,
#feed_list .folder.NB-manage-menu-showing > .folder_title .NB-feedlist-manage-icon {
background-color: #F0FFF0;
background-image: url('../img/icons/silk/bullet_arrow_down.png');
-moz-border-radius: 4px;
border-radius: 4px;
display: block;
opacity: 1;
}
#feed_list .feed_counts { #feed_list .feed_counts {
position: absolute; position: absolute;
right: 2px; right: 2px;
@ -2557,9 +2574,7 @@ background: transparent;
position: absolute; position: absolute;
display: none; display: none;
opacity: 0; opacity: 0;
bottom: 30px; width: 260px;
left: 40px;
width: 300px;
padding: 0; padding: 0;
margin: 0; margin: 0;
background-color: #F0FFF0; background-color: #F0FFF0;
@ -2583,6 +2598,19 @@ background: transparent;
.NB-menu-manage.NB-menu-manage-notop { .NB-menu-manage.NB-menu-manage-notop {
} }
.NB-menu-manage-container .NB-menu-manage-arrow {
width: 19px;
height: 20px;
background: #F0FFF0 url('../img/icons/silk/bullet_arrow_down.png') no-repeat 2px 2px;
border-top: 1px solid #8ABCBE;
border-left: 1px solid #8ABCBE;
border-right: 1px solid #6A9C9E;
z-index: 10;
position: absolute;
top: -21px;
left: -1px;
}
.NB-menu-manage li { .NB-menu-manage li {
margin: 0 0 0 0; margin: 0 0 0 0;
padding: 5px 8px 5px 36px; padding: 5px 8px 5px 36px;
@ -2599,8 +2627,8 @@ background: transparent;
} }
.NB-menu-manage li.NB-menu-separator { .NB-menu-manage li.NB-menu-separator {
background-color: #E2E8D8; background-color: #72924A;
border-bottom: 1px solid #72924A; border-bottom: 1px solid #E2E8D8;
padding: 0; padding: 0;
height: 1px; height: 1px;
} }
@ -2622,8 +2650,8 @@ background: transparent;
} }
.NB-menu-manage .NB-menu-manage-title { .NB-menu-manage .NB-menu-manage-title {
font-size: 16px; font-size: 14px;
text-shadow: 0 1px 0 #FFF; text-shadow: 0 1px 0 #F0F0F0;
} }
.NB-menu-manage li:hover:not(.NB-disabled) .NB-menu-manage-title { .NB-menu-manage li:hover:not(.NB-disabled) .NB-menu-manage-title {
@ -2636,7 +2664,7 @@ background: transparent;
} }
.NB-menu-manage .NB-menu-manage-subtitle { .NB-menu-manage .NB-menu-manage-subtitle {
font-size: 12px; font-size: 11px;
color: #718C7B; color: #718C7B;
} }
@ -2696,24 +2724,12 @@ background: transparent;
background: transparent url('../img/icons/silk/cut.png') no-repeat 0 0; background: transparent url('../img/icons/silk/cut.png') no-repeat 0 0;
} }
.NB-menu-manage .NB-menu-manage-feed-delete { .NB-menu-manage .NB-menu-manage-feed-delete .NB-menu-manage-image {
background: transparent url('../img/icons/silk/bin_closed.png') no-repeat 0 0; background: transparent url('../img/icons/silk/bin_closed.png') no-repeat 0 0;
float: right;
width: 16px;
height: 16px;
margin: 0 4px 0 0;
cursor: pointer;
visibility: hidden;
} }
.NB-menu-manage .NB-menu-manage-feed-info:hover .NB-menu-manage-feed-delete { .NB-menu-manage .NB-menu-manage-feed-delete.NB-menu-manage-feed-delete-cancel .NB-menu-manage-image {
visibility: visible;
}
.NB-menu-manage .NB-menu-manage-feed-delete.NB-menu-manage-feed-delete-cancel {
background: transparent url('../img/icons/silk/arrow_rotate_clockwise.png') no-repeat 0 0; background: transparent url('../img/icons/silk/arrow_rotate_clockwise.png') no-repeat 0 0;
display: block;
visibility: visible;
} }
.NB-menu-manage .NB-menu-manage-feed-delete-confirm .NB-menu-manage-image { .NB-menu-manage .NB-menu-manage-feed-delete-confirm .NB-menu-manage-image {
background: transparent url('../img/icons/silk/exclamation.png') no-repeat 0 1px; background: transparent url('../img/icons/silk/exclamation.png') no-repeat 0 1px;
font-weight: bold; font-weight: bold;

View file

@ -42,6 +42,88 @@ NEWSBLUR.log = function(msg) {
// NEWSBLUR.log(['isScrollVisible', docViewTop, docViewBottom, docOffset, elemTop, elemBottom]); // NEWSBLUR.log(['isScrollVisible', docViewTop, docViewBottom, docOffset, elemTop, elemBottom]);
return ((elemTop >= docViewTop) && (elemBottom <= docViewBottom)); return ((elemTop >= docViewTop) && (elemBottom <= docViewBottom));
},
// Align an element relative to a target element's coordinates. Forces the
// element to be absolutely positioned. Element must be visible.
// Position string format is: "top -right".
// You can pass an optional offset object with top and left offsets specified.
align : function(target, pos, offset) {
var el = this;
pos = pos || '';
offset = offset || {};
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop || 0;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft || 0;
var clientWidth = document.documentElement.clientWidth;
var clientHeight = document.documentElement.clientHeight;
if (target == window) {
var b = {
left : scrollLeft,
top : scrollTop,
width : $(window).width(),
height : $(window).height()
};
} else {
target = $(target);
var targOff = target.offset();
var b = {
left : targOff.left,
top : targOff.top,
width : target.innerWidth(),
height : target.innerHeight()
};
}
var elb = {
width : el.innerWidth(),
height : el.innerHeight()
};
var left, top;
if (pos.indexOf('-left') >= 0) {
left = b.left;
} else if (pos.indexOf('left') >= 0) {
left = b.left - elb.width;
} else if (pos.indexOf('-right') >= 0) {
left = b.left + b.width - elb.width;
} else if (pos.indexOf('right') >= 0) {
left = b.left + b.width;
} else { // Centered.
left = b.left + (b.width - elb.width) / 2;
}
if (pos.indexOf('-top') >= 0) {
top = b.top;
} else if (pos.indexOf('top') >= 0) {
top = b.top - elb.height;
} else if (pos.indexOf('-bottom') >= 0) {
top = b.top + b.height - elb.height;
} else if (pos.indexOf('bottom') >= 0) {
top = b.top + b.height;
} else { // Centered.
top = b.top + (b.height - elb.height) / 2;
}
var constrain = (pos.indexOf('no-constraint') >= 0) ? false : true;
left += offset.left || 0;
top += offset.top || 0;
if (constrain) {
left = Math.max(scrollLeft, Math.min(left, scrollLeft + clientWidth - elb.width));
top = Math.max(scrollTop, Math.min(top, scrollTop + clientHeight - elb.height));
}
// var offParent;
// if (offParent = el.offsetParent()) {
// left -= offParent.offset().left;
// top -= offParent.offset().top;
// }
$(el).css({position : 'absolute', left : left + 'px', top : top + 'px'});
return el;
} }
}); });

View file

@ -937,10 +937,6 @@
}); });
}, },
open_feedlist_manage_menu: function($feed, type) {
NEWSBLUR.log(['Showing', $feed, $feed.data('feed_id'), type]);
},
// =============================== // ===============================
// = Feed bar - Individual Feeds = // = Feed bar - Individual Feeds =
// =============================== // ===============================
@ -958,7 +954,8 @@
'iframe_fetching_story_locations': false, 'iframe_fetching_story_locations': false,
'story_titles_loaded': false, 'story_titles_loaded': false,
'iframe_prevented_from_loading': false, 'iframe_prevented_from_loading': false,
'pause_feed_refreshing': false 'pause_feed_refreshing': false,
'feed_list_showing_manage_menu': false
}); });
$.extend(this.cache, { $.extend(this.cache, {
@ -1805,8 +1802,8 @@
} }
}, },
open_feed_intelligence_modal: function(score) { open_feed_intelligence_modal: function(score, feed_id) {
var feed_id = this.active_feed; feed_id = feed_id || this.active_feed;
NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierFeed(feed_id, {'score': score}); NEWSBLUR.classifier = new NEWSBLUR.ReaderClassifierFeed(feed_id, {'score': score});
}, },
@ -2118,8 +2115,8 @@
NEWSBLUR.add_feed = new NEWSBLUR.ReaderAddFeed(); NEWSBLUR.add_feed = new NEWSBLUR.ReaderAddFeed();
}, },
open_manage_feed_modal: function() { open_manage_feed_modal: function(feed_id) {
var feed_id = this.active_feed; feed_id = feed_id || this.active_feed;
NEWSBLUR.manage_feed = new NEWSBLUR.ReaderManageFeed(feed_id); NEWSBLUR.manage_feed = new NEWSBLUR.ReaderManageFeed(feed_id);
}, },
@ -2136,144 +2133,193 @@
NEWSBLUR.feed_exception = new NEWSBLUR.ReaderFeedException(feed_id); NEWSBLUR.feed_exception = new NEWSBLUR.ReaderFeedException(feed_id);
}, },
open_feed_statistics_modal: function() { open_feed_statistics_modal: function(feed_id) {
var feed_id = this.active_feed; feed_id = feed_id || this.active_feed;
NEWSBLUR.statistics = new NEWSBLUR.ReaderStatistics(feed_id); NEWSBLUR.statistics = new NEWSBLUR.ReaderStatistics(feed_id);
}, },
make_manage_menu: function() { make_manage_menu: function(type, feed_id) {
var feed_id = this.active_feed; var $manage_menu;
var feed = this.model.get_feed(feed_id);
var $manage_menu = $.make('ul', { className: 'NB-menu-manage' }, [ if (type == 'site') {
$.make('li', { className: 'NB-menu-manage-site-info' }, [ $manage_menu = $.make('ul', { className: 'NB-menu-manage' }, [
$.make('div', { className: 'NB-menu-manage-image' }), $.make('li', { className: 'NB-menu-manage-site-info' }, [
$.make('span', { className: 'feed_title' }, "NewsBlur") $.make('div', { className: 'NB-menu-manage-image' }),
]).corner('tl tr 8px'), $.make('span', { className: 'feed_title' }, "Manage NewsBlur")
$.make('li', { className: 'NB-menu-separator' }), ]).corner('tl tr 8px'),
$.make('li', { className: 'NB-menu-manage-mark-read' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark all feeds as read'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Choose how many days back.')
]),
$.make('li', { className: 'NB-menu-manage-trainer' }, [
$.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.')
]),
$.make('li', { className: 'NB-menu-manage-preferences' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Preferences'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Defaults and options.')
])
]);
if (feed_id) {
var $feed_specific = [
$.make('li', { className: 'NB-menu-separator-top' }),
$.make('li', { className: 'NB-menu-manage-feed-info' }, [
$.make('div', { className: 'NB-menu-manage-feed-delete', title: 'Delete this site' }),
$.make('img', { className: 'feed_favicon', src: this.google_favicon_url + feed.feed_link }),
$.make('span', { className: 'feed_title' }, feed.feed_title)
]),
$.make('li', { className: 'NB-menu-separator' }), $.make('li', { className: 'NB-menu-separator' }),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-delete-confirm' }, [ $.make('li', { className: 'NB-menu-manage-mark-read' }, [
$.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?') $.make('div', { className: 'NB-menu-manage-title' }, 'Mark all feeds as read'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Choose how many days back.')
]), ]),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-train' }, [ $.make('li', { className: 'NB-menu-manage-trainer' }, [
$.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Site intelligence trainer'), $.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence Trainer'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Choose classifiers for this site.') $.make('div', { className: 'NB-menu-manage-subtitle' }, 'Accurate filters are happy filters.')
]), ]),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-manage' }, [ $.make('li', { className: 'NB-menu-manage-preferences' }, [
$.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Site intelligence manager'), $.make('div', { className: 'NB-menu-manage-title' }, 'Preferences'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'What you like and don\'t like.') $.make('div', { className: 'NB-menu-manage-subtitle' }, 'Defaults and options.')
]), ])
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-stats' }, [ ]);
$.make('div', { className: 'NB-menu-manage-image' }), $manage_menu.addClass('NB-menu-manage-notop');
$.make('div', { className: 'NB-menu-manage-title' }, 'Site statistics'), } else if (type == 'feed') {
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Popularity, load times, history.') $manage_menu = $.make('ul', { className: 'NB-menu-manage' }, [
]),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-mark-read' }, [ $.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-mark-read' }, [
$.make('div', { className: 'NB-menu-manage-image' }), $.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark as read') $.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-feed-train' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence trainer')
]),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-manage' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence manager')
]),
$.make('li', { className: 'NB-menu-separator' }),
$.make('li', { className: 'NB-menu-manage-feed 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-feed-delete-confirm' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?')
]) ])
]; ]);
for (var f in $feed_specific) { $manage_menu.data('feed_id', feed_id);
$manage_menu.append($feed_specific[f]); if (feed_id && this.get_unread_count(true, feed_id) == 0) {
$('.NB-menu-manage-feed-mark-read', $manage_menu).addClass('NB-disabled');
} }
} else { } else if (type == 'folder') {
$manage_menu.addClass('NB-menu-manage-notop'); $manage_menu = $.make('ul', { className: 'NB-menu-manage' }, [
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-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-separator' }),
$.make('li', { className: 'NB-menu-manage-feed NB-menu-manage-feed-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-feed-delete-confirm' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Really delete?')
])
]);
} }
if (feed_id && this.get_unread_count(true) == 0) {
$('.NB-menu-manage-feed-mark-read', $manage_menu).addClass('NB-disabled');
}
return $manage_menu; return $manage_menu;
}, },
show_manage_menu: function() { show_manage_menu: function(type, $item) {
var self = this; var self = this;
var $manage_menu_container = $('.NB-menu-manage-container'); var $manage_menu_container = $('.NB-menu-manage-container');
// NEWSBLUR.log(['show_manage_menu', type, $item, $manage_menu_container.data('item'), $item && $item[0] == $manage_menu_container.data('item')]);
clearTimeout(this.flags.closed_manage_menu); clearTimeout(this.flags.closed_manage_menu);
if ($manage_menu_container.css('opacity') != 0) { // If another menu is open, hide it first.
return this.hide_manage_menu(); // 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);
return;
} else {
this.hide_manage_menu(type);
} }
var $manage_menu = this.make_manage_menu(); // Create menu, size and position it, then attach to the right place.
var feed_id = $item && $item.data('feed_id');
var $manage_menu = this.make_manage_menu(type, feed_id);
$manage_menu_container.empty().append($manage_menu); $manage_menu_container.empty().append($manage_menu);
$manage_menu_container.corner('tl tr 8px'); $manage_menu_container.data('item', $item && $item[0]);
$('.NB-task-manage').parents('.NB-taskbar').css('z-index', 2); $('.NB-task-manage').parents('.NB-taskbar').css('z-index', 2);
$manage_menu_container.css({'display': 'block'}); if (type == 'site') {
// var height = $manage_menu_container.outerHeight(); $manage_menu_container.align($('.NB-task-manage'), '-bottom -left', {
// $manage_menu_container.css({'bottom': '-'+(height+30)+'px', 'left': '40px', 'opacity': 0}); 'top': -32,
$manage_menu_container.animate({ 'left': -2
'opacity': 1 });
}, { $('.NB-task-manage').addClass('NB-hover');
'duration': 350, $manage_menu_container.corner('tl tr 8px');
'easing': 'easeOutQuint', } else if (type == 'feed' || type == 'folder') {
'queue': false, var left = -20;
'complete': function() { if ($item.hasClass("NB-toplevel")) left = 0;
$(document).bind('click.menu', function(e) { $manage_menu_container.align($item, '-top -left', {
self.hide_manage_menu(); 'top': 21,
}); 'left': left
} });
}); $manage_menu_container.corner('tr 8px');
$('.NB-task-manage').addClass('NB-hover'); }
$manage_menu_container.stop().css({'display': 'block', 'opacity': 1});
// Create and position the arrow tab
if (type == 'feed' || type == 'folder') {
var $arrow = $.make('li', { className: 'NB-menu-manage-arrow' });
$arrow.corner('tl tr 5px');
$manage_menu_container.prepend($arrow);
}
// Hide menu on click outside menu.
_.defer(function() {
$(document).bind('click.menu', function(e) {
self.hide_manage_menu(type, $item, false);
});
});
// Hide menu on mouseout (on a delay).
$manage_menu_container.hover(function() { $manage_menu_container.hover(function() {
clearTimeout(self.flags.closed_manage_menu); clearTimeout(self.flags.closed_manage_menu);
}, function() { }, function() {
clearTimeout(self.flags.closed_manage_menu); clearTimeout(self.flags.closed_manage_menu);
self.flags.closed_manage_menu = setTimeout(function() { self.flags.closed_manage_menu = setTimeout(function() {
if (self.flags.closed_manage_menu) { if (self.flags.closed_manage_menu) {
self.hide_manage_menu(); self.hide_manage_menu(type, $item, true);
} }
}, 1000); }, 1000);
}); });
},
// Hide menu on scroll.
hide_manage_menu: function() { this.flags['feed_list_showing_manage_menu'] = true;
var $manage_menu_container = $('.NB-menu-manage-container'); this.$s.$feed_list.unbind('scroll.manage_menu').bind('scroll.manage_menu', function(e) {
var height = $manage_menu_container.outerHeight(); if (self.flags['feed_list_showing_manage_menu']) {
self.hide_manage_menu(type, $item, true);
clearTimeout(this.flags.closed_manage_menu); } else {
$(document).unbind('click.menu'); self.$s.$feed_list.unbind('scroll.manage_menu');
$manage_menu_container.animate({
'opacity': 0
}, {
'duration': 350,
'queue': false,
'complete': function() {
$manage_menu_container.css({'display': 'none'});
} }
}); });
},
hide_manage_menu: function(type, $item, animate) {
var $manage_menu_container = $('.NB-menu-manage-container');
var height = $manage_menu_container.outerHeight();
// 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');
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'); $('.NB-task-manage').removeClass('NB-hover');
}, },
@ -2363,14 +2409,15 @@
: 'neutral'); : 'neutral');
}, },
get_unread_count: function(visible_only, unread_view_name) { get_unread_count: function(visible_only, feed_id) {
var total = 0; var total = 0;
var feed = this.model.get_feed(this.active_feed); feed_id = feed_id || this.active_feed;
var feed = this.model.get_feed(feed_id);
if (!visible_only) { if (!visible_only) {
total = feed.ng + feed.nt + feed.ps; total = feed.ng + feed.nt + feed.ps;
} else { } else {
unread_view_name = unread_view_name || this.get_unread_view_name(); var unread_view_name = this.get_unread_view_name();
if (unread_view_name == 'positive') { if (unread_view_name == 'positive') {
total = feed.ps; total = feed.ps;
} else if (unread_view_name == 'neutral') { } else if (unread_view_name == 'neutral') {
@ -2978,20 +3025,20 @@
handle_clicks: function(elem, e) { handle_clicks: function(elem, e) {
var self = this; var self = this;
var stopPropagation = false;
// var start = (new Date().getMilliseconds()); // var start = (new Date().getMilliseconds());
// = Feeds = // Feeds ==========================================================
var stopPropagation = false;
$.targetIs(e, { tagSelector: '#feed_list .NB-feedlist-manage-icon' }, function($t, $p) { $.targetIs(e, { tagSelector: '#feed_list .NB-feedlist-manage-icon' }, function($t, $p) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
if (!self.flags['sorting_feed']) { if (!self.flags['sorting_feed']) {
stopPropagation = true; stopPropagation = true;
if ($t.parent().hasClass('feed')) { if ($t.parent().hasClass('feed')) {
self.open_feedlist_manage_menu($t.parents('.feed').eq(0), 'feed'); self.show_manage_menu('feed', $t.parents('.feed').eq(0));
} else { } else {
self.open_feedlist_manage_menu($t.parents('.folder').eq(0), 'folder'); self.show_manage_menu('folder', $t.parents('.folder').eq(0));
} }
} }
}); });
@ -3001,7 +3048,7 @@
e.stopPropagation(); e.stopPropagation();
if (!self.flags['sorting_feed']) { if (!self.flags['sorting_feed']) {
var feed_id = $t.data('feed_id'); var feed_id = $t.data('feed_id');
exception = true; stopPropagation = true;
self.open_feed_exception_modal(feed_id, $t); self.open_feed_exception_modal(feed_id, $t);
} }
}); });
@ -3036,7 +3083,7 @@
} }
}); });
// = Feed Bar = // = Feed Bar =====================================================
$.targetIs(e, { tagSelector: '.NB-feed-like' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-feed-like' }, function($t, $p){
e.preventDefault(); e.preventDefault();
@ -3047,7 +3094,7 @@
self.open_feed_intelligence_modal(-1); self.open_feed_intelligence_modal(-1);
}); });
// = Stories = // = Stories ======================================================
var story_prevent_bubbling = false; var story_prevent_bubbling = false;
$.targetIs(e, { tagSelector: '.NB-story-like' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-story-like' }, function($t, $p){
@ -3090,7 +3137,7 @@
self.mark_story_as_read(story_id, $t); self.mark_story_as_read(story_id, $t);
}); });
// = Taskbar = // = Taskbar ======================================================
$.targetIs(e, { tagSelector: '.NB-task-add' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-task-add' }, function($t, $p){
e.preventDefault(); e.preventDefault();
@ -3099,19 +3146,21 @@
$.targetIs(e, { tagSelector: '.NB-task-manage' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-task-manage' }, function($t, $p){
e.preventDefault(); e.preventDefault();
if (!$t.hasClass('NB-disabled')) { if (!$t.hasClass('NB-disabled')) {
self.show_manage_menu($t); self.show_manage_menu('site', $t);
} }
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-manage' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-manage' }, function($t, $p){
e.preventDefault(); e.preventDefault();
if (!$t.hasClass('NB-disabled')) { if (!$t.hasClass('NB-disabled')) {
self.open_manage_feed_modal(); var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
self.open_manage_feed_modal(feed_id);
} }
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-train' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-train' }, function($t, $p){
e.preventDefault(); e.preventDefault();
if (!$t.hasClass('NB-disabled')) { if (!$t.hasClass('NB-disabled')) {
self.open_feed_intelligence_modal(1); var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
self.open_feed_intelligence_modal(1, feed_id);
} }
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-trainer' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-trainer' }, function($t, $p){
@ -3123,7 +3172,9 @@
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-stats' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-stats' }, function($t, $p){
e.preventDefault(); e.preventDefault();
if (!$t.hasClass('NB-disabled')) { if (!$t.hasClass('NB-disabled')) {
self.open_feed_statistics_modal(); 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-delete' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-delete' }, function($t, $p){
@ -3137,11 +3188,13 @@
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-delete-confirm' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-delete-confirm' }, function($t, $p){
e.preventDefault(); e.preventDefault();
self.manage_menu_delete_feed(self.active_feed); var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
self.manage_menu_delete_feed(feed_id);
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-mark-read' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-feed-mark-read' }, function($t, $p){
e.preventDefault(); e.preventDefault();
self.mark_feed_as_read(self.active_feed); var feed_id = $t.parents('.NB-menu-manage').data('feed_id');
self.mark_feed_as_read(feed_id);
}); });
$.targetIs(e, { tagSelector: '.NB-menu-manage-mark-read' }, function($t, $p){ $.targetIs(e, { tagSelector: '.NB-menu-manage-mark-read' }, function($t, $p){
e.preventDefault(); e.preventDefault();
@ -3189,7 +3242,8 @@
self.show_splash_page(); self.show_splash_page();
}); });
// = One-offs = // = One-offs =====================================================
var clicked = false; var clicked = false;
$.targetIs(e, { tagSelector: '#mouse-indicator' }, function($t, $p){ $.targetIs(e, { tagSelector: '#mouse-indicator' }, function($t, $p){
e.preventDefault(); e.preventDefault();
@ -3239,6 +3293,20 @@
handle_dblclicks: function(elem, e) { handle_dblclicks: function(elem, e) {
var self = this; var self = this;
var stopPropagation = false;
$.targetIs(e, { tagSelector: '#feed_list .NB-feedlist-manage-icon' }, function($t, $p) {
e.preventDefault();
e.stopPropagation();
stopPropagation = true;
});
if (stopPropagation) return;
$.targetIs(e, { tagSelector: '#feed_list .feed.NB-feed-exception' }, function($t, $p){
e.preventDefault();
e.stopPropagation();
exception = true;
});
if (stopPropagation) return;
$.targetIs(e, { tagSelector: '#story_titles .story' }, function($t, $p){ $.targetIs(e, { tagSelector: '#story_titles .story' }, function($t, $p){
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();

View file

@ -156,7 +156,7 @@
<table class="NB-howitworks-page-description"> <table class="NB-howitworks-page-description">
<tr> <tr>
<td> <td>
{% filter typogrify %}Use the iPhone app, available in August.{% endfilter %} {% filter typogrify %}Use the iPhone app, available before January 2011.{% endfilter %}
</td> </td>
</tr> </tr>
</table> </table>