diff --git a/Slon/Http/AdminServer.HC b/Slon/Http/AdminServer.HC index 3b6e03a..6589d28 100644 --- a/Slon/Http/AdminServer.HC +++ b/Slon/Http/AdminServer.HC @@ -324,6 +324,10 @@ U0 @slon_admin_server_get(SlonHttpSession* session) @slon_admin_manage_accounts(session); return; } + if (!StrICmp("/manage/instance", session->path())) { + session->send(db->o("instance")); + return; + } if (!StrICmp("/", session->path())) { @slon_http_send_html_file(session, "M:/Slon/Static/html/admin/main.html"); @@ -357,7 +361,7 @@ U0 @slon_admin_server_post(SlonHttpSession* session) @slon_http_parse_request_as_json(session); } - if (!StrICmp("/setup/instance", session->path())) { + if (!StrICmp("/setup/instance", session->path()) || !StrICmp("/save/instance", session->path())) { @slon_admin_setup_instance(session); return; } diff --git a/Slon/Static/html/admin/main.html b/Slon/Static/html/admin/main.html index c93a857..281c9cb 100644 --- a/Slon/Static/html/admin/main.html +++ b/Slon/Static/html/admin/main.html @@ -65,7 +65,7 @@ } async function manageAccounts(page) { clearActiveLinks(); - const request = new Request("/manage/accounts?skip=" + (page*10).toString()); + const request = new Request("/manage/accounts?skip=" + (page * 10).toString()); const response = await fetch(request); const result = await response.json(); const accounts = result["accounts"]; @@ -73,7 +73,7 @@ if (accounts.length) { html += ""; for (let i = 0; i < accounts.length; i++) { - html += ""; + html += ""; } html += "
idacctdisplay_nametypedelete
" + accounts[i]["id"] + "" + accounts[i]["acct"] + "" + accounts[i]["display_name"] + ""+ (accounts[i]["remote_actor"] == undefined ? "local" : "remote") + "
" + accounts[i]["id"] + "" + accounts[i]["acct"] + "" + accounts[i]["display_name"] + "" + (accounts[i]["remote_actor"] == undefined ? "local" : "remote") + "
"; html += ""; } else { @@ -93,8 +93,32 @@ setContent(html); setActiveLink("accounts"); } + async function manageInstance() { + clearActiveLinks(); + const request = new Request("/manage/instance"); + const response = await fetch(request); + const instance = await response.json(); + let html = "

Instance

"; + + html += "
"; + + html += "
"; + html += "
"; + html += "
"; + html += "
"; + html += "
"; + html += "
"; + html += "
"; + + html += "
"; + html += "
" + html += "
"; + + setContent(html); + setActiveLink("instance"); + } async function confirmDeleteUser(user, id) { - if(confirm("Are you sure you want to delete '" + user + "' ?")) { + if (confirm("Are you sure you want to delete '" + user + "' ?")) { const request = new Request("/delete/account?id=" + id); const response = await fetch(request); const empty_json = await response.json(); @@ -158,6 +182,28 @@ alert(JSON.stringify(json)); } } + async function saveInstance() { + let data = {}; + let fields = document.getElementsByTagName("input"); + for (var i = 0; i < fields.length; i++) { + switch (fields[i].type) { + case "checkbox": + data[fields[i].id] = fields[i].checked; + break; + case "submit": + break; + default: + data[fields[i].id] = fields[i].value; + break; + } + } + const request = new Request("/save/instance", { + headers: { "Content-Type": "application/json" }, + method: "POST", + body: JSON.stringify(data) + }); + const response = await fetch(request); + } function updateBase64(el) { let reader = new FileReader(); reader.readAsDataURL(el.files[0]);