Loading data/admin.html +38 −3 Changes for data/admin.html: 38 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -353,13 +353,35 @@ function removeDomain(did) { } function exportDb() { ajaxGet("/settings/" + currentDomain + "/api/export", function(err, data) { ajaxGet("/settings/" + currentDomain + "/api/listdomains", function(err, data) { if (err) { showError(err); return; } var html = '<h3>Export Database</h3>'; html += '<form id="exportdbform" class="admin-form">'; html += '<table>'; html += '<tr><td><label>Database:</label></td><td><select id="export_domain">'; html += '<option value="admin">admin.local</option>'; if (data.domains) { for (var i = 0; i < data.domains.length; i++) { var d = data.domains[i]; html += '<option value="' + d.id + '"' + (currentDomain === d.id ? ' selected' : '') + '>' + d.name + '</option>'; } } html += '</select></td></tr>'; html += '<tr><td></td><td><input type="button" value="Export" onclick="submitExportDb()"></td></tr>'; html += '</table></form>'; setContent(html); }); } function submitExportDb() { var exportDomain = document.getElementById("export_domain").value; ajaxGet("/settings/" + exportDomain + "/api/export", function(err, data) { if (err) { showError(err); return; } var jsonStr = JSON.stringify(data, null, 2); var blob = new Blob([jsonStr], {type: "application/json"}); var a = document.createElement("a"); a.href = URL.createObjectURL(blob); a.download = currentDomain + "-export.json"; a.download = exportDomain + "-export.json"; document.body.appendChild(a); a.click(); document.body.removeChild(a); Loading @@ -368,16 +390,29 @@ function exportDb() { } function importDbForm() { ajaxGet("/settings/" + currentDomain + "/api/listdomains", function(err, data) { if (err) { showError(err); return; } var html = '<h3>Import Database</h3>'; html += '<form id="importdbform" class="admin-form">'; html += '<table>'; html += '<tr><td><label>Database:</label></td><td><select id="import_domain">'; html += '<option value="admin">admin.local</option>'; if (data.domains) { for (var i = 0; i < data.domains.length; i++) { var d = data.domains[i]; html += '<option value="' + d.id + '"' + (currentDomain === d.id ? ' selected' : '') + '>' + d.name + '</option>'; } } html += '</select></td></tr>'; html += '<tr><td><label>JSON File:</label></td><td><input type="file" id="import_file" accept=".json"></td></tr>'; html += '<tr><td></td><td><input type="button" value="Import" onclick="submitImportDb()"></td></tr>'; html += '</table></form>'; setContent(html); }); } function submitImportDb() { var importDomain = document.getElementById("import_domain").value; var fileInput = document.getElementById("import_file"); if (!fileInput.files || !fileInput.files[0]) { showError("Bitte eine JSON-Datei auswaehlen!"); Loading @@ -392,7 +427,7 @@ function submitImportDb() { showError("Ungueltige JSON-Datei: " + ex.message); return; } ajaxPost("/settings/" + currentDomain + "/api/import", jsonData, function(err, data) { ajaxPost("/settings/" + importDomain + "/api/import", jsonData, function(err, data) { if (err) { showError(err); return; } alert("Import erfolgreich: " + (data.imported || 0) + " Records importiert."); loadDomains(); Loading Loading
data/admin.html +38 −3 Changes for data/admin.html: 38 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -353,13 +353,35 @@ function removeDomain(did) { } function exportDb() { ajaxGet("/settings/" + currentDomain + "/api/export", function(err, data) { ajaxGet("/settings/" + currentDomain + "/api/listdomains", function(err, data) { if (err) { showError(err); return; } var html = '<h3>Export Database</h3>'; html += '<form id="exportdbform" class="admin-form">'; html += '<table>'; html += '<tr><td><label>Database:</label></td><td><select id="export_domain">'; html += '<option value="admin">admin.local</option>'; if (data.domains) { for (var i = 0; i < data.domains.length; i++) { var d = data.domains[i]; html += '<option value="' + d.id + '"' + (currentDomain === d.id ? ' selected' : '') + '>' + d.name + '</option>'; } } html += '</select></td></tr>'; html += '<tr><td></td><td><input type="button" value="Export" onclick="submitExportDb()"></td></tr>'; html += '</table></form>'; setContent(html); }); } function submitExportDb() { var exportDomain = document.getElementById("export_domain").value; ajaxGet("/settings/" + exportDomain + "/api/export", function(err, data) { if (err) { showError(err); return; } var jsonStr = JSON.stringify(data, null, 2); var blob = new Blob([jsonStr], {type: "application/json"}); var a = document.createElement("a"); a.href = URL.createObjectURL(blob); a.download = currentDomain + "-export.json"; a.download = exportDomain + "-export.json"; document.body.appendChild(a); a.click(); document.body.removeChild(a); Loading @@ -368,16 +390,29 @@ function exportDb() { } function importDbForm() { ajaxGet("/settings/" + currentDomain + "/api/listdomains", function(err, data) { if (err) { showError(err); return; } var html = '<h3>Import Database</h3>'; html += '<form id="importdbform" class="admin-form">'; html += '<table>'; html += '<tr><td><label>Database:</label></td><td><select id="import_domain">'; html += '<option value="admin">admin.local</option>'; if (data.domains) { for (var i = 0; i < data.domains.length; i++) { var d = data.domains[i]; html += '<option value="' + d.id + '"' + (currentDomain === d.id ? ' selected' : '') + '>' + d.name + '</option>'; } } html += '</select></td></tr>'; html += '<tr><td><label>JSON File:</label></td><td><input type="file" id="import_file" accept=".json"></td></tr>'; html += '<tr><td></td><td><input type="button" value="Import" onclick="submitImportDb()"></td></tr>'; html += '</table></form>'; setContent(html); }); } function submitImportDb() { var importDomain = document.getElementById("import_domain").value; var fileInput = document.getElementById("import_file"); if (!fileInput.files || !fileInput.files[0]) { showError("Bitte eine JSON-Datei auswaehlen!"); Loading @@ -392,7 +427,7 @@ function submitImportDb() { showError("Ungueltige JSON-Datei: " + ex.message); return; } ajaxPost("/settings/" + currentDomain + "/api/import", jsonData, function(err, data) { ajaxPost("/settings/" + importDomain + "/api/import", jsonData, function(err, data) { if (err) { showError(err); return; } alert("Import erfolgreich: " + (data.imported || 0) + " Records importiert."); loadDomains(); Loading