mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Adding user notes. Unverified and needs saved confirmation.
This commit is contained in:
parent
25a5568f30
commit
537e4ed1c9
9 changed files with 59 additions and 8 deletions
|
@ -406,6 +406,7 @@ def save_story(request, token=None):
|
|||
title = request.POST['title']
|
||||
content = request.POST.get('content', None)
|
||||
rss_url = request.POST.get('rss_url', None)
|
||||
user_notes = request.POST.get('user_notes', None)
|
||||
feed_id = request.POST.get('feed_id', None) or 0
|
||||
feed = None
|
||||
message = None
|
||||
|
@ -470,6 +471,7 @@ def save_story(request, token=None):
|
|||
"starred_date": datetime.datetime.now(),
|
||||
"user_id": profile.user.pk,
|
||||
"user_tags": user_tags,
|
||||
"user_notes": user_notes,
|
||||
}
|
||||
starred_story = MStarredStory.objects.create(**story_db)
|
||||
logging.user(profile.user, "~BM~FCStarring story from site: ~SB%s: %s" % (story_url, user_tags))
|
||||
|
@ -481,6 +483,7 @@ def save_story(request, token=None):
|
|||
starred_story.story_permalink = story_url
|
||||
starred_story.story_guid = story_url
|
||||
starred_story.story_feed_id = feed_id
|
||||
starred_story.user_notes = user_notes
|
||||
starred_story.save()
|
||||
logging.user(profile.user, "~BM~FC~SBUpdating~SN starred story from site: ~SB%s: %s" % (story_url, user_tags))
|
||||
message = "Updating saved story from site: %s: %s" % (story_url, user_tags)
|
||||
|
|
|
@ -10,7 +10,7 @@ from django.db import models
|
|||
from django.contrib.auth.models import User
|
||||
from mongoengine.queryset import OperationError
|
||||
import vendor.opml as opml
|
||||
from apps.rss_feeds.models import Feed, DuplicateFeed, MStarredStory
|
||||
from apps.rss_feeds.models import Feed, DuplicateFeed
|
||||
from apps.reader.models import UserSubscription, UserSubscriptionFolders
|
||||
from utils import json_functions as json, urlnorm
|
||||
from utils import log as logging
|
||||
|
|
|
@ -2,7 +2,6 @@ from celery.task import Task
|
|||
from django.contrib.auth.models import User
|
||||
from apps.feed_import.models import UploadedOPML, OPMLImporter
|
||||
from apps.reader.models import UserSubscription
|
||||
from apps.rss_feeds.models import MStarredStory
|
||||
from utils import log as logging
|
||||
|
||||
|
||||
|
|
|
@ -1912,6 +1912,8 @@ class Feed(models.Model):
|
|||
story['starred_date'] = story_db.starred_date
|
||||
if hasattr(story_db, 'user_tags'):
|
||||
story['user_tags'] = story_db.user_tags
|
||||
if hasattr(story_db, 'user_notes'):
|
||||
story['user_notes'] = story_db.user_notes
|
||||
if hasattr(story_db, 'highlights'):
|
||||
story['highlights'] = story_db.highlights
|
||||
if hasattr(story_db, 'shared_date'):
|
||||
|
@ -2851,6 +2853,7 @@ class MStarredStory(mongo.DynamicDocument):
|
|||
story_guid = mongo.StringField()
|
||||
story_hash = mongo.StringField()
|
||||
story_tags = mongo.ListField(mongo.StringField(max_length=250))
|
||||
user_notes = mongo.StringField()
|
||||
user_tags = mongo.ListField(mongo.StringField(max_length=128))
|
||||
highlights = mongo.ListField(mongo.StringField(max_length=1024))
|
||||
image_urls = mongo.ListField(mongo.StringField(max_length=1024))
|
||||
|
|
|
@ -4103,6 +4103,15 @@ body {
|
|||
text-shadow: 0 1px 0 #FBFBFB;
|
||||
line-height: 16px;
|
||||
}
|
||||
.NB-sideoption-save .NB-sideoption-save-message {
|
||||
float: right;
|
||||
opacity: 0;
|
||||
transition: opacity 1s ease-out;
|
||||
}
|
||||
.NB-sideoption-save .NB-sideoption-save-message.NB-active {
|
||||
opacity: 1;
|
||||
}
|
||||
.NB-sideoption-save .NB-sideoption-save-comments,
|
||||
.NB-sideoption-share .NB-sideoption-share-comments {
|
||||
width: 100%;
|
||||
-webkit-box-sizing: border-box;
|
||||
|
|
|
@ -246,7 +246,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
|||
this.make_request('/reader/mark_story_hash_as_starred', {
|
||||
story_hash: story.get('story_hash'),
|
||||
user_tags: story.get('user_tags'),
|
||||
highlights: story.get('highlights')
|
||||
highlights: story.get('highlights'),
|
||||
user_notes: story.get('user_notes')
|
||||
}, pre_callback);
|
||||
},
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ NEWSBLUR.Models.Story = Backbone.Model.extend({
|
|||
this.bind('change:user_tags', this.change_user_tags);
|
||||
this.bind('change:selected', this.select_story);
|
||||
this.bind('change:highlights', this.update_highlights);
|
||||
this.bind('change:user_notes', this.update_notes);
|
||||
this.populate_comments();
|
||||
this.story_permalink = this.get('story_permalink');
|
||||
this.story_title = this.get('story_title');
|
||||
|
@ -270,7 +271,6 @@ NEWSBLUR.Models.Story = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
update_highlights: function() {
|
||||
this.set('user_tags', this.existing_tags(), {silent: true});
|
||||
console.log(['update_highlights', this.get('highlights')]);
|
||||
if (!this.get('starred')) {
|
||||
NEWSBLUR.assets.starred_count += 1;
|
||||
|
@ -281,6 +281,10 @@ NEWSBLUR.Models.Story = Backbone.Model.extend({
|
|||
NEWSBLUR.reader.update_starred_count();
|
||||
},
|
||||
|
||||
update_notes: function() {
|
||||
NEWSBLUR.assets.mark_story_as_starred(this.id);
|
||||
},
|
||||
|
||||
change_starred: function() {
|
||||
if (this.get('starred')) {
|
||||
NEWSBLUR.assets.mark_story_as_starred(this.id);
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
NEWSBLUR.Views.StorySaveView = Backbone.View.extend({
|
||||
|
||||
events: {
|
||||
"click .NB-sideoption-save-populate" : "populate_story_tags"
|
||||
"click .NB-sideoption-save-populate" : "populate_story_tags",
|
||||
"keypress .NB-sideoption-save-notes" : "autosize",
|
||||
"keypress .NB-sideoption-save-notes" : "save_user_notes",
|
||||
},
|
||||
|
||||
initialize: function() {
|
||||
_.bindAll(this, 'toggle_feed_story_save_dialog');
|
||||
_.bindAll(this, 'toggle_feed_story_save_dialog', 'save_user_notes', 'autosize');
|
||||
this.sideoptions_view = this.options.sideoptions_view;
|
||||
this.model.story_save_view = this;
|
||||
this.model.bind('change:starred', this.toggle_feed_story_save_dialog);
|
||||
|
@ -38,6 +40,9 @@ NEWSBLUR.Views.StorySaveView = Backbone.View.extend({
|
|||
<li><%= tag %></li>\
|
||||
<% }) %>\
|
||||
</ul>\
|
||||
<div class="NB-sideoption-save-message">Saved</div>\
|
||||
<div class="NB-sideoption-save-title">Private notes:</div>\
|
||||
<textarea class="NB-sideoption-save-notes"><%= story.get("user_notes") %></textarea>\
|
||||
</div>\
|
||||
</div>\
|
||||
'),
|
||||
|
@ -238,6 +243,23 @@ NEWSBLUR.Views.StorySaveView = Backbone.View.extend({
|
|||
|
||||
var user_tags = $tag_input.tagit('assignedTags');
|
||||
this.model.set('user_tags', user_tags);
|
||||
},
|
||||
|
||||
save_user_notes: function(options) {
|
||||
var $notes = this.$('.NB-sideoption-save-notes');
|
||||
var $saved = this.$('.NB-sideoption-save-message');
|
||||
var user_notes = $notes.val();
|
||||
|
||||
this.model.set('user_notes', user_notes);
|
||||
|
||||
$saved.addClass('NB-active');
|
||||
if (this.saved_defer) {
|
||||
clearTimeout(this.saved_defer);
|
||||
}
|
||||
this.saved_defer = _.defer(_.bind(function() {
|
||||
$saved.removeClass('NB-active');
|
||||
this.saved_defer = null;
|
||||
}, this));
|
||||
}
|
||||
|
||||
|
||||
});
|
|
@ -503,7 +503,17 @@
|
|||
desc: "Story to save, specified by hash."
|
||||
required: true
|
||||
example: "64:a295ed"
|
||||
|
||||
- key: user_tags
|
||||
desc: "Tags for the saved story"
|
||||
optional: true
|
||||
example: "['cooking', 'blogs']"
|
||||
- key: highlights
|
||||
desc: "Strings to highlight"
|
||||
optional: true
|
||||
example: "['For example', 'this sentence is highlighted.']"
|
||||
tips:
|
||||
- "You can send a list for user_tags and highlights. <code>user_tags[]=blog&user_tags[]=cooking</code>"
|
||||
|
||||
- url: /reader/mark_story_as_unstarred
|
||||
method: POST
|
||||
short_desc: "Mark a story as unstarred (unsaved)."
|
||||
|
|
Loading…
Add table
Reference in a new issue