Enable breadcrumbs in documents multiple upload view

pull/12321/head^2
Sage Abdullah 2024-08-30 12:50:20 +01:00 zatwierdzone przez Matt Westcott
rodzic a5ff33ebe2
commit 36fc9615ae
3 zmienionych plików z 62 dodań i 37 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
{% extends "wagtailadmin/base.html" %}
{% extends "wagtailadmin/generic/base.html" %}
{% load i18n %}
{% load l10n %}
{% load wagtailadmin_tags %}
@ -9,43 +9,38 @@
{{ form_media.css }}
{% endblock %}
{% block content %}
{% trans "Add documents" as add_str %}
{% include "wagtailadmin/shared/header.html" with title=add_str icon="doc-full-inverse" %}
{% block main_content %}
<div class="drop-zone w-mt-8">
<p>{% trans "Drag and drop documents into this area to upload immediately." %}</p>
<p>{{ help_text }}</p>
<div class="nice-padding">
<div class="drop-zone">
<p>{% trans "Drag and drop documents into this area to upload immediately." %}</p>
<p>{{ help_text }}</p>
<form action="{% url 'wagtaildocs:add_multiple' %}" method="POST" enctype="multipart/form-data">
<div class="replace-file-input">
<button class="button bicolor button--icon">{% icon name="plus" wrapped=1 %}{% trans "Or choose from your computer" %}</button>
<input id="fileupload" type="file" name="files[]" data-url="{% url 'wagtaildocs:add_multiple' %}" multiple>
</div>
{% csrf_token %}
{% if collections %}
{% trans "Add to collection:" as label_text %}
{% rawformattedfield label_text=label_text id_for_label="id_adddocument_collection" classname="w-mx-auto w-mt-4 w-grid w-justify-center" %}
<select id="id_adddocument_collection" name="collection">
{% for pk, display_name in collections.get_indented_choices %}
<option value="{{ pk|unlocalize }}"{% if pk|unlocalize == selected_collection_id %} selected{% endif %}>
{{ display_name }}
</option>
{% endfor %}
</select>
{% endrawformattedfield %}
{% endif %}
</form>
</div>
<div id="overall-progress" class="progress progress-secondary">
<div class="bar" style="width: 0%;">0%</div>
</div>
<ul id="upload-list" class="upload-list multiple"></ul>
<form action="{% url 'wagtaildocs:add_multiple' %}" method="POST" enctype="multipart/form-data">
<div class="replace-file-input">
<button class="button bicolor button--icon">{% icon name="plus" wrapped=1 %}{% trans "Or choose from your computer" %}</button>
<input id="fileupload" type="file" name="files[]" data-url="{% url 'wagtaildocs:add_multiple' %}" multiple>
</div>
{% csrf_token %}
{% if collections %}
{% trans "Add to collection:" as label_text %}
{% rawformattedfield label_text=label_text id_for_label="id_adddocument_collection" classname="w-mx-auto w-mt-4 w-grid w-justify-center" %}
<select id="id_adddocument_collection" name="collection">
{% for pk, display_name in collections.get_indented_choices %}
<option value="{{ pk|unlocalize }}"{% if pk|unlocalize == selected_collection_id %} selected{% endif %}>
{{ display_name }}
</option>
{% endfor %}
</select>
{% endrawformattedfield %}
{% endif %}
</form>
</div>
<div id="overall-progress" class="progress progress-secondary">
<div class="bar" style="width: 0%;">0%</div>
</div>
<ul id="upload-list" class="upload-list multiple"></ul>
<template id="upload-list-item">
<li class="row">
<div class="left col3">

Wyświetl plik

@ -9,6 +9,7 @@ from django.test.utils import override_settings
from django.urls import reverse
from django.utils.html import escape
from django.utils.http import urlencode
from django.utils.text import capfirst
from wagtail.admin.admin_url_finder import AdminURLFinder
from wagtail.documents import get_document_model, models
@ -1025,7 +1026,7 @@ class TestDocumentDeleteView(WagtailTestUtils, TestCase):
self.assertContains(response, "This document is referenced 0 times")
class TestMultipleDocumentUploader(WagtailTestUtils, TestCase):
class TestMultipleDocumentUploader(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
"""
This tests the multiple document upload views located in wagtaildocs/views/multiple.py
"""
@ -1064,6 +1065,17 @@ class TestMultipleDocumentUploader(WagtailTestUtils, TestCase):
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtaildocs/multiple/add.html")
self.assertBreadcrumbsItemsRendered(
[
{
"url": reverse("wagtaildocs:index"),
"label": capfirst(self.doc._meta.verbose_name_plural),
},
{"url": "", "label": "Add documents"},
],
response.content,
)
# no collection chooser when only one collection exists
self.assertNotContains(response, "id_adddocument_collection")

Wyświetl plik

@ -1,5 +1,10 @@
import os.path
from django.urls import reverse
from django.utils.text import capfirst
from django.utils.translation import gettext_lazy
from wagtail.admin.views.generic.base import WagtailAdminTemplateMixin
from wagtail.admin.views.generic.multiple_upload import AddView as BaseAddView
from wagtail.admin.views.generic.multiple_upload import (
CreateFromUploadView as BaseCreateFromUploadView,
@ -15,10 +20,14 @@ from ..forms import get_document_form, get_document_multi_form
from ..permissions import permission_policy
class AddView(BaseAddView):
class AddView(WagtailAdminTemplateMixin, BaseAddView):
permission_policy = permission_policy
template_name = "wagtaildocs/multiple/add.html"
header_icon = "doc-full-inverse"
page_title = gettext_lazy("Add documents")
_show_breadcrumbs = True
index_url_name = "wagtaildocs:index"
edit_object_url_name = "wagtaildocs:edit_multiple"
delete_object_url_name = "wagtaildocs:delete_multiple"
edit_object_form_prefix = "doc"
@ -31,6 +40,15 @@ class AddView(BaseAddView):
context_upload_name = "uploaded_document"
context_upload_id_name = "uploaded_file_id"
def get_breadcrumbs_items(self):
return self.breadcrumbs_items + [
{
"url": reverse(self.index_url_name),
"label": capfirst(self.model._meta.verbose_name_plural),
},
{"url": "", "label": self.get_page_title()},
]
def get_model(self):
return get_document_model()