loko/streetup/documents/templates/documents/documentfolder_share.html
2026-07-22 14:48:40 +02:00

147 lines
No EOL
8.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "documents/base_documents.html" %}
{% load i18n %}
{% block content %}
<div class="container py-4">
<div class="d-flex justify-content-between align-items-center mb-3">
<div>
<h2 class="mb-0">{% blocktranslate %}Sharing – {{ folder.name }}{% endblocktranslate %}</h2>
<p class="text-muted mb-0">{% translate "Manage who can access this folder." %}</p>
</div>
<div>
<a class="btn btn-outline-secondary" href="{% url 'documents:list' %}?folder={{ folder.slug }}">
<i class="bi bi-arrow-left"></i> {% translate "Back to folder" %}
</a>
</div>
</div>
{% if breadcrumbs %}
<nav aria-label="{% translate 'Breadcrumb' %}" class="mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item"><a href="{% url 'documents:list' %}">{% translate "Document Management" %}</a></li>
{% for crumb in breadcrumbs %}
<li class="breadcrumb-item {% if forloop.last %}active{% endif %}">
{% if forloop.last %}
{{ crumb.name }}
{% else %}
<a href="{% url 'documents:list' %}?folder={{ crumb.slug }}">{{ crumb.name }}</a>
{% endif %}
</li>
{% endfor %}
</ol>
</nav>
{% endif %}
<div class="row g-4">
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<h5 class="mb-0">{% translate "Share with users" %}</h5>
</div>
<div class="card-body">
<form method="post" action="{% url 'documents:folder_share_add' folder.pk %}">
{% csrf_token %}
<div class="mb-3">
<label class="form-label" for="{{ share_form.user.id_for_label }}">{% translate "User" %}</label>
{{ share_form.user }}
{% if share_form.user.errors %}
<div class="invalid-feedback d-block">{{ share_form.user.errors|join:', ' }}</div>
{% endif %}
</div>
<div class="mb-3">
<label class="form-label" for="{{ share_form.permission.id_for_label }}">{% translate "Permission" %}</label>
{{ share_form.permission }}
{% if share_form.permission.errors %}
<div class="invalid-feedback d-block">{{ share_form.permission.errors|join:', ' }}</div>
{% endif %}
</div>
<button type="submit" class="btn btn-primary">{% translate "Share" %}</button>
</form>
<hr>
<h6>{% translate "Existing shares" %}</h6>
{% if shares %}
<ul class="list-group list-group-flush">
{% for share in shares %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<span>{{ share.user.get_full_name|default:share.user.username }} – {{ share.get_permission_display }}</span>
<form method="post" action="{% url 'documents:folder_share_delete' folder.pk share.pk %}" class="ms-2">
{% csrf_token %}
<button type="submit" class="btn btn-sm btn-outline-danger">
<i class="bi bi-trash"></i>
</button>
</form>
</li>
{% endfor %}
</ul>
{% else %}
<p class="text-muted mb-0">{% translate "No users have access." %}</p>
{% endif %}
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<h5 class="mb-0">{% translate "Shareable links" %}</h5>
</div>
<div class="card-body">
<form method="post" action="{% url 'documents:folder_access_link' folder.pk %}">
{% csrf_token %}
<div class="mb-3">
<label class="form-label" for="{{ access_link_form.permission.id_for_label }}">{% translate "Permission" %}</label>
{{ access_link_form.permission }}
{% if access_link_form.permission.errors %}
<div class="invalid-feedback d-block">{{ access_link_form.permission.errors|join:', ' }}</div>
{% endif %}
</div>
<div class="mb-3">
<label class="form-label" for="{{ access_link_form.expires_at.id_for_label }}">{% translate "Expiration" %}</label>
{{ access_link_form.expires_at }}
{% if access_link_form.expires_at.errors %}
<div class="invalid-feedback d-block">{{ access_link_form.expires_at.errors|join:', ' }}</div>
{% endif %}
</div>
<button type="submit" class="btn btn-primary">{% translate "Create link" %}</button>
</form>
<hr>
<h6>{% translate "Active links" %}</h6>
{% if access_links %}
<div class="list-group list-group-flush">
{% for link in access_links %}
<div class="list-group-item">
<div class="d-flex justify-content-between align-items-center">
<div>
<div class="fw-semibold">{{ link.get_permission_display }}</div>
<small class="text-muted">{% translate "Created on" %} {{ link.created_at|date:"SHORT_DATETIME_FORMAT" }}</small>
{% if link.expires_at %}
<div><small class="text-muted">{% translate "Expires" %} {{ link.expires_at|date:"SHORT_DATETIME_FORMAT" }}</small></div>
{% endif %}
<div class="mt-1">
{% url 'documents:folder_public' link.token as public_url %}
<code>{{ request.scheme }}://{{ request.get_host }}{{ public_url }}</code>
</div>
</div>
<form method="post" action="{% url 'documents:folder_access_link_delete' folder.pk link.pk %}">
{% csrf_token %}
<button type="submit" class="btn btn-sm btn-outline-danger">
<i class="bi bi-x-circle"></i>
</button>
</form>
</div>
<div class="mt-2">
<a href="{% url 'documents:folder_public' link.token %}" target="_blank" rel="noopener" class="small">
<i class="bi bi-box-arrow-up-right"></i> {% translate "Open public link" %}
</a>
</div>
</div>
{% endfor %}
</div>
{% else %}
<p class="text-muted mb-0">{% translate "No active links." %}</p>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endblock %}