diff --git a/apps/oauth/views.py b/apps/oauth/views.py index 4718ac88f..97c8d9b3e 100644 --- a/apps/oauth/views.py +++ b/apps/oauth/views.py @@ -10,6 +10,7 @@ from apps.social.models import MSocialServices from utils import log as logging from utils.user_functions import ajax_login_required from utils.view_functions import render_to +from utils import json_functions as json from vendor import facebook from vendor import tweepy @@ -136,26 +137,45 @@ def facebook_disconnect(request): return HttpResponseRedirect(reverse('friends')) @ajax_login_required +@json.json_view def follow_twitter_account(request): username = request.POST['username'] + code = 1 + message = "OK" + + logging.user(request, "~BB~FRFollowing Twitter: %s" % username) + if username not in ['samuelclay', 'newsblur']: return HttpResponseForbidden social_services = MSocialServices.objects.get(user_id=request.user.pk) - api = social_services.twitter_api() - api.follow_user('samuelclayid') - - return {} + try: + api = social_services.twitter_api() + api.create_friendship(username) + except tweepy.TweepError, e: + code = -1 + message = e + + return {'code': code, 'message': message} @ajax_login_required +@json.json_view def unfollow_twitter_account(request): username = request.POST['username'] + code = 1 + message = "OK" + + logging.user(request, "~BB~FRUnfollowing Twitter: %s" % username) + if username not in ['samuelclay', 'newsblur']: return HttpResponseForbidden social_services = MSocialServices.objects.get(user_id=request.user.pk) - api = social_services.twitter_api() - api.unfollow_user('samuelclayid') + try: + api = social_services.twitter_api() + api.destroy_friendship(username) + except tweepy.TweepError, e: + code = -1 + message = e - return {} - \ No newline at end of file + return {'code': code, 'message': message} diff --git a/apps/reader/models.py b/apps/reader/models.py index 76f5612cb..be39ca3f0 100644 --- a/apps/reader/models.py +++ b/apps/reader/models.py @@ -117,12 +117,18 @@ class UserSubscription(models.Model): user_sub_folders = add_object_to_folder(feed.pk, folder, user_sub_folders) user_sub_folders_object.folders = json.encode(user_sub_folders) user_sub_folders_object.save() + + if not auto_active: + feed_count = cls.objects.filter(user=user).count() + if feed_count < 64 or user.profile.is_premium: + us.active = True + us.save() feed.setup_feed_for_premium_subscribers() if feed.last_update < datetime.datetime.utcnow() - datetime.timedelta(days=1): feed.update() - + return code, message, us def mark_feed_read(self): diff --git a/media/css/reader.css b/media/css/reader.css index 4e774c9d2..a1c684ca8 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -5589,7 +5589,7 @@ background: transparent; width: 47%; background-color: #FED655; background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FED655), to(#F3BE00)); - background: -moz-linear-gradient(center bottom, #FED655 100%, #F3BE00 0%); + background: -moz-linear-gradient(center bottom, #F3BE00 0%, #FED655 100%); border-radius: 6px; text-shadow: 0 1px 0 #FEEA95; border: 1px solid #FFFDE0; @@ -5598,7 +5598,7 @@ background: transparent; .NB-modal-intro .NB-intro-uptodate-follow.NB-active { background-color: #ED6D00; background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ED6D00), to(#DD5A00)); - background: -moz-linear-gradient(center bottom, #ED6D00 100%, #DD5A00 0%); + background: -moz-linear-gradient(center bottom, #DD5A00 0%, #ED6D00 100%); color: white; text-shadow: 0 1px 0 #303030; border: 1px solid #ED6D00; @@ -7461,6 +7461,13 @@ background: transparent; line-height: 1; font-size: 11px; } +.NB-profile-badge-actions .NB-profile-badge-action-preview.NB-disabled { + cursor: default; + background: white; + box-shadow: none; + -moz-box-shadow: none; + opacity: .25; +} /* ======================== */ /* = Social Profile Modal = */ /* ======================== */ diff --git a/media/js/newsblur/reader/reader.js b/media/js/newsblur/reader/reader.js index c4ac079a4..6ab2af25f 100644 --- a/media/js/newsblur/reader/reader.js +++ b/media/js/newsblur/reader/reader.js @@ -1112,7 +1112,6 @@ this.load_sortable_feeds(); this.update_header_counts(); _.delay(_.bind(this.update_starred_count, this), 250); - this.model.preference('has_setup_feeds', true); NEWSBLUR.reader.check_hide_getting_started(); } @@ -1630,12 +1629,11 @@ open_dialog_after_feeds_loaded: function() { if (!NEWSBLUR.Globals.is_authenticated) return; - if (!this.model.folders.length) { - if (!this.model.preference('has_setup_feeds') && - (!NEWSBLUR.intro || !NEWSBLUR.intro.flags.open)) { - _.defer(_.bind(this.open_intro_modal, this), 100); - } else if (this.model.preference('has_setup_feeds')) { + if (!this.model.folders.length || !this.model.preference('has_setup_feeds')) { + if (this.model.preference('has_setup_feeds')) { this.setup_ftux_add_feed_callout(); + } else if (!NEWSBLUR.intro || !NEWSBLUR.intro.flags.open) { + _.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); diff --git a/media/js/newsblur/reader/reader_add_feed.js b/media/js/newsblur/reader/reader_add_feed.js index 31a5db561..acca4220c 100644 --- a/media/js/newsblur/reader/reader_add_feed.js +++ b/media/js/newsblur/reader/reader_add_feed.js @@ -219,6 +219,8 @@ _.extend(NEWSBLUR.ReaderAddFeed.prototype, { NEWSBLUR.reader.handle_mouse_indicator_hover(); $.modal.close(); $submit.val('Added!'); + this.model.preference('has_setup_feeds', true); + NEWSBLUR.reader.check_hide_getting_started(); } else { var $error = $('.NB-error', '.NB-fieldset.NB-add-add-url'); $error.text(data.message); diff --git a/media/js/newsblur/reader/reader_intro.js b/media/js/newsblur/reader/reader_intro.js index 689caa43e..86a68c37d 100644 --- a/media/js/newsblur/reader/reader_intro.js +++ b/media/js/newsblur/reader/reader_intro.js @@ -286,8 +286,6 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, { if (page_number == page_count) { $('.NB-tutorial-next-page-text', this.$modal).text('All Done '); } else if (page_number > page_count) { - - this.model.preference('has_setup_feeds', true); NEWSBLUR.reader.check_hide_getting_started(); this.close(function() { NEWSBLUR.reader.open_dialog_after_feeds_loaded(); @@ -342,11 +340,18 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, { }, count_feeds: function() { + var feed_count = _.size(this.model.feeds); + $(".NB-intro-imports-sites h4", this.$modal).text([ 'You are subscribed to ', - Inflector.pluralize(' site', _.size(this.model.feeds), true), + Inflector.pluralize(' site', feed_count, true), '.' ].join("")); + + if (feed_count) { + this.model.preference('has_setup_feeds', true); + NEWSBLUR.reader.check_hide_getting_started(); + } }, fade_out_logo: function() { @@ -404,7 +409,7 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, { NEWSBLUR.reader.flags.importing_from_google_reader = false; this.advance_import_carousel(1); $loading.addClass('NB-active'); - this.model.start_import_from_google_reader($.rescope(this.finish_import_from_google_reader, this)); + this.model.start_import_from_google_reader($.rescope(this.finish_import_from_google_reader, this)); } }, diff --git a/media/js/newsblur/views/social_profile_badge.js b/media/js/newsblur/views/social_profile_badge.js index 54f990f34..42e4bbb2a 100644 --- a/media/js/newsblur/views/social_profile_badge.js +++ b/media/js/newsblur/views/social_profile_badge.js @@ -70,7 +70,8 @@ NEWSBLUR.Views.SocialProfileBadge = Backbone.View.extend({ className: 'NB-profile-badge-action-follow NB-modal-submit-button NB-modal-submit-green' }, 'Follow'), $.make('div', { - className: 'NB-profile-badge-action-preview NB-modal-submit-button NB-modal-submit-grey' + className: 'NB-profile-badge-action-preview NB-modal-submit-button NB-modal-submit-grey ' + + (!profile.get('shared_stories_count') ? 'NB-disabled' : '') }, 'Preview') ]); } @@ -113,6 +114,8 @@ NEWSBLUR.Views.SocialProfileBadge = Backbone.View.extend({ }, preview_user: function() { + if (this.$('.NB-profile-badge-action-preview').hasClass('NB-disabled')) return; + $.modal.close(_.bind(function() { window.ss = this.model; var socialsub = NEWSBLUR.reader.model.add_social_feed(this.model); diff --git a/templates/base.html b/templates/base.html index 0abcabb97..be3e956db 100644 --- a/templates/base.html +++ b/templates/base.html @@ -28,6 +28,7 @@ 'unread_view' : 0, 'lock_mouse_indicator' : 0, 'feed_pane_size' : {% firstof user_profile.feed_pane_size 240 %}, + 'hide_getting_started' : {{ user_profile.hide_getting_started|yesno:"true,false" }}, 'has_setup_feeds' : {{ user_profile.has_setup_feeds|yesno:"true,false" }}, 'has_found_friends' : {{ user_profile.has_found_friends|yesno:"true,false" }}, 'has_trained_intelligence': {{ user_profile.has_trained_intelligence|yesno:"true,false" }},