R5 the server's own settings in decePub: instance, rules, announcements, relays, media limits, the staff's log, About
Build / Build (push) Successful in 1m5s
Build / Build (push) Successful in 1m5s
Administration's Pleroma placeholders give way to real sections: Instance (title, descriptions, contact, thumbnail, privacy policy, terms, the weekly activity), Rules, Announcements, Relays, Media limits and the Moderation log, next to Reports, blocked servers (now published or obfuscated), statistics and backups; moderators see Reports and the log. Every save sends the whole settings form built from the latest read, since PrivaPub replaces what it carries. /about shows the server's documents to anyone. The report dialog picks the rules a violation breaks, and reports show them. Announcements show above the feed tabs, dismissed and reacted to, live from the user stream. Login names the server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
b8d7858acb
commit
4c88980374
33 files changed
+3743
-239
No files matched your search
@@ -1,7 +1,8 @@
|
||||
@inherits LocalizableComponentBase
|
||||
|
||||
@* The reports moderators handle (/clientapi/moderator/reports): from someone here (never said who) or from another
|
||||
server, about an account and some of its posts; resolved here. *@
|
||||
server, about an account and some of its posts, a violation with the server's rules it names (their texts as PrivaPub
|
||||
keeps them, a removed rule's too); resolved here. *@
|
||||
<div class="flex flex-col gap-3 w-full" data-reports>
|
||||
<DToggle LabelText="@Localizer["Show the resolved ones"]" Value="resolved" ValueChanged="ShowResolved" ValueExpression="() => resolved" />
|
||||
|
||||
@@ -57,6 +58,27 @@
|
||||
<b>@Localizer["From"]</b>
|
||||
<span class="break-all">@(report.Reporter == "local" ? Localizer["someone here"] : report.Reporter)</span>
|
||||
</p>
|
||||
@if (report.RuleIds.Count > 0)
|
||||
{
|
||||
<div class="flex flex-col gap-1 text-sm" data-report-rules>
|
||||
<b>@Localizer["Rules it names"]</b>
|
||||
<ol class="list-decimal ps-5">
|
||||
@foreach (var (ruleId, text) in RulesOf(report))
|
||||
{
|
||||
<li class="break-words" data-report-rule-id="@ruleId">
|
||||
@if (text is { Length: > 0 })
|
||||
{
|
||||
@text
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="opacity-70">@Localizer["A rule no longer kept"]</span>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
</ol>
|
||||
</div>
|
||||
}
|
||||
@if (report.Comment is { Length: > 0 } comment)
|
||||
{
|
||||
<p class="text-sm whitespace-pre-line rounded-lg neo-inset neo-2xs p-2">@comment</p>
|
||||
@@ -113,6 +135,10 @@
|
||||
IsLoading = false;
|
||||
}
|
||||
|
||||
// each rule the report names with its text, in the report's order (an empty text: the server no longer has it)
|
||||
static IEnumerable<(string Id, string Text)> RulesOf(ViewReport report) =>
|
||||
report.RuleIds.Select((id, i) => (id, i < report.Rules.Count ? report.Rules[i] : null));
|
||||
|
||||
string CategoryName(string category) => category switch
|
||||
{
|
||||
"spam" => Localizer["Spam"],
|
||||
|
||||
Reference in new issue
Block a user