diff --git a/classes/dlg.php b/classes/dlg.php index 32c41ee34acde295862b51b60f5e4905be293065..6617dfe07f6c50457ef8d37dc416ad8740c5c67f 100644 --- a/classes/dlg.php +++ b/classes/dlg.php @@ -49,7 +49,7 @@ class Dlg extends Handler_Protected { print "<div align='center'>"; - print "<button dojoType=\"dijit.form.Button\" onclick=\"return opmlRegenKey()\">". + print "<button dojoType=\"dijit.form.Button\" onclick=\"return Prefs.OPML.changeKey()\">". __('Generate new URL')."</button> "; print "<button dojoType=\"dijit.form.Button\" onclick=\"return CommonDialogs.closeInfoBox()\">". diff --git a/classes/opml.php b/classes/opml.php index 5b7690375ed762c4a52c6fa4880888e695f92f39..1b1897e7d4aea425a64a48079116df5c64c71ea0 100644 --- a/classes/opml.php +++ b/classes/opml.php @@ -8,11 +8,8 @@ class Opml extends Handler_Protected { } function export() { - $output_name = $_REQUEST["filename"]; - if (!$output_name) $output_name = "TinyTinyRSS.opml"; - - $show_settings = $_REQUEST["settings"]; - + $output_name = "tt-rss_".date("Y-m-d").".opml"; + $show_settings = $_REQUEST["include_settings"]; $owner_uid = $_SESSION["uid"]; $rc = $this->opml_export($output_name, $owner_uid, false, ($show_settings == 1)); diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index 961a09c28afca34d662853642df247dfbaacfe23..ff91120ec166f593c3c27e611d2a57001536a231 100755 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1270,11 +1270,11 @@ class Pref_Feeds extends Handler_Protected { print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('OPML')."\">"; - print "<p>" . __("Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings.") . - __("Only main settings profile can be migrated using OPML.") . "</p>"; + print_notice(__("Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings.") . + __("Only main settings profile can be migrated using OPML.")); print "<iframe id=\"upload_iframe\" - name=\"upload_iframe\" onload=\"opmlImportComplete(this)\" + name=\"upload_iframe\" onload=\"Prefs.OPML.onImportComplete(this)\" style=\"width: 400px; height: 100px; display: none;\"></iframe>"; print "<form name=\"opml_form\" style='display : block' target=\"upload_iframe\" @@ -1285,24 +1285,29 @@ class Pref_Feeds extends Handler_Protected { </label> <input type=\"hidden\" name=\"op\" value=\"dlg\"> <input type=\"hidden\" name=\"method\" value=\"importOpml\"> - <button dojoType=\"dijit.form.Button\" onclick=\"return opmlImport();\" type=\"submit\">" . - __('Import my OPML') . "</button>"; + <button dojoType=\"dijit.form.Button\" onclick=\"return Prefs.OPML.import();\" type=\"submit\">" . + __('Import OPML') . "</button>"; - print "<hr>"; + print "</form>"; + + print "<p/>"; - $opml_export_filename = "TinyTinyRSS_".date("Y-m-d").".opml"; + print "<form dojoType=\"dijit.form.Form\" id=\"opmlExportForm\">"; - print "<p>" . __('Filename:') . - " <input class=\"input input-text\" type=\"text\" id=\"filename\" value=\"$opml_export_filename\" /> " . - __('Include settings') . "<input type=\"checkbox\" id=\"settings\" checked=\"1\"/>"; + print "<button dojoType=\"dijit.form.Button\" + onclick=\"Prefs.OPML.export()\" >" . + __('Export OPML') . "</button>"; - print "</p><button dojoType=\"dijit.form.Button\" - onclick=\"gotoExportOpml(document.opml_form.filename.value, document.opml_form.settings.checked)\" >" . - __('Export OPML') . "</button></p></form>"; + print "<label>"; + print_checkbox("include_settings", true, "1", ""); + print " " . __("Include settings"); + print "</label>"; + + print "</form>"; print "<hr>"; - print "<p>" . __('Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.') . "</p>"; + print_notice(__('Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.')); print_warning("Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds."); diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index 749e954cc1f1f53e8e9d4b4429e9ee99751b0798..df42547b21ace3f86396792bc1127c9d1bca51b4 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -148,7 +148,85 @@ define(["dojo/_base/declare"], function (declare) { Notify.close(); }); } - } + }; + + Prefs.OPML = { + import: function() { + const opml_file = $("opml_file"); + + if (opml_file.value.length == 0) { + alert(__("Please choose an OPML file first.")); + return false; + } else { + Notify.progress("Importing, please wait...", true); + + Element.show("upload_iframe"); + + return true; + } + }, + onImportComplete: function(iframe) { + if (!iframe.contentDocument.body.innerHTML) return false; + + Element.show(iframe); + + Notify.close(); + + if (dijit.byId('opmlImportDlg')) + dijit.byId('opmlImportDlg').destroyRecursive(); + + const content = iframe.contentDocument.body.innerHTML; + + const dialog = new dijit.Dialog({ + id: "opmlImportDlg", + title: __("OPML Import"), + style: "width: 600px", + onCancel: function () { + window.location.reload(); + }, + execute: function () { + window.location.reload(); + }, + content: content + }); + + dojo.connect(dialog, "onShow", function () { + Element.hide(iframe); + }); + + dialog.show(); + }, + export: function() { + console.log("export"); + window.open("backend.php?op=opml&method=export&" + dojo.formToQuery("opmlExportForm")); + }, + changeKey: function() { + if (confirm(__("Replace current OPML publishing address with a new one?"))) { + Notify.progress("Trying to change address...", true); + + xhrJson("backend.php", {op: "pref-feeds", method: "regenOPMLKey"}, (reply) => { + if (reply) { + const new_link = reply.link; + const e = $('pub_opml_url'); + + if (new_link) { + e.href = new_link; + e.innerHTML = new_link; + + new Effect.Highlight(e); + + Notify.close(); + + } else { + Notify.error("Could not change feed URL."); + } + } + }); + } + return false; + }, + +}; return Prefs; }); diff --git a/js/prefs.js b/js/prefs.js index edb11bc7dc499db17e1d17288267cca92942b8b3..4bdfb45efa61251bc2057d08d30fcef21cf91a17 100755 --- a/js/prefs.js +++ b/js/prefs.js @@ -152,79 +152,4 @@ require(["dojo/_base/kernel", exception_error(e); } }); -}); - -function opmlImportComplete(iframe) { - if (!iframe.contentDocument.body.innerHTML) return false; - - Element.show(iframe); - - Notify.close(); - - if (dijit.byId('opmlImportDlg')) - dijit.byId('opmlImportDlg').destroyRecursive(); - - const content = iframe.contentDocument.body.innerHTML; - - const dialog = new dijit.Dialog({ - id: "opmlImportDlg", - title: __("OPML Import"), - style: "width: 600px", - onCancel: function () { - window.location.reload(); - }, - execute: function () { - window.location.reload(); - }, - content: content - }); - - dialog.show(); -} - -function opmlImport() { - - const opml_file = $("opml_file"); - - if (opml_file.value.length == 0) { - alert(__("Please choose an OPML file first.")); - return false; - } else { - Notify.progress("Importing, please wait...", true); - - Element.show("upload_iframe"); - - return true; - } -} - -function opmlRegenKey() { - if (confirm(__("Replace current OPML publishing address with a new one?"))) { - Notify.progress("Trying to change address...", true); - - xhrJson("backend.php", { op: "pref-feeds", method: "regenOPMLKey" }, (reply) => { - if (reply) { - const new_link = reply.link; - const e = $('pub_opml_url'); - - if (new_link) { - e.href = new_link; - e.innerHTML = new_link; - - new Effect.Highlight(e); - - Notify.close(); - - } else { - Notify.error("Could not change feed URL."); - } - } - }); - } - return false; -} - -function gotoExportOpml(filename, settings) { - const tmp = settings ? 1 : 0; - document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp; -} +}); \ No newline at end of file