blob: 7cfdce8aa5540c5f1a6772a4ac088c9c686be89f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<!--
SPDX-FileCopyrightText: 2026 Dennis Fink <me+coding@dennisfink.me>
SPDX-License-Identifier: BSD-3-Clause
-->
{% extends "base.html" %}
{% from "bootstrap5/pagination.html" import render_pagination %}
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-3">
<h1 class="mb-0">Received Webmentions</h1>
<span class="text-body-secondary">{{ webmentions.total }} total</span>
</div>
{% if webmentions.items %}
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover align-middle">
<thead>
<tr>
<th scope="col">Status</th>
<th scope="col">Source</th>
<th scope="col">Target</th>
<th scope="col">Received</th>
<th scope="col">Updated</th>
<th scope="col">Reason</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
{% for webmention in webmentions %}
{% if webmention.status == "received" %}
{% set row_class = "table-info" %}
{% set display_status = "Pending" %}
{% elif webmention.status == "verifying" %}
{% set row_class = "table-warning" %}
{% set display_status = "Verifying" %}
{% elif webmention.status == "verified" %}
{% set row_class = "table-success" %}
{% set display_status = "Verified" %}
{% else %}
{% set row_class = "table-danger" %}
{% set display_status = "Declined" %}
{% endif %}
<tr class="{{ row_class }}">
<td>
<strong>{{ display_status }}</strong>
</td>
<td class="text-break">
<a href="{{ webmention.source }}">{{ webmention.source }}</a>
</td>
<td class="text-break">
<a href="{{ webmention.target }}">{{ webmention.target }}</a>
</td>
<td class="text-nowrap">
<time datetime="{{ webmention.created_at.isoformat() }}">
{{ webmention.created_at.strftime("%Y-%m-%d %H:%M:%S") }}
</time>
</td>
<td class="text-nowrap">
<time datetime="{{ webmention.updated_at.isoformat() }}">
{{ webmention.updated_at.strftime("%Y-%m-%d %H:%M:%S") }}
</time>
</td>
<td>{{ webmention.failure_reason or "—" }}</td>
<td class="text-nowrap">
<button type="button"
class="btn btn-sm btn-primary"
data-bs-toggle="modal"
data-bs-target="#confirmation-modal"
data-action="{{ url_for('root.reverify_received_webmention', identifier=webmention.uuid, page=webmentions.page) }}"
data-title="Reverify webmention?"
data-message="The webmention will be fetched and verified again."
data-confirm-label="Reverify"
data-confirm-class="btn-primary">Reverify</button>
<button type="button"
class="btn btn-sm btn-danger"
data-bs-toggle="modal"
data-bs-target="#confirmation-modal"
data-action="{{ url_for('root.delete_received_webmention', identifier=webmention.uuid, page=webmentions.page) }}"
data-title="Delete webmention?"
data-message="This permanently deletes the webmention and cannot be undone."
data-confirm-label="Delete"
data-confirm-class="btn-danger">Delete</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if webmentions.pages > 1 %}
<div class="mt-3">{{ render_pagination(webmentions) }}</div>
{% endif %}
{% include "includes/confirmation_modal.html" %}
{% else %}
<p class="text-body-secondary">No Webmentions have been received yet.</p>
{% endif %}
{% endblock %}
{% block scripts %}
{{ super() }}
<script src="{{ url_for('static', filename='js/confirmation-modal.js') }}"></script>
{% endblock %}
|