Commit 8889aae3 authored by jan.koester's avatar jan.koester
Browse files

better

parent 6cec910c
Loading
Loading
Loading
Loading
Loading
+38 −3
Changes for data/admin.html: 38 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -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);
@@ -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!");
@@ -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();