Fixing feed exceptions modal to actually allow feeds to update. Also adding stub for keyboard shortcuts and new preferences.

This commit is contained in:
Samuel Clay 2010-10-10 23:36:09 -04:00
parent 50ca857c3e
commit 3809c65206
6 changed files with 138 additions and 7 deletions

View file

@ -72,16 +72,21 @@ def exception_change_feed_address(request):
feed.fetched_once = False
feed.feed_address = feed_address
feed.next_scheduled_update = datetime.datetime.now()
retry_feed = feed
try:
feed.save()
except IntegrityError:
original_feed = Feed.objects.get(feed_address=feed_address)
retry_feed = original_feed
original_feed.next_scheduled_update = datetime.datetime.now()
original_feed.has_feed_exception = False
original_feed.active = True
original_feed.save()
merge_feeds(original_feed.pk, feed.pk)
logging.info(" ---> [%s] Fixing feed exception by address: %s" % (request.user, retry_feed.feed_address))
retry_feed.update()
return {'code': 1}
@ajax_login_required
@ -97,6 +102,7 @@ def exception_change_feed_link(request):
# This Forbidden-403 throws an error, which sounds pretty good to me right now
return HttpResponseForbidden()
retry_feed = feed
feed_address = feedfinder.feed(feed_link)
if feed_address:
code = 1
@ -110,12 +116,16 @@ def exception_change_feed_link(request):
feed.save()
except IntegrityError:
original_feed = Feed.objects.get(feed_address=feed_address)
retry_feed = original_feed
original_feed.next_scheduled_update = datetime.datetime.now()
original_feed.has_page_exception = False
original_feed.active = True
original_feed.save()
merge_feeds(original_feed.pk, feed.pk)
logging.info(" ---> [%s] Fixing feed exception by link: %s" % (request.user, retry_feed.feed_link))
retry_feed.update()
return {'code': code}

View file

@ -2767,6 +2767,9 @@ background: transparent;
.NB-menu-manage .NB-menu-manage-mark-read .NB-menu-manage-image {
background: transparent url('../img/icons/silk/cut.png') no-repeat 0 0;
}
.NB-menu-manage .NB-menu-manage-keyboard .NB-menu-manage-image {
background: transparent url('../img/icons/silk/keyboard.png') no-repeat 0 -1px;
}
.NB-menu-manage .NB-menu-manage-feed-exception .NB-menu-manage-image {
background: transparent url('../img/icons/silk/exclamation.png') no-repeat 0 -1px;
}
@ -2783,10 +2786,10 @@ background: transparent;
}
.NB-menu-manage .NB-menu-manage-site-mark-read .NB-menu-manage-image {
background: transparent url('../img/icons/silk/control_fastforward_blue.png') no-repeat 0 0;
background: transparent url('../img/icons/silk/control_fastforward_blue.png') no-repeat 0 -1px;
}
.NB-menu-manage .NB-menu-manage-trainer .NB-menu-manage-image {
background: transparent url('../img/icons/silk/bricks.png') no-repeat 0 0;
background: transparent url('../img/icons/silk/bricks.png') no-repeat 0 -1px;
}
.NB-menu-manage .NB-menu-manage-preferences .NB-menu-manage-image {
background: transparent url('../img/icons/silk/color_wheel.png') no-repeat 0 0;

View file

@ -2216,10 +2216,14 @@
NEWSBLUR.manage_feed = new NEWSBLUR.ReaderManageFeed(feed_id);
},
open_mark_read_modal: function() {
NEWSBLUR.mark_read = new NEWSBLUR.ReaderMarkRead();
},
open_keyboard_shortcuts_modal: function() {
NEWSBLUR.keyboard = new NEWSBLUR.ReaderKeyboard();
},
open_preferences_modal: function() {
NEWSBLUR.preferences = new NEWSBLUR.ReaderPreferences();
@ -2241,8 +2245,9 @@
$feed.addClass('NB-feed-unfetched').removeClass('NB-feed-exception');
this.model.save_exception_retry(feed_id, function() {
self.force_feeds_refresh(function() {
$feed.removeClass('NB-feed-unfetched');
self.force_feeds_refresh(function(feeds) {
var $new_feed = self.make_feed_title_line(feeds[feed_id]);
$feed.replaceWith($new_feed);
if (self.active_feed == feed_id) {
self.open_feed(feed_id, null, true);
}
@ -2259,7 +2264,12 @@
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('span', { className: 'NB-menu-manage-title' }, "Manage NewsBlur")
]).corner('tl tr 8px'),
$.make('li', { className: 'NB-menu-separator' }),
$.make('li', { className: 'NB-menu-separator' }),
$.make('li', { className: 'NB-menu-manage-keyboard' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Keyboard shortcuts')
]),
$.make('li', { className: 'NB-menu-separator' }),
$.make('li', { className: 'NB-menu-manage-mark-read NB-menu-manage-site-mark-read' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Mark everything as read'),
@ -2740,7 +2750,7 @@
var feeds = this.model.feeds;
if (this.cache.refresh_callback && $.isFunction(this.cache.refresh_callback)) {
this.cache.refresh_callback();
this.cache.refresh_callback(feeds);
delete this.cache.refresh_callback;
}
@ -3399,6 +3409,12 @@
self.open_mark_read_modal();
}
});
$.targetIs(e, { tagSelector: '.NB-menu-manage-keyboard' }, function($t, $p){
e.preventDefault();
if (!$t.hasClass('NB-disabled')) {
self.open_keyboard_shortcuts_modal();
}
});
$.targetIs(e, { tagSelector: '.NB-menu-manage-feed-exception' }, function($t, $p){
e.preventDefault();
var feed_id = $t.parents('.NB-menu-manage').data('feed_id');

View file

@ -0,0 +1,83 @@
NEWSBLUR.ReaderKeyboard = function(options) {
var defaults = {};
this.options = $.extend({}, defaults, options);
this.runner();
};
NEWSBLUR.ReaderKeyboard.prototype = {
runner: function() {
this.make_modal();
this.handle_cancel();
this.open_modal();
this.$modal.bind('click', $.rescope(this.handle_click, this));
},
make_modal: function() {
var self = this;
this.$modal = $.make('div', { className: 'NB-modal-keyboard NB-modal' }, [
$.make('h2', { className: 'NB-modal-title' }, 'Keyboard shortcuts'),
$.make('div', { className: 'NB-keyboard-group' }, [
$.make('div', { className: 'NB-keyboard-shortcut' }, [
$.make('div', { className: 'NB-keyboard-shortcut-key' }, 'j'),
$.make('div', { className: 'NB-keyboard-shortcut-explanation' }, 'Next story')
])
])
]);
},
open_modal: function() {
var self = this;
this.$modal.modal({
'minWidth': 600,
'maxWidth': 600,
'overlayClose': true,
'onOpen': function (dialog) {
dialog.overlay.fadeIn(200, function () {
dialog.container.fadeIn(200);
dialog.data.fadeIn(200);
});
},
'onShow': function(dialog) {
$('#simplemodal-container').corner('6px');
},
'onClose': function(dialog) {
dialog.data.hide().empty().remove();
dialog.container.hide().empty().remove();
dialog.overlay.fadeOut(200, function() {
dialog.overlay.empty().remove();
$.modal.close();
});
$('.NB-modal-holder').empty().remove();
}
});
},
handle_cancel: function() {
var $cancel = $('.NB-modal-cancel', this.$modal);
$cancel.click(function(e) {
e.preventDefault();
$.modal.close();
});
},
// ===========
// = Actions =
// ===========
handle_click: function(elem, e) {
var self = this;
$.targetIs(e, { tagSelector: '.NB-add-url-submit' }, function($t, $p) {
e.preventDefault();
self.save_add_url();
});
}
};

View file

@ -1,3 +1,7 @@
// Preferences:
// - Feed sort order
// - New window behavior
NEWSBLUR.ReaderPreferences = function(options) {
var defaults = {};
@ -23,6 +27,20 @@ NEWSBLUR.ReaderPreferences.prototype = {
this.$modal = $.make('div', { className: 'NB-modal-preferences NB-modal' }, [
$.make('h2', { className: 'NB-modal-title' }, 'Preferences'),
$.make('form', { className: 'NB-preferences-form' }, [
$.make('div', { className: 'NB-fieldset NB-preference' }, [
$.make('h5', [
'Interaction'
]),
$.make('div', { className: 'NB-fieldset-fields' }, [
$.make('div', [
$.make('label', { 'for': 'NB-add-folder' }, [
$.make('div', { className: 'NB-folder-icon' })
]),
$.make('input', { type: 'radio', id: 'NB-preference-window-same', className: 'NB-preference-radio', name: 'new_window' }),
$.make('input', { type: 'radio', id: 'NB-preference-window-new', className: 'NB-preference-radio', name: 'new_window' })
])
])
]),
$.make('div', { className: 'NB-modal-submit' }, [
$.make('input', { type: 'submit', disabled: 'true', className: 'NB-disabled', value: 'Check what you like above...' }),
' or ',

View file

@ -118,6 +118,7 @@ COMPRESS_JS = {
'js/newsblur/reader_preferences.js',
'js/newsblur/reader_statistics.js',
'js/newsblur/reader_feed_exception.js',
'js/newsblur/reader_keyboard.js',
'js/newsblur/about.js',
'js/newsblur/faq.js',
),