Download and Rules

This commit is contained in:
2023-11-18 16:52:54 +01:00
parent 3889f28eb8
commit 3996376381
17 changed files with 88 additions and 12 deletions

View File

@ -54,7 +54,7 @@
<button class="btn mt-4 !mx-0 justify-center" type="submit" on:click|preventDefault={login}>{t("login.submit")}</button>
</form>
<style lang="scss">
<style lang="postcss">
input {
@apply border-2 rounded-md p-2 shadow-2xl w-80
dark:bg-neutral-800

View File

@ -59,7 +59,7 @@ async function deleteBranch(con: boolean = false) {
async function createFile() {
let name = prompt("File name:", "pages/en/[Name]")
if (name) {
await $pageRepo.createFile(`${name}.md`, selectedBranch)
await $pageRepo.createFile(`${name}`, selectedBranch)
reload()
}
}

View File

@ -99,7 +99,7 @@
<SchematicInfo schematicId={infoModalId} on:reset={() => infoModalId = null} />
{/if}
<style lang="scss">
<style lang="postcss">
table {
@apply w-full;
}

View File

@ -41,9 +41,21 @@ export const modes = defineCollection({
})
})
export const downloads = defineCollection({
type: "data",
schema: z.object({
name: z.string(),
description: z.string(),
url: z.string().url()
.or(z.record(z.string(), z.string())),
sourceUrl: z.string().url().optional(),
})
})
export const collections = {
'pages': pages,
'help': help,
'event': event,
'modes': modes
'modes': modes,
'downloads': downloads
}

View File

@ -0,0 +1,9 @@
{
"name": "AdvancedScripts",
"description": "Ein Fabric-Mod, der für den BauServer von SteamWar Hotkeys für das ScriptSystem hinzufügt. Hierzu werden die einzelnen Zeichen an den Server gesendet und vom Server verarbeitet.",
"url": {
"1.20.1": "https://steamwar.de/AdvancedScriptsV3",
"1.19": "https://steamwar.de/AdvancedScripts"
},
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/AdvancedScripts"
}

View File

@ -0,0 +1,6 @@
{
"name": "FabricModSender",
"description": "Ein Fabric-Mod, der SteamWar beim Serverjoin die von dir installierten Mods sendet und es uns damit ermöglicht, sie auf schädliche Mods zu überprüfen. Eine Installation dieses Mods ermöglicht dir das Joinen von Arenen mit Fabric auf SteamWar.",
"url": "https://steamwar.de/FabricModSender",
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/FabricModSender"
}

View File

@ -0,0 +1,9 @@
{
"name": "SteamWarTeamserver",
"description": "Dieses Plugin ermöglicht die einfache Einbindung deines Servers in SteamWar. Wie du deinen (Team-)Server über SteamWar erreichbar machen kannst findest du hier.",
"url": {
"Info": "/teamserverintegration",
"Download": "https://steamwar.de/SteamWarTeamserver"
},
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/SteamWarBungeeTeamserver"
}

4
src/env.d.ts vendored
View File

@ -10,9 +10,9 @@
type PrimaryLocale = "en"
type SecondaryLocale = "de"
type Locale = PrimaryLocale | SecondaryLocale
type RouteParameters = {"/dashboard":undefined;"/":undefined;"/login":undefined;"/rules":undefined;"/[...slug]":{"slug":unknown;};"/admin":undefined;"/help":undefined;"/help/[...slug]":{"slug":unknown;};}
type RouteParameters = {"/dashboard":undefined;"/downloads":undefined;"/":undefined;"/login":undefined;"/rules":undefined;"/[...slug]":{"slug":unknown;};"/admin":undefined;"/help":undefined;"/help/[...slug]":{"slug":unknown;};}
type Route = keyof RouteParameters
type TranslationVariables = {"dashboard.title":{"name"?:unknown;}|undefined;"dashboard.rank":{"rank"?:unknown;}|undefined;"dashboard.permissions":object|undefined;"dashboard.buttons.logout":object|undefined;"dashboard.buttons.admin":object|undefined;"dashboard.schematic.upload":object|undefined;"dashboard.schematic.home":object|undefined;"dashboard.schematic.dir":object|undefined;"dashboard.schematic.head.type":object|undefined;"dashboard.schematic.head.name":object|undefined;"dashboard.schematic.head.owner":object|undefined;"dashboard.schematic.head.updated":object|undefined;"dashboard.schematic.head.replaceColor":object|undefined;"dashboard.schematic.head.allowReplay":object|undefined;"dashboard.schematic.info.path":{"path"?:unknown;}|undefined;"dashboard.schematic.info.replaceColor":object|undefined;"dashboard.schematic.info.allowReplay":object|undefined;"dashboard.schematic.info.type":{"type"?:unknown;}|undefined;"dashboard.schematic.info.updated":{"updated"?:unknown;}|undefined;"dashboard.schematic.info.item":{"item"?:unknown;}|undefined;"dashboard.schematic.info.members":{"members"?:unknown;}|undefined;"dashboard.schematic.info.btn.download":object|undefined;"dashboard.schematic.info.btn.close":object|undefined;"login.title":object|undefined;"login.placeholder.username":object|undefined;"login.placeholder.token":object|undefined;"login.label.username":object|undefined;"login.label.token":object|undefined;"login.generateToken":object|undefined;"login.submit":object|undefined;"wg.title":object|undefined;"wg.description":object|undefined;"as.title":object|undefined;"as.description":object|undefined;"ws.title":object|undefined;"ws.description":object|undefined;"mwg.title":object|undefined;"mwg.description":object|undefined;"rules":object|undefined;"council":object|undefined;"ranking":object|undefined;"navbar.title":object|undefined;"navbar.logo.alt":object|undefined;"navbar.links.home.title":object|undefined;"navbar.links.home.announcements":object|undefined;"navbar.links.home.about":object|undefined;"navbar.links.home.downloads":object|undefined;"navbar.links.home.faq":object|undefined;"navbar.links.rules.title":object|undefined;"navbar.links.rules.gamemode":object|undefined;"navbar.links.rules.wg":object|undefined;"navbar.links.rules.mwg":object|undefined;"navbar.links.rules.ws":object|undefined;"navbar.links.rules.as":object|undefined;"navbar.links.rules.rotating":object|undefined;"navbar.links.rules.megawg":object|undefined;"navbar.links.rules.micro":object|undefined;"navbar.links.rules.sf":object|undefined;"navbar.links.rules.general":object|undefined;"navbar.links.rules.coc":object|undefined;"navbar.links.help.title":object|undefined;"navbar.links.help.center":object|undefined;"navbar.links.help.docs":object|undefined;"navbar.links.account":object|undefined;"status.loading":object|undefined;"status.status":object|undefined;"status.online":object|undefined;"status.offline":object|undefined;"status.players":{"count"?:unknown;}|undefined;"status.version":{"version"?:unknown;}|undefined;"home.page":object|undefined;"home.title.first":object|undefined;"home.title.second":object|undefined;"home.subtitle.1":object|undefined;"home.subtitle.2":object|undefined;"home.subtitle.3":object|undefined;"home.join":object|undefined;"home.benefits.historic.title":object|undefined;"home.benefits.historic.description.1":object|undefined;"home.benefits.historic.description.2":object|undefined;"home.benefits.server.title":object|undefined;"home.benefits.server.description":object|undefined;"home.benefits.events.title":object|undefined;"home.benefits.events.description.1":object|undefined;"home.benefits.events.description.2":object|undefined;"home.prefix.Admin":object|undefined;"home.prefix.Dev":object|undefined;"home.prefix.Mod":object|undefined;"home.prefix.Sup":object|undefined;"home.prefix.Arch":object|undefined;"footer.imprint":object|undefined;"footer.privacy":object|undefined;"footer.coc":object|undefined;"footer.stats":object|undefined;"footer.gamemodes":object|undefined;"footer.announcements":object|undefined;"footer.join":object|undefined;}
type TranslationVariables = {"dashboard.page":object|undefined;"dashboard.title":{"name"?:unknown;}|undefined;"dashboard.rank":{"rank"?:unknown;}|undefined;"dashboard.permissions":object|undefined;"dashboard.buttons.logout":object|undefined;"dashboard.buttons.admin":object|undefined;"dashboard.schematic.upload":object|undefined;"dashboard.schematic.home":object|undefined;"dashboard.schematic.dir":object|undefined;"dashboard.schematic.head.type":object|undefined;"dashboard.schematic.head.name":object|undefined;"dashboard.schematic.head.owner":object|undefined;"dashboard.schematic.head.updated":object|undefined;"dashboard.schematic.head.replaceColor":object|undefined;"dashboard.schematic.head.allowReplay":object|undefined;"dashboard.schematic.info.path":{"path"?:unknown;}|undefined;"dashboard.schematic.info.replaceColor":object|undefined;"dashboard.schematic.info.allowReplay":object|undefined;"dashboard.schematic.info.type":{"type"?:unknown;}|undefined;"dashboard.schematic.info.updated":{"updated"?:unknown;}|undefined;"dashboard.schematic.info.item":{"item"?:unknown;}|undefined;"dashboard.schematic.info.members":{"members"?:unknown;}|undefined;"dashboard.schematic.info.btn.download":object|undefined;"dashboard.schematic.info.btn.close":object|undefined;"login.page":object|undefined;"login.title":object|undefined;"login.placeholder.username":object|undefined;"login.placeholder.token":object|undefined;"login.label.username":object|undefined;"login.label.token":object|undefined;"login.generateToken":object|undefined;"login.submit":object|undefined;"login.error":object|undefined;"page":object|undefined;"wg.title":object|undefined;"wg.description":object|undefined;"as.title":object|undefined;"as.description":object|undefined;"ws.title":object|undefined;"ws.description":object|undefined;"mwg.title":object|undefined;"mwg.description":object|undefined;"rules":object|undefined;"council":object|undefined;"ranking":object|undefined;"navbar.title":object|undefined;"navbar.logo.alt":object|undefined;"navbar.links.home.title":object|undefined;"navbar.links.home.announcements":object|undefined;"navbar.links.home.about":object|undefined;"navbar.links.home.downloads":object|undefined;"navbar.links.home.faq":object|undefined;"navbar.links.rules.title":object|undefined;"navbar.links.rules.gamemode":object|undefined;"navbar.links.rules.wg":object|undefined;"navbar.links.rules.mwg":object|undefined;"navbar.links.rules.ws":object|undefined;"navbar.links.rules.as":object|undefined;"navbar.links.rules.rotating":object|undefined;"navbar.links.rules.megawg":object|undefined;"navbar.links.rules.micro":object|undefined;"navbar.links.rules.sf":object|undefined;"navbar.links.rules.general":object|undefined;"navbar.links.rules.coc":object|undefined;"navbar.links.help.title":object|undefined;"navbar.links.help.center":object|undefined;"navbar.links.help.docs":object|undefined;"navbar.links.account":object|undefined;"status.loading":object|undefined;"status.status":object|undefined;"status.online":object|undefined;"status.offline":object|undefined;"status.players":{"count"?:unknown;}|undefined;"status.version":{"version"?:unknown;}|undefined;"home.page":object|undefined;"home.title.first":object|undefined;"home.title.second":object|undefined;"home.subtitle.1":object|undefined;"home.subtitle.2":object|undefined;"home.subtitle.3":object|undefined;"home.join":object|undefined;"home.benefits.historic.title":object|undefined;"home.benefits.historic.description.1":object|undefined;"home.benefits.historic.description.2":object|undefined;"home.benefits.server.title":object|undefined;"home.benefits.server.description":object|undefined;"home.benefits.events.title":object|undefined;"home.benefits.events.description.1":object|undefined;"home.benefits.events.description.2":object|undefined;"home.prefix.Admin":object|undefined;"home.prefix.Dev":object|undefined;"home.prefix.Mod":object|undefined;"home.prefix.Sup":object|undefined;"home.prefix.Arch":object|undefined;"footer.imprint":object|undefined;"footer.privacy":object|undefined;"footer.coc":object|undefined;"footer.stats":object|undefined;"footer.gamemodes":object|undefined;"footer.announcements":object|undefined;"footer.join":object|undefined;}
type Translation = keyof TranslationVariables
type Environment = "none"|"node"|"browser"
declare module "astro-i18n" {

View File

@ -1,5 +1,6 @@
{
"dashboard": {
"page": "SteamWar - Dashboard",
"title": "Hello, {# name #}!",
"rank": "Rank: {# rank #}",
"permissions": "Permssions:",

View File

@ -1,5 +1,6 @@
{
"login": {
"page": "SteamWar - Login",
"title": "Login",
"placeholder": {
"username": "Username...",

View File

@ -1,4 +1,5 @@
{
"page": "SteamWar - Regelwerke",
"wg": {
"description": "Heute werden die Schlachtfelder der Erde von schwerem Geschütz bestimmt. Mit unserem traditionellen Regelwerk sind auch die WarGears arenenverwüstende Schwergewichte. Aufgrund der Kanonentechnik mit den meisten Projektilen erwarten dich bei WarGears harte und kurzweilige Kämpfe."
},

View File

@ -1,4 +1,5 @@
{
"page": "SteamWar - Rules",
"wg": {
"title": "WarGears",
"description": "Today, the battlefields of Earth are dominated by heavy artillery. With our traditional rules, WarGears are also arena-wrecking heavyweights. Due to the cannon technology with the most projectiles, you can expect hard and short-lived battles in WarGears."

View File

@ -36,7 +36,7 @@ const { title } = Astro.props;
<div>
<a class="btn btn-gray my-1" href={l("/")}>{t("navbar.links.home.announcements")}</a>
<a class="btn btn-gray" href={l("/about")}>{t("navbar.links.home.about")}</a>
<a class="btn btn-gray">{t("navbar.links.home.downloads")}</a>
<a class="btn btn-gray" href={l("/downloads")}>{t("navbar.links.home.downloads")}</a>
<a class="btn btn-gray" href={l("/faq")}>{t("navbar.links.home.faq")}</a>
</div>
</div>

View File

@ -3,9 +3,10 @@ import Dashboard from "../components/Dashboard.svelte";
import {AES} from "crypto-js";
import {l} from "../util/util";
import PageLayout from "../layouts/PageLayout.astro";
import {t} from "astro-i18n";
---
<PageLayout title="Dashboard">
<PageLayout title={t("dashboard.page")}>
<script>
import {AES} from "crypto-js";
import {l} from "../util/util";

27
src/pages/downloads.astro Normal file
View File

@ -0,0 +1,27 @@
---
import PageLayout from "../layouts/PageLayout.astro";
import {getCollection} from "astro:content";
import {t} from "astro-i18n";
const downloads = await getCollection("downloads");
---
<PageLayout title="Downloads">
{downloads.map(e => (
<div class="pt-4">
<h1 class="font-bold text-6xl">{e.data.name}</h1>
<div class="py-4">{t(e.data.description)}</div>
<div class="flex flex-col">
{typeof e.data.url === 'object' ?
Object.entries(e.data.url).map(value => (
<a href={value[1]} class="text-blue-500 hover:underline w-fit">{t(value[0])}</a>
))
:
<a href={e.data.url} class="text-blue-500 hover:underline w-fit">{t("Download")}</a>
}
{e.data.sourceUrl ? <a class="text-blue-500 hover:underline w-fit" href={e.data.sourceUrl}>Quelle</a> : null}
</div>
</div>
))}
</PageLayout>

View File

@ -2,9 +2,12 @@
import {l} from "../util/util";
import Login from "../components/Login.svelte";
import NavbarLayout from "../layouts/NavbarLayout.astro";
import {t} from "astro-i18n";
import {Image} from "astro:assets";
import localBau from "../images/2023-10-08_20.43.43.png";
---
<NavbarLayout title="Login">
<NavbarLayout title={t("login.page")}>
<script>
import {l} from "../util/util";
import {AES} from "crypto-js";
@ -13,5 +16,9 @@ import NavbarLayout from "../layouts/NavbarLayout.astro";
window.location.href = l("/dashboard");
}
</script>
<Image src={localBau} alt="Bau" width="1920" height="1080" class="w-screen h-screen dark:brightness-75 fixed -z-10 object-cover" draggable="false" />
<div class="h-screen mx-auto p-8 rounded-b-md shadow-md pt-40 sm:pt-28 md:pt-14 flex flex-col justify-center items-center
dark:text-white " style="width: min(100vw, 75em);">
<Login client:load />
</div>
</NavbarLayout>

View File

@ -7,6 +7,7 @@ import ws from "../images/WarShips.png"
import {t} from "astro-i18n";
import {getCollection} from "astro:content";
import PageLayout from "../layouts/PageLayout.astro";
import {Image} from "astro:assets";
const imageMap = {
"wg": wg,
@ -18,7 +19,7 @@ const imageMap = {
const modes = await getCollection("modes", entry => entry.data.main)
---
<PageLayout title="Rules">
<PageLayout title={t("page")}>
{modes.map(value => (
<div class="dark:bg-neutral-800 rounded-md p-4 border border-neutral-400 shadow-md my-4 flex flex-col
md:flex-row">