summaryrefslogtreecommitdiff
path: root/includes/components
diff options
context:
space:
mode:
Diffstat (limited to 'includes/components')
-rw-r--r--includes/components/2023ui.inc13
-rw-r--r--includes/components/explicit.php130
-rw-r--r--includes/components/footer.inc40
-rw-r--r--includes/components/fullbanner.inc6
-rw-r--r--includes/components/header.inc326
-rw-r--r--includes/components/mobilenav.inc89
-rw-r--r--includes/components/navigation.inc448
-rw-r--r--includes/components/pane.inc132
-rw-r--r--includes/components/timeline.inc2
9 files changed, 24 insertions, 1162 deletions
diff --git a/includes/components/2023ui.inc b/includes/components/2023ui.inc
index 8e9dc69..d0792ec 100644
--- a/includes/components/2023ui.inc
+++ b/includes/components/2023ui.inc
@@ -99,7 +99,7 @@
<div style="height: 52px; display: flex; align-items: center;">
<a href="/" style="color: inherit; text-decoration: inherit;">
<img class="antialias" src="/assets/logo/newlogo-ng.png" style="width: 32px;">
- <span style="margin-left: 5px; vertical-align: middle; position: relative; top: -1px; font-weight: bold;">Cold Haze</span>
+ <span style="margin-left: 5px; vertical-align: middle; position: relative; top: -1px; font-weight: bold;">Ponycule</span>
</a>
</div>
<div style="display: flex; align-items: center;">
@@ -188,10 +188,10 @@
<div id="side-bar" style="position: fixed; top: 62px; bottom: 20px; left: 0; width: 64px; display: flex; justify-content: center;">
<div>
<div id="side-bar-systems" style="background-color: var(--palette-4); height: max-content; border-radius: 999px;">
- <a data-bs-toggle="tooltip" data-bs-placement="right" title="Cloudburst System" class="ui2023-side-bar-system" href="/cloudburst" style="padding: 8px; height: 48px; width: 48px; display: block; border-bottom-left-radius: 999px; border-bottom-right-radius: 999px;">
+ <a data-bs-toggle="tooltip" data-bs-placement="right" title="Cloudburst System" class="ui2023-side-bar-system" href="/cloudburst" style="padding: 8px; height: 48px; width: 48px; display: block; border-top-left-radius: 999px; border-top-right-radius: 999px;">
<img class="antialias" src="<?= getAsset("ynmuc") ?>" style="max-width: 32px; max-height: 32px;">
</a>
- <a data-bs-toggle="tooltip" data-bs-placement="right" title="Raindrops System" class="ui2023-side-bar-system" href="/raindrops" style="padding: 8px; height: 48px; width: 48px; display: block; border-top-left-radius: 999px; border-top-right-radius: 999px;">
+ <a data-bs-toggle="tooltip" data-bs-placement="right" title="Raindrops System" class="ui2023-side-bar-system" href="/raindrops" style="padding: 8px; height: 48px; width: 48px; display: block;">
<img class="antialias" class="antialias" src="<?= getAsset("gdapd") ?>" style="max-width: 32px; max-height: 32px;">
</a>
<?php global $app; if ($isLoggedIn || $isLowerLoggedIn): ?>
@@ -199,7 +199,7 @@
<img class="antialias" class="antialias" src="<?= getAsset("other") ?>" style="max-width: 32px; max-height: 32px;">
</a>
<?php endif; ?>
- <a data-bs-toggle="tooltip" data-bs-placement="right" title="Moonglow" class="ui2023-side-bar-system" href="/moonglow" style="padding: 8px; height: 48px; width: 48px; display: block; border-top-left-radius: 999px; border-top-right-radius: 999px;">
+ <a data-bs-toggle="tooltip" data-bs-placement="right" title="Moonglow" class="ui2023-side-bar-system" href="/moonglow" style="padding: 8px; height: 48px; width: 48px; display: block; border-bottom-left-radius: 999px; border-bottom-right-radius: 999px;">
<img class="antialias" class="antialias" src="<?= getAsset("hrbom") ?>" style="max-width: 32px; max-height: 32px;">
</a>
</div>
@@ -209,13 +209,10 @@
<img src="<?= icon("relations") ?>" style="max-width: 28px; max-height: 28px;">
</a>
- <?php if ($isLowerLoggedIn || $isLoggedIn): ?>
+ <?php if ($isLoggedIn): ?>
<div class="mobile-hide" style="margin: 10px 0; width: 48px; height: 2px; background-color: var(--palette-2);"></div>
<div class="mobile-show" style="display: none; margin: 0 10px; height: 48px; width: 2px; background-color: var(--palette-2); vertical-align: middle;"></div>
- <a data-bs-toggle="tooltip" data-bs-placement="right" title="Schedules" class="ui2023-side-bar-item" href="/-/schedules" style="padding: 10px; height: 48px; width: 48px; display: block; border-radius: 999px;">
- <img src="<?= icon("schedule") ?>" style="max-width: 28px; max-height: 28px;">
- </a>
<a data-bs-toggle="tooltip" data-bs-placement="right" title="Money tracker" class="ui2023-side-bar-item" href="/-/money" style="padding: 10px; height: 48px; width: 48px; display: block; border-radius: 999px;">
<img src="<?= icon("money") ?>" style="max-width: 28px; max-height: 28px;">
</a>
diff --git a/includes/components/explicit.php b/includes/components/explicit.php
deleted file mode 100644
index 3e7675c..0000000
--- a/includes/components/explicit.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php global $isLoggedIn; global $isLowerLoggedIn; global $_PROFILE; global $app; if ($isLoggedIn || $isLowerLoggedIn): ?>
-<div class="modal" id="explicit-modal" data-bs-backdrop="static" data-bs-keyboard="false">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-body" style="text-align: center;">
- <img alt="" style="width: 64px; height: 64px;" src="/assets/icons/explicit.svg">
- <h3>This content is sexually explicit</h3>
-
- <p>This page shows uncensored graphically explicit sexual content that you may not want to see in some cases. Please refrain from visiting this part of the website in a public place.</p>
- <p>By continuing, you agree to be presented with sexually explicit content that is not appropriate for everyone.</p>
-
- <span onclick="explicitConfirm();" id="explicit-modal-confirm" class="btn btn-primary">Continue</span>
- <span onclick="explicitCancel();" id="explicit-modal-cancel" class="btn btn-outline-secondary">Go back</span>
-
- <label style="margin-top:10px; display: block; text-align: left; opacity: .5;">
- <input checked type="checkbox" class="form-check-input" id="explicit-modal-hour">
- Don't show for the next hour
- </label>
- </div>
- </div>
- </div>
-</div>
-
-<?php global $use2023UI; if (!$use2023UI): ?>
- <style>
- #explicit-modal .modal-header {
- border-bottom: 1px solid #353738;
- }
-
- #explicit-modal .modal-content {
- border: 1px solid rgba(255, 255, 255, .2);
- background-color: #111;
- }
- </style>
-<?php endif; ?>
-
-<!--suppress JSVoidFunctionReturnValueUsed -->
-<script>
- window.explicitModal = new bootstrap.Modal(document.getElementById("explicit-modal"));
- window.ip = "<?= $_SERVER['REMOTE_ADDR'] ?>";
- window.front = "<?php
-
- $front = [];
- $id = null;
-
- if ($_PROFILE["login"] === "raindrops") {
- $id = "gdapd";
- } else if ($_PROFILE["login"] === "cloudburst") {
- $id = "ynmuc";
- } else {
- $id = $app["other"]["id"];
- }
-
- $fronters = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id/fronters.json"), true)["members"];
- $front = array_map(function ($i) {
- return $i["id"];
- }, $fronters);
-
- echo(implode(",", $front));
-
- ?>";
- window.age = <?php
-
- if (isset($front[0]) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $front[0] . ".json")) {
- $metadata = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/metadata/" . $front[0] . ".json"), true);
- $age = null;
-
- if (isset($metadata["birth"]["age"]) && $metadata["birth"]["age"] !== 0) {
- $age = $metadata["birth"]["age"];
- } else if (isset($metadata["birth"]["year"]) && $metadata["birth"]["year"] > 1990) {
- $age = (int)date('Y') - $metadata["birth"]["year"] + (strtotime(date('Y') . "-" . $metadata["birth"]["date"]) <= time() ? 0 : -1);
- }
-
- if (is_string($age) && isset(explode("-", $age)[1]) && is_numeric(explode("-", $age)[1])) {
- $age = (int)explode("-", $age)[1];
- }
-
- echo($age);
- }
-
- ?>;
- window.explicitCancelAction = "back";
-
- function requestExplicit(ifNotAgreed, allowUnderage) {
- window.explicitCancelAction = ifNotAgreed;
-
- if (!allowUnderage && window.age !== -1 && (window.age < 15 || !window.age)) {
- document.getElementById("explicit-modal-confirm").classList.add("disabled");
- document.getElementById("explicit-modal-hour").disabled = true;
-
- window.explicitModal.show();
- document.getElementById("explicit-modal").classList.add("fade");
- }
-
- if (!localStorage.getItem("explicit-consent")) {
- window.explicitModal.show();
- document.getElementById("explicit-modal").classList.add("fade");
- } else {
- let parts = localStorage.getItem("explicit-consent").split("|");
-
- if (parts[0] !== window.front || parts[1] !== window.ip || new Date().getTime() - parseInt(parts[2]) > 3600000) {
- window.explicitModal.show();
- document.getElementById("explicit-modal").classList.add("fade");
- }
- }
- }
-
- function explicitConfirm() {
- window.explicitModal.hide();
-
- if (document.getElementById("explicit-modal-hour").checked) {
- localStorage.setItem("explicit-consent", window.front + "|" + window.ip + "|" + new Date().getTime());
- }
- }
-
- function explicitCancel() {
- if (window.explicitCancelAction === "refresh") {
- location.reload();
- } else {
- if (history.length > 1) {
- if (history.back() === undefined) {
- location.href = "https://ponies.equestria.horse";
- }
- } else {
- location.href = "https://ponies.equestria.horse";
- }
- }
- }
-</script>
-<?php endif; ?>
diff --git a/includes/components/footer.inc b/includes/components/footer.inc
index a348ce4..c062436 100644
--- a/includes/components/footer.inc
+++ b/includes/components/footer.inc
@@ -2,37 +2,11 @@
global $start;
$GLOBALS["ColdHazePerformance"]["page"] = (microtime(true) - $start) * 1000;
$start = microtime(true);
-global $pageFile;
-global $use2023UI;
?>
<script src="/assets/editor/ua-parser.js"></script>
-<?php if (!$use2023UI): ?>
-<div id="footer-pre"></div>
-<div id="footer">
- <hr>
- <div class="container text-muted">
- <?php
-
- $refresh = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/refresh.json"), true);
- $version = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/version.json"), true);
-
- global $lang; global $pages;
-
- $time = microtime(true) - $GLOBALS["ColdHazeStart"];
-
- ?>
- © 2022-<?= date("Y") ?> <a href="https://equestria.dev" target="_blank" class="text-muted"><?= $lang["footer"]["copyright"] ?></a> · build <?= $version["build"] ?>.<?= $version["revision"] ?>, took <?= round($time * 1000, 2) ?> ms
- <?php global $use2023UI; global $isLoggedIn; global $isLowerLoggedIn; global $_PROFILE; if (($isLoggedIn || $isLowerLoggedIn) && !$use2023UI && ((isset($_COOKIE["enable2023UIcta"]) && $_COOKIE["enable2023UIcta"] === "yes") || ($_PROFILE["login"] === "raindrops"))) { ?>
- <br>
- <a class="text-muted" href="#" data-bs-toggle="modal" data-bs-target="#new-ui-cta" onclick="newShape();">Enable Cold Haze's experimental new shape</a>
- <?php } ?>
- <br><br><br><br><br>
- </div>
-</div>
-<?php else: ?><br><br><?php endif; ?>
-</main>
+<br><br></main>
<script>
let tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
@@ -40,15 +14,7 @@ global $use2023UI;
return new bootstrap.Tooltip(tooltipTriggerEl)
});
- <?php if (!$use2023UI): ?>
- Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')).forEach((item) => {
- if (!item.classList.contains("tooltip-nohelp")) {
- item.style.cursor = "help";
- }
- });
- <?php endif; ?>
-
- //window.fetch("/api/rename?name=" + encodeURIComponent("Cold Haze Web (" + UAParser().browser.name + " on " + UAParser().os.name + ")"));
+ window.fetch("/api/rename?name=" + encodeURIComponent("Cold Haze Web (" + UAParser().browser.name + " on " + UAParser().os.name + ")"));
if (document.createElement("canvas").getContext("webgl") === null) {
let style = document.createElement("style");
@@ -62,7 +28,5 @@ global $use2023UI;
<pre><?php $GLOBALS["ColdHazePerformance"]["footer"] = (microtime(true) - $start) * 1000; var_dump($GLOBALS["ColdHazePerformance"]); ?></pre>
<?php endif; ?>
-<?php global $isLoggedIn; global $isLowerLoggedIn; if ($isLoggedIn || $isLowerLoggedIn) require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/explicit.php"; ?>
-
</body>
</html> \ No newline at end of file
diff --git a/includes/components/fullbanner.inc b/includes/components/fullbanner.inc
index 8d3f4a1..960ae0a 100644
--- a/includes/components/fullbanner.inc
+++ b/includes/components/fullbanner.inc
@@ -4,14 +4,14 @@
</script>
<div id="member-banner"></div>
-<script src="/assets/logo/banner.js"></script><script>refreshBanner(false, <?= $lang["_french"] ? "true" : "false" ?>)</script>
+<script src="/assets/logo/banner.js?_=<?= sha1_file($_SERVER['DOCUMENT_ROOT'] . "/assets/logo/banner.js") ?>"></script><script>refreshBanner(false, <?= $lang["_french"] ? "true" : "false" ?>)</script>
-<?php if ($travelling[$memberID]['travelling'] && !$travelling[$memberID]['equestria']): ?>
+<?php if (isset($travelling[$memberID]) && $travelling[$memberID]['travelling'] && !$travelling[$memberID]['equestria']): ?>
<br>
<div class="alert alert-primary" style="margin-bottom: 0 !important;">
<?= getMiniName($memberData["display_name"] ?? $memberData["name"]) ?> <?= $lang["fullbanner"]["visit"][0] ?> <?= $systemID === "ynmuc" ? "Raindrops System" : "Cloudburst System" ?><?= str_replace("%1", getMemberPronouns($memberData["pronouns"])["subjective"], str_replace("%2", getMemberPronouns($memberData["pronouns"])["third"] ? "is" : "are", $lang["fullbanner"]["visit"][1])) ?><?= $systemCommonName ?>.
</div>
-<?php elseif ($travelling[$memberID]['travelling'] && $travelling[$memberID]['equestria']): ?>
+<?php elseif (isset($travelling[$memberID]) && $travelling[$memberID]['travelling'] && $travelling[$memberID]['equestria']): ?>
<br>
<div class="alert alert-primary" style="margin-bottom: 0 !important;">
<?= getMiniName($memberData["display_name"] ?? $memberData["name"]) ?> is on a trip to <?= $metadata["fictive"] ? "Equestria" : "Celeste" ?>. <?= str_replace("%1", getMemberPronouns($memberData["pronouns"])["subjective"], str_replace("%2", getMemberPronouns($memberData["pronouns"])["third"] ? "is" : "are", "Therefore %1 %2 currently not in the ")) ?><?= $systemCommonName ?>.
diff --git a/includes/components/header.inc b/includes/components/header.inc
index 5ab13dc..9409917 100644
--- a/includes/components/header.inc
+++ b/includes/components/header.inc
@@ -1,13 +1,8 @@
<?php global $title; global $pages; global $readOnly;
$start = microtime(true);
-$useNewUI = !isset($_GET['old']);
-$use2023UI = !isset($_GET["no2023"]);
+$use2023UI = $useNewUI = true;
global $use2023UI;
-if (!isset($_COOKIE["new2023UIctaFirstVisit"])) {
- setcookie("new2023UIctaFirstVisit", time(), time() + 86400*365, "/", "", true, true);
-}
-
$isNormallyLoggedIn = false;
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/session.inc"; global $isLoggedIn; global $isUserLoggedIn; global $isLowerLoggedIn;
@@ -19,23 +14,6 @@ if ($readOnly && $isLoggedIn || $readOnly && $isUserLoggedIn) {
$pages = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/pages.json"), true);
-if (!function_exists("error")) {
- function error($errno, $errstr, $file, $line) {
- echo('
- <!-- -->">
- <div class="alert alert-danger" style="text-align: left;">
- <b>Error ' . $errno . ':</b> ' . $errstr . ' [' . $file . ':' . $line . ']
- </div>');
- }
-}
-
-if (isset($_GET['errors'])) {
- ini_set('display_errors', '1');
- ini_set('display_startup_errors', '1');
- error_reporting(E_ALL);
- set_error_handler("error", E_ALL);
-}
-
global $_MemberName;
global $_MemberPage;
global $_SystemName;
@@ -49,11 +27,9 @@ $page = $pages[$toplevel] ?? [
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/util/travelling.inc"; global $travelling;
require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/util/score.inc";
-require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/util/pronouns.inc";
-require_once $_SERVER["DOCUMENT_ROOT"] . "/includes/util/bitset.inc";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc";
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/banner.inc";
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/rainbow.inc";
-require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc";
?>
<!doctype html>
@@ -62,184 +38,19 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc";
<script>
document.cookie = "new2023UIDarkMode=" + (window.matchMedia("(prefers-color-scheme: dark)").matches ? "yes" : "no") + "; max-age=" + (60*60*24*365) + "; path=/; samesite; secure";
</script>
- <link href="/assets/logo/custom<?= $use2023UI ? "-2023" : "" ?>.css" rel="preload" as="style">
- <link href="/assets/logo/light<?= $use2023UI ? "-2023" : "" ?>.css" rel="preload" as="style">
- <link href="/assets/logo/custom<?= $use2023UI ? "-2023" : "" ?>.css" rel="stylesheet">
+ <link href="/assets/logo/custom-2023.css" rel="preload" as="style">
+ <link href="/assets/logo/light-2023.css" rel="preload" as="style">
+ <link href="/assets/logo/custom-2023.css" rel="stylesheet">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
- <title><?= $title && $title !== "-" ? $title . " · " : "" ?>Cold Haze</title>
- <link rel="shortcut icon" href="/assets/logo/<?php if ($use2023UI): ?>newlogo-ng<?php else: ?>newlogo<?= $isLoggedIn || $isLowerLoggedIn ? "3" : "" ?><?php endif; ?>.png" type="image/png">
- <link href="/assets/logo/light<?= $use2023UI ? "-2023" : "" ?>.css" rel="stylesheet">
+ <title><?= $title && $title !== "-" ? $title . " · " : "" ?>Ponycule</title>
+ <link rel="shortcut icon" href="/assets/logo/newlogo-ng.png" type="image/png">
+ <link href="/assets/logo/light-2023.css" rel="stylesheet">
</head>
-<body<?php if (!$use2023UI): ?> style="background-color: #000;"<?php else: ?> style="background-color: var(--palette-1);"<?php endif; ?>>
- <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/navigation.inc"; global $navigation; ?>
-
- <?php if (!$useNewUI): ?>
- <div style="margin-top: 60px;" id="top-of-page"></div>
- <?php endif; ?>
-
- <?php if ($useNewUI && !$use2023UI): ?>
- <aside id="navigation-pane">
- <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/pane.inc"; ?>
- </aside>
-
- <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/mobilenav.inc"; ?>
-
- <style>
- body {
- margin-left: 300px;
- }
-
- .modal.show {
- left: 300px;
- width: calc(100% - 300px);
- }
-
- .modal {
- left: 150px;
- }
-
- nav {
- display: none !important;
- }
-
- #navigation-pane {
- z-index: 9999;
- background: black;
- position: fixed;
- top: 0;
- left: 0;
- bottom: 0;
- width: 300px;
- border-right: 1px solid rgba(255, 255, 255, .25);
- overflow: auto;
- }
-
- #title-bar {
- position: fixed;
- top: 0;
- left: 300px;
- right: 0;
- height: 34px;
- background: rgba(0, 0, 0, .75);
- z-index: 9999;
- padding: 5px;
- text-align: center;
- backdrop-filter: blur(10px);
- -webkit-backdrop-filter: blur(10px);
- border-bottom: 1px solid rgba(255, 255, 255, .25);
- }
-
- #mobile-navigation {
- display: none;
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- height: 48px;
- background: rgba(0, 0, 0, .75);
- backdrop-filter: blur(30px);
- -webkit-backdrop-filter: blur(30px);
- border-top: 1px solid rgba(255, 255, 255, .25);
- z-index: 999999;
- }
-
- @media (max-width: 1360px) {
- .modal.show {
- left: 250px !important;
- width: calc(100% - 250px) !important;
- }
-
- .modal {
- left: 125px !important;
- }
-
- #title-bar {
- left: 250px !important;
- }
-
- #navigation-pane {
- width: 250px !important;
- }
-
- body {
- margin-left: 250px !important;
- }
-
- #system-banner-container, #member-banner-container {
- width: 100% !important;
- }
- }
-
- @media (max-width: 1300px) {
- .modal.show {
- left: 200px !important;
- width: calc(100% - 200px) !important;
- }
-
- .modal {
- left: 100px !important;
- }
-
- #title-bar {
- left: 200px !important;
- }
-
- #navigation-pane {
- width: 200px !important;
- }
-
- body {
- margin-left: 200px !important;
- }
- }
-
- @media (max-width: 1195px) {
- .modal.show {
- left: 0 !important;
- width: 100% !important;
- }
-
- .modal {
- left: 0 !important;
- }
-
- #title-bar {
- left: 0 !important;
- }
-
- #navigation-pane {
- display: none !important;
- }
-
- body {
- margin-left: 0 !important;
- }
-
- #mobile-navigation {
- display: block !important;
- }
- }
-
- @media (max-width: 700px) {
- #title-bar-parts-mobile {
- display: inline !important;
- }
-
- #title-bar-parts-desktop {
- display: none;
- }
-
- #title-bar {
- text-align: left;
- }
- }
- </style>
- <?php endif; ?>
-
- <?php if ($use2023UI) {
+<body style="background-color: var(--palette-1);">
+ <?php
$palettes = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/themes.json"), true);
$selectedPalette = $palettes["default"];
@@ -658,119 +469,8 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc";
}
}
</style>
- <?php }
- } ?>
-
- <?php if ($use2023UI): ?>
- <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/2023ui.inc"; ?>
- <?php endif; ?>
-
-<?php if (isset($_GET["mini"]) || str_contains($_SERVER["HTTP_USER_AGENT"], "+ColdHazeDesktop")) {
- ?>
- <style>
- #navigation-pane, #title-bar, #footer, #titlebar-separator, #mobile-navigation, #global-search-container {
- display: none !important;
- }
-
- body {
- margin-left: 0 !important;
- }
- </style>
-<?php } if (str_contains($_SERVER["HTTP_USER_AGENT"], "+ColdHazeDesktop")) { ?>
-<style>
- body {
- background: #222 !important;
- }
-
- .container {
- margin-left: 10px;
- margin-right: 10px;
- max-width: calc(100vw - 20px);
- }
-
- h2 {
- display: none;
- }
-</style>
-<?php }
-
-if (
- (($isLoggedIn || $isLowerLoggedIn) && !$use2023UI && isset($_COOKIE["enable2023UIcta"]) && $_COOKIE["enable2023UIcta"] === "yes") ||
- (isset($_COOKIE["force2023UIcta"]) && $_COOKIE["force2023UIcta"] === "yes" && !$use2023UI) ||
- (($isLoggedIn || $isLowerLoggedIn) && isset($_PROFILE) && !$use2023UI)
-) { ?>
- <div class="modal fade" id="new-ui-cta">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-body">
- <img src="/assets/logo/light.svg" style="width: 100%; margin-bottom: 20px;" class="cta-light">
- <img src="/assets/logo/dark.svg" style="width: 100%; margin-bottom: 20px;" class="cta-dark">
- <style>
- @media (prefers-color-scheme: light) {
- .cta-dark {
- display: none;
- }
- }
-
- @media (prefers-color-scheme: dark) {
- .cta-light {
- display: none;
- }
-
- #new-ui-cta .modal-header {
- border-bottom: 1px solid #353738;
- }
-
- #new-ui-cta .modal-content {
- border: 1px solid rgba(255, 255, 255, .2);
- background-color: #111;
- }
- }
- </style>
- <h3 style="text-align: center;">There is more to it</h3>
- <p style="text-align: center;">Cold Haze is getting a new shape. Help us improve it by testing it early before it is made publicly available.</p>
- <p style="text-align: center;">The new design is colorful, clean, modern, simple, fast, and gives you access to what you need the most.</p>
- <div style="text-align: center;"><a class="btn btn-primary" href="/api/2023ui">Try it now</a> <a data-bs-dismiss="modal" onclick="localStorage.setItem('dismissed2023cta', '')" class="btn btn-outline-secondary">Maybe later</a></div>
- <hr>
- <div class="small text-muted">Some features are not available in the new design. <a href="https://bugs.equestria.dev/articles/CH-A-1/New-design-FAQ" target="_blank">Learn more.</a></div>
- <!-- Equestria.dev makes no guarantee whatsoever that, after turning on this experimental feature, Cold Haze will continue working as intended. Access to emergency features might be unavailable while this option is turned on. Temporarily turning it off is possible using the "no2023" URL parameter. -->
- </div>
- </div>
- </div>
- </div>
-
- <script>
- if (localStorage.getItem("dismissed2023cta") === null) {
- let modal = new bootstrap.Modal(document.getElementById("new-ui-cta"));
- modal.show();
- }
- </script>
-<?php }
-
-if ($use2023UI && isset($_GET["ui2023intro"])) { ?>
- <div class="modal fade" id="new-ui-success">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-body" style="text-align: center;">
- <img src="<?= icon("wave", false) ?>" class="light-only" style="height: 56px; margin: 10px 0;">
- <img src="<?= icon("wave", true) ?>" class="dark-only" style="height: 56px; margin: 10px 0;">
- <h3 style="text-align: center;">Welcome to a new experience</h3>
- <p style="text-align: center;">The new design is now activated and you can use it now.</p>
- <p style="text-align: center;">Please remember that it is currently experimental and you should report any issue you encounter.</p>
- <div style="text-align: center;"><a data-bs-dismiss="modal" onclick="localStorage.setItem('dismissed2023cta', '')" class="btn btn-outline-primary">Done</a></div>
- <hr>
- <div class="small text-muted">Some features are not available in the new design. <a href="">Learn more.</a></div>
- </div>
- </div>
- </div>
- </div>
-
- <script>
- let modal = new bootstrap.Modal(document.getElementById("new-ui-success"));
- modal.show();
- </script>
-<?php }
+ <?php } ?>
-require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/explicit.php";
-$GLOBALS["ColdHazePerformance"]["header"] = (microtime(true) - $start) * 1000; $start = microtime(true); ?>
+ <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/2023ui.inc"; ?>
+<?php $GLOBALS["ColdHazePerformance"]["header"] = (microtime(true) - $start) * 1000; $start = microtime(true); ?>
<main id="app" style="background-color: var(--palette-0);"> \ No newline at end of file
diff --git a/includes/components/mobilenav.inc b/includes/components/mobilenav.inc
deleted file mode 100644
index e42e9ab..0000000
--- a/includes/components/mobilenav.inc
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php global $use2023UI; global $navigation; global $isLoggedIn; global $isLowerLoggedIn; if (!$use2023UI): ?>
-<div id="mobile-navigation">
- <div id="mobile-navigation-container" class="container" style="display: grid; grid-template-columns: repeat(<?= count(array_values(array_filter($navigation, function ($item) use ($isLoggedIn) {
- return !$item["admin"] || $isLoggedIn;
- }))) + 1 ?>, 1fr); height: 100%;">
- <a title="Cold Haze" data-bs-toggle="tooltip" href="/" id="mobile-navigation-item--logo" class="tooltip-nohelp mobile-navigation-item">
- <img src="/assets/logo/newlogo.png" alt="" style="width:24px;vertical-align: middle;">
- </a>
- <?php foreach ($navigation as $id => $item): if (!$item["admin"] || $isLoggedIn): ?>
- <a onclick="toggleMobileNavigation('<?= $id ?>');" title="<?= $item["name"] ?>" data-bs-toggle="tooltip" id="mobile-navigation-item-<?= $id ?>" class="tooltip-nohelp mobile-navigation-item">
- <img src="<?= $item["icon"] ?>" <?php if ($item["invert"]): ?>class="dropdown-icon"<?php endif; ?> alt="" style="width:24px;vertical-align: middle;border-radius:3px;">
- </a>
- <?php endif; endforeach; ?>
- </div>
-</div>
-
-<div id="mobile-navigation-box-container" style="display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 48px; background-color: rgba(0, 0, 0, .75); backdrop-filter: blur(30px); -webkit-backdrop-filter: blur(30px); z-index: 99999; overflow: auto;">
- <?php foreach ($navigation as $id => $item): if (!$item["admin"] || $isLoggedIn): ?>
- <div id="mobile-navigation-box-<?= $id ?>" style="display: none; margin-top: 10px; margin-bottom: 10px;" class="mobile-navigation-box container">
- <div class="pane-group-title">
- <img src="<?= $item["icon"] ?>" <?php if ($item["invert"]): ?>class="dropdown-icon"<?php endif; ?> alt="" style="width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;"><?= $item["name"] ?></span>
- </div>
-
- <?php foreach ($item["items"] as $category): ?>
- <div class="pane-group-category <?= $category["minimal"] ? "pane-group-category-minimal" : "" ?>" <?= $category["minimal"] ? 'style="display: grid; grid-template-columns: repeat(' . ($isLowerLoggedIn ? 2 : 3) . ', 1fr); grid-gap: 10px;"' : "" ?>>
- <?php if (isset($category["name"])): ?>
- <div class="pane-group-category-title"><?= $category["name"] ?></div>
- <?php endif; ?>
- <?php foreach ($category["items"] as $link): if (isset($link)): if (!($isLowerLoggedIn && $link["private"])): ?>
- <a class="pane-group-item" href="<?= $link["link"] ?>">
- <img src="<?= $link["icon"] ?>" <?php if ($link["invert"]): ?>class="dropdown-icon"<?php endif; ?> alt="" style="width:24px; border-radius: 5px; vertical-align: middle;">
- <?php if (!$category["minimal"]): ?><span style="vertical-align: middle;<?= isset($link["stepped"]) ? "color: $link[stepped];" : "" ?>"><?= isset($link["stepped"]) ? "<b>$link[name]</b>" : $link["name"] ?></span><?php endif; ?>
- </a>
- <?php endif; endif; endforeach; ?>
- </div>
- <?php endforeach; ?>
- </div>
- <?php endif; endforeach; ?>
-</div>
-
-<style>
- .mobile-navigation-item {
- display: flex;
- cursor: pointer;
- align-items: center;
- justify-content: center;
- }
-
- .mobile-navigation-item:hover {
- background: rgba(255, 255, 255, .1);
- }
-
- .mobile-navigation-item:active, .mobile-navigation-item:focus, .mobile-navigation-item.open {
- background: rgba(255, 255, 255, .25);
- }
-</style>
-
-<script>
- function closeMobileNavigation() {
- document.getElementById("mobile-navigation-box-container").style.display = "none";
- document.body.style.overflow = "";
-
- Array.from(document.getElementsByClassName("mobile-navigation-item")).forEach((i) => {
- i.classList.remove("open");
- });
-
- Array.from(document.getElementsByClassName("mobile-navigation-box")).forEach((i) => {
- i.style.display = "none";
- });
- }
-
- function openMobileNavigation(id) {
- document.getElementById("mobile-navigation-item-" + id).classList.add("open");
- document.body.style.overflow = "hidden";
- document.getElementById("mobile-navigation-box-container").style.display = "block";
- document.getElementById("mobile-navigation-box-" + id).style.display = "block";
- }
-
- function toggleMobileNavigation(id) {
- if (document.getElementById("mobile-navigation-box-" + id).style.display !== "block") {
- closeMobileNavigation();
- openMobileNavigation(id);
- } else {
- closeMobileNavigation();
- }
- }
-</script>
-<?php endif; ?> \ No newline at end of file
diff --git a/includes/components/navigation.inc b/includes/components/navigation.inc
deleted file mode 100644
index 1d24dea..0000000
--- a/includes/components/navigation.inc
+++ /dev/null
@@ -1,448 +0,0 @@
-<?php
-
-global $use2023UI;
-$pages = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/pages.json"), true);
-
-global $navigation;
-global $toplevel;
-global $lang; global $pages; global $app; global $isLowerLoggedIn; global $isLoggedIn;
-
-if (!$use2023UI) {
-
- $cache = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/cache/navigation.json"), true);
-
- if (!isset($cache["raindrops"])) $cache["raindrops"] = [];
- if (!isset($cache["cloudburst"])) $cache["cloudburst"] = [];
- if (!isset($cache["other"])) $cache["other"] = [];
-
- foreach ([
- [
- "name" => "raindrops",
- "id" => "gdapd"
- ],
- [
- "name" => "cloudburst",
- "id" => "ynmuc"
- ],
- [
- "name" => "other",
- "id" => $app["other"]["id"]
- ]
- ] as $cacheSystem) {
- if (!isset($cache[$cacheSystem["name"]]["public"])) {
- $isLoggedInOldState = $isLoggedIn;
- $isLowerLoggedInOldState = $isLowerLoggedIn;
-
- $isLoggedIn = false;
- $isLowerLoggedIn = false;
-
- $cache[$cacheSystem["name"]]["public"] = array_map(function ($member) {
- return [
- "name" => $member['display_name'] ?? $member['name'],
- "icon" => getAsset($member["system"], $member["id"], "heads"),
- "invert" => false,
- "link" => "/$member[name]",
- "stepped" => null,
- "private" => false
- ];
- }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) {
- return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new";
- }));
-
- $isLoggedIn = $isLoggedInOldState;
- $isLowerLoggedIn = $isLowerLoggedInOldState;
- }
-
- if (!isset($cache[$cacheSystem["name"]]["private"])) {
- $isLoggedInOldState = $isLoggedIn;
- $isLowerLoggedInOldState = $isLowerLoggedIn;
-
- $isLoggedIn = true;
- $isLowerLoggedIn = false;
-
- $cache[$cacheSystem["name"]]["private"] = array_map(function ($member) {
- return [
- "name" => $member['display_name'] ?? $member['name'],
- "icon" => getAsset($member["system"], $member["id"], "heads"),
- "invert" => false,
- "link" => "/$member[name]",
- "stepped" => null,
- "private" => false
- ];
- }, array_filter(scoreOrder(withTravelers(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$cacheSystem[id]/members.json"), true), "$cacheSystem[id]"), "$cacheSystem[id]"), function ($member) {
- return $member['name'] !== "unknown" && $member['name'] !== "fusion" && $member['name'] !== "new";
- }));
-
- $isLoggedIn = $isLoggedInOldState;
- $isLowerLoggedIn = $isLowerLoggedInOldState;
- }
- }
-
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/cache/navigation.json", json_encode($cache));
-
- $navigation_admin = [
- "admin" => !$isLowerLoggedIn,
- "name" => "Private utilities",
- "icon" => "/assets/icons/admin.svg",
- "invert" => true,
- "items" => [
- "alerts" => [
- "name" => null,
- "minimal" => true,
- "items" => [
- [
- "name" => $pages["emergency"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/emergency.svg",
- "invert" => false,
- "link" => "/-/emergency",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["wakeup"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/wakeup.svg",
- "invert" => false,
- "link" => "/-/wakeup",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["pleasure"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/pleasure.svg",
- "invert" => false,
- "link" => "/-/pleasure",
- "stepped" => null,
- "private" => false
- ]
- ]
- ],
- "apps" => [
- "name" => $lang["navigation"]["apps"],
- "minimal" => false,
- "items" => [
- time() >= 1686787200 ? null : [
- "name" => "Front planner<span class='badge bg-warning text-black rounded-pill' style='position:relative;top:-1px; margin-left: 5px;'>EOL</span>",
- "icon" => "/assets/icons/fronting.svg",
- "invert" => true,
- "link" => "/-/fronting",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["evening"]["name"][$lang["_name"]] . (time() >= 1686787200 ? "" : "<span class='badge bg-info text-black rounded-pill' style='position:relative;top:-1px; margin-left: 5px;'>Beta</span>"),
- "icon" => "/assets/icons/evening.svg",
- "invert" => true,
- "link" => "/-/evening",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["profiles"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/profiles.svg",
- "invert" => true,
- "link" => "/-/profiles",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["money"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/money.svg",
- "invert" => true,
- "link" => "/-/money",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["contacts"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/contacts.svg",
- "invert" => true,
- "link" => "/-/contacts",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["schedules"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/schedules.svg",
- "invert" => true,
- "link" => "/-/schedules",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["docs"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/docs.svg",
- "invert" => true,
- "link" => "/-/docs",
- "stepped" => null,
- "private" => true
- ],
- time() >= 1688169600 ? null : [
- "name" => "Devices<span class='badge bg-warning text-black rounded-pill' style='position:relative;top:-1px; margin-left: 5px;'>EOL</span>",
- "icon" => "/assets/icons/computers.svg",
- "invert" => true,
- "link" => "/-/computers",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["travelling"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/travelling.svg",
- "invert" => true,
- "link" => "/-/travelling",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["stats"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/stats.svg",
- "invert" => true,
- "link" => "/-/stats",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["pair"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/pair.svg",
- "invert" => true,
- "link" => "/-/pair",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["sessions"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/sessions.svg",
- "invert" => true,
- "link" => "/-/sessions",
- "stepped" => null,
- "private" => true
- ],
- [
- "name" => $pages["logout"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/logout.svg",
- "invert" => true,
- "link" => "/-/logout",
- "stepped" => null,
- "private" => false
- ]
- ]
- ],
- "sort" => [
- "name" => "Sorted members lists",
- "minimal" => false,
- "items" => [
- [
- "name" => $pages["splitting"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/splitting.svg",
- "invert" => true,
- "link" => "/-/splitting",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["byfront"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/byfront.svg",
- "invert" => true,
- "link" => "/-/byfront",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["alphabet"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/alphabet.svg",
- "invert" => true,
- "link" => "/-/alphabet",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["s:species"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/species.svg",
- "invert" => true,
- "link" => "/-/byspecies",
- "stepped" => null,
- "private" => false
- ],
- ]
- ]
- ]
- ];
- $navigation_global = [
- "admin" => false,
- "name" => $lang["navigation"]["general"],
- "icon" => "/assets/icons/global.svg",
- "invert" => true,
- "items" => [
- "main" => [
- "name" => null,
- "minimal" => false,
- "items" => [
- [
- "name" => $pages["home"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/home.svg",
- "invert" => true,
- "link" => "/",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["relations"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/relations.svg",
- "invert" => true,
- "link" => "/-/relations",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["terminology"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/terminology.svg",
- "invert" => true,
- "link" => "/-/terminology",
- "stepped" => null,
- "private" => false
- ]
- ]
- ]
- ]
- ];
- $navigation_cloudburst = [
- "admin" => false,
- "name" => "Cloudburst System",
- "icon" => getAsset("ynmuc"),
- "invert" => false,
- "items" => [
- "header" => [
- "name" => null,
- "minimal" => false,
- "items" => [
- [
- "name" => $lang["navigation"]["about"],
- "icon" => "/assets/icons/about.svg",
- "invert" => true,
- "link" => "/cloudburst",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["s:history"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/history.svg",
- "invert" => true,
- "link" => "/cloudburst/-/history",
- "stepped" => null,
- "private" => false
- ]
- ]
- ],
- "members" => [
- "name" => $lang["navigation"]["members"],
- "minimal" => false,
- "items" => $cache["cloudburst"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"]
- ]
- ]
- ];
- $navigation_other = [
- "admin" => !$isLowerLoggedIn,
- "name" => $app["other"]["name"],
- "icon" => getAsset($app["other"]["id"]),
- "invert" => false,
- "items" => [
- "header" => [
- "name" => null,
- "minimal" => false,
- "items" => [
- [
- "name" => $lang["navigation"]["about"],
- "icon" => "/assets/icons/about.svg",
- "invert" => true,
- "link" => "/" . $app["other"]["slug"],
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["s:history"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/history.svg",
- "invert" => true,
- "link" => "/" . $app["other"]["slug"] . "/-/history",
- "stepped" => null,
- "private" => false
- ]
- ]
- ],
- "members" => [
- "name" => $lang["navigation"]["members"],
- "minimal" => false,
- "items" => $cache["other"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"]
- ]
- ]
- ];
- $navigation_raindrops = [
- "admin" => false,
- "name" => "Raindrops System",
- "icon" => getAsset("gdapd"),
- "invert" => false,
- "items" => [
- "header" => [
- "name" => null,
- "minimal" => false,
- "items" => [
- [
- "name" => $lang["navigation"]["about"],
- "icon" => "/assets/icons/about.svg",
- "invert" => true,
- "link" => "/raindrops",
- "stepped" => null,
- "private" => false
- ],
- [
- "name" => $pages["s:history"]["name"][$lang["_name"]],
- "icon" => "/assets/icons/history.svg",
- "invert" => true,
- "link" => "/raindrops/-/history",
- "stepped" => null,
- "private" => false
- ]
- ]
- ],
- "members" => [
- "name" => $lang["navigation"]["members"],
- "minimal" => false,
- "items" => $cache["raindrops"][$isLoggedIn || $isLowerLoggedIn ? "private" : "public"]
- ]
- ]
- ];
-
- global $parts;
-
- if (isset($parts) && isset($parts[0]) && $parts[0] === $app["other"]["slug"]) {
- $navigation = [
- "other" => $navigation_other,
- "cloudburst" => $navigation_cloudburst,
- "raindrops" => $navigation_raindrops,
- "admin" => $navigation_admin,
- "global" => $navigation_global
- ];
- } elseif (isset($parts) && isset($parts[0]) && $parts[0] === "cloudburst") {
- $navigation = [
- "cloudburst" => $navigation_cloudburst,
- "raindrops" => $navigation_raindrops,
- "other" => $navigation_other,
- "admin" => $navigation_admin,
- "global" => $navigation_global
- ];
- } elseif (isset($parts) && isset($parts[0]) && $parts[0] === "raindrops") {
- $navigation = [
- "raindrops" => $navigation_raindrops,
- "cloudburst" => $navigation_cloudburst,
- "other" => $navigation_other,
- "admin" => $navigation_admin,
- "global" => $navigation_global
- ];
- } else {
- $navigation = [
- "admin" => $navigation_admin,
- "global" => $navigation_global,
- "cloudburst" => $navigation_cloudburst,
- "raindrops" => $navigation_raindrops,
- "other" => $navigation_other,
- ];
- }
-} \ No newline at end of file
diff --git a/includes/components/pane.inc b/includes/components/pane.inc
deleted file mode 100644
index a4b2d43..0000000
--- a/includes/components/pane.inc
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php global $use2023UI; global $isLoggedIn; global $isLowerLoggedIn; global $pages; global $navigation; $byColor = getMembersByColor(); global $lang; global $pages; if (!$use2023UI): ?>
-
-<div id="pane-header-background" style="background-image: linear-gradient(90deg, <?php
-
-$index = 0;
-$list = array_map(function ($i) { return $i["color"]; }, $byColor);
-$length = count($list);
-
-foreach ($list as $color) {
- $perc = ($index / $length) * 100;
- echo("#${color}33 $perc%");
-
- $index++;
- if ($index < $length) echo(", ");
-}
-
-?>)">
- <a href="/" id="pane-header" class="login-link-clickable" style="color: white; text-decoration: none; padding: 20px; display: block; text-align: center; border-bottom: 1px solid rgba(255, 255, 255, .25); backdrop-filter: blur(20px);">
- <img src="/assets/logo/newlogo<?= $isLoggedIn || $isLowerLoggedIn ? "3" : "" ?>.png" alt="" style="width:32px;vertical-align: middle;margin-right:5px;">
- <span style="vertical-align: middle; font-weight: bold;">Cold Haze</span>
- </a>
-</div>
-
-<?php if ($isLoggedIn || $isLowerLoggedIn): ?>
- <a href="/-/logout" id="login-link" class="login-link-clickable">
- <img alt="" src="/assets/icons/logout.svg" style="filter:invert(1);width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;"><?= $pages["logout"]["name"]["en"] ?></span>
- </a>
-<?php else: ?>
- <a href="/-/login" id="login-link" class="login-link-clickable">
- <?php global $_PROFILE; ?>
- <img alt="" src="/assets/icons/login.svg" style="filter:invert(1);width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;"><?= $lang["navigation"]["login"] ?></span>
- </a>
-<?php endif; ?>
-
-<?php foreach ($navigation as $id => $item): if (!$item["admin"] || $isLoggedIn || $isLowerLoggedIn): ?>
-
-<div class="pane-group" id="pane-group-<?= $id ?>">
- <div class="pane-group-title">
- <img src="<?= $item["icon"] ?>" <?php if ($item["invert"]): ?>class="dropdown-icon"<?php endif; ?> alt="" style=" border-radius: 2px;width:24px;vertical-align: middle;">
- <span style="vertical-align: middle;"><?= $item["name"] ?></span>
- </div>
-
- <?php foreach ($item["items"] as $category): ?>
- <div class="pane-group-category <?= $category["minimal"] ? "pane-group-category-minimal" : "" ?>" <?= $category["minimal"] ? 'style="display: grid; grid-template-columns: repeat(' . ($isLowerLoggedIn ? 2 : 3) . ', 1fr); grid-gap: 10px;"' : "" ?>>
- <?php if (isset($category["name"])): ?>
- <div class="pane-group-category-title"><?= $category["name"] ?></div>
- <?php endif; ?>
- <?php foreach ($category["items"] as $link): if (isset($link)): if (!($isLowerLoggedIn && $link["private"])): ?>
- <a class="pane-group-item" href="<?= $link["link"] ?>">
- <img src="<?= $link["icon"] ?>" <?php if ($link["invert"]): ?>class="dropdown-icon"<?php endif; ?> alt="" style="width:24px; border-radius: 5px; vertical-align: middle;">
- <?php if (!$category["minimal"]): ?><span style="vertical-align: middle;<?= isset($link["stepped"]) ? "color: $link[stepped];" : "" ?>"><?= isset($link["stepped"]) ? "<b>$link[name]</b>" : $link["name"] ?></span><?php endif; ?>
- </a>
- <?php endif; endif; endforeach; ?>
- </div>
- <?php endforeach; ?>
-</div>
-
-<?php endif; endforeach; ?>
-
-<style>
-
- .pane-group-category-title {
- margin-bottom: 5px;
- font-size: .8em;
- opacity: .75;
- padding: 0 5px;
- }
-
- .pane-group-category-minimal .pane-group-item {
- text-align: center;
- }
-
- .pane-group-item {
- display: block;
- color: white !important;
- text-decoration: none;
- }
-
- .pane-group-category {
- background: rgba(255, 255, 255, .075);
- border: 1px solid rgba(255, 255, 255, .1);
- border-radius: 10px;
- padding: 10px;
- margin-top: 10px;
- margin-bottom: 10px;
- }
-
- .pane-group-item {
- padding: 5px;
- border-radius: 10px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
-
- .pane-group-item:hover {
- background-color: rgba(255, 255, 255, .1);
- }
-
- .pane-group-title {
- opacity: .75;
- padding: 0 15px;
- margin-top: 10px;
- }
-
- .pane-group {
- padding: 10px;
- border-bottom: 1px solid rgba(255, 255, 255, .25);
- }
-
- #login-link {
- text-align: center;
- padding: 10px;
- display: block;
- border-bottom: 1px solid rgba(255, 255, 255, .25);
- height: 47px;
- }
-
- .login-link-clickable {
- color: white !important;
- cursor: pointer !important;
- text-decoration: none !important;
- }
-
- .login-link-clickable:hover {
- background-color: rgba(255, 255, 255, .1);
- }
-
-</style>
-<?php endif; ?> \ No newline at end of file
diff --git a/includes/components/timeline.inc b/includes/components/timeline.inc
index bbda780..95b413b 100644
--- a/includes/components/timeline.inc
+++ b/includes/components/timeline.inc
@@ -29,7 +29,7 @@ function displayTimeline($systems) { global $app; $showIcons = count($systems) >
<?php foreach ($systems as $system): ?>
<tr style="height: <?= count($systems) === 1 ? 50 : 30 ?>px;">
<?php if ($showIcons): ?><td colspan="20">
- <a href="/<?= $system === "gdapd" ? "raindrops" : ($system === "ynmuc" ? "cloudburst" : ($system === "hrbom" ? "Moonglow" : $app["other"]["slug"])) ?>" style="width: 100%; height: 30px; display: flex; align-items: center; justify-content: center;">
+ <a href="/<?= $system === "gdapd" ? "raindrops" : ($system === "ynmuc" ? "cloudburst" : ($system === "hrbom" ? "moonglow" : $app["other"]["slug"])) ?>" style="width: 100%; height: 30px; display: flex; align-items: center; justify-content: center;">
<img alt="" style="border-radius: 5px; height: 24px; text-align: center;" src="<?= getAsset($system) ?>">
</a>
</td><?php endif; ?>