From 22fe9b54d2150e543338dbc7541f134c0a7c61f6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 20 Feb 2021 13:32:09 +0300 Subject: feed editor: use client dialog --- js/CommonDialogs.js | 437 +++++++++++++++++++++++----------------------------- 1 file changed, 191 insertions(+), 246 deletions(-) (limited to 'js/CommonDialogs.js') diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js index 5477e9ecd..704e797d3 100644 --- a/js/CommonDialogs.js +++ b/js/CommonDialogs.js @@ -11,72 +11,6 @@ const CommonDialogs = { const dialog = dijit.byId("infoBox"); if (dialog) dialog.hide(); }, - removeFeedIcon: function(id) { - if (confirm(__("Remove stored feed icon?"))) { - Notify.progress("Removing feed icon...", true); - - const query = {op: "pref-feeds", method: "removeicon", feed_id: id}; - - xhr.post("backend.php", query, () => { - Notify.info("Feed icon removed."); - - if (App.isPrefs()) - dijit.byId("feedTree").reload(); - else - Feeds.reload(); - - const icon = App.findAll(".feed-editor-icon")[0]; - - if (icon) - icon.src = icon.src.replace(/\?[0-9]+$/, "?" + new Date().getTime()); - - }); - } - - return false; - }, - uploadFeedIcon: function() { - const file = App.byId("icon_file"); - - if (file.value.length == 0) { - alert(__("Please select an image file to upload.")); - } else if (confirm(__("Upload new icon for this feed?"))) { - Notify.progress("Uploading, please wait...", true); - - const xhr = new XMLHttpRequest(); - - xhr.open( 'POST', 'backend.php', true ); - xhr.onload = function () { - switch (parseInt(this.responseText)) { - case 0: - { - Notify.info("Upload complete."); - - if (App.isPrefs()) - dijit.byId("feedTree").reload(); - else - Feeds.reload(); - - const icon = App.findAll(".feed-editor-icon")[0]; - - if (icon) - icon.src = icon.src.replace(/\?[0-9]+$/, "?" + new Date().getTime()); - - } - break; - case 1: - Notify.error("Upload failed: icon is too big."); - break; - case 2: - Notify.error("Upload failed."); - break; - } - }; - xhr.send(new FormData(App.byId("feed_icon_upload_form"))); - } - - return false; - }, subscribeToFeed: function() { xhr.json("backend.php", {op: "feeds", method: "subscribeToFeed"}, @@ -407,6 +341,86 @@ const CommonDialogs = { CommonDialogs.unsubscribeFeed(feed_id); } }, + uploadIcon: function(input) { + if (input.files.length != 0) { + const icon_file = input.files[0]; + + if (icon_file.type.indexOf("image/") == -1) { + alert(__("Please select an image file.")); + return; + } + + const fd = new FormData(); + fd.append('icon_file', icon_file) + fd.append('feed_id', feed_id); + fd.append('op', 'pref-feeds'); + fd.append('method', 'uploadIcon'); + fd.append('csrf_token', App.getInitParam("csrf_token")); + + const xhr = new XMLHttpRequest(); + + xhr.open( 'POST', 'backend.php', true ); + xhr.onload = function () { + console.log(this.responseText); + + // TODO: make a notice box within panel content + switch (parseInt(this.responseText)) { + case 1: + Notify.error("Upload failed: icon is too big."); + break; + case 2: + Notify.error("Upload failed."); + break; + default: + { + Notify.info("Upload complete."); + + if (App.isPrefs()) + dijit.byId("feedTree").reload(); + else + Feeds.reload(); + + const icon = dialog.domNode.querySelector(".feedIcon"); + + if (icon) { + icon.src = this.responseText; + icon.show(); + } + + input.value = ""; + } + } + }; + + xhr.send(fd); + + } + }, + removeIcon: function(id) { + if (confirm(__("Remove stored feed icon?"))) { + Notify.progress("Removing feed icon...", true); + + const query = {op: "pref-feeds", method: "removeicon", feed_id: id}; + + xhr.post("backend.php", query, () => { + Notify.info("Feed icon removed."); + + if (App.isPrefs()) + dijit.byId("feedTree").reload(); + else + Feeds.reload(); + + const icon = dialog.domNode.querySelector(".feedIcon"); + + if (icon) { + icon.src = ""; + icon.hide(); + } + }); + } + + return false; + }, execute: function () { if (this.validate()) { Notify.progress("Saving data...", true); @@ -437,205 +451,136 @@ const CommonDialogs = { // for unsub prompt dialog.feed_title = feed.title; + // options tab + const options = { + include_in_digest: [ feed.include_in_digest, __('Include in e-mail digest') ], + always_display_enclosures: [ feed.always_display_enclosures, __('Always display image attachments') ], + hide_images: [ feed.hide_images, __('Do not embed media') ], + cache_images: [ feed.cache_images, __('Cache media') ], + mark_unread_on_update: [ feed.mark_unread_on_update, __('Mark updated articles as unread') ] + }; + dialog.attr('content', ` -
-
+
+
+
- ${App.FormFields.hidden_tag("id", feed_id)} - ${App.FormFields.hidden_tag("op", "pref-feeds")} - ${App.FormFields.hidden_tag("method", "editSave")} - -
-
- -
- -
- - - - ${feed.last_error ? - `error - ` : ""} -
+ ${App.FormFields.hidden_tag("id", feed_id)} + ${App.FormFields.hidden_tag("op", "pref-feeds")} + ${App.FormFields.hidden_tag("method", "editSave")} - ${reply.cats.enabled ? - ` +
- - ${reply.cats.select} +
- ` : ""} - -
- - -
- - ${reply.lang.enabled ? - ` +
- - ${App.FormFields.select_tag("feed_language", feed.feed_language, reply.lang.all)} + + + + ${feed.last_error ? + `error + ` : ""}
- ` : ""} - -
- -
- - ${App.FormFields.select_hash("update_interval", feed.update_interval, reply.intervals.update)} -
-
- - - ${App.FormFields.select_hash("purge_interval", - feed.purge_interval, - reply.intervals.purge, - reply.force_purge ? {disabled: 1} : {})} - -
-
-
-
-
-
- - -
-
- - -
-
-
-
-
- - $include_in_digest = $row["include_in_digest"]; - - if ($include_in_digest) { - $checked = "checked="1" - } else { - $checked = " - } - -
- - - -
- - $always_display_enclosures = $row["always_display_enclosures"]; - - if ($always_display_enclosures) { - $checked = "checked - } else { - $checked = " - } - -
- - - -
- - $hide_images = $row["hide_images"]; - - if ($hide_images) { - $checked = "checked="1" - } else { - $checked = " - } - -
- - - -
- - $cache_images = $row["cache_images"]; - - if ($cache_images) { - $checked = "checked="1" - } else { - $checked = " - } - -
- - - -
- - $mark_unread_on_update = $row["mark_unread_on_update"]; - - if ($mark_unread_on_update) { - $checked = "checked - } else { - $checked = " - } + ${reply.cats.enabled ? + ` +
+ + ${reply.cats.select} +
+ ` : ""} -
+
+ + +
- + ${reply.lang.enabled ? + ` +
+ + ${App.FormFields.select_tag("feed_language", + feed.feed_language ? feed.feed_language : reply.lang.default, + reply.lang.all)} +
+ ` : ""} -
+
-
+
+ + ${App.FormFields.select_hash("update_interval", feed.update_interval, reply.intervals.update)} +
+
+ -
+ ${App.FormFields.select_hash("purge_interval", + feed.purge_interval, + reply.intervals.purge, + reply.force_purge ? {disabled: 1} : {})} - +
+ +
+
+
+
+ + +
+
+ + +
+
+
+
+
+ ${Object.keys(options).map((name) => + ` +
+ +
+ `).join("")} +
+
+
+
- -
- -
- ${reply.plugin_data} -
- + ${App.FormFields.submit_tag(__("Remove"), {class: "alt-danger", onclick: "App.dialogOf(this).removeIcon("+feed_id+")"})} +
+
+ ${reply.plugin_data} +
- - + + `); }) }); -- cgit v1.2.3-54-g00ecf