guard_manual_ban.html 65 lignes · 2982 octets
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ page_title }}</title>
    <link href="/static/css/tailwind.css" rel="stylesheet">
    <link href="/static/css/custom.css" rel="stylesheet">
</head>
<body class="min-h-screen bg-base-200 px-4 py-8">
    <main class="container mx-auto max-w-xl space-y-4">
        <header class="flex items-center justify-between">
            <div>
                <h1 class="text-3xl font-bold">{{ heading }}</h1>
                <p class="text-base-content/70 mt-1">{{ subtitle }}</p>
            </div>
            <a href="/admin/fediverse-guard" class="btn btn-ghost btn-sm">{{ back_link }}</a>
        </header>

        {% if flash_success %}
            <div class="alert alert-success">{{ flash_success_text }}</div>
        {% endif %}
        {% if flash_error %}
            <div class="alert alert-error">{{ flash_error_text }}</div>
        {% endif %}

        <form method="POST" action="/admin/fediverse-guard/manual_ban" class="card bg-base-100 shadow space-y-4 p-6">
            <input type="hidden" name="csrf_token" value="{{ csrf_token }}">

            <label class="form-control">
                <span class="label-text font-semibold">{{ field_domain_label }}</span>
                <input type="text" name="domain" required class="input input-bordered"
                       placeholder="evil.tld" autocomplete="off">
                <span class="label-text-alt text-base-content/60 mt-1">{{ field_domain_help }}</span>
            </label>

            <label class="form-control">
                <span class="label-text font-semibold">{{ field_severity_label }}</span>
                <select name="severity" required class="select select-bordered">
                    <option value="suspend">suspend</option>
                    <option value="silence">silence</option>
                    <option value="rate_limit">rate_limit</option>
                </select>
            </label>

            <label class="form-control">
                <span class="label-text font-semibold">{{ field_reason_label }}</span>
                <textarea name="reason" required class="textarea textarea-bordered"
                          rows="3" placeholder="{{ field_reason_placeholder }}"></textarea>
            </label>

            <label class="form-control">
                <span class="label-text font-semibold">{{ field_ttl_label }}</span>
                <input type="number" name="ttl_seconds" min="0" class="input input-bordered"
                       placeholder="0 = permanent">
                <span class="label-text-alt text-base-content/60 mt-1">{{ field_ttl_help }}</span>
            </label>

            <div class="card-actions justify-end pt-2">
                <button type="submit" class="btn btn-primary">{{ submit_button }}</button>
            </div>
        </form>
    </main>
</body>
</html>