diff --git a/classes/dlg.php b/classes/dlg.php index f62a42b4dd28d41fb57a2289d7acf04c3a9ee785..4240ad222358bc62c81c45fb4951c6671b699083 100644 --- a/classes/dlg.php +++ b/classes/dlg.php @@ -13,28 +13,6 @@ class Dlg extends Handler_Protected { return false; } - function importOpml() { - print_notice("If you have imported labels and/or filters, you might need to reload preferences to see your new data."); - - print "<div class='panel panel-scrollable'>"; - - $opml = new OPML($_REQUEST); - - $opml->opml_import($_SESSION["uid"]); - - print "</div>"; - - print "<footer class='text-center'>"; - print "<button dojoType='dijit.form.Button' - onclick=\"dijit.byId('opmlImportDlg').execute()\">". - __('Close this window')."</button>"; - print "</footer>"; - - print "</div>"; - - //return; - } - function printTagCloud() { print "<div class='panel text-center'>"; diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index 949b23c2054283433ce825de27ddb15694f661eb..5fcafeaaeb6683249d1424875810d97f77a4d908 100755 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1194,6 +1194,11 @@ class Pref_Feeds extends Handler_Protected { Feeds::add_feed_category($feed_cat); } + function importOpml() { + $opml = new OPML($_REQUEST); + $opml->opml_import($_SESSION["uid"]); + } + function index() { print "<div dojoType='dijit.layout.AccordionContainer' region='center'>"; @@ -1340,17 +1345,11 @@ class Pref_Feeds extends Handler_Protected { print_notice("Only main settings profile can be migrated using OPML."); - print "<iframe id=\"upload_iframe\" - name=\"upload_iframe\" onload=\"Helpers.OPML.onImportComplete(this)\" - style=\"width: 400px; height: 100px; display: none;\"></iframe>"; - - print "<form name='opml_form' style='display : inline-block' target='upload_iframe' - enctype='multipart/form-data' method='POST' - action='backend.php'> + print "<form id='opml_import_form' method='post' enctype='multipart/form-data' > <label class='dijitButton'>".__("Choose file...")." <input style='display : none' id='opml_file' name='opml_file' type='file'> </label> - <input type='hidden' name='op' value='dlg'> + <input type='hidden' name='op' value='pref-feeds'> <input type='hidden' name='csrf_token' value='".$_SESSION['csrf_token']."'> <input type='hidden' name='method' value='importOpml'> <button dojoType='dijit.form.Button' class='alt-primary' onclick=\"return Helpers.OPML.import();\" type=\"submit\">" . diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index f9cb450e53200f87a982fa093a8a8ae25551abac..6fabc48df67e958637ac1210bbddf921888b84f6 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -220,9 +220,42 @@ const Helpers = { } else { Notify.progress("Importing, please wait...", true); - Element.show("upload_iframe"); + const xhr = new XMLHttpRequest(); - return true; + xhr.open( 'POST', 'backend.php', true ); + xhr.onload = function () { + Notify.close(); + + const dialog = new dijit.Dialog({ + title: __("OPML Import"), + style: "width: 600px", + onCancel: function () { + window.location.reload(); + }, + execute: function () { + window.location.reload(); + }, + content: ` + <div class='alert alert-info'> + ${__("If you have imported labels and/or filters, you might need to reload preferences to see your new data.")} + </div> + <div class='panel panel-scrollable'> + ${xhr.responseText} + </div> + <footer class='text-center'> + <button dojoType='dijit.form.Button' type='submit' class='alt-primary'> + ${__('Close this window')} + </button> + </footer> + ` + }); + + dialog.show(); + }; + + xhr.send(new FormData($("opml_import_form"))); + + return false; } }, onImportComplete: function(iframe) {