Further clarify e-mail policy

This commit is contained in:
2024-09-24 22:46:45 +02:00
parent 033f28a050
commit 828ef1c81a
5 changed files with 99 additions and 97 deletions

View File

@@ -15,7 +15,6 @@ let block_form = {
label: "Type",
type: "radio",
radio_values: [
"unknown",
"copyright",
"porn",
"child_abuse",

View File

@@ -157,37 +157,33 @@ onMount(get_reporters);
{/if}
</section>
<br/>
<div class="table_scroll">
<h2>Pending reporters</h2>
<EmailReportersTable
reporters={reporters_pending}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
<h2>Pending reporters</h2>
<EmailReportersTable
reporters={reporters_pending}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
<h2>Trusted reporters</h2>
<EmailReportersTable
reporters={reporters_trusted}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
<h2>Trusted reporters</h2>
<EmailReportersTable
reporters={reporters_trusted}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
<h2>Rejected reporters</h2>
<EmailReportersTable
reporters={reporters_rejected}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
</div>
<h2>Rejected reporters</h2>
<EmailReportersTable
reporters={reporters_rejected}
on:edit={e => edit_reporter(e.detail)}
on:approve={e => approve_reporter(e.detail)}
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
<br/>
<style>
@@ -198,7 +194,4 @@ onMount(get_reporters);
}
.toolbar > * { flex: 0 0 auto; }
.toolbar_spacer { flex: 1 1 auto; }
.table_scroll {
text-align: left;
}
</style>

View File

@@ -52,48 +52,50 @@ const toggle_preview = (rep) => {
}
</script>
<table>
<tr>
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
<td><SortButton field="reports_sent" active_field={sort_field} asc={asc} sort_func={sort}>Reports</SortButton></td>
<td><SortButton field="files_blocked" active_field={sort_field} asc={asc} sort_func={sort}>Blocked</SortButton></td>
<td><SortButton field="last_used" active_field={sort_field} asc={asc} sort_func={sort}>Last used</SortButton></td>
<td><SortButton field="created" active_field={sort_field} asc={asc} sort_func={sort}>Created</SortButton></td>
<td></td>
</tr>
{#each reporters as rep (rep.from_address)}
<tr animate:flip={{duration: 500}}>
<td>{rep.from_address}</td>
<td>{rep.name}</td>
<td>{rep.reports_sent}</td>
<td>{rep.files_blocked}</td>
<td>{formatDate(rep.last_used, true, true, false)}</td>
<td>{formatDate(rep.created, false, false, false)}</td>
<td>
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
<i class="icon">visibility</i>
</button>
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
<i class="icon">edit</i>
</button>
{#if rep.status !== "trusted"}
<button on:click|preventDefault={() => {dispatch("approve", rep)}} class="button button_highlight round">
<i class="icon">check</i>
</button>
{/if}
{#if rep.status !== "rejected"}
<button on:click|preventDefault={() => {dispatch("spam", rep)}} class="button button_red round">
<i class="icon">block</i>
</button>
{/if}
<button on:click|preventDefault={() => {dispatch("delete", rep)}} class="button button_red round">
<i class="icon">delete</i>
</button>
</td>
<div class="table_scroll">
<table>
<tr>
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
<td><SortButton field="reports_sent" active_field={sort_field} asc={asc} sort_func={sort}>Reports</SortButton></td>
<td><SortButton field="files_blocked" active_field={sort_field} asc={asc} sort_func={sort}>Blocked</SortButton></td>
<td><SortButton field="last_used" active_field={sort_field} asc={asc} sort_func={sort}>Last used</SortButton></td>
<td><SortButton field="created" active_field={sort_field} asc={asc} sort_func={sort}>Created</SortButton></td>
<td></td>
</tr>
{/each}
</table>
{#each reporters as rep (rep.from_address)}
<tr animate:flip={{duration: 500}}>
<td>{rep.from_address}</td>
<td>{rep.name}</td>
<td>{rep.reports_sent}</td>
<td>{rep.files_blocked}</td>
<td>{formatDate(rep.last_used, true, true, false)}</td>
<td>{formatDate(rep.created, false, false, false)}</td>
<td>
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
<i class="icon">email</i>
</button>
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
<i class="icon">edit</i>
</button>
{#if rep.status !== "trusted"}
<button on:click|preventDefault={() => {dispatch("approve", rep)}} class="button button_highlight round">
<i class="icon">check</i>
</button>
{/if}
{#if rep.status !== "rejected"}
<button on:click|preventDefault={() => {dispatch("spam", rep)}} class="button button_red round">
<i class="icon">block</i>
</button>
{/if}
<button on:click|preventDefault={() => {dispatch("delete", rep)}} class="button button_red round">
<i class="icon">delete</i>
</button>
</td>
</tr>
{/each}
</table>
</div>
<Modal bind:this={modal} title={preview_subject} width="1000px">
{#if preview_html !== ""}
@@ -104,6 +106,9 @@ const toggle_preview = (rep) => {
</Modal>
<style>
.table_scroll {
text-align: initial;
}
.message_html {
padding: 8px;
text-align: initial;

View File

@@ -4,6 +4,18 @@ import { formatDate } from "../util/Formatting.svelte";
import Expandable from "../util/Expandable.svelte";
import LoadingIndicator from "../util/LoadingIndicator.svelte";
const abuse_types = [
"copyright",
"child_abuse",
"terrorism",
"gore",
"zoophilia",
"malware",
"doxing",
"revenge_porn",
"porn",
]
let loading = true
let rows = []
let total_offences = 0
@@ -11,7 +23,7 @@ let total_offences = 0
let expanded = false
let creating = false
let new_ban_address
let new_ban_reason = "unknown"
let new_ban_reason = abuse_types[0]
const get_bans = async () => {
loading = true;
@@ -114,23 +126,11 @@ onMount(get_bans);
<input id="field_address" type="text" bind:this={new_ban_address}/>
<label for="field_reason">Reason</label>
<div id="field_reason">
<input id="reason_unknown" name="reporter_type" type="radio" bind:group={new_ban_reason} value="unknown" />
<label for="reason_unknown">unknown</label>
<br/>
<input id="reason_copyright" name="reporter_type" type="radio" bind:group={new_ban_reason} value="copyright" />
<label for="reason_copyright">copyright</label>
<br/>
<input id="reason_child_abuse" name="reporter_type" type="radio" bind:group={new_ban_reason} value="child_abuse" />
<label for="reason_child_abuse">child_abuse</label>
<br/>
<input id="reason_terrorism" name="reporter_type" type="radio" bind:group={new_ban_reason} value="terorrism" />
<label for="reason_terrorism">terrorism</label>
<br/>
<input id="reason_gore" name="reporter_type" type="radio" bind:group={new_ban_reason} value="gore" />
<label for="reason_gore">gore</label>
<br/>
<input id="reason_malware" name="reporter_type" type="radio" bind:group={new_ban_reason} value="malware" />
<label for="reason_malware">malware</label>
{#each abuse_types as t (t)}
<input id="reason_{t}" name="reporter_type" type="radio" bind:group={new_ban_reason} value="{t}" />
<label for="reason_{t}">{t}</label>
<br/>
{/each}
</div>
<button class="button_highlight" type="submit" style="float: right;">
<i class="icon">save</i> Save