Adding user notes. Unverified and needs saved confirmation.

This commit is contained in:
Samuel Clay 2020-07-15 21:25:00 -04:00
parent 25a5568f30
commit 537e4ed1c9
9 changed files with 59 additions and 8 deletions

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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))

View file

@ -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;

View file

@ -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);
},

View file

@ -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);

View file

@ -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));
}
});

View file

@ -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)."