Progress update flow for modal

This commit is contained in:
Mouse Reeve 2021-09-29 10:59:36 -07:00
parent 4dbb09be87
commit d78c278665
10 changed files with 35 additions and 9 deletions

View File

@ -141,8 +141,10 @@ let StatusCache = new class {
modal.getElementsByClassName("modal-close")[0].click(); modal.getElementsByClassName("modal-close")[0].click();
// Update shelve buttons // Update shelve buttons
document.querySelectorAll("[data-shelve-button-book='" + form.book.value +"']") if (form.reading_status) {
.forEach(button => this.cycleShelveButtons(button, form.reading_status.value)); document.querySelectorAll("[data-shelve-button-book='" + form.book.value +"']")
.forEach(button => this.cycleShelveButtons(button, form.reading_status.value));
}
return; return;
} }

View File

@ -11,6 +11,7 @@ Finish "<em>{{ book_title }}</em>"
{% block modal-form-open %} {% block modal-form-open %}
<form name="finish-reading" action="{% url 'reading-status' 'finish' book.id %}" method="post" class="submit-status"> <form name="finish-reading" action="{% url 'reading-status' 'finish' book.id %}" method="post" class="submit-status">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="id" value="{{ readthrough.id }}">
<input type="hidden" name="reading_status" value="read"> <input type="hidden" name="reading_status" value="read">
{% endblock %} {% endblock %}

View File

@ -5,12 +5,13 @@
{% block content_label %} {% block content_label %}
{% trans "Comment:" %} {% trans "Comment:" %}
{% if optional %}
<span class="help mt-0 has-text-weight-normal">{% trans "(Optional)" %}</span> <span class="help mt-0 has-text-weight-normal">{% trans "(Optional)" %}</span>
{% endif %}
{% endblock %} {% endblock %}
{% block initial_fields %} {% block initial_fields %}
<input type="hidden" name="user" value="{{ request.user.id }}"> <input type="hidden" name="user" value="{{ request.user.id }}">
<input type="hidden" name="mention_books" value="{{ book.id }}"> <input type="hidden" name="mention_books" value="{{ book.id }}">
<input type="hidden" name="book" value="{{ book.id }}"> <input type="hidden" name="book" value="{{ book.id }}">
<input type="hidden" name="id" value="{{ readthrough.id }}">
{% endblock %} {% endblock %}

View File

@ -13,14 +13,18 @@
{% trans "Post to feed" %} {% trans "Post to feed" %}
</label> </label>
<div class="is-hidden" id="hide_reading_content_{{ local_uuid }}_{{ uuid }}"> <div class="is-hidden" id="hide_reading_content_{{ local_uuid }}_{{ uuid }}">
<button class="button is-link" type="submit">{% trans "Save" %}</button> <button class="button is-link" type="submit">
<span class="icon icon-spinner" aria-hidden="true"></span>
<span>{% trans "Save" %}</span>
</button>
</div> </div>
</div> </div>
<div id="reading_content_{{ local_uuid }}_{{ uuid }}"> <div id="reading_content_{{ local_uuid }}_{{ uuid }}">
<hr aria-hidden="true"> <hr aria-hidden="true">
<fieldset id="reading_content_fieldset_{{ local_uuid }}_{{ uuid }}"> <fieldset id="reading_content_fieldset_{{ local_uuid }}_{{ uuid }}">
{% include "snippets/reading_modals/form.html" with optional=True %} {% comparison_bool controls_text "progress_update" True as optional %}
{% include "snippets/reading_modals/form.html" with optional=optional %}
</fieldset> </fieldset>
</div> </div>
{% endwith %} {% endwith %}

View File

@ -6,8 +6,9 @@
{% endblock %} {% endblock %}
{% block modal-form-open %} {% block modal-form-open %}
<form action="{% url 'edit-readthrough' %}" method="POST" class="submit-status"> <form name="reading-progress" action="{% url 'reading-status-update' book.id %}" method="POST" class="submit-status">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="id" value="{{ readthrough.id }}">
{% endblock %} {% endblock %}
{% block reading-dates %} {% block reading-dates %}

View File

@ -25,7 +25,7 @@
{% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid readthrough=readthrough %} {% include 'snippets/reading_modals/finish_reading_modal.html' with book=active_shelf.book controls_text="finish_reading" controls_uid=uuid readthrough=readthrough %}
{% include 'snippets/reading_modals/progress_update_modal.html' with book=active_shelf_book.book controls_text="progress_update" controls_uid=uuid readthrough=readthrough %} {% include 'snippets/reading_modals/progress_update_modal.html' with book=active_shelf.book controls_text="progress_update" controls_uid=uuid readthrough=readthrough %}
{% endwith %} {% endwith %}
{% endif %} {% endif %}

View File

@ -36,8 +36,10 @@ def get_title(book, too_short=5):
@register.simple_tag(takes_context=False) @register.simple_tag(takes_context=False)
def comparison_bool(str1, str2): def comparison_bool(str1, str2, reverse=False):
"""idk why I need to write a tag for this, it returns a bool""" """idk why I need to write a tag for this, it returns a bool"""
if reverse:
return str1 != str2
return str1 == str2 return str1 == str2

View File

@ -370,6 +370,11 @@ urlpatterns = [
re_path(r"^create-readthrough/?$", views.create_readthrough), re_path(r"^create-readthrough/?$", views.create_readthrough),
re_path(r"^delete-progressupdate/?$", views.delete_progressupdate), re_path(r"^delete-progressupdate/?$", views.delete_progressupdate),
# shelve actions # shelve actions
re_path(
r"^reading-status/update/(?P<book_id>\d+)/?$",
views.update_progress,
name="reading-status-update",
),
re_path( re_path(
r"^reading-status/(?P<status>want|start|finish)/(?P<book_id>\d+)/?$", r"^reading-status/(?P<status>want|start|finish)/(?P<book_id>\d+)/?$",
views.ReadingStatus.as_view(), views.ReadingStatus.as_view(),

View File

@ -59,7 +59,7 @@ from .search import Search
from .shelf import Shelf from .shelf import Shelf
from .shelf import create_shelf, delete_shelf from .shelf import create_shelf, delete_shelf
from .shelf import shelve, unshelve from .shelf import shelve, unshelve
from .status import CreateStatus, DeleteStatus, DeleteAndRedraft from .status import CreateStatus, DeleteStatus, DeleteAndRedraft, update_progress
from .updates import get_notification_count, get_unread_status_count from .updates import get_notification_count, get_unread_status_count
from .user import User, Followers, Following, hide_suggestions from .user import User, Followers, Following, hide_suggestions
from .wellknown import * from .wellknown import *

View File

@ -10,6 +10,7 @@ from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.views import View from django.views import View
from django.views.decorators.http import require_POST
from markdown import markdown from markdown import markdown
from bookwyrm import forms, models from bookwyrm import forms, models
@ -135,6 +136,15 @@ class DeleteAndRedraft(View):
return TemplateResponse(request, "compose.html", data) return TemplateResponse(request, "compose.html", data)
@login_required
@require_POST
def update_progress(request, book_id):
"""Either it's just a progress update, or it's a comment with a progress update"""
if request.POST.get("post-status"):
return CreateStatus.as_view()(request, "comment")
return edit_readthrough(request)
def find_mentions(content): def find_mentions(content):
"""detect @mentions in raw status content""" """detect @mentions in raw status content"""
if not content: if not content: