1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
Files
ojrc/assets/templates/rc_society/dashboard.html.hbs
NG (Graham) 995bafa70c Add server-wide and user-only federation controls (#133)
### Description

Completes #122

### Please confirm

- [x] I am the legal owner or represent the legal owner of all work submitted (including LLM-generated code, if any)
- [x] I consent to my changes being added to this FOSS project
- [x] I have confirmed that this does not add new errors or warnings with `utils/clippy.sh`
- [ ] This PR used LLMs to generate some or all of the code changes

Reviewed-on: https://git.ngram.ca/OpenJam/rc-servers/pulls/133
2026-06-25 01:49:11 +00:00

232 lines
10 KiB
Handlebars

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<!-- Primary Meta Tags -->
<title>Dashboard - Openjam</title>
<meta name="title" content="Dashboard - Openjam" />
<meta name="description" content="User dashboard for third-party Robocraft servers" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://git.ngram.ca/OpenJam/rc-servers" />
<meta property="og:title" content="Dashboard - Openjam" />
<meta property="og:description" content="View your account for third-party Robocraft servers" />
<meta property="og:image" content="https://git.ngram.ca/OpenJam/rc-servers/raw/branch/main/assets/robocraft/favicon.jpg" />
<!-- Twitter -->
<meta property="twitter:card" content="summary" />
<meta property="twitter:url" content="https://git.ngram.ca/OpenJam/rc-servers" />
<meta property="twitter:title" content="Dashboard - Openjam" />
<meta property="twitter:description" content="View your account for third-party Robocraft servers" />
<meta property="twitter:image" content="https://git.ngram.ca/OpenJam/rc-servers/raw/branch/main/assets/robocraft/favicon.jpg" />
<link rel="icon" type="image/x-icon" href="/favicon.ico">
{{> stylesheet}}
</head>
<body>
<div class="form-stripe">
<div class="form-header-right">
Welcome {{form.display_name}}! |
<a href="/">Home</a>
</div>
<h1 class="form-banner">{{form.display_name}} Dashboard</h1>
{{#if error}}
<div class="form-error">
<p class="form-error-message">{{error}}</p>
</div>
{{/if}}
<div class="access-grid">
<div class="access-box">
<h4 class="access-box-title">Details</h4>
<div class="box-details">
<div class="box-details-key">Name</div>
<div class="box-details-value">{{form.display_name}}</div>
<div class="box-details-key">Public ID</div>
<div class="box-details-value">{{form.public_id}}</div>
<div class="box-details-key">Database ID</div>
<div class="box-details-value">{{form.debug.user_id}}</div>
<div class="box-details-key">Last Seen</div> <!-- TODO -->
<div class="box-details-value"><time datetime="{{form.debug.creation_time_iso}}">{{form.debug.creation_time_iso}}</time></div>
<div class="box-details-key">Creation</div>
<div class="box-details-value"><time datetime="{{form.debug.creation_time_iso}}">{{form.debug.creation_time_iso}}</time></div>
</div>
</div>
<div class="access-box">
<h4 class="access-box-title">Permissions</h4>
<div class="box-details">
<div class="box-details-key">Moderator</div>
<div class="box-details-value">{{form.perms.mod}}</div>
<div class="box-details-key">Administrator</div>
<div class="box-details-value">{{form.perms.admin}}</div>
<div class="box-details-key">Developer</div>
<div class="box-details-value">{{form.perms.dev}}</div>
<div class="box-details-key">Royal</div>
<div class="box-details-value">{{form.perms.royal}}</div>
<div class="box-details-key">Banned</div>
<div class="box-details-value">{{form.perms.banned}}</div>
</div>
</div>
<div class="access-box">
<h4 class="access-box-title">Garages</h4>
<div class="box-details">
<div class="box-details-key">Total</div>
<div class="box-details-value">{{form.garage.total}}</div>
<div class="box-details-key">Regulars</div>
<div class="box-details-value">{{form.garage.regular_total}}</div>
<div class="box-details-key">Megabots</div>
<div class="box-details-value">{{form.garage.mega_total}}</div>
<div class="box-details-key">Empty</div>
<div class="box-details-value">{{form.garage.empty_total}}</div>
<div class="box-details-key">Selected Slot</div>
<div class="box-details-value">#{{form.garage.selected_slot}}</div>
{{#if form.garage.bytes_total }}
<div class="box-details-key">Storage</div>
<div class="box-details-value">{{form.garage.bytes_total}}B</div>
{{/if}}
</div>
<a href="/garages/list">
<div class="access-box-banner">
View My Garages
</div>
</a>
</div>
<div class="access-box">
<h4 class="access-box-title">Factory</h4>
<div class="box-details">
<div class="box-details-key">Factory Garages</div>
<div class="box-details-value">{{form.factory.garages_from_factory}}</div>
<div class="box-details-key">Uploads</div>
<div class="box-details-value">{{form.factory.uploads_total}}</div>
</div>
<a href="{{form.debug.factory}}">
<div class="access-box-banner">
View My Uploads
</div>
</a>
</div>
<div class="access-box">
<h4 class="access-box-title">Account</h4>
<div class="box-details">
{{#if form.account.is_custom_avatar}}
<div class="box-details-key">Avatar</div>
<div class="box-details-value">
<a href="{{form.debug.cdn}}/customavatar/Live/{{form.public_id}}" download="user_{{form.display_name}}.jpg" target="_blank" type="media/jpeg" referrerpolicy="no-referrer">
<img src="{{form.debug.cdn}}/customavatar/Live/{{form.public_id}}" alt="Custom avatar picture for {{form.display_name}}" style="margin-top: 5px;"/>
</a>
</div>
{{else}}
<div class="box-details-key">Avatar</div>
<div class="box-details-value">{{form.account.avatar_id}}</div>
{{/if}}
<div class="box-details-key">Rank</div>
<div class="box-details-value">{{form.account.rank}}</div>
<div class="box-details-key">Currency</div>
<div class="box-details-value">
Robits: {{form.account.currencies.robits}}<br/>
GC: {{form.account.currencies.gc}}<br/>
TP: {{form.account.currencies.tp}}<br/>
XP: {{form.account.currencies.xp}}<br/>
</div>
<div class="box-details-key">Games</div>
<div class="box-details-value">{{form.account.games}}</div>
<div class="box-details-key">Premium Until</div>
<div class="box-details-value"><time datetime="{{form.account.premium_until_iso}}">{{form.account.premium_until_iso}}</time></div>
</div>
<a href="#"> <!-- TODO -->
<div class="access-box-banner">
Manage My Account
</div>
</a>
</div>
<div class="access-box">
<h4 class="access-box-title">Sanctions</h4>
<div class="box-details">
<div class="box-details-key">Total</div>
<div class="box-details-value">{{form.sanction.total}}</div>
{{#if (ne form.sanction.pending 0)}}
<div class="box-details-key">Pending</div>
<div class="box-details-value">{{form.sanction.pending}}</div>
{{/if}}
<div class="box-details-key">Warnings</div>
<div class="box-details-value">{{form.sanction.warns}}</div>
<div class="box-details-key">Mutes</div>
<div class="box-details-value">{{form.sanction.mutes}}</div>
{{#if form.sanction.muted_until_iso}}
<div class="box-details-key">Muted Until</div>
<div class="box-details-value"><time datetime="{{form.sanction.muted_until_iso}}">{{form.sanction.muted_until_iso}}</time></div>
{{/if}}
</div>
<a href="#"> <!-- TODO -->
<div class="access-box-banner">
View My Sanctions
</div>
</a>
</div>
<div class="access-box">
<h4 class="access-box-title">Social</h4>
<div class="box-details">
{{#if form.social.clan}}
<div class="box-details-key">Clan</div>
<div class="box-details-value">
<span style="display: inline-block; text-align: center; width: 100%;">{{form.social.clan.name}}</span>
<a href="{{form.debug.cdn}}/clanavatar/Live/{{form.social.clan.name}}" download="clan_{{form.social.clan.name}}.jpg" target="_blank" type="media/jpeg" referrerpolicy="no-referrer">
<img src="{{form.debug.cdn}}/clanavatar/Live/{{form.social.clan.name}}" alt="Clan avatar picture for {{form.social.clan.name}}" style="margin-top: 5px;"/>
</a>
<span style="display: inline-block; font-size: 10px; text-align: center; margin: 5px auto; width: 100%;">{{form.social.clan.ty}}</span>
<span>{{form.social.clan.description}}</span>
</div>
{{else}}
<div class="box-details-key">Clan</div>
<div class="box-details-value">[no clan]</div>
{{/if}}
<div class="box-details-key">Friends</div>
<div class="box-details-value">
{{form.social.friends}}
{{#if (ne form.social.friends form.social.friends_of)}}
= {{form.social.friends_of}}[!]
{{/if}}
</div>
<div class="box-details-key">Chats</div>
<div class="box-details-value">
{{#each form.social.chats}}
{{this}}<br/>
{{/each}}
</div>
</div>
</div>
<div class="access-box">
<h4 class="access-box-title">Federation</h4>
<div class="box-details">
<div class="box-details-key">Enabled</div>
<div class="box-details-value">{{form.fediverse.enabled}}</div>
<div class="box-details-key">Blocked</div>
<div class="box-details-value">
{{#each form.fediverse.defederated}}
<span>{{this}}</span><br/>
{{else}}
<span>[None]</span>
{{/each}}
</div>
</div>
<a href="/federation/list"> <!-- TODO -->
<div class="access-box-banner">
Manage My Federation
</div>
</a>
</div>
</div>
<footer>
<div class="footer">
{{version}}
| <a href="{{source_url}}#readme">About</a>
| <a href="https://liberapay.com/NGram">Support Me</a>
</div>
</footer>
</div>
</body>
</html>