aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Matías Lang <yo@matiaslang.me>2019-07-17 21:44:32 -0300
committerGravatar Frédéric Guillot <fred@miniflux.net>2019-07-17 17:44:32 -0700
commit34421dcd496198db82ca7c7fd54362d9b600fbb3 (patch)
treebd91858e967b592425a880392863dae28b952578
parent48abf5721815e975726fab96fef8810724fa031b (diff)
Require confirmation for marking pages as read
-rw-r--r--template/html/category_entries.html24
-rw-r--r--template/html/feed_entries.html24
-rw-r--r--template/html/unread_entries.html20
-rw-r--r--template/views.go74
-rw-r--r--ui/static/js.go6
-rw-r--r--ui/static/js/bootstrap.js2
-rw-r--r--ui/static/js/confirm_handler.js6
7 files changed, 120 insertions, 36 deletions
diff --git a/template/html/category_entries.html b/template/html/category_entries.html
index 17f7de4..b6a2a69 100644
--- a/template/html/category_entries.html
+++ b/template/html/category_entries.html
@@ -6,9 +6,15 @@
<ul>
{{ if .entries }}
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
{{ end }}
@@ -47,9 +53,15 @@
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
</ul>
diff --git a/template/html/feed_entries.html b/template/html/feed_entries.html
index 65b9a2f..ce65dce 100644
--- a/template/html/feed_entries.html
+++ b/template/html/feed_entries.html
@@ -6,9 +6,15 @@
<ul>
{{ if .entries }}
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
{{ end }}
@@ -75,9 +81,15 @@
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
</ul>
diff --git a/template/html/unread_entries.html b/template/html/unread_entries.html
index 2954ec1..a728cf6 100644
--- a/template/html/unread_entries.html
+++ b/template/html/unread_entries.html
@@ -6,7 +6,15 @@
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead">{{ t "menu.mark_page_as_read" }}</a>
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
+ </a>
</li>
<li>
<a data-link-state="flip"
@@ -40,7 +48,15 @@
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead">{{ t "menu.mark_page_as_read" }}</a>
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
+ </a>
</li>
</ul>
{{ end }}
diff --git a/template/views.go b/template/views.go
index e237d19..96e3e00 100644
--- a/template/views.go
+++ b/template/views.go
@@ -209,9 +209,15 @@ var templateViewsMap = map[string]string{
<ul>
{{ if .entries }}
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
{{ end }}
@@ -250,9 +256,15 @@ var templateViewsMap = map[string]string{
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
</ul>
@@ -704,9 +716,15 @@ var templateViewsMap = map[string]string{
<ul>
{{ if .entries }}
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
{{ end }}
@@ -773,9 +791,15 @@ var templateViewsMap = map[string]string{
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead"
- data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}">
- {{ t "menu.mark_page_as_read" }}
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-show-only-unread="{{ if .showOnlyUnreadEntries }}1{{ end }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
</a>
</li>
</ul>
@@ -1309,7 +1333,15 @@ var templateViewsMap = map[string]string{
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead">{{ t "menu.mark_page_as_read" }}</a>
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
+ </a>
</li>
<li>
<a data-link-state="flip"
@@ -1343,7 +1375,15 @@ var templateViewsMap = map[string]string{
{{ if .entries }}
<ul>
<li>
- <a href="#" data-on-click="markPageAsRead">{{ t "menu.mark_page_as_read" }}</a>
+ <a href="#"
+ data-confirm="true"
+ data-label-question="{{ t "confirm.question" }}"
+ data-label-yes="{{ t "confirm.yes" }}"
+ data-label-no="{{ t "confirm.no" }}"
+ data-label-loading="{{ t "confirm.loading" }}"
+ data-mark-page-as-read="true">
+ {{ t "menu.mark_page_as_read" }}
+ </a>
</li>
</ul>
{{ end }}
@@ -1423,7 +1463,7 @@ var templateViewsMapChecksums = map[string]string{
"add_subscription": "a0f1d2bc02b6adc83dbeae593f74d9b936102cd6dd73302cdbec2137cafdcdd9",
"bookmark_entries": "609f4b2342152fe495a219a32f17a4528b01807d61f53cee0cbebf728be73c42",
"categories": "642ee3cddbd825ee6ab5a77caa0d371096b55de0f1bd4ae3055b8c8a70507d8d",
- "category_entries": "8ed501d58fd659c6f505d200f5f92dc2d3f8ed8893c7a8076d05ca54c9adb944",
+ "category_entries": "a1a2ed91cb87d5501a7df55db4c05adfb8aca9f1991b466ab2f30cf5bdb5825d",
"choose_subscription": "33c04843d7c1b608d034e605e52681822fc6d79bc6b900c04915dd9ebae584e2",
"create_category": "6b22b5ce51abf4e225e23a79f81be09a7fb90acb265e93a8faf9446dff74018d",
"create_user": "1e940be3afefc0a5c6273bbadcddc1e29811e9548e5227ac2adfe697ca5ce081",
@@ -1431,7 +1471,7 @@ var templateViewsMapChecksums = map[string]string{
"edit_feed": "ab30c31a4385a7b16c54baa78bdcb93a57181ed1c5018ce097d7eb50673bb995",
"edit_user": "f4f99412ba771cfca2a2a42778b023b413c5494e9a287053ba8cf380c2865c5f",
"entry": "1626bf4dd3223b2f730865676162aa0a9f0a0e009cdea90f705230542922e0f4",
- "feed_entries": "0b97344b4045058b7154d0c01b85e4afd957c23e7cb2d011451f96baf6233dfc",
+ "feed_entries": "96386f3ecb0080f89febbcd6489ad5f8ace3aac61066e94fb70d11462b02c143",
"feeds": "31acc253c547a6cce5710d72a6f6b3b396162ecd5e5af295b2cf47c1ff55bd06",
"history_entries": "b65ca1d85615caa7c314a33f1cb997aa3477a79e66b9894b2fd387271ad467d2",
"import": "8349e47a783bb40d8e9248b4771656e5f006185e11079e1c4680dd52633420ed",
@@ -1440,6 +1480,6 @@ var templateViewsMapChecksums = map[string]string{
"search_entries": "d71849a4f2b0573c7c76ad0ea941812009e9f022de60895987a781d3e6f08a01",
"sessions": "1b3ec0970a4111b81f86d6ed187bb410f88972e2ede6723b9febcc4c7e5fc921",
"settings": "152143e58d057ea6ab3bfd8dd947bfd70685843ca40e40542484b23849746df4",
- "unread_entries": "880018cbc59ec09b23dd800c4010fadad944d7023e0d36a3872c09b5d4952799",
+ "unread_entries": "9bfe0223d4dc9b6179e4d35758be644138d7b1e28616ddc1f9df6efab6061ab2",
"users": "4b56cc76fbcc424e7c870d0efca93bb44dbfcc2a08b685cf799c773fbb8dfb2f",
}
diff --git a/ui/static/js.go b/ui/static/js.go
index 2942e05..8e0e7e7 100644
--- a/ui/static/js.go
+++ b/ui/static/js.go
@@ -59,7 +59,7 @@ static fetchOriginalContent(element){if(element.dataset.completed){return;}
element.innerHTML=element.dataset.labelLoading;let request=new RequestBuilder(element.dataset.fetchContentUrl);request.withCallback((response)=>{element.innerHTML=element.dataset.labelDone;element.dataset.completed=true;response.json().then((data)=>{if(data.hasOwnProperty("content")){document.querySelector(".entry-content").innerHTML=data.content;}});});request.execute();}}
class FeedHandler{static unsubscribe(feedUrl,callback){let request=new RequestBuilder(feedUrl);request.withCallback(callback);request.execute();}}
class ConfirmHandler{executeRequest(url,redirectURL){let request=new RequestBuilder(url);request.withCallback(()=>{if(redirectURL){window.location.href=redirectURL;}else{window.location.reload();}});request.execute();}
-handle(event){let questionElement=document.createElement("span");let linkElement=event.target;let containerElement=linkElement.parentNode;linkElement.style.display="none";let yesElement=document.createElement("a");yesElement.href="#";yesElement.appendChild(document.createTextNode(linkElement.dataset.labelYes));yesElement.onclick=(event)=>{event.preventDefault();let loadingElement=document.createElement("span");loadingElement.className="loading";loadingElement.appendChild(document.createTextNode(linkElement.dataset.labelLoading));questionElement.remove();containerElement.appendChild(loadingElement);this.executeRequest(linkElement.dataset.url,linkElement.dataset.redirectUrl);};let noElement=document.createElement("a");noElement.href="#";noElement.appendChild(document.createTextNode(linkElement.dataset.labelNo));noElement.onclick=(event)=>{event.preventDefault();linkElement.style.display="inline";questionElement.remove();};questionElement.className="confirm";questionElement.appendChild(document.createTextNode(linkElement.dataset.labelQuestion+" "));questionElement.appendChild(yesElement);questionElement.appendChild(document.createTextNode(", "));questionElement.appendChild(noElement);containerElement.appendChild(questionElement);}}
+handle(event){let questionElement=document.createElement("span");let linkElement=event.target;let containerElement=linkElement.parentNode;linkElement.style.display="none";let yesElement=document.createElement("a");yesElement.href="#";yesElement.appendChild(document.createTextNode(linkElement.dataset.labelYes));yesElement.onclick=(event)=>{event.preventDefault();let loadingElement=document.createElement("span");loadingElement.className="loading";loadingElement.appendChild(document.createTextNode(linkElement.dataset.labelLoading));questionElement.remove();containerElement.appendChild(loadingElement);if(linkElement.dataset.markPageAsRead){(new NavHandler()).markPageAsRead(event.target.dataset.showOnlyUnread||false);}else{this.executeRequest(linkElement.dataset.url,linkElement.dataset.redirectUrl);}};let noElement=document.createElement("a");noElement.href="#";noElement.appendChild(document.createTextNode(linkElement.dataset.labelNo));noElement.onclick=(event)=>{event.preventDefault();linkElement.style.display="inline";questionElement.remove();};questionElement.className="confirm";questionElement.appendChild(document.createTextNode(linkElement.dataset.labelQuestion+" "));questionElement.appendChild(yesElement);questionElement.appendChild(document.createTextNode(", "));questionElement.appendChild(noElement);containerElement.appendChild(questionElement);}}
class MenuHandler{clickMenuListItem(event){let element=event.target;if(element.tagName==="A"){window.location.href=element.getAttribute("href");}else{window.location.href=element.querySelector("a").getAttribute("href");}}
toggleMainMenu(){let menu=document.querySelector(".header nav ul");if(DomHelper.isVisible(menu)){menu.style.display="none";}else{menu.style.display="block";}
let searchElement=document.querySelector(".header .search");if(DomHelper.isVisible(searchElement)){searchElement.style.display="none";}else{searchElement.style.display="block";}}}
@@ -98,7 +98,7 @@ break;}}}
isEntry(){return document.querySelector("section.entry")!==null;}
isListView(){return document.querySelector(".items")!==null;}}
class LinkStateHandler{static flip(element){let labelElement=document.createElement("span");labelElement.className="link-flipped-state";labelElement.appendChild(document.createTextNode(element.dataset.labelNewState));element.parentNode.appendChild(labelElement);element.parentNode.removeChild(element);}}
-document.addEventListener("DOMContentLoaded",function(){FormHandler.handleSubmitButtons();let navHandler=new NavHandler();if(!document.querySelector("body[data-disable-keyboard-shortcuts=true]")){let keyboardHandler=new KeyboardHandler();keyboardHandler.on("g u",()=>navHandler.goToPage("unread"));keyboardHandler.on("g b",()=>navHandler.goToPage("starred"));keyboardHandler.on("g h",()=>navHandler.goToPage("history"));keyboardHandler.on("g f",()=>navHandler.goToFeedOrFeeds());keyboardHandler.on("g c",()=>navHandler.goToPage("categories"));keyboardHandler.on("g s",()=>navHandler.goToPage("settings"));keyboardHandler.on("ArrowLeft",()=>navHandler.goToPrevious());keyboardHandler.on("ArrowRight",()=>navHandler.goToNext());keyboardHandler.on("k",()=>navHandler.goToPrevious());keyboardHandler.on("p",()=>navHandler.goToPrevious());keyboardHandler.on("j",()=>navHandler.goToNext());keyboardHandler.on("n",()=>navHandler.goToNext());keyboardHandler.on("h",()=>navHandler.goToPage("previous"));keyboardHandler.on("l",()=>navHandler.goToPage("next"));keyboardHandler.on("o",()=>navHandler.openSelectedItem());keyboardHandler.on("v",()=>navHandler.openOriginalLink());keyboardHandler.on("m",()=>navHandler.toggleEntryStatus());keyboardHandler.on("A",()=>{let element=document.querySelector("a[data-on-click=markPageAsRead]");navHandler.markPageAsRead(element.dataset.showOnlyUnread||false);});keyboardHandler.on("s",()=>navHandler.saveEntry());keyboardHandler.on("d",()=>navHandler.fetchOriginalContent());keyboardHandler.on("f",()=>navHandler.toggleBookmark());keyboardHandler.on("?",()=>navHandler.showKeyboardShortcuts());keyboardHandler.on("#",()=>navHandler.unsubscribeFromFeed());keyboardHandler.on("/",(e)=>navHandler.setFocusToSearchInput(e));keyboardHandler.on("Escape",()=>ModalHandler.close());keyboardHandler.listen();}
+document.addEventListener("DOMContentLoaded",function(){FormHandler.handleSubmitButtons();let navHandler=new NavHandler();if(!document.querySelector("body[data-disable-keyboard-shortcuts=true]")){let keyboardHandler=new KeyboardHandler();keyboardHandler.on("g u",()=>navHandler.goToPage("unread"));keyboardHandler.on("g b",()=>navHandler.goToPage("starred"));keyboardHandler.on("g h",()=>navHandler.goToPage("history"));keyboardHandler.on("g f",()=>navHandler.goToFeedOrFeeds());keyboardHandler.on("g c",()=>navHandler.goToPage("categories"));keyboardHandler.on("g s",()=>navHandler.goToPage("settings"));keyboardHandler.on("ArrowLeft",()=>navHandler.goToPrevious());keyboardHandler.on("ArrowRight",()=>navHandler.goToNext());keyboardHandler.on("k",()=>navHandler.goToPrevious());keyboardHandler.on("p",()=>navHandler.goToPrevious());keyboardHandler.on("j",()=>navHandler.goToNext());keyboardHandler.on("n",()=>navHandler.goToNext());keyboardHandler.on("h",()=>navHandler.goToPage("previous"));keyboardHandler.on("l",()=>navHandler.goToPage("next"));keyboardHandler.on("o",()=>navHandler.openSelectedItem());keyboardHandler.on("v",()=>navHandler.openOriginalLink());keyboardHandler.on("m",()=>navHandler.toggleEntryStatus());keyboardHandler.on("A",()=>{let element=document.querySelector("a[data-mark-page-as-read]");navHandler.markPageAsRead(element.dataset.showOnlyUnread||false);});keyboardHandler.on("s",()=>navHandler.saveEntry());keyboardHandler.on("d",()=>navHandler.fetchOriginalContent());keyboardHandler.on("f",()=>navHandler.toggleBookmark());keyboardHandler.on("?",()=>navHandler.showKeyboardShortcuts());keyboardHandler.on("#",()=>navHandler.unsubscribeFromFeed());keyboardHandler.on("/",(e)=>navHandler.setFocusToSearchInput(e));keyboardHandler.on("Escape",()=>ModalHandler.close());keyboardHandler.listen();}
let touchHandler=new TouchHandler(navHandler);touchHandler.listen();let mouseHandler=new MouseHandler();mouseHandler.onClick("a[data-save-entry]",(event)=>{EntryHandler.saveEntry(event.target);});mouseHandler.onClick("a[data-toggle-bookmark]",(event)=>{EntryHandler.toggleBookmark(event.target);});mouseHandler.onClick("a[data-toggle-status]",(event)=>{let currentItem=DomHelper.findParent(event.target,"entry");if(!currentItem){currentItem=DomHelper.findParent(event.target,"item");}
if(currentItem){EntryHandler.toggleEntryStatus(currentItem);}});mouseHandler.onClick("a[data-fetch-content-entry]",(event)=>{EntryHandler.fetchOriginalContent(event.target);});mouseHandler.onClick("a[data-on-click=markPageAsRead]",(event)=>{navHandler.markPageAsRead(event.target.dataset.showOnlyUnread||false);});mouseHandler.onClick("a[data-confirm]",(event)=>{(new ConfirmHandler()).handle(event);});mouseHandler.onClick("a[data-action=search]",(event)=>{navHandler.setFocusToSearchInput(event);});mouseHandler.onClick("a[data-link-state=flip]",(event)=>{LinkStateHandler.flip(event.target);},true);if(document.documentElement.clientWidth<600){let menuHandler=new MenuHandler();mouseHandler.onClick(".logo",()=>menuHandler.toggleMainMenu());mouseHandler.onClick(".header nav li",(event)=>menuHandler.clickMenuListItem(event));}
if("serviceWorker"in navigator){let scriptElement=document.getElementById("service-worker-script");if(scriptElement){navigator.serviceWorker.register(scriptElement.src);}}});})();`,
@@ -106,6 +106,6 @@ if("serviceWorker"in navigator){let scriptElement=document.getElementById("servi
}
var JavascriptsChecksums = map[string]string{
- "app": "a1ecb3d068451248b55909a0baeba4a53a6069f1be09db8c67550816df041e2a",
+ "app": "adf55d14f11a472a4224a6d983310964b9fe4217bd60c87adeb1779e96729243",
"sw": "55fffa223919cc18572788fb9c62fccf92166c0eb5d3a1d6f91c31f24d020be9",
}
diff --git a/ui/static/js/bootstrap.js b/ui/static/js/bootstrap.js
index e44b1e7..4502c51 100644
--- a/ui/static/js/bootstrap.js
+++ b/ui/static/js/bootstrap.js
@@ -23,7 +23,7 @@ document.addEventListener("DOMContentLoaded", function() {
keyboardHandler.on("v", () => navHandler.openOriginalLink());
keyboardHandler.on("m", () => navHandler.toggleEntryStatus());
keyboardHandler.on("A", () => {
- let element = document.querySelector("a[data-on-click=markPageAsRead]");
+ let element = document.querySelector("a[data-mark-page-as-read]");
navHandler.markPageAsRead(element.dataset.showOnlyUnread || false);
});
keyboardHandler.on("s", () => navHandler.saveEntry());
diff --git a/ui/static/js/confirm_handler.js b/ui/static/js/confirm_handler.js
index c0147cd..171654f 100644
--- a/ui/static/js/confirm_handler.js
+++ b/ui/static/js/confirm_handler.js
@@ -32,7 +32,11 @@ class ConfirmHandler {
questionElement.remove();
containerElement.appendChild(loadingElement);
- this.executeRequest(linkElement.dataset.url, linkElement.dataset.redirectUrl);
+ if (linkElement.dataset.markPageAsRead) {
+ (new NavHandler()).markPageAsRead(event.target.dataset.showOnlyUnread || false);
+ } else {
+ this.executeRequest(linkElement.dataset.url, linkElement.dataset.redirectUrl);
+ }
};
let noElement = document.createElement("a");