Adding global preference for read filtering (unread/all) and story order (oldest/newest). Fixing colored log. Fixing story by email.

This commit is contained in:
Samuel Clay 2012-07-29 21:07:03 -07:00
parent 508147516d
commit b7733c71e9
5 changed files with 84 additions and 8 deletions

View file

@ -594,8 +594,11 @@ class MUserStory(mongo.Document):
if self.story:
return self.story.id
elif self.found_story:
return self.found_story['_ref'].id
if '_ref' in self.found_story:
return self.found_story['_ref'].id
elif hasattr(self.found_story, 'id'):
return self.found_story.id
story, found_original = MStory.find_story(self.feed_id, self.story_id)
if story:
if found_original:

View file

@ -1400,7 +1400,7 @@ def send_story_email(request):
code = -1
message = 'You need to provide your name.'
else:
story = MStory.find_story(story_feed_id=feed_id, story_guid=story_id)
story = MStory.find_story(feed_id, story_id)
story = Feed.format_story(story, feed_id, text=True)
feed = Feed.objects.get(pk=story['story_feed_id'])
text = render_to_string('mail/email_story_text.xhtml', locals())

View file

@ -7216,6 +7216,33 @@ form.opml_import_form input {
.NB-modal-preferences .NB-preference-story-share label[for=NB-preference-story-share-instapaper] {
background: transparent url('/media/embed/reader/instapaper.png') no-repeat 0 0;
}
.NB-modal-preferences .segmented-control {
display: block;
margin: 4px 0 12px 24px;
float: left;
/* height: 14px;*/
width: auto;
color: white;
overflow: hidden;
text-align: center;
text-transform: uppercase;
line-height: 18px;
}
.NB-modal-preferences .segmented-control:last-child {
}
.NB-modal-preferences .segmented-control li {
clear: none;
padding: 1px 12px 0;
font-size: 12px;
color: #E0E0E0;
}
.NB-modal-preferences .segmented-control li:hover {
background-color: #639510;
}
.NB-modal-preferences .segmented-control li.NB-active {
color: white;
background-color: transparent;
}
/* ================== */
/* = Account Dialog = */

View file

@ -163,6 +163,22 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, {
$.make('div', { className: 'NB-preference-sublabel' }, 'You can override this on a per-site basis.')
])
]),
$.make('div', { className: 'NB-preference NB-preference-view-setting' }, [
$.make('div', { className: 'NB-preference-options' }, [
$.make('ul', { className: 'segmented-control NB-preference-view-setting-order' }, [
$.make('li', { className: 'NB-preference-view-setting-order-newest NB-active' }, 'Newest first'),
$.make('li', { className: 'NB-preference-view-setting-order-oldest' }, 'Oldest')
]),
$.make('ul', { className: 'segmented-control NB-preference-view-setting-read-filter' }, [
$.make('li', { className: 'NB-preference-view-setting-read-filter-all NB-active' }, 'All stories'),
$.make('li', { className: 'NB-preference-view-setting-read-filter-unread' }, 'Unread only')
])
]),
$.make('div', { className: 'NB-preference-label'}, [
'Default story order',
$.make('div', { className: 'NB-preference-sublabel' }, 'You can override this on a per-site and per-folder basis.')
])
]),
$.make('div', { className: 'NB-preference NB-preference-story-pane-position' }, [
$.make('div', { className: 'NB-preference-options' }, [
$.make('div', [
@ -663,6 +679,12 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, {
return false;
}
});
var order = NEWSBLUR.Preferences['default_order'];
var read_filter = NEWSBLUR.Preferences['default_read_filter'];
$('.NB-preference-view-setting-order-oldest', $modal).toggleClass('NB-active', order == 'oldest');
$('.NB-preference-view-setting-order-newest', $modal).toggleClass('NB-active', order != 'oldest');
$('.NB-preference-view-setting-read-filter-unread', $modal).toggleClass('NB-active', read_filter == 'unread');
$('.NB-preference-view-setting-read-filter-all', $modal).toggleClass('NB-active', read_filter != 'unread');
var share_preferences = _.select(_.keys(NEWSBLUR.Preferences), function(p) {
return p.indexOf('story_share') != -1;
@ -707,6 +729,8 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, {
$('input[type=checkbox]', this.$modal).each(function() {
preferences[$(this).attr('name')] = $(this).is(':checked');
});
preferences['default_order'] = $('.NB-preference-view-setting-order li.NB-active', this.$modal).hasClass('NB-preference-view-setting-order-oldest') ? 'oldest' : 'newest';
preferences['default_read_filter'] = $('.NB-preference-view-setting-read-filter li.NB-active', this.$modal).hasClass('NB-preference-view-setting-read-filter-unread') ? 'unread' : 'all';
return preferences;
},
@ -760,6 +784,20 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, {
});
},
change_view_setting: function(view, setting) {
if (view == 'order') {
$('.NB-preference-view-setting-order-oldest').toggleClass('NB-active', setting == 'oldest');
$('.NB-preference-view-setting-order-newest').toggleClass('NB-active', setting != 'oldest');
} else if (view == 'read_filter') {
$('.NB-preference-view-setting-read-filter-unread').toggleClass('NB-active', setting == 'unread');
$('.NB-preference-view-setting-read-filter-all').toggleClass('NB-active', setting != 'unread');
}
this.enable_save();
},
// ===========
// = Actions =
// ===========
@ -782,6 +820,16 @@ _.extend(NEWSBLUR.ReaderPreferences.prototype, {
self.close();
});
$.targetIs(e, { tagSelector: '.segmented-control.NB-preference-view-setting-order li' }, function($t, $p) {
e.preventDefault();
var order = $t.hasClass('NB-preference-view-setting-order-oldest') ? 'oldest' : 'newest';
self.change_view_setting('order', order);
});
$.targetIs(e, { tagSelector: '.segmented-control.NB-preference-view-setting-read-filter li' }, function($t, $p) {
e.preventDefault();
var read_filter = $t.hasClass('NB-preference-view-setting-read-filter-unread') ? 'unread' : 'all';
self.change_view_setting('read_filter', read_filter);
});
},
handle_change: function() {

View file

@ -116,11 +116,9 @@ def colorize(msg):
for k, v in params.items():
msg = re.sub(k, v, msg)
msg = msg + '~ST~FW~BT'
msg = re.sub(r'(~[A-Z]{2})', r'%(\1)s', msg)
try:
msg = msg % colors
except (TypeError, ValueError, KeyError):
pass
# msg = re.sub(r'(~[A-Z]{2})', r'%(\1)s', msg)
for k, v in colors.items():
msg = msg.replace(k, v)
return msg
'''