From 551b73acfb6ed4620387c7345b117d32697deb77 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 25 Aug 2018 12:21:54 -0700 Subject: Add remove button in feed edit page --- locale/translations.go | 5 +++-- locale/translations/fr_FR.json | 3 ++- template/html/edit_feed.html | 11 +++++++++++ template/views.go | 13 ++++++++++++- ui/static/js.go | 6 +++--- ui/static/js/bootstrap.js | 1 + ui/static/js/confirm_handler.js | 14 +++++++++++--- 7 files changed, 43 insertions(+), 10 deletions(-) diff --git a/locale/translations.go b/locale/translations.go index c1174e4..09fdb3d 100755 --- a/locale/translations.go +++ b/locale/translations.go @@ -500,7 +500,8 @@ var translations = map[string]string{ "There is no result for this search.": "Il n'y a aucun résultat pour cette recherche.", "Search...": "Recherche...", "Set focus on search form": "Mettre le focus sur le champ de recherche", - "Search": "Recherche" + "Search": "Recherche", + "Remove this feed": "Supprimer cet abonnement" } `, "nl_NL": `{ @@ -1175,7 +1176,7 @@ var translations = map[string]string{ var translationsChecksums = map[string]string{ "de_DE": "c87a08365c81ec478d705d8e1110cd1b864476d35b5b281f1e76e7a21afc1ae7", "en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897", - "fr_FR": "343a148eed375a593023c30597ef7280d18222756c5062e6a85e1006c7b12d14", + "fr_FR": "c61316e5862fc9d7118bb555679714200b3a5c560241e755ade8f85fcdcb3fdb", "nl_NL": "05cca4936bd3b0fa44057c4dab64acdef3aed32fbb682393f254cfe2f686ef1f", "pl_PL": "2295f35a98c8f60cfc6bab241d26b224c06979cc9ca3740bb89c63c7596a0431", "zh_CN": "f5fb0a9b7336c51e74d727a2fb294bab3514e3002376da7fd904e0d7caed1a1c", diff --git a/locale/translations/fr_FR.json b/locale/translations/fr_FR.json index 534432c..5ef2ce7 100644 --- a/locale/translations/fr_FR.json +++ b/locale/translations/fr_FR.json @@ -240,5 +240,6 @@ "There is no result for this search.": "Il n'y a aucun résultat pour cette recherche.", "Search...": "Recherche...", "Set focus on search form": "Mettre le focus sur le champ de recherche", - "Search": "Recherche" + "Search": "Recherche", + "Remove this feed": "Supprimer cet abonnement" } diff --git a/template/html/edit_feed.html b/template/html/edit_feed.html index 41c3c80..9c57590 100644 --- a/template/html/edit_feed.html +++ b/template/html/edit_feed.html @@ -85,6 +85,17 @@
  • {{ t "LastModified header:" }} {{ if .feed.LastModifiedHeader }}{{ .feed.LastModifiedHeader }}{{ else }}{{ t "None" }}{{ end }}
  • + +
    + {{ t "Remove this feed" }} +
    {{ end }} {{ end }} \ No newline at end of file diff --git a/template/views.go b/template/views.go index 2912f22..1591b69 100644 --- a/template/views.go +++ b/template/views.go @@ -471,6 +471,17 @@ var templateViewsMap = map[string]string{
  • {{ t "LastModified header:" }} {{ if .feed.LastModifiedHeader }}{{ .feed.LastModifiedHeader }}{{ else }}{{ t "None" }}{{ end }}
  • + +
    + {{ t "Remove this feed" }} +
    {{ end }} {{ end }}`, @@ -1320,7 +1331,7 @@ var templateViewsMapChecksums = map[string]string{ "create_category": "2b82af5d2dcd67898dc5daa57a6461e6ff8121a6089b2a2a1be909f35e4a2275", "create_user": "1ef0a1f9bf119d44929c81f13073a257d69650cf5064960cf06a63fe51923e86", "edit_category": "cee720faadcec58289b707ad30af623d2ee66c1ce23a732965463250d7ff41c5", - "edit_feed": "992e315c244da588d5e9e6912d12d933534c2a86e8e771e7dbd5908564abf616", + "edit_feed": "1a8e342e4fac80e8b9c73537c7fe8aaf7f9e3e7af22f411927010897dd37e9c3", "edit_user": "7373e09f805e6c017167001519b9feb04226be6c81c2875cbacd5ce94f2c24bf", "entry": "c838ae7f19d775d473ee92c4999eb28a5063869411c834d26a3f4b686ce88dbf", "feed_entries": "76e7e32cdd6552304e38931459fe12cefdb5354f65a7ac3bbed52a2979896d3e", diff --git a/ui/static/js.go b/ui/static/js.go index 555bec6..bd50873 100644 --- a/ui/static/js.go +++ b/ui/static/js.go @@ -56,8 +56,8 @@ static saveEntry(element){if(element.dataset.completed){return;} element.innerHTML=element.dataset.labelLoading;let request=new RequestBuilder(element.dataset.saveUrl);request.withCallback(()=>{element.innerHTML=element.dataset.labelDone;element.dataset.completed=true;});request.execute();} 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 ConfirmHandler{remove(url){let request=new RequestBuilder(url);request.withCallback(()=>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.remove(linkElement.dataset.url);};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 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);}} 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";}}} @@ -97,6 +97,6 @@ if("serviceWorker"in navigator){let scriptElement=document.getElementById("servi } var JavascriptsChecksums = map[string]string{ - "app": "438cad66af283a59cee674615c851ca105d22be5c92224351574b82716cf5cee", + "app": "4c73b3157f06d6b6689daaa8d0ecb7ea4e12945fff16d28bdf6da02ec4aca72c", "sw": "55fffa223919cc18572788fb9c62fccf92166c0eb5d3a1d6f91c31f24d020be9", } diff --git a/ui/static/js/bootstrap.js b/ui/static/js/bootstrap.js index bd3b09e..3e9004f 100644 --- a/ui/static/js/bootstrap.js +++ b/ui/static/js/bootstrap.js @@ -58,6 +58,7 @@ document.addEventListener("DOMContentLoaded", function() { }); mouseHandler.onClick("a[data-on-click=markPageAsRead]", () => navHandler.markPageAsRead()); + mouseHandler.onClick("a[data-confirm]", (event) => { (new ConfirmHandler()).handle(event); }); diff --git a/ui/static/js/confirm_handler.js b/ui/static/js/confirm_handler.js index 9fe9133..c0147cd 100644 --- a/ui/static/js/confirm_handler.js +++ b/ui/static/js/confirm_handler.js @@ -1,7 +1,15 @@ class ConfirmHandler { - remove(url) { + executeRequest(url, redirectURL) { let request = new RequestBuilder(url); - request.withCallback(() => window.location.reload()); + + request.withCallback(() => { + if (redirectURL) { + window.location.href = redirectURL; + } else { + window.location.reload(); + } + }); + request.execute(); } @@ -24,7 +32,7 @@ class ConfirmHandler { questionElement.remove(); containerElement.appendChild(loadingElement); - this.remove(linkElement.dataset.url); + this.executeRequest(linkElement.dataset.url, linkElement.dataset.redirectUrl); }; let noElement = document.createElement("a"); -- cgit v1.2.3