diff --git a/apps/api/views.py b/apps/api/views.py index 1b81e9eae..8ea8eef73 100644 --- a/apps/api/views.py +++ b/apps/api/views.py @@ -61,8 +61,8 @@ def logout(request): def add_site_load_script(request, token): code = 0 usf = None - def image_base64(image_name): - image_file = open(os.path.join(settings.MEDIA_ROOT, 'img/icons/silk/%s.png' % image_name)) + def image_base64(image_name, path='icons/silk/'): + image_file = open(os.path.join(settings.MEDIA_ROOT, 'img/%s%s.png' % (path, image_name))) return base64.b64encode(image_file.read()) accept_image = image_base64('accept') @@ -84,7 +84,7 @@ def add_site_load_script(request, token): except UserSubscriptionFolders.DoesNotExist: code = -1 - return render_to_response('api/bookmarklet_subscribe.js', { + return render_to_response('api/share_bookmarklet.js', { 'code': code, 'token': token, 'folders': (usf and usf.folders) or [], diff --git a/apps/feed_import/urls.py b/apps/feed_import/urls.py index 9084f7192..c5335b394 100644 --- a/apps/feed_import/urls.py +++ b/apps/feed_import/urls.py @@ -2,10 +2,10 @@ from django.conf.urls.defaults import * from apps.feed_import import views urlpatterns = patterns('apps.feed_import.views', - url(r'^opml_upload$', views.opml_upload, name='opml-upload'), - url(r'^opml_export$', views.opml_export, name='opml-export'), - url(r'^authorize/$', views.reader_authorize, name='google-reader-authorize'), - url(r'^callback/$', views.reader_callback, name='google-reader-callback'), - url(r'^signup/$', views.import_signup, name='import-signup'), - url(r'^import_from_google_reader/$', views.import_from_google_reader, name='import-from-google-reader') + url(r'^opml_upload/?$', views.opml_upload, name='opml-upload'), + url(r'^opml_export/?$', views.opml_export, name='opml-export'), + url(r'^authorize/?$', views.reader_authorize, name='google-reader-authorize'), + url(r'^callback/?$', views.reader_callback, name='google-reader-callback'), + url(r'^signup/?$', views.import_signup, name='import-signup'), + url(r'^import_from_google_reader/?$', views.import_from_google_reader, name='import-from-google-reader') ) diff --git a/apps/social/models.py b/apps/social/models.py index 0d843224e..1549df7da 100644 --- a/apps/social/models.py +++ b/apps/social/models.py @@ -433,16 +433,16 @@ class MSocialProfile(mongo.Document): def send_email_for_new_follower(self, follower_user_id): user = User.objects.get(pk=self.user_id) if follower_user_id not in self.follower_user_ids: - logging.user(user, "~BB~FMNo longer being followed by %s" % follower_user_id) + logging.user(user, "~FMNo longer being followed by %s" % follower_user_id) return if not user.email: - logging.user(user, "~BB~FMNo email to send to, skipping.") + logging.user(user, "~FMNo email to send to, skipping.") return elif not user.profile.send_emails: - logging.user(user, "~BB~FMDisabled emails, skipping.") + logging.user(user, "~FMDisabled emails, skipping.") return if self.user_id == follower_user_id: - logging.user(user, "~BB~FMDisabled emails, skipping.") + logging.user(user, "~FMDisabled emails, skipping.") return emails_sent = MSentEmail.objects.filter(receiver_user_id=user.pk, @@ -451,7 +451,7 @@ class MSocialProfile(mongo.Document): day_ago = datetime.datetime.now() - datetime.timedelta(days=1) for email in emails_sent: if email.date_sent > day_ago: - logging.user(user, "~BB~SK~FMNot sending new follower email, already sent before. NBD.") + logging.user(user, "~SK~FMNot sending new follower email, already sent before. NBD.") return follower_profile = MSocialProfile.get_user(follower_user_id) @@ -483,7 +483,7 @@ class MSocialProfile(mongo.Document): MSentEmail.record(receiver_user_id=user.pk, sending_user_id=follower_user_id, email_type='new_follower') - logging.user(user, "~BB~FM~SBSending email for new follower: %s" % follower_profile.username) + logging.user(user, "~BB~FR~SBSending email for new follower: %s" % follower_profile.username) def save_feed_story_history_statistics(self): """ @@ -1507,9 +1507,9 @@ class MSharedStory(mongo.Document): if not user.email or not user.profile.send_emails: if not user.email: - logging.user(user, "~BB~FMNo email to send to, skipping.") + logging.user(user, "~FMNo email to send to, skipping.") elif not user.profile.send_emails: - logging.user(user, "~BB~FMDisabled emails, skipping.") + logging.user(user, "~FMDisabled emails, skipping.") continue mute_url = "http://%s%s" % ( @@ -1558,9 +1558,9 @@ class MSharedStory(mongo.Document): if not original_user.email or not original_user.profile.send_emails: if not original_user.email: - logging.user(original_user, "~BB~FMNo email to send to, skipping.") + logging.user(original_user, "~FMNo email to send to, skipping.") elif not original_user.profile.send_emails: - logging.user(original_user, "~BB~FMDisabled emails, skipping.") + logging.user(original_user, "~FMDisabled emails, skipping.") return story_feed = Feed.objects.get(pk=self.story_feed_id) @@ -1766,7 +1766,7 @@ class MSocialServices(mongo.Document): followers += 1 user = User.objects.get(pk=self.user_id) - logging.user(user, "~BB~FRTwitter import: %s users, now following ~SB%s~SN with ~SB%s~SN follower-backs" % (len(self.twitter_friend_ids), len(following), followers)) + logging.user(user, "~BM~FRTwitter import: %s users, now following ~SB%s~SN with ~SB%s~SN follower-backs" % (len(self.twitter_friend_ids), len(following), followers)) return following diff --git a/assets.yml b/assets.yml index bb9e1e2d3..8f3a8df71 100644 --- a/assets.yml +++ b/assets.yml @@ -122,6 +122,7 @@ stylesheets: bookmarklet: - media/css/bookmarklet/reset.css - media/css/modals.css + - media/css/bookmarklet.css blurblog: - media/css/jquery.tipsy.css - media/css/social/social_page.css diff --git a/media/css/bookmarklet.css b/media/css/bookmarklet.css new file mode 100644 index 000000000..43de09115 --- /dev/null +++ b/media/css/bookmarklet.css @@ -0,0 +1,62 @@ +/* ========== */ +/* = Resets = */ +/* ========== */ + +.NB-modal p, +.NB-modal ol, +.NB-modal ul, +.NB-modal li, +.NB-modal h1, +.NB-modal h2, +.NB-modal h3, +.NB-modal h4, +.NB-modal h5, +.NB-modal h6 { + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif !important; + letter-spacing: normal !important; + line-height: 16px !important; + margin: 12px 0; + padding: 0; + color: #202020; +} +.NB-modal p, +.NB-modal ol, +.NB-modal ul, +.NB-modal li, +.NB-modal #readability-content { + font-size: 12px !important; +} + +.NB-modal h1, +.NB-modal h2, +.NB-modal h3, +.NB-modal h4, +.NB-modal h5, +.NB-modal h6 { + font-weight: bold; +} + +.NB-modal h1 { + font-size: 24px !important; + margin: 30px 0 24px !important; +} +.NB-modal h2 { + font-size: 18px !important; + margin: 24px 0 18px !important; +} +.NB-modal h3 { + font-size: 15px !important; + margin: 18px 0 12px !important; +} +.NB-modal h4 { + font-size: 12px !important; + margin: 12px 0 12px !important; +} +.NB-modal h5 { + font-size: 11px !important; + margin: 12px 0 12px !important; +} +.NB-modal h6 { + font-size: 10px !important; + margin: 12px 0 12px !important; +} \ No newline at end of file diff --git a/media/js/vendor/readability-1.7.1.modified.js b/media/js/vendor/readability-1.7.1.modified.js index d764dcd2c..6d5b5feb9 100644 --- a/media/js/vendor/readability-1.7.1.modified.js +++ b/media/js/vendor/readability-1.7.1.modified.js @@ -1078,6 +1078,7 @@ window.readability = { // Remove style attribute(s) : if(cur.className !== "readability-styled") { cur.removeAttribute("style"); + cur.removeAttribute("class"); } readability.cleanStyles( cur ); } diff --git a/settings.py b/settings.py index bd63b3e18..94795b8db 100644 --- a/settings.py +++ b/settings.py @@ -179,7 +179,7 @@ TEST_DATABASE_NAME = 'newsblur_test' ROOT_URLCONF = 'urls' INTERNAL_IPS = ('127.0.0.1',) LOGGING_LOG_SQL = True -APPEND_SLASH = True +APPEND_SLASH = False SOUTH_TESTS_MIGRATE = False SESSION_ENGINE = "django.contrib.sessions.backends.db" TEST_RUNNER = "utils.testrunner.TestRunner" diff --git a/templates/api/bookmarklet_subscribe.js b/templates/api/share_bookmarklet.js similarity index 93% rename from templates/api/bookmarklet_subscribe.js rename to templates/api/share_bookmarklet.js index e62128ff1..9f70811b5 100644 --- a/templates/api/bookmarklet_subscribe.js +++ b/templates/api/share_bookmarklet.js @@ -5,7 +5,7 @@ {% include_bookmarklet_js %} - NEWSBLUR.BookmarkletModal = function(options) { + NEWSBLUR.Bookmarklet = function(options) { var defaults = {}; this.token = "{{ token }}"; @@ -25,7 +25,7 @@ {% endif %} }; - NEWSBLUR.BookmarkletModal.prototype = { + NEWSBLUR.Bookmarklet.prototype = { fix_title: function() { var d = document; @@ -35,6 +35,7 @@ close: function() { this.active = false; + $('body').css('overflow', 'scroll'); }, runner: function() { @@ -65,9 +66,14 @@ attach_css: function() { var css = "{% include_bookmarklet_css %}"; - var style = ''; - if ($('head').length) $('head').append(style); - else $('body').append(style); + var style = ''; + if ($('#newsblur_bookmarklet_css').length) { + $('#newsblur_bookmarklet_css').replaceWith(style); + } else if ($('head').length) { + $('head').append(style); + } else { + $('body').append(style); + } }, alert: function(message) { @@ -183,6 +189,8 @@ $('.NB-modal-holder').empty().remove(); } }); + + $('body').css('overflow', 'hidden'); }, save: function() { @@ -293,10 +301,10 @@ }; - if (NEWSBLUR.bookmarklet_modal && NEWSBLUR.bookmarklet_modal.active) { - NEWSBLUR.bookmarklet_modal.fix_title(); + if (NEWSBLUR.bookmarklet && NEWSBLUR.bookmarklet.active) { + NEWSBLUR.bookmarklet.fix_title(); return; } - NEWSBLUR.bookmarklet_modal = new NEWSBLUR.BookmarkletModal(); + NEWSBLUR.bookmarklet = new NEWSBLUR.Bookmarklet(); })(); \ No newline at end of file