mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-29 13:01:08 +00:00
Merge pull request #832 from mouse-reeve/shelves-naming
Moves away from "shelves" metaphor
This commit is contained in:
commit
2d37d70606
19 changed files with 2343 additions and 1485 deletions
|
@ -49,7 +49,7 @@ class Shelf(OrderedCollectionMixin, BookWyrmModel):
|
||||||
def get_remote_id(self):
|
def get_remote_id(self):
|
||||||
""" shelf identifier instead of id """
|
""" shelf identifier instead of id """
|
||||||
base_path = self.user.remote_id
|
base_path = self.user.remote_id
|
||||||
return "%s/shelf/%s" % (base_path, self.identifier)
|
return "%s/books/%s" % (base_path, self.identifier)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
""" user/shelf unqiueness """
|
""" user/shelf unqiueness """
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
<div class="navbar-start">
|
<div class="navbar-start">
|
||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
<a href="{% url 'user-shelves' request.user.localname %}" class="navbar-item">
|
<a href="{% url 'user-shelves' request.user.localname %}" class="navbar-item">
|
||||||
{% trans "Your shelves" %}
|
{% trans "Your books" %}
|
||||||
</a>
|
</a>
|
||||||
<a href="/#feed" class="navbar-item">
|
<a href="/#feed" class="navbar-item">
|
||||||
{% trans "Feed" %}
|
{% trans "Feed" %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'components/dropdown.html' %}
|
{% extends 'components/dropdown.html' %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block dropdown-trigger %}
|
{% block dropdown-trigger %}
|
||||||
<span>{% trans "Change shelf" %}</span>
|
<span>{% trans "Move book" %}</span>
|
||||||
<span class="icon icon-arrow-down" aria-hidden="true"></span>
|
<span class="icon icon-arrow-down" aria-hidden="true"></span>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="book" value="{{ book.id }}">
|
<input type="hidden" name="book" value="{{ book.id }}">
|
||||||
<input type="hidden" name="shelf" value="{{ current.id }}">
|
<input type="hidden" name="shelf" value="{{ current.id }}">
|
||||||
<button class="button is-fullwidth is-small is-danger is-light" type="submit">{% trans "Unshelve" %}</button>
|
<button class="button is-fullwidth is-small is-danger is-light" type="submit">{% trans "Remove" %}</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="book" value="{{ active_shelf.book.id }}">
|
<input type="hidden" name="book" value="{{ active_shelf.book.id }}">
|
||||||
<input type="hidden" name="shelf" value="{{ active_shelf.shelf.id }}">
|
<input type="hidden" name="shelf" value="{{ active_shelf.shelf.id }}">
|
||||||
<button class="button is-fullwidth is-small is-danger is-light" type="submit">{% trans "Unshelve" %}</button>
|
<button class="button is-fullwidth is-small is-danger is-light" type="submit">{% blocktrans with name=active_shelf.shelf.name %}Remove from {{ name }}{% endblocktrans %}</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
6
bookwyrm/templates/user/books_header.html
Normal file
6
bookwyrm/templates/user/books_header.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{% load i18n %}
|
||||||
|
{% if is_self %}
|
||||||
|
{% trans "Your books" %}
|
||||||
|
{% else %}
|
||||||
|
{% blocktrans with username=user.display_name %}{{ username }}'s books{% endblocktrans %}
|
||||||
|
{% endif %}
|
|
@ -3,14 +3,14 @@
|
||||||
{% load humanize %}
|
{% load humanize %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{% include 'user/books_header.html' %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<header class="columns">
|
<header class="columns">
|
||||||
<h1 class="title">
|
<h1 class="title">
|
||||||
{% if is_self %}
|
{% include 'user/books_header.html' %}
|
||||||
{% trans "Your Shelves" %}
|
|
||||||
{% else %}
|
|
||||||
{% blocktrans with username=user.display_name %}{{ username }}: Shelves{% endblocktrans %}
|
|
||||||
{% endif %}
|
|
||||||
</h1>
|
</h1>
|
||||||
</header>
|
</header>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
<ul>
|
<ul>
|
||||||
{% for shelf_tab in shelves %}
|
{% for shelf_tab in shelves %}
|
||||||
<li class="{% if shelf_tab.identifier == shelf.identifier %}is-active{% endif %}">
|
<li class="{% if shelf_tab.identifier == shelf.identifier %}is-active{% endif %}">
|
||||||
<a href="/user/{{ user | username }}/shelf/{{ shelf_tab.identifier }}"{% if shelf_tab.identifier == shelf.identifier %} aria-current="page"{% endif %}>{% if shelf_tab.identifier == 'to-read' %}{% trans "To Read" %}{% elif shelf_tab.identifier == 'reading' %}{% trans "Currently Reading" %}{% elif shelf_tab.identifier == 'read' %}{% trans "Read" %}{% else %}{{ shelf_tab.name }}{% endif %}</a>
|
<a href="{{ shelf_tab.local_path }}"{% if shelf_tab.identifier == shelf.identifier %} aria-current="page"{% endif %}>{% if shelf_tab.identifier == 'to-read' %}{% trans "To Read" %}{% elif shelf_tab.identifier == 'reading' %}{% trans "Currently Reading" %}{% elif shelf_tab.identifier == 'read' %}{% trans "Read" %}{% else %}{{ shelf_tab.name }}{% endif %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{% extends 'user/user_layout.html' %}
|
{% extends 'user/user_layout.html' %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
{% load bookwyrm_tags %}
|
||||||
|
|
||||||
{% block title %}{{ user.display_name }}{% endblock %}
|
{% block title %}{{ user.display_name }}{% endblock %}
|
||||||
|
|
||||||
|
@ -23,12 +24,14 @@
|
||||||
{% block panel %}
|
{% block panel %}
|
||||||
{% if user.bookwyrm_user %}
|
{% if user.bookwyrm_user %}
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h2 class="title">{% trans "Shelves" %}</h2>
|
<h2 class="title">
|
||||||
|
{% include 'user/books_header.html' %}
|
||||||
|
</h2>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
{% for shelf in shelves %}
|
{% for shelf in shelves %}
|
||||||
<div class="column is-narrow">
|
<div class="column is-narrow">
|
||||||
<h3>{{ shelf.name }}
|
<h3>{{ shelf.name }}
|
||||||
{% if shelf.size > 3 %}<small>(<a href="{{ shelf.local_path }}">{% blocktrans with size=shelf.size %}See all {{ size }}{% endblocktrans %}</a>)</small>{% endif %}</h3>
|
{% if shelf.size > 3 %}<small>(<a href="{{ shelf.local_path }}">{% blocktrans with size=shelf.size %}View all {{ size }}{% endblocktrans %}</a>)</small>{% endif %}</h3>
|
||||||
<div class="is-mobile field is-grouped">
|
<div class="is-mobile field is-grouped">
|
||||||
{% for book in shelf.books %}
|
{% for book in shelf.books %}
|
||||||
<div class="control">
|
<div class="control">
|
||||||
|
@ -41,7 +44,7 @@
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<small><a href="{{ user.local_path }}/shelves">{% blocktrans %}See all {{ shelf_count }} shelves{% endblocktrans %}</a></small>
|
<small><a href="{% url 'user-shelves' user|username %}">{% trans "View all books" %}</a></small>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% with user|username as username %}
|
{% with user|username as username %}
|
||||||
{% if 'user/'|add:username|add:'/shelf' not in request.path and 'user/'|add:username|add:'/shelves' not in request.path %}
|
{% if 'user/'|add:username|add:'/books' not in request.path and 'user/'|add:username|add:'/shelf' not in request.path %}
|
||||||
<nav class="tabs">
|
<nav class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
{% url 'user-feed' user|username as url %}
|
{% url 'user-feed' user|username as url %}
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
{% if user.shelf_set.exists %}
|
{% if user.shelf_set.exists %}
|
||||||
{% url 'user-shelves' user|username as url %}
|
{% url 'user-shelves' user|username as url %}
|
||||||
<li{% if url in request.path %} class="is-active"{% endif %}>
|
<li{% if url in request.path %} class="is-active"{% endif %}>
|
||||||
<a href="{{ url }}">{% trans "Shelves" %}</a>
|
<a href="{{ url }}">{% trans "Books" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -27,7 +27,7 @@ class Shelf(TestCase):
|
||||||
shelf = models.Shelf.objects.create(
|
shelf = models.Shelf.objects.create(
|
||||||
name="Test Shelf", identifier="test-shelf", user=self.local_user
|
name="Test Shelf", identifier="test-shelf", user=self.local_user
|
||||||
)
|
)
|
||||||
expected_id = "https://%s/user/mouse/shelf/test-shelf" % settings.DOMAIN
|
expected_id = "https://%s/user/mouse/books/test-shelf" % settings.DOMAIN
|
||||||
self.assertEqual(shelf.get_remote_id(), expected_id)
|
self.assertEqual(shelf.get_remote_id(), expected_id)
|
||||||
models.Shelf.broadcast = real_broadcast
|
models.Shelf.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
|
@ -138,16 +138,8 @@ urlpatterns = [
|
||||||
views.Following.as_view(),
|
views.Following.as_view(),
|
||||||
name="user-following",
|
name="user-following",
|
||||||
),
|
),
|
||||||
re_path(r"%s/shelves/?$" % user_path, views.user_shelves_page, name="user-shelves"),
|
|
||||||
re_path(r"%s/lists/?$" % user_path, views.UserLists.as_view(), name="user-lists"),
|
|
||||||
# goals
|
|
||||||
re_path(
|
|
||||||
r"%s/goal/(?P<year>\d{4})/?$" % user_path,
|
|
||||||
views.Goal.as_view(),
|
|
||||||
name="user-goal",
|
|
||||||
),
|
|
||||||
re_path(r"^hide-goal/?$", views.hide_goal, name="hide-goal"),
|
|
||||||
# lists
|
# lists
|
||||||
|
re_path(r"%s/lists/?$" % user_path, views.UserLists.as_view(), name="user-lists"),
|
||||||
re_path(r"^list/?$", views.Lists.as_view(), name="lists"),
|
re_path(r"^list/?$", views.Lists.as_view(), name="lists"),
|
||||||
re_path(r"^list/(?P<list_id>\d+)(.json)?/?$", views.List.as_view(), name="list"),
|
re_path(r"^list/(?P<list_id>\d+)(.json)?/?$", views.List.as_view(), name="list"),
|
||||||
re_path(r"^list/add-book/?$", views.list.add_book, name="list-add-book"),
|
re_path(r"^list/add-book/?$", views.list.add_book, name="list-add-book"),
|
||||||
|
@ -159,6 +151,29 @@ urlpatterns = [
|
||||||
re_path(
|
re_path(
|
||||||
r"^list/(?P<list_id>\d+)/curate/?$", views.Curate.as_view(), name="list-curate"
|
r"^list/(?P<list_id>\d+)/curate/?$", views.Curate.as_view(), name="list-curate"
|
||||||
),
|
),
|
||||||
|
# shelf
|
||||||
|
re_path(r"%s/books/?$" % user_path, views.user_shelves_page, name="user-shelves"),
|
||||||
|
re_path(
|
||||||
|
r"^%s/(helf|books)/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % user_path,
|
||||||
|
views.Shelf.as_view(),
|
||||||
|
name="shelf",
|
||||||
|
),
|
||||||
|
re_path(
|
||||||
|
r"^%s/(books|shelf)/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % local_user_path,
|
||||||
|
views.Shelf.as_view(),
|
||||||
|
name="shelf",
|
||||||
|
),
|
||||||
|
re_path(r"^create-shelf/?$", views.create_shelf, name="shelf-create"),
|
||||||
|
re_path(r"^delete-shelf/(?P<shelf_id>\d+)?$", views.delete_shelf),
|
||||||
|
re_path(r"^shelve/?$", views.shelve),
|
||||||
|
re_path(r"^unshelve/?$", views.unshelve),
|
||||||
|
# goals
|
||||||
|
re_path(
|
||||||
|
r"%s/goal/(?P<year>\d{4})/?$" % user_path,
|
||||||
|
views.Goal.as_view(),
|
||||||
|
name="user-goal",
|
||||||
|
),
|
||||||
|
re_path(r"^hide-goal/?$", views.hide_goal, name="hide-goal"),
|
||||||
# preferences
|
# preferences
|
||||||
re_path(r"^preferences/profile/?$", views.EditUser.as_view(), name="prefs-profile"),
|
re_path(r"^preferences/profile/?$", views.EditUser.as_view(), name="prefs-profile"),
|
||||||
re_path(r"^preferences/password/?$", views.ChangePassword.as_view()),
|
re_path(r"^preferences/password/?$", views.ChangePassword.as_view()),
|
||||||
|
@ -199,20 +214,6 @@ urlpatterns = [
|
||||||
re_path(r"^tag/(?P<tag_id>.+)/?$", views.Tag.as_view()),
|
re_path(r"^tag/(?P<tag_id>.+)/?$", views.Tag.as_view()),
|
||||||
re_path(r"^tag/?$", views.AddTag.as_view()),
|
re_path(r"^tag/?$", views.AddTag.as_view()),
|
||||||
re_path(r"^untag/?$", views.RemoveTag.as_view()),
|
re_path(r"^untag/?$", views.RemoveTag.as_view()),
|
||||||
# shelf
|
|
||||||
re_path(
|
|
||||||
r"^%s/shelf/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % user_path,
|
|
||||||
views.Shelf.as_view(),
|
|
||||||
name="shelf",
|
|
||||||
),
|
|
||||||
re_path(
|
|
||||||
r"^%s/shelf/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % local_user_path,
|
|
||||||
views.Shelf.as_view(),
|
|
||||||
),
|
|
||||||
re_path(r"^create-shelf/?$", views.create_shelf, name="shelf-create"),
|
|
||||||
re_path(r"^delete-shelf/(?P<shelf_id>\d+)?$", views.delete_shelf),
|
|
||||||
re_path(r"^shelve/?$", views.shelve),
|
|
||||||
re_path(r"^unshelve/?$", views.unshelve),
|
|
||||||
# reading progress
|
# reading progress
|
||||||
re_path(r"^edit-readthrough/?$", views.edit_readthrough, name="edit-readthrough"),
|
re_path(r"^edit-readthrough/?$", views.edit_readthrough, name="edit-readthrough"),
|
||||||
re_path(r"^delete-readthrough/?$", views.delete_readthrough),
|
re_path(r"^delete-readthrough/?$", views.delete_readthrough),
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue