("GET", "/moderation/audit-log/moderators", {
+ fetch,
+ cookies,
+ });
+
+ let modFilter: AuditLogEntity | null = null;
+ if (byModerator)
+ modFilter = entries.find((e) => e.moderator.id === byModerator)?.moderator || null;
+
+ return { entries, type, before, after, modFilter, url: url.toString(), moderators };
+};
diff --git a/Foxnouns.Frontend/src/routes/admin/audit-log/+page.svelte b/Foxnouns.Frontend/src/routes/admin/audit-log/+page.svelte
new file mode 100644
index 0000000..a0e182d
--- /dev/null
+++ b/Foxnouns.Frontend/src/routes/admin/audit-log/+page.svelte
@@ -0,0 +1,105 @@
+
+
+Audit log
+
+
+
+
+ Filter by type
+
+
+
+ Ignore report
+
+
+ Warn user
+
+
+ Warn user and clear profile
+
+
+ Suspend user
+
+ {#if data.type}
+ Remove filter
+ {/if}
+
+
+
+
+ Filter by moderator
+
+
+ {#each data.moderators as mod (mod.id)}
+
+ {mod.username}
+
+ {/each}
+ {#if data.modFilter}
+ Remove filter
+ {/if}
+
+
+
+
+{#if data.before}
+ Show newer entries
+{/if}
+
+{#each data.entries as entry (entry.id)}
+
+{:else}
+ There are no entries matching your filter
+{/each}
+
+{#if data.entries.length === 100}
+ Show older entries
+{/if}
diff --git a/Foxnouns.Frontend/src/routes/page/[page]/+page.server.ts b/Foxnouns.Frontend/src/routes/page/[page]/+page.server.ts
new file mode 100644
index 0000000..1d9e8fc
--- /dev/null
+++ b/Foxnouns.Frontend/src/routes/page/[page]/+page.server.ts
@@ -0,0 +1,14 @@
+import { baseRequest } from "$api";
+import ApiError from "$api/error";
+
+export const load = async ({ fetch, params }) => {
+ const resp = await baseRequest("GET", `/meta/page/${params.page}`, { fetch });
+ if (resp.status < 200 || resp.status > 299) {
+ const err = await resp.json();
+ if ("code" in err) throw new ApiError(err);
+ else throw new ApiError();
+ }
+
+ const pageText = await resp.text();
+ return { page: params.page, text: pageText };
+};
diff --git a/Foxnouns.Frontend/src/routes/page/[page]/+page.svelte b/Foxnouns.Frontend/src/routes/page/[page]/+page.svelte
new file mode 100644
index 0000000..a156d0a
--- /dev/null
+++ b/Foxnouns.Frontend/src/routes/page/[page]/+page.svelte
@@ -0,0 +1,22 @@
+
+
+
+ {title} • pronouns.cc
+
+
+
+ {@html md}
+
diff --git a/Foxnouns.Frontend/src/routes/settings/+layout.svelte b/Foxnouns.Frontend/src/routes/settings/+layout.svelte
index 11801cf..8f18c8e 100644
--- a/Foxnouns.Frontend/src/routes/settings/+layout.svelte
+++ b/Foxnouns.Frontend/src/routes/settings/+layout.svelte
@@ -1,20 +1,11 @@
diff --git a/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte b/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte
index faae426..f3f4301 100644
--- a/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte
+++ b/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte
@@ -1,14 +1,12 @@
diff --git a/docker-compose.yml b/docker-compose.yml
index 4fc94bb..751d919 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -16,6 +16,7 @@ services:
- "5007:5001"
volumes:
- ./docker/config.ini:/app/config.ini
+ - ./docker/static-pages:/app/static-pages
frontend:
image: frontend
diff --git a/docker/static-pages/.gitignore b/docker/static-pages/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/docker/static-pages/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore