From 0baaa951b9e769eea48ef2e691fb14ea0a6687aa Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Tue, 18 Jan 2022 12:40:49 -0500 Subject: [PATCH] Adding preference for changing days of unreads. Need to kick off a re-counter on preference change. --- apps/profile/views.py | 2 +- media/css/reader/reader.css | 8 +++ .../js/newsblur/reader/reader_preferences.js | 63 ++++++++++++++++++- newsblur_web/docker_local_settings.py | 2 +- templates/base.html | 4 +- utils/templatetags/utils_tags.py | 4 ++ 6 files changed, 79 insertions(+), 4 deletions(-) diff --git a/apps/profile/views.py b/apps/profile/views.py index 7deb56c88..cd65e2db8 100644 --- a/apps/profile/views.py +++ b/apps/profile/views.py @@ -34,7 +34,7 @@ from paypal.standard.forms import PayPalPaymentsForm SINGLE_FIELD_PREFS = ('timezone','feed_pane_size','hide_mobile','send_emails', 'hide_getting_started', 'has_setup_feeds', 'has_found_friends', - 'has_trained_intelligence') + 'has_trained_intelligence', 'days_of_unread') SPECIAL_PREFERENCES = ('old_password', 'new_password', 'autofollow_friends', 'dashboard_date',) @ajax_login_required diff --git a/media/css/reader/reader.css b/media/css/reader/reader.css index 575aa0d35..9746babb4 100644 --- a/media/css/reader/reader.css +++ b/media/css/reader/reader.css @@ -10546,6 +10546,14 @@ form.opml_import_form input { -webkit-box-shadow:2px 2px 0 #D0D0D0; box-shadow:2px 2px 0 #D0D0D0; } +.NB-modal-preferences .NB-preference-daysofunread .NB-tangle-daysofunread-control { + margin-top: 4px; + margin-left: 32px; + width: 300px; +} +.NB-modal-preferences .NB-preference-daysofunread .NB-preference-options label { + float: none; +} .NB-modal-preferences .NB-preference-readstorydelay .NB-tangle-readstorydelay, .NB-modal-preferences .NB-preference-slider { display: inline-block; diff --git a/media/js/newsblur/reader/reader_preferences.js b/media/js/newsblur/reader/reader_preferences.js index 9542aa03c..8bc9792b4 100644 --- a/media/js/newsblur/reader/reader_preferences.js +++ b/media/js/newsblur/reader/reader_preferences.js @@ -48,6 +48,28 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, { ]), $.make('form', { className: 'NB-preferences-form' }, [ $.make('div', { className: 'NB-tab NB-tab-general NB-active' }, [ + $.make('div', { className: 'NB-preference NB-preference-daysofunread' }, [ + $.make('div', { className: 'NB-preference-options' }, [ + $.make('div', [ + $.make('input', { id: 'NB-preference-daysofunread-1', type: 'radio', name: 'days_of_unread', value: 9999 }), + $.make('label', { 'for': 'NB-preference-daysofunread-1' }, [ + 'Manually mark every story as read' + ]) + ]), + $.make('div', [ + $.make('input', { id: 'NB-preference-daysofunread-2', type: 'radio', name: 'days_of_unread', value: 0 }), + $.make('label', { 'for': 'NB-preference-daysofunread-2', className: 'NB-preference-daysofunread-slider-label' }, [ + 'Mark stories as read after', + $.make('span', { className: 'NB-tangle-daysofunread-control NB-preference-slider', 'data-var': 'arrow' }), + $.make('span', { className: 'NB-tangle-daysofunread' }, NEWSBLUR.Preferences.days_of_unread + ' days'), + $.make('input', { name: 'daysofunread_input', value: NEWSBLUR.Preferences.days_of_unread, type: 'hidden' }) + ]) + ]) + ]), + $.make('div', { className: 'NB-preference-label'}, [ + 'Days of unreads' + ]) + ]), $.make('div', { className: 'NB-preference' }, [ $.make('div', { className: 'NB-preference-options' }, [ $.make('div', [ @@ -1105,6 +1127,12 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, { return false; } }); + $('input[name=days_of_unread]', $modal).each(function() { + if ($(this).val() == ""+NEWSBLUR.Preferences.days_of_unread) { + $(this).prop('checked', true); + return false; + } + }); $('input[name=read_story_delay]', $modal).each(function() { if ($(this).val() == ""+NEWSBLUR.Preferences.read_story_delay) { $(this).prop('checked', true); @@ -1207,6 +1235,14 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, { $('input#NB-preference-story-share-'+share_name, $modal).prop('checked', NEWSBLUR.Preferences[share]); }); + $(".NB-tangle-daysofunread-control", $modal).slider({ + range: 'min', + min: 1, + max: 365, + step: 1, + value: NEWSBLUR.Preferences.days_of_unread, + slide: _.bind(this.slide_days_of_unread_slider, this) + }); $(".NB-tangle-readstorydelay", $modal).slider({ range: 'min', min: 1, @@ -1233,12 +1269,34 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, { slide: _.bind(this.slide_space_scroll_spacing_slider, this), disabled: !NEWSBLUR.Globals.is_premium }); + this.slide_days_of_unread_slider(); this.slide_read_story_delay_slider(); this.slide_arrow_scroll_spacing_slider(); this.slide_space_scroll_spacing_slider(); }, - slide_read_story_delay_slider: function(e, ui) { + slide_days_of_unread_slider: function(e, ui) { + var value = (ui && ui.value) || + (NEWSBLUR.Preferences.days_of_unread); + if (NEWSBLUR.Preferences.days_of_unread <= 365 || ui) { + $(".NB-tangle-daysofunread", this.$modal).text(value == 1 ? value + ' day' : value + ' days'); + $("input[name=daysofunread_input]", this.$modal).val(value); + $("#NB-preference-daysofunread-2", this.$modal).prop('checked', true).val(value); + if (ui) { + this.enable_save(); + } + } else { + $("#NB-preference-daysofunread-1", this.$modal).prop('checked', true).val(value); + + var default_days_of_unread = NEWSBLUR.Globals.default_days_of_unread; + $(".NB-tangle-daysofunread", this.$modal).text(default_days_of_unread + ' days'); + $("input[name=daysofunread_input]", this.$modal).val(default_days_of_unread); + $("#NB-preference-daysofunread-2", this.$modal).val(default_days_of_unread); + $(".NB-tangle-daysofunread-control", this.$modal).slider('value', default_days_of_unread); + } + }, + + slide_read_story_delay_slider: function (e, ui) { var value = (ui && ui.value) || (NEWSBLUR.Preferences.read_story_delay > 0 ? NEWSBLUR.Preferences.read_story_delay : 1); $(".NB-tangle-seconds", this.$modal).text(value == 1 ? value + ' second.' : value + ' seconds.'); @@ -1324,6 +1382,9 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, { if (self.original_preferences['ssl'] != form['ssl']) { NEWSBLUR.reader.check_and_load_ssl(); } + if (self.original_preferences['days_of_unreads'] != form['days_of_unreads']) { + NEWSBLUR.reader.force_feeds_refresh(); + } self.close(); }); }, diff --git a/newsblur_web/docker_local_settings.py b/newsblur_web/docker_local_settings.py index 01b496282..2d17569bc 100644 --- a/newsblur_web/docker_local_settings.py +++ b/newsblur_web/docker_local_settings.py @@ -20,7 +20,7 @@ SESSION_COOKIE_DOMAIN = 'localhost' DOCKERBUILD = True DEBUG = False -# DEBUG = True +DEBUG = True # DEBUG_ASSETS controls JS/CSS asset packaging. Turning this off requires you to run # `./manage.py collectstatic` first. Turn this on for development so you can see diff --git a/templates/base.html b/templates/base.html index 426f848aa..84d7eed07 100644 --- a/templates/base.html +++ b/templates/base.html @@ -30,7 +30,8 @@ {% if user.pk %}'user_id' : {{ user.pk }},{% endif %} 'email' : "{{ user.email|safe }}", 'MEDIA_URL' : "{{ MEDIA_URL }}", - 'debug' : {{ debug|yesno:"true,false" }} + 'debug' : {{ debug|yesno:"true,false" }}, + 'default_days_of_unread' : {% settings_value "DAYS_OF_UNREAD" %} }; NEWSBLUR.Flags = { }; @@ -80,6 +81,7 @@ 'story_line_spacing' : 'm', 'hide_public_comments' : false, 'story_button_placement' : "right", + 'days_of_unread' : {{ user_profile.days_of_unread }}, 'timezone' : "{{ user_profile.timezone }}", 'title_counts' : true, 'show_global_shared_stories': true, diff --git a/utils/templatetags/utils_tags.py b/utils/templatetags/utils_tags.py index daaeca063..08664e0dd 100644 --- a/utils/templatetags/utils_tags.py +++ b/utils/templatetags/utils_tags.py @@ -213,6 +213,10 @@ def commify(n): out += '.' + cents return out +@register.simple_tag +def settings_value(name): + return getattr(settings, name, "") + @register.filter def smooth_timedelta(timedeltaobj): """Convert a datetime.timedelta object into Days, Hours, Minutes, Seconds."""