mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Automatically loading intro or chooser dialog based on progress of new user.
This commit is contained in:
parent
cb1bbe25bc
commit
41b68b32eb
7 changed files with 62 additions and 53 deletions
|
@ -151,6 +151,9 @@ class OPMLImporter(Importer):
|
||||||
if self.user.profile.is_premium and not us.active:
|
if self.user.profile.is_premium and not us.active:
|
||||||
us.active = True
|
us.active = True
|
||||||
us.save()
|
us.save()
|
||||||
|
if not us.needs_unread_recalc:
|
||||||
|
us.needs_unread_recalc = True
|
||||||
|
us.save()
|
||||||
folders.append(feed_db.pk)
|
folders.append(feed_db.pk)
|
||||||
return folders
|
return folders
|
||||||
|
|
||||||
|
@ -245,6 +248,9 @@ class GoogleReaderImporter(Importer):
|
||||||
'active': self.user.profile.is_premium,
|
'active': self.user.profile.is_premium,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
if not us.needs_unread_recalc:
|
||||||
|
us.needs_unread_recalc = True
|
||||||
|
us.save()
|
||||||
if not category: category = "Root"
|
if not category: category = "Root"
|
||||||
folders[category].append(feed_db.pk)
|
folders[category].append(feed_db.pk)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
|
|
@ -142,10 +142,10 @@ class Feed(models.Model):
|
||||||
try:
|
try:
|
||||||
super(Feed, self).save(*args, **kwargs)
|
super(Feed, self).save(*args, **kwargs)
|
||||||
return self
|
return self
|
||||||
except IntegrityError, e:
|
except IntegrityError:
|
||||||
duplicate_feed = Feed.objects.filter(feed_address=self.feed_address, feed_link=self.feed_link)
|
duplicate_feed = Feed.objects.filter(feed_address=self.feed_address, feed_link=self.feed_link)
|
||||||
logging.debug("%s: %s" % (self.feed_address, duplicate_feed))
|
logging.debug("%s: %s" % (self.feed_address, duplicate_feed))
|
||||||
logging.debug(' ***> [%-30s] Feed deleted. Could not save: %s' % (unicode(self)[:30], e))
|
logging.debug(' ***> [%-30s] Feed deleted.' % (unicode(self)[:30]))
|
||||||
if duplicate_feed:
|
if duplicate_feed:
|
||||||
merge_feeds(self.pk, duplicate_feed[0].pk)
|
merge_feeds(self.pk, duplicate_feed[0].pk)
|
||||||
return duplicate_feed[0]
|
return duplicate_feed[0]
|
||||||
|
@ -1375,8 +1375,8 @@ def merge_feeds(original_feed_id, duplicate_feed_id, force=False):
|
||||||
|
|
||||||
logging.info(" ---> Feed: [%s - %s] %s - %s" % (original_feed_id, duplicate_feed_id,
|
logging.info(" ---> Feed: [%s - %s] %s - %s" % (original_feed_id, duplicate_feed_id,
|
||||||
original_feed, original_feed.feed_link))
|
original_feed, original_feed.feed_link))
|
||||||
logging.info(" --> %s" % original_feed.feed_address)
|
logging.info(" --> %s / %s" % (original_feed.feed_address, original_feed.feed_link))
|
||||||
logging.info(" --> %s" % duplicate_feed.feed_address)
|
logging.info(" --> %s / %s" % (duplicate_feed.feed_address, duplicate_feed.feed_link))
|
||||||
|
|
||||||
user_subs = UserSubscription.objects.filter(feed=duplicate_feed)
|
user_subs = UserSubscription.objects.filter(feed=duplicate_feed)
|
||||||
for user_sub in user_subs:
|
for user_sub in user_subs:
|
||||||
|
|
|
@ -873,21 +873,16 @@ body.NB-theme-serif #story_pane .NB-feed-story-content {
|
||||||
display: none;
|
display: none;
|
||||||
margin: -2px 0 0;
|
margin: -2px 0 0;
|
||||||
}
|
}
|
||||||
|
#NB-progress .NB-progress-link .NB-modal-submit-button {
|
||||||
#NB-progress .NB-progress-link a {
|
padding: 3px 0;
|
||||||
-moz-box-shadow:1px 1px 1px #202020;
|
font-size: 15px;
|
||||||
-webkit-box-shadow:1px 1px 1px #202020;
|
width: 90%;
|
||||||
box-shadow:1px 1px 1px #202020;
|
margin: 0 auto;
|
||||||
-moz-border-radius:4px;
|
-moz-box-shadow:2px 2px 0px #404040;
|
||||||
|
-webkit-box-shadow:2px 2px 0px #404040;
|
||||||
|
box-shadow:2px 2px 0px #404040;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border:1px solid #606060;
|
border:1px solid #303030;
|
||||||
font-size:12px;
|
|
||||||
margin:0 4px 0;
|
|
||||||
padding:0px 8px;
|
|
||||||
text-decoration:none;
|
|
||||||
text-transform:uppercase;
|
|
||||||
background-color: #217412;
|
|
||||||
color: #FFF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#NB-progress.NB-progress-error {
|
#NB-progress.NB-progress-error {
|
||||||
|
@ -5798,15 +5793,15 @@ background: transparent;
|
||||||
.NB-modal-feedchooser .NB-feedchooser-type {
|
.NB-modal-feedchooser .NB-feedchooser-type {
|
||||||
float: left;
|
float: left;
|
||||||
width: 345px;
|
width: 345px;
|
||||||
margin: 24px 12px 0 0;
|
margin: 0 12px 0 0;
|
||||||
padding: 0 12px 0 0;
|
padding: 0 12px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.NB-modal-feedchooser .NB-feedchooser-type.NB-last {
|
.NB-modal-feedchooser .NB-feedchooser-type.NB-last {
|
||||||
margin: 24px 0 0 0;
|
margin: 0 0 0 0;
|
||||||
padding: 0 0 0 24px;
|
padding: 0 0 0 24px;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
border-left: 1px solid #909090;
|
border-left: 1px solid #B0B0B0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.NB-modal-feedchooser .NB-feedchooser-info {
|
.NB-modal-feedchooser .NB-feedchooser-info {
|
||||||
|
|
|
@ -42,7 +42,8 @@ NEWSBLUR.AssetModel.Reader = function() {
|
||||||
this.starred_count = 0;
|
this.starred_count = 0;
|
||||||
this.read_stories_river_count = 0;
|
this.read_stories_river_count = 0;
|
||||||
this.flags = {
|
this.flags = {
|
||||||
'favicons_fetching': false
|
'favicons_fetching': false,
|
||||||
|
'has_chosen_feeds': false
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -296,6 +297,8 @@ NEWSBLUR.AssetModel.Reader.prototype = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.detect_any_inactive_feeds();
|
||||||
callback();
|
callback();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -307,6 +310,12 @@ NEWSBLUR.AssetModel.Reader.prototype = {
|
||||||
this.make_request('/reader/feeds', data, pre_callback, error_callback, {request_type: 'GET'});
|
this.make_request('/reader/feeds', data, pre_callback, error_callback, {request_type: 'GET'});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
detect_any_inactive_feeds: function() {
|
||||||
|
this.flags['has_chosen_feeds'] = _.any(this.feeds, function(feed) {
|
||||||
|
return feed.active;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
load_feeds_flat: function(callback, error_callback) {
|
load_feeds_flat: function(callback, error_callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var data = {
|
var data = {
|
||||||
|
|
|
@ -1081,7 +1081,6 @@
|
||||||
$feed_list.empty();
|
$feed_list.empty();
|
||||||
|
|
||||||
this.$s.$story_taskbar.css({'display': 'block'});
|
this.$s.$story_taskbar.css({'display': 'block'});
|
||||||
this.flags['has_chosen_feeds'] = this.detect_all_inactive_feeds();
|
|
||||||
var $feeds = this.make_feeds_folder(folders, 0);
|
var $feeds = this.make_feeds_folder(folders, 0);
|
||||||
$feed_list.css({
|
$feed_list.css({
|
||||||
'display': 'block',
|
'display': 'block',
|
||||||
|
@ -1097,15 +1096,10 @@
|
||||||
$('.NB-task-manage').removeClass('NB-disabled');
|
$('.NB-task-manage').removeClass('NB-disabled');
|
||||||
$('.NB-callout-ftux').fadeOut(500);
|
$('.NB-callout-ftux').fadeOut(500);
|
||||||
}
|
}
|
||||||
|
this.open_dialog_after_feeds_loaded();
|
||||||
if (NEWSBLUR.Globals.is_authenticated && this.flags['has_chosen_feeds']) {
|
if (NEWSBLUR.Globals.is_authenticated && this.model.flags['has_chosen_feeds']) {
|
||||||
_.delay(_.bind(this.start_count_unreads_after_import, this), 1000);
|
_.delay(_.bind(this.start_count_unreads_after_import, this), 1000);
|
||||||
this.force_feeds_refresh($.rescope(this.finish_count_unreads_after_import, this), true);
|
this.force_feeds_refresh($.rescope(this.finish_count_unreads_after_import, this), true);
|
||||||
} else if (!this.flags['has_chosen_feeds'] && this.flags['favicons_downloaded'] && folders.length) {
|
|
||||||
_.defer(_.bind(this.open_feedchooser_modal, this), 100);
|
|
||||||
return;
|
|
||||||
} else if (NEWSBLUR.Globals.is_authenticated && !folders.length) {
|
|
||||||
this.setup_ftux_add_feed_callout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folders.length) {
|
if (folders.length) {
|
||||||
|
@ -1119,7 +1113,7 @@
|
||||||
this.force_feed_refresh();
|
this.force_feed_refresh();
|
||||||
}
|
}
|
||||||
_.defer(_.bind(function() {
|
_.defer(_.bind(function() {
|
||||||
this.model.load_feed_favicons($.rescope(this.make_feed_favicons, this), this.flags['favicons_downloaded'], this.flags['has_chosen_feeds']);
|
this.model.load_feed_favicons($.rescope(this.make_feed_favicons, this), this.flags['favicons_downloaded'], this.model.flags['has_chosen_feeds']);
|
||||||
var force_socket = NEWSBLUR.Globals.is_admin;
|
var force_socket = NEWSBLUR.Globals.is_admin;
|
||||||
this.setup_socket_realtime_unread_counts(force_socket);
|
this.setup_socket_realtime_unread_counts(force_socket);
|
||||||
}, this));
|
}, this));
|
||||||
|
@ -1162,9 +1156,7 @@
|
||||||
$feed_favicon.attr('src', $.favicon(model.get_feed(feed_id)));
|
$feed_favicon.attr('src', $.favicon(model.get_feed(feed_id)));
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!this.flags['has_chosen_feeds'] && this.model.folders.length) {
|
this.open_dialog_after_feeds_loaded();
|
||||||
_.defer(_.bind(this.open_feedchooser_modal, this), 100);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
sort_items: function(a, b) {
|
sort_items: function(a, b) {
|
||||||
|
@ -1218,14 +1210,6 @@
|
||||||
$('.folder', $feeds).tsort('.folder_title_text');
|
$('.folder', $feeds).tsort('.folder_title_text');
|
||||||
},
|
},
|
||||||
|
|
||||||
detect_all_inactive_feeds: function() {
|
|
||||||
var feeds = this.model.feeds;
|
|
||||||
var has_chosen_feeds = _.any(feeds, function(feed) {
|
|
||||||
return feed.active;
|
|
||||||
});
|
|
||||||
return has_chosen_feeds;
|
|
||||||
},
|
|
||||||
|
|
||||||
make_feeds_folder: function(items, depth, collapsed_parent) {
|
make_feeds_folder: function(items, depth, collapsed_parent) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var $feeds = "";
|
var $feeds = "";
|
||||||
|
@ -1619,7 +1603,9 @@
|
||||||
$('.NB-progress-counts', $progress).hide();
|
$('.NB-progress-counts', $progress).hide();
|
||||||
$('.NB-progress-percentage', $progress).hide();
|
$('.NB-progress-percentage', $progress).hide();
|
||||||
$progress.addClass('NB-progress-error').addClass('NB-progress-big');
|
$progress.addClass('NB-progress-error').addClass('NB-progress-big');
|
||||||
$('.NB-progress-link', $progress).html($.make('a', { href: '#', className: 'NB-splash-link NB-menu-manage-feedchooser' }, 'Choose your 64 sites'));
|
$('.NB-progress-link', $progress).html($.make('div', {
|
||||||
|
className: 'NB-modal-submit-button NB-modal-submit-green NB-menu-manage-feedchooser'
|
||||||
|
}, ['Choose your 64 sites']));
|
||||||
|
|
||||||
this.show_progress_bar();
|
this.show_progress_bar();
|
||||||
},
|
},
|
||||||
|
@ -1632,6 +1618,16 @@
|
||||||
this.hide_progress_bar();
|
this.hide_progress_bar();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
open_dialog_after_feeds_loaded: function() {
|
||||||
|
if (!NEWSBLUR.Globals.is_authenticated) return;
|
||||||
|
|
||||||
|
if (!this.model.folders.length) {
|
||||||
|
_.defer(_.bind(this.open_intro_modal, this), 100);
|
||||||
|
} else if (!this.model.flags['has_chosen_feeds'] && this.flags['favicons_downloaded'] && this.model.folders.length) {
|
||||||
|
_.defer(_.bind(this.open_feedchooser_modal, this), 100);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// ================
|
// ================
|
||||||
// = Progress Bar =
|
// = Progress Bar =
|
||||||
// ================
|
// ================
|
||||||
|
@ -6335,7 +6331,7 @@
|
||||||
var percentage = 0;
|
var percentage = 0;
|
||||||
var feeds_count = _.keys(this.model.feeds).length;
|
var feeds_count = _.keys(this.model.feeds).length;
|
||||||
|
|
||||||
if (!this.flags['pause_feed_refreshing']) return;
|
if (!this.flags['pause_feed_refreshing'] || this.flags['has_unfetched_feeds']) return;
|
||||||
|
|
||||||
this.flags['count_unreads_after_import_working'] = true;
|
this.flags['count_unreads_after_import_working'] = true;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ NEWSBLUR.ReaderFeedchooser.prototype = {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.$modal = $.make('div', { className: 'NB-modal-feedchooser NB-modal' }, [
|
this.$modal = $.make('div', { className: 'NB-modal-feedchooser NB-modal' }, [
|
||||||
$.make('h2', { className: 'NB-modal-title' }, 'Choose Your '+this.MAX_FEEDS),
|
// $.make('h2', { className: 'NB-modal-title' }, 'Choose Your '+this.MAX_FEEDS),
|
||||||
$.make('div', { className: 'NB-feedchooser-type'}, [
|
$.make('div', { className: 'NB-feedchooser-type'}, [
|
||||||
$.make('div', { className: 'NB-feedchooser-info'}, [
|
$.make('div', { className: 'NB-feedchooser-info'}, [
|
||||||
$.make('div', { className: 'NB-feedchooser-info-type' }, [
|
$.make('div', { className: 'NB-feedchooser-info-type' }, [
|
||||||
|
@ -73,7 +73,7 @@ NEWSBLUR.ReaderFeedchooser.prototype = {
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-2' }, [
|
$.make('li', { className: 'NB-2' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
'Unlimited number of sites'
|
'Unlimited number of sites.'
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-3' }, [
|
$.make('li', { className: 'NB-3' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
|
@ -81,16 +81,16 @@ NEWSBLUR.ReaderFeedchooser.prototype = {
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-4' }, [
|
$.make('li', { className: 'NB-4' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
'Access to future premium-only features like searching, archives, and [top secret]'
|
'Access to future features like searching.'
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-5' }, [
|
$.make('li', { className: 'NB-5' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
'You feed my poor, hungry dog for 6 days',
|
'You feed my poor, hungry dog for 6 days.',
|
||||||
$.make('img', { className: 'NB-feedchooser-premium-poor-hungry-dog', src: NEWSBLUR.Globals.MEDIA_URL + '/img/reader/shiloh.jpg' })
|
$.make('img', { className: 'NB-feedchooser-premium-poor-hungry-dog', src: NEWSBLUR.Globals.MEDIA_URL + '/img/reader/shiloh.jpg' })
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-6' }, [
|
$.make('li', { className: 'NB-6' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
'You are supporting an indie developer'
|
'You are supporting a solo indie developer.'
|
||||||
]),
|
]),
|
||||||
$.make('li', { className: 'NB-7' }, [
|
$.make('li', { className: 'NB-7' }, [
|
||||||
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
$.make('div', { className: 'NB-feedchooser-premium-bullet-image' }),
|
||||||
|
@ -219,7 +219,7 @@ NEWSBLUR.ReaderFeedchooser.prototype = {
|
||||||
$('#simplemodal-container').corner('6px');
|
$('#simplemodal-container').corner('6px');
|
||||||
},
|
},
|
||||||
'onClose': function(dialog, callback) {
|
'onClose': function(dialog, callback) {
|
||||||
if (!self.flags['has_saved'] && !NEWSBLUR.reader.flags['has_chosen_feeds']) {
|
if (!self.flags['has_saved'] && !self.model.flags['has_chosen_feeds']) {
|
||||||
NEWSBLUR.reader.show_feed_chooser_button();
|
NEWSBLUR.reader.show_feed_chooser_button();
|
||||||
}
|
}
|
||||||
dialog.data.hide().empty().remove();
|
dialog.data.hide().empty().remove();
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
NEWSBLUR.ReaderIntro = function(options) {
|
NEWSBLUR.ReaderIntro = function(options) {
|
||||||
var defaults = {};
|
var defaults = {};
|
||||||
|
var intro_page = this.model.preference('intro_page');
|
||||||
|
|
||||||
_.bindAll(this, 'close');
|
_.bindAll(this, 'close');
|
||||||
|
|
||||||
this.model = NEWSBLUR.AssetModel.reader();
|
this.model = NEWSBLUR.AssetModel.reader();
|
||||||
this.options = $.extend({
|
this.options = $.extend({
|
||||||
'page_number': this.model.preference('intro_page') || 1
|
'page_number': intro_page && _.isNumber(intro_page) && intro_page <= 4 ? intro_page : 1
|
||||||
}, defaults, options);
|
}, defaults, options);
|
||||||
this.services = {
|
this.services = {
|
||||||
'twitter': {},
|
'twitter': {},
|
||||||
|
@ -235,7 +235,10 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
|
||||||
if (page_number == page_count) {
|
if (page_number == page_count) {
|
||||||
$('.NB-tutorial-next-page-text', this.$modal).text('All Done ');
|
$('.NB-tutorial-next-page-text', this.$modal).text('All Done ');
|
||||||
} else if (page_number > page_count) {
|
} else if (page_number > page_count) {
|
||||||
return this.close();
|
this.close(function() {
|
||||||
|
NEWSBLUR.reader.open_dialog_after_feeds_loaded();
|
||||||
|
});
|
||||||
|
return;
|
||||||
} else if (page_number == 1) {
|
} else if (page_number == 1) {
|
||||||
$('.NB-tutorial-next-page-text', this.$modal).text("Let's Get Started ");
|
$('.NB-tutorial-next-page-text', this.$modal).text("Let's Get Started ");
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue