Add maintenance pages
This commit is contained in:
6
resources/views/errors/403.blade.php
Normal file
6
resources/views/errors/403.blade.php
Normal file
@@ -0,0 +1,6 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<x-error-block error-type="page-not-allowed" message="Unknown" />
|
||||
<a class="btn" href="javascript:history.go(-1)">Go back to the previous page</a>
|
||||
@endsection
|
||||
6
resources/views/errors/404.blade.php
Normal file
6
resources/views/errors/404.blade.php
Normal file
@@ -0,0 +1,6 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<x-error-block error-type="not-found" />
|
||||
<a class="btn" href="javascript:history.go(-1)">Go back to the previous page</a>
|
||||
@endsection
|
||||
6
resources/views/errors/4xx.blade.php
Normal file
6
resources/views/errors/4xx.blade.php
Normal file
@@ -0,0 +1,6 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<x-error-block error-type="custom" message="{{ $exception->getMessage() }}" />
|
||||
<a class="btn" href="javascript:history.go(-1)">Go back to the previous page</a>
|
||||
@endsection
|
||||
305
resources/views/errors/500.blade.php
Normal file
305
resources/views/errors/500.blade.php
Normal file
@@ -0,0 +1,305 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>500 - Internal server error - Romhack Plaza</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
|
||||
:root {
|
||||
|
||||
/* RHPZ color */
|
||||
--rhpz-orange: #ff7300;
|
||||
--rhpz-orange-hover: #e56700;
|
||||
|
||||
/* Background colors */
|
||||
--bg: #1e1e1e;
|
||||
--bg2: #252526;
|
||||
--bg3: #2d2d30;
|
||||
--bg4: #3e3e42;
|
||||
|
||||
/* Text */
|
||||
--text: #f1f1f1;
|
||||
--text2: #a1a1aa;
|
||||
--text3: #111111;
|
||||
|
||||
/* Elements */
|
||||
--border: #3f3f46;
|
||||
--error: #e57373;
|
||||
--info: #1976d2;
|
||||
--success: #81c784;
|
||||
--success2: #388e3c;
|
||||
|
||||
/* Typo */
|
||||
--typography: 'Segoe UI', 'San Francisco', 'Helvetica Neue', sans-serif;
|
||||
|
||||
/* Menu settings */
|
||||
--menu-size: 260px;
|
||||
--menu-user-avatar-bg: #555;
|
||||
|
||||
/* Gap */
|
||||
--gap: 15px;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--typography);
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--rhpz-orange);
|
||||
text-decoration: none;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--rhpz-orange-hover);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#app {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 20px;
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
[x-cloak] {display: none !important;}
|
||||
|
||||
|
||||
/* BUTTONS */
|
||||
|
||||
.btn {
|
||||
background-color: var(--bg3);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text);
|
||||
padding: 8px 16px;
|
||||
font-size: 0.9rem;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
transition: all 0.1s;
|
||||
}
|
||||
.btn:hover {
|
||||
background-color: var(--bg4);
|
||||
border-color: var(--menu-user-avatar-bg);
|
||||
}
|
||||
.btn.primary {
|
||||
background-color: var(--rhpz-orange);
|
||||
color: var(--text3);
|
||||
border-color: var(--rhpz-orange);
|
||||
font-weight: 600;
|
||||
}
|
||||
.btn.primary:hover {
|
||||
background-color: var(--rhpz-orange-hover);
|
||||
border-color: var(--rhpz-orange-hover);
|
||||
}
|
||||
.btn.danger {
|
||||
background-color: transparent;
|
||||
color: var(--error);
|
||||
border-color: var(--error);
|
||||
}
|
||||
.btn.danger:hover {
|
||||
background-color: rgba(229, 115, 115, 0.1);
|
||||
}
|
||||
.btn.success {
|
||||
background-color: transparent;
|
||||
color: var(--success);
|
||||
border-color: var(--success);
|
||||
}
|
||||
.btn.success:hover {
|
||||
background-color: rgba(129, 199, 132, 0.1);
|
||||
}
|
||||
|
||||
/* BLOCK */
|
||||
|
||||
.block {
|
||||
background-color: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.block.featured {
|
||||
border-left: 3px solid var(--rhpz-orange);
|
||||
}
|
||||
.block-header {
|
||||
font-size: 1.2rem;
|
||||
color: var(--text);
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.block-success {
|
||||
background-color: var(--success);
|
||||
border: 1px solid var(--success);
|
||||
color: var(--text);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.block-error {
|
||||
background-color: var(--error);
|
||||
border: 1px solid var(--error);
|
||||
color: var(--text);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* PAGE */
|
||||
|
||||
.page-title {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 300;
|
||||
margin-bottom: 20px;
|
||||
color: var(--text);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* TEXTS */
|
||||
|
||||
.whisper {
|
||||
color: var(--text2);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.content-title {
|
||||
color: var(--text);
|
||||
margin: 30px 0 15px 0;
|
||||
border-left: 3px solid var(--rhpz-orange);
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
background-color: var(--bg);
|
||||
border-left: 4px solid #1976d2;
|
||||
padding: 15px;
|
||||
margin-top: 30px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.btn {
|
||||
padding: 7px 12px;
|
||||
font-size: 0.85rem;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.block {
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
font-size: 1.05rem;
|
||||
margin-bottom: 12px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.content-title {
|
||||
margin: 20px 0 12px 0;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
padding: 12px;
|
||||
margin-top: 20px;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.whisper {
|
||||
margin-bottom: 12px;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.btn {
|
||||
padding: 6px 10px;
|
||||
font-size: 0.8rem;
|
||||
gap: 4px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn.primary, .btn.danger, .btn.success {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.block {
|
||||
padding: 12px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
font-size: 0.95rem;
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 2px 6px;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
.topbar-badge {
|
||||
min-width: 16px;
|
||||
height: 16px;
|
||||
padding: 0 3px;
|
||||
font-size: 0.6rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" style="display:flex;flex-direction: column;align-items: center;justify-content: center;">
|
||||
<main id="main-wrapper">
|
||||
<main id="content">
|
||||
<div class="block">
|
||||
<div class="page-title">500 - Internal server error</div>
|
||||
<p>To resolve the issue quickly, please report it on Gitea, Discord, or the forum with the following information.</p>
|
||||
<ul>
|
||||
<li>Your error code: {{ $errorId ?? "" }}</li>
|
||||
<li>What you were doing before the error occurred.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://code.romhackplaza.org/RHPZAdmin/RomhackPlaza/issues" class="btn primary">Report the problem on Gitea</a>
|
||||
<a href="https://community.romhackplaza.org/forums/bug-reports.6/" class="btn primary">Report the problem on the forum</a>
|
||||
<a href="https://community.romhackplaza.org/misc/contact/" class="btn">Report the problem with the contact form</a>
|
||||
<a href="https://discord.gg/5CKzeWmZZU" class="btn">Report the problem on Discord</a>
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -24,6 +24,9 @@
|
||||
@if(session('error'))
|
||||
<x-error-block error-type="custom" :message="session('error')" />
|
||||
@endif
|
||||
@if($errors->has('maintenance'))
|
||||
<x-error-block error-type="custom" :message="$errors->get('maintenance')[0]" />
|
||||
@endif
|
||||
@yield('content')
|
||||
</div>
|
||||
</main>
|
||||
|
||||
299
resources/views/maintenance.blade.php
Normal file
299
resources/views/maintenance.blade.php
Normal file
@@ -0,0 +1,299 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>500 - Internal server error - Romhack Plaza</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
|
||||
:root {
|
||||
|
||||
/* RHPZ color */
|
||||
--rhpz-orange: #ff7300;
|
||||
--rhpz-orange-hover: #e56700;
|
||||
|
||||
/* Background colors */
|
||||
--bg: #1e1e1e;
|
||||
--bg2: #252526;
|
||||
--bg3: #2d2d30;
|
||||
--bg4: #3e3e42;
|
||||
|
||||
/* Text */
|
||||
--text: #f1f1f1;
|
||||
--text2: #a1a1aa;
|
||||
--text3: #111111;
|
||||
|
||||
/* Elements */
|
||||
--border: #3f3f46;
|
||||
--error: #e57373;
|
||||
--info: #1976d2;
|
||||
--success: #81c784;
|
||||
--success2: #388e3c;
|
||||
|
||||
/* Typo */
|
||||
--typography: 'Segoe UI', 'San Francisco', 'Helvetica Neue', sans-serif;
|
||||
|
||||
/* Menu settings */
|
||||
--menu-size: 260px;
|
||||
--menu-user-avatar-bg: #555;
|
||||
|
||||
/* Gap */
|
||||
--gap: 15px;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--typography);
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--rhpz-orange);
|
||||
text-decoration: none;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--rhpz-orange-hover);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#app {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 20px;
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
[x-cloak] {display: none !important;}
|
||||
|
||||
|
||||
/* BUTTONS */
|
||||
|
||||
.btn {
|
||||
background-color: var(--bg3);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text);
|
||||
padding: 8px 16px;
|
||||
font-size: 0.9rem;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
transition: all 0.1s;
|
||||
}
|
||||
.btn:hover {
|
||||
background-color: var(--bg4);
|
||||
border-color: var(--menu-user-avatar-bg);
|
||||
}
|
||||
.btn.primary {
|
||||
background-color: var(--rhpz-orange);
|
||||
color: var(--text3);
|
||||
border-color: var(--rhpz-orange);
|
||||
font-weight: 600;
|
||||
}
|
||||
.btn.primary:hover {
|
||||
background-color: var(--rhpz-orange-hover);
|
||||
border-color: var(--rhpz-orange-hover);
|
||||
}
|
||||
.btn.danger {
|
||||
background-color: transparent;
|
||||
color: var(--error);
|
||||
border-color: var(--error);
|
||||
}
|
||||
.btn.danger:hover {
|
||||
background-color: rgba(229, 115, 115, 0.1);
|
||||
}
|
||||
.btn.success {
|
||||
background-color: transparent;
|
||||
color: var(--success);
|
||||
border-color: var(--success);
|
||||
}
|
||||
.btn.success:hover {
|
||||
background-color: rgba(129, 199, 132, 0.1);
|
||||
}
|
||||
|
||||
/* BLOCK */
|
||||
|
||||
.block {
|
||||
background-color: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.block.featured {
|
||||
border-left: 3px solid var(--rhpz-orange);
|
||||
}
|
||||
.block-header {
|
||||
font-size: 1.2rem;
|
||||
color: var(--text);
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.block-success {
|
||||
background-color: var(--success);
|
||||
border: 1px solid var(--success);
|
||||
color: var(--text);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.block-error {
|
||||
background-color: var(--error);
|
||||
border: 1px solid var(--error);
|
||||
color: var(--text);
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* PAGE */
|
||||
|
||||
.page-title {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 300;
|
||||
margin-bottom: 20px;
|
||||
color: var(--text);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* TEXTS */
|
||||
|
||||
.whisper {
|
||||
color: var(--text2);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.content-title {
|
||||
color: var(--text);
|
||||
margin: 30px 0 15px 0;
|
||||
border-left: 3px solid var(--rhpz-orange);
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
background-color: var(--bg);
|
||||
border-left: 4px solid #1976d2;
|
||||
padding: 15px;
|
||||
margin-top: 30px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.btn {
|
||||
padding: 7px 12px;
|
||||
font-size: 0.85rem;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.block {
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
font-size: 1.05rem;
|
||||
margin-bottom: 12px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.content-title {
|
||||
margin: 20px 0 12px 0;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
padding: 12px;
|
||||
margin-top: 20px;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.whisper {
|
||||
margin-bottom: 12px;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.btn {
|
||||
padding: 6px 10px;
|
||||
font-size: 0.8rem;
|
||||
gap: 4px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn.primary, .btn.danger, .btn.success {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.block {
|
||||
padding: 12px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
font-size: 0.95rem;
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 2px 6px;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
.topbar-badge {
|
||||
min-width: 16px;
|
||||
height: 16px;
|
||||
padding: 0 3px;
|
||||
font-size: 0.6rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" style="display:flex;flex-direction: column;align-items: center;justify-content: center;">
|
||||
<main id="main-wrapper">
|
||||
<main id="content">
|
||||
<div class="block">
|
||||
<div class="page-title">Maintenance is in progress.</div>
|
||||
<p>Please wait until maintenance is complete. Follow the Discord server or the forum if this is unscheduled maintenance.</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://community.romhackplaza.org/" class="btn primary">Go to the forum</a>
|
||||
<a href="https://discord.gg/5CKzeWmZZU" class="btn">Go to Discord</a>
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user