mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Fixing feed exceptions modal to actually allow feeds to update. Also adding stub for keyboard shortcuts and new preferences.
This commit is contained in:
parent
50ca857c3e
commit
3809c65206
6 changed files with 138 additions and 7 deletions
|
@ -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}
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
|
@ -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');
|
||||
|
|
83
media/js/newsblur/reader_keyboard.js
Normal file
83
media/js/newsblur/reader_keyboard.js
Normal 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();
|
||||
});
|
||||
}
|
||||
|
||||
};
|
|
@ -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 ',
|
||||
|
|
|
@ -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',
|
||||
),
|
||||
|
|
Loading…
Add table
Reference in a new issue