Add remove button in feed edit page

This commit is contained in:
Frédéric Guillot 2018-08-25 12:21:54 -07:00
parent febce4f2e3
commit 551b73acfb
7 changed files with 43 additions and 10 deletions

View File

@ -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",

View File

@ -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"
}

View File

@ -85,6 +85,17 @@
<li><strong>{{ t "LastModified header:" }} </strong>{{ if .feed.LastModifiedHeader }}{{ .feed.LastModifiedHeader }}{{ else }}{{ t "None" }}{{ end }}</li>
</ul>
</div>
<div class="alert alert-error">
<a href="#"
data-confirm="true"
data-label-question="{{ t "Are you sure?" }}"
data-label-yes="{{ t "yes" }}"
data-label-no="{{ t "no" }}"
data-label-loading="{{ t "Work in progress..." }}"
data-url="{{ route "removeFeed" "feedID" .feed.ID }}"
data-redirect-url="{{ route "feeds" }}">{{ t "Remove this feed" }}</a>
</div>
{{ end }}
{{ end }}

View File

@ -471,6 +471,17 @@ var templateViewsMap = map[string]string{
<li><strong>{{ t "LastModified header:" }} </strong>{{ if .feed.LastModifiedHeader }}{{ .feed.LastModifiedHeader }}{{ else }}{{ t "None" }}{{ end }}</li>
</ul>
</div>
<div class="alert alert-error">
<a href="#"
data-confirm="true"
data-label-question="{{ t "Are you sure?" }}"
data-label-yes="{{ t "yes" }}"
data-label-no="{{ t "no" }}"
data-label-loading="{{ t "Work in progress..." }}"
data-url="{{ route "removeFeed" "feedID" .feed.ID }}"
data-redirect-url="{{ route "feeds" }}">{{ t "Remove this feed" }}</a>
</div>
{{ 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",

View File

@ -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",
}

View File

@ -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);
});

View File

@ -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");