Preferences! Timezone support, new window setting, and default story view.

This commit is contained in:
Samuel Clay 2010-10-31 16:03:50 -04:00
parent 100b672bbe
commit 905766c7e5
7 changed files with 28 additions and 13 deletions

View file

@ -12,6 +12,8 @@ from utils.user_functions import ajax_login_required
from apps.profile.models import Profile
from apps.reader.models import UserSubscription
SINGLE_FIELD_PREFS = ('timezone',)
@login_required
@require_POST
@json.json_view
@ -21,7 +23,10 @@ def set_preference(request):
preferences = json.decode(request.user.profile.preferences)
for preference_name, preference_value in new_preferences.items():
preferences[preference_name] = preference_value
if preference_name in SINGLE_FIELD_PREFS:
setattr(request.user.profile, preference_name, preference_value)
else:
preferences[preference_name] = preference_value
request.user.profile.preferences = json.encode(preferences)
request.user.profile.save()

View file

@ -25,7 +25,10 @@ except:
from utils import json_functions as json, urlnorm
from utils.user_functions import get_user, ajax_login_required
from utils.feed_functions import fetch_address_from_page, relative_timesince
from utils.story_functions import format_story_link_date__short
from utils.story_functions import format_story_link_date__long
from utils import log as logging
from utils.timezones.utilities import localtime_for_timezone
SINGLE_DAY = 60*60*24
@ -284,6 +287,9 @@ def load_single_feed(request):
classifier_authors.rewind()
classifier_tags.rewind()
classifier_titles.rewind()
story_date = localtime_for_timezone(story['story_date'], request.user.profile.timezone)
story['short_parsed_date'] = format_story_link_date__short(story_date)
story['long_parsed_date'] = format_story_link_date__long(story_date)
if story['id'] in userstories:
story['read_status'] = 1
elif not story.get('read_status') and story['story_date'] < usersub.mark_read_date:
@ -308,10 +314,10 @@ def load_single_feed(request):
diff = datetime.datetime.utcnow()-now
timediff = float("%s.%s" % (diff.seconds, (diff.microseconds / 1000)))
last_update = relative_timesince(feed.last_update)
logging.info(" ---> [%s] Loading feed: %s (%s seconds)" % (request.user, feed, timediff))
FeedLoadtime.objects.create(feed=feed, loadtime=timediff)
last_update = relative_timesince(feed.last_update)
data = dict(stories=stories,
feed_tags=feed_tags,
feed_authors=feed_authors,

View file

@ -19,8 +19,6 @@ from utils import json_functions as json
from utils import feedfinder
from utils.feed_functions import levenshtein_distance
from utils.feed_functions import timelimit
from utils.story_functions import format_story_link_date__short
from utils.story_functions import format_story_link_date__long
from utils.story_functions import pre_process_story
from utils.compressed_textfield import StoryField
from utils.diff import HTMLDiff
@ -486,8 +484,6 @@ class Feed(models.Model):
for story_db in stories_db:
story = {}
story['story_tags'] = story_db.story_tags or []
story['short_parsed_date'] = format_story_link_date__short(story_db.story_date)
story['long_parsed_date'] = format_story_link_date__long(story_db.story_date)
story['story_date'] = story_db.story_date
story['story_authors'] = story_db.story_author_name
story['story_title'] = story_db.story_title

View file

@ -3504,4 +3504,7 @@ background: transparent;
}
.NB-modal-preferences .NB-preference-view input {
margin-top: 10px;
}
.NB-modal-preferences .NB-preference-window input {
margin-top: 6px;
}

View file

@ -22,7 +22,7 @@ NEWSBLUR.AssetModel.Reader = function() {
this.read_stories = {};
this.classifiers = {};
this.DEFAULT_VIEW = 'page';
this.DEFAULT_VIEW = NEWSBLUR.Preferences.default_view || 'page';
};
NEWSBLUR.AssetModel.Reader.prototype = {

View file

@ -2026,6 +2026,11 @@
]),
$.make('div', { className: 'NB-feed-story-content' }, story.story_content)
]).data('story', story.id);
if (NEWSBLUR.Preferences.new_window == 1) {
$('a', $story).attr('target', '_blank');
}
if (refresh_load) {
$stories.prepend($story);
} else {
@ -2360,11 +2365,11 @@
$.make('div', { className: 'NB-menu-manage-title' }, 'Intelligence Trainer'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Accurate filters are happy filters.')
]),
// $.make('li', { className: 'NB-menu-manage-preferences' }, [
// $.make('div', { className: 'NB-menu-manage-image' }),
// $.make('div', { className: 'NB-menu-manage-title' }, 'Preferences'),
// $.make('div', { className: 'NB-menu-manage-subtitle' }, 'Defaults and options.')
// ]),
$.make('li', { className: 'NB-menu-manage-preferences' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Preferences'),
$.make('div', { className: 'NB-menu-manage-subtitle' }, 'Defaults and options.')
]),
(show_chooser && $.make('li', { className: 'NB-menu-manage-feedchooser' }, [
$.make('div', { className: 'NB-menu-manage-image' }),
$.make('div', { className: 'NB-menu-manage-title' }, 'Choose Your 64'),

View file

@ -154,7 +154,7 @@ NEWSBLUR.ReaderPreferences.prototype = {
'Default view'
])
]),
$.make('div', { className: 'NB-preference' }, [
$.make('div', { className: 'NB-preference NB-preference-window' }, [
$.make('div', { className: 'NB-preference-options' }, [
$.make('div', [
$.make('input', { id: 'NB-preference-window-1', type: 'radio', name: 'new_window', value: 0 }),