Skip to content

Commit 3d10aba

Browse files
committed
Reload page when dehighlighting a document
1 parent 60e555b commit 3d10aba

File tree

9 files changed

+137
-136
lines changed

9 files changed

+137
-136
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
function send(el, successMessage, errorMessage) {
2+
event.preventDefault();
3+
let form = el.closest(".send-email")
4+
5+
let submit = form.querySelector('button');
6+
let sendIcon = document.querySelector('.bi-send-fill');
7+
let spinner = document.querySelector('.spinner-border');
8+
9+
submit.setAttribute("disabled", true);
10+
spinner.classList.remove("visually-hidden");
11+
sendIcon.classList.add("visually-hidden");
12+
fetch('/send', {
13+
method: "POST",
14+
headers: {
15+
'Content-Type': 'application/x-www-form-urlencoded'
16+
},
17+
body: new URLSearchParams({
18+
'email': form.elements[0].value,
19+
'slug': form.elements[1].value,
20+
})
21+
})
22+
.then((response) => {
23+
message = el.querySelector(".send-email-message")
24+
message.classList.remove("visually-hidden");
25+
if (!response.ok) {
26+
message.innerHTML = errorMessage;
27+
message.classList.remove("text-success");
28+
message.classList.add("text-danger");
29+
} else {
30+
message.innerHTML = successMessage;
31+
message.classList.remove("text-danger");
32+
message.classList.add("text-success");
33+
}
34+
submit.removeAttribute("disabled");
35+
sendIcon.classList.remove("visually-hidden");
36+
spinner.classList.add("visually-hidden");
37+
})
38+
.catch(function (error) {
39+
// Catch errors
40+
console.log(error);
41+
});
42+
}
43+
44+
function highlightToggle(slug, el, method, onDehighlight = "") {
45+
event.preventDefault();
46+
let parent = el.closest(".actions")
47+
48+
let highlightLinkParent = parent.querySelector(".highlight");
49+
let dehighlightLinkParent = parent.querySelector(".dehighlight");
50+
fetch(
51+
el.getAttribute("href"), {
52+
method: method,
53+
headers: {
54+
'Content-Type': 'application/x-www-form-urlencoded'
55+
},
56+
credentials: "same-origin",
57+
body: new URLSearchParams({
58+
'slug': slug,
59+
})
60+
}
61+
)
62+
.then((response) => {
63+
if (response.ok) {
64+
if (method == "DELETE") {
65+
if (onDehighlight == "remove") {
66+
location.reload();
67+
return;
68+
}
69+
dehighlightLinkParent.classList.add("visually-hidden");
70+
highlightLinkParent.classList.remove("visually-hidden");
71+
} else {
72+
highlightLinkParent.classList.add("visually-hidden");
73+
dehighlightLinkParent.classList.remove("visually-hidden");
74+
}
75+
return;
76+
}
77+
console.log(response.body)
78+
})
79+
.catch(function (error) {
80+
// Catch errors
81+
console.log(error);
82+
});
83+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const deleteModal = document.getElementById('deleteModal');
2+
3+
deleteModal.addEventListener('show.bs.modal', event => {
4+
const link = event.relatedTarget;
5+
const slug = link.getAttribute('data-bs-slug');
6+
const modalInputSlug = deleteModal.querySelector('.slug');
7+
8+
modalInputSlug.value = slug;
9+
})
10+
11+
deleteModal.addEventListener('hidden.bs.modal', event => {
12+
let message = document.getElementById('delete-document-message');
13+
message.classList.add("visually-hidden");
14+
})
15+
16+
function remove(errorMessage) {
17+
event.preventDefault();
18+
form = document.getElementById("delete-form");
19+
fetch('/delete', {
20+
method: "POST",
21+
headers: {
22+
'Content-Type': 'application/x-www-form-urlencoded'
23+
},
24+
body: new URLSearchParams({
25+
'slug': form.elements['slug'].value,
26+
})
27+
})
28+
.then((response) => {
29+
if (response.ok) {
30+
location.reload();
31+
} else {
32+
message = document.getElementById("delete-document-message")
33+
message.classList.remove("visually-hidden");
34+
message.innerHTML = errorMessage;
35+
}
36+
})
37+
.catch(function (error) {
38+
// Catch errors
39+
console.log(error);
40+
});
41+
}

internal/webserver/embedded/views/actions.js.html

Lines changed: 0 additions & 81 deletions
This file was deleted.

internal/webserver/embedded/views/delete.js.html

Lines changed: 0 additions & 43 deletions
This file was deleted.

internal/webserver/embedded/views/document.html

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,5 @@ <h4>{{t $lang "Other documents with similar subjects"}}</h4>
203203

204204
</div>
205205

206-
{{template "partials/delete-modal" .}}
207-
208-
{{template "actions.js" dict "Lang" $lang}}
206+
<script type="text/javascript" src="/js/actions.js"></script>
209207
<script type="text/javascript" src="/js/cover-loader.js"></script>

internal/webserver/embedded/views/index.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ <h2>{{t .Lang "Your highlights" }}</h2>
2222
{{$emailFrom := .EmailFrom}}
2323

2424
{{range $i, $doc := .Highlights}}
25-
<div class="col-6 col-md-3 col-lg-2 pe-0">
25+
<div class="col-6 col-md-3 col-lg-2 pe-0 highlight-block">
2626
{{template "partials/related" dict "Lang" $lang "Document" $doc}}
2727
<div class="mb-5 actions">
2828
<div class="dropdown">
@@ -31,13 +31,16 @@ <h2>{{t .Lang "Your highlights" }}</h2>
3131
{{t $lang "Actions"}}
3232
</button>
3333
{{ template "partials/actions" dict "Lang" $lang "Document" $doc "EmailSendingConfigured"
34-
$emailSendingConfigured "Index" $i "Session" $session "EmailFrom" $emailFrom}}
34+
$emailSendingConfigured "Index" $i "Session" $session "EmailFrom" $emailFrom "OnDehighlight" "remove"}}
3535
</div>
3636
</div>
3737
</div>
3838
{{end}}
3939
</div>
40-
{{template "actions.js" dict "Lang" $lang}}
40+
{{template "partials/delete-modal" .}}
41+
42+
<script type="text/javascript" src="/js/delete.js"></script>
43+
<script type="text/javascript" src="/js/actions.js"></script>
4144
<script type="text/javascript" src="/js/cover-loader.js"></script>
4245
{{else}}
4346
<p>{{t .Lang "You haven't highlighted any document yet."}}</p>

internal/webserver/embedded/views/partials/actions.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
</li>
2828

2929
<li class="dehighlight {{if not .Document.Highlighted}}visually-hidden{{end}}">
30-
<a href="/highlights" class="dropdown-item dehighlight" onclick='highlightToggle("{{.Document.Slug}}", this, "DELETE")'>
30+
<a href="/highlights" class="dropdown-item dehighlight" onclick='highlightToggle("{{.Document.Slug}}", this, "DELETE", "{{.OnDehighlight}}")'>
3131
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16">
3232
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
3333
</svg>
@@ -40,7 +40,7 @@
4040
<li class="dropdown-item disabled">{{t .Lang "Send to email unavailable, no email service configured"}}</li>
4141
{{else}}
4242
<li>
43-
<form method="post" action="send" onsubmit='send(this)' class="send-email">
43+
<form method="post" action="send" onsubmit='send(this, {{t .Lang "Document sent succesfully"}}, {{t .Lang "There was an error sending the document, please try again later"}})' class="send-email">
4444
<div class="px-3 py-1">
4545
<label for="email" class="form-label">
4646
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope-fill" viewBox="0 0 16 16">

internal/webserver/embedded/views/partials/delete-modal.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div class="modal fade" id="deleteModal" tabindex="-1" aria-labelledby="deleteModal" aria-hidden="true">
22
<div class="modal-dialog">
33
<div class="modal-content">
4-
<form method="post" action="/delete" onsubmit="remove()" id="delete-form">
4+
<form method="post" action="/delete" onsubmit='remove({{t .Lang "There was an error deleting the document"}})' id="delete-form">
55
<div class="modal-header">
66
<h1 class="modal-title fs-5" id="deleteModalLabel">{{t .Lang "Delete document"}}</h1>
77
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

internal/webserver/embedded/views/partials/docs-list.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ <h4 class="text-start">
4141
{{t $lang "Actions"}}
4242
</button>
4343
{{ template "partials/actions" dict "Lang" $lang "Document" $document "EmailSendingConfigured"
44-
$emailSendingConfigured "Index" $i "Session" $session "EmailFrom" $emailFrom}}
44+
$emailSendingConfigured "Index" $i "Session" $session "EmailFrom" $emailFrom "OnDehighlight" "remove"}}
4545
</div>
4646
</div>
4747
</div>
@@ -93,6 +93,6 @@ <h5>{{t $lang "Unknown author"}}</h5>
9393

9494
{{template "partials/delete-modal" .}}
9595

96-
{{template "delete.js" dict "Lang" $lang}}
97-
{{template "actions.js" dict "Lang" $lang}}
96+
<script type="text/javascript" src="/js/delete.js"></script>
97+
<script type="text/javascript" src="/js/actions.js"></script>
9898
<script type="text/javascript" src="/js/cover-loader.js"></script>

0 commit comments

Comments
 (0)