diff options
Diffstat (limited to '_site/includes/dom/v1')
-rw-r--r-- | _site/includes/dom/v1/footer.php | 24 | ||||
-rw-r--r-- | _site/includes/dom/v1/header.php | 512 |
2 files changed, 536 insertions, 0 deletions
diff --git a/_site/includes/dom/v1/footer.php b/_site/includes/dom/v1/footer.php new file mode 100644 index 0000000..9852780 --- /dev/null +++ b/_site/includes/dom/v1/footer.php @@ -0,0 +1,24 @@ +
+<p style="margin-top:20px;text-align:center;"><a href="/feed.xml" style="text-decoration: underline;">View RSS feed</a><?= $admin ? "<span class='admin-text'> (doesn't include unreleased articles)</span>" : "" ?></p>
+
+<hr>
+
+<div class="container">
+ <p># unchainedtech <a href="https://twitter.com/_Minteck" target="_blank">--support</a> <a href="https://github.com/Minteck/UnchainedTech-Software" target="_blank">--code</a> <a href="/about">--version</a>_<br>
+ <span style="color:black !important;">
+ <?php
+
+ /** @var float $listGetTimeout */
+ if ($listGetTimeout !== 0) {
+ echo("Articles list loading took " . round($listGetTimeout*1000, 4) . " ms");
+ } else {
+ echo("No articles list loading");
+ }
+
+ ?>
+ </span></p>
+ <small><p style="text-align: center;">ยฉ <?= date('Y') ?> UnchainedTech Authors, All rights reserved. ยท <a href="https://minteck-projects.alwaysdata.net/legal" target="_blank" style="text-decoration: underline;">Legal</a><?php if (!$GLOBALS["experimentalUIisStable"]): ?> ยท <a href="/experiment/1" style="text-decoration: underline;">Enable UI experiments</a><?php endif; ?></p></small>
+</div>
+
+</body>
+</html>
\ No newline at end of file diff --git a/_site/includes/dom/v1/header.php b/_site/includes/dom/v1/header.php new file mode 100644 index 0000000..5dbac97 --- /dev/null +++ b/_site/includes/dom/v1/header.php @@ -0,0 +1,512 @@ +<?php
+
+$listGetTimeout = 0;
+ob_start();
+
+$admin = true;
+if (!isset($_COOKIE["ADMIN_TOKEN"])) {
+ $admin = false;
+ if (isset($__ADMIN)) header("Location: /admin/offline") and die();
+} else {
+ if (!(strpos("/", $_COOKIE['ADMIN_TOKEN']) === false && strpos(".", $_COOKIE['ADMIN_TOKEN']) === false && (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/admin/tokens/" . $_COOKIE['ADMIN_TOKEN']) || file_exists("/mnt/minteckrolt-main/admin/private/tokens/" . $_COOKIE['ADMIN_TOKEN'])))) {
+ $admin = false;
+ if (isset($__ADMIN)) header("Location: /admin/offline") and die();
+ } else {
+ if (file_exists("/mnt/minteckrolt-main/admin/private/tokens/" . $_COOKIE['ADMIN_TOKEN'])) {
+ $_USER = trim(file_get_contents("/mnt/minteckrolt-main/admin/private/tokens/" . $_COOKIE['ADMIN_TOKEN']));
+ } else {
+ $_USER = trim(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/admin/tokens/" . $_COOKIE['ADMIN_TOKEN']));
+ }
+ }
+}
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/markdown.php";
+$Parsedown = new Parsedown();
+
+function gh_api($api) {
+ $crl = curl_init("https://api.github.com/" . $api);
+ curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($crl, CURLINFO_HEADER_OUT, true);
+ curl_setopt($crl, CURLOPT_POST, false);
+
+ curl_setopt($crl, CURLOPT_HTTPHEADER, array(
+ 'Content-Type: application/json',
+ "Accept: application/json",
+ "Authorization: token " . json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/admin/credentials.json"), true)["token"],
+ "User-Agent: UnchainedTech-Admin/0.0.0 (nekostarfan@gmail.com)"
+ ));
+
+ $result = curl_exec($crl);
+
+ if ($result === false) {
+ throw new ErrorException("GitHub API unexpectedly interrupted", 214, E_ERROR);
+ }
+
+ return $result;
+}
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/articles/getlist.php";
+
+function customShutdown() {
+ if (!is_null(error_get_last())) {
+ ob_clean();
+ $d = error_get_last();
+ echo "
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Something went wrong on UnchainedTech ๐</title>
+ <style>
+
+ @font-face {
+ src: url(\"/font/regular.ttf\");
+ font-family: \"JetBrains Mono\";
+ font-style: normal;
+ }
+
+ @font-face {
+ src: url(\"/font/italic.ttf\");
+ font-family: \"JetBrains Mono\";
+ font-style: italic;
+ }
+
+ *, pre {
+ font-family: \"JetBrains Mono\", sans-serif;
+ transition: none !important;
+ }
+
+ nav, * {
+ color: #00ff00 !important;
+ }
+
+ html, body, nav.navbar, .card {
+ background-color: black !important;
+ }
+
+ a:hover {
+ color: black !important;
+ background: #00ff00;
+ }
+
+ pre {
+ background: #00ff00;
+ border-radius: 5px;
+ padding: 10px;
+ color: black !important;
+ text-align: left;
+ }
+
+ @media (min-width: 700px) {
+ pre {
+ margin-left: 25%;
+ margin-right: 25%;
+ }
+ }
+
+ </style>
+</head>
+<body>
+ <div style='margin-top:50px;text-align: center;'>
+ <h1>Something went wrong <small>(like, for real!)</small></h1>
+ <p>An error occured and UnchainedTech cannot load right now. Even us can make mistakes sometimes, and because you are really nice you will <a href='mailto:nekostarfan@gmail.com'>report this bug</a>.</p>
+ <p>For you, really tech-savvy people, here is that alien language thing you're probably looking for:</p>
+ <pre>
+#99{$d["type"]}: ";
+
+$pparts = explode(": ", $d["message"]);
+array_shift($pparts);
+
+$parts = explode(" in ", implode(": ", $pparts));
+echo($parts[0]);
+
+$stp = explode("\nStack trace:", $parts[1]);
+echo("\n at " . $stp[0]);
+
+$stlines = explode("\n", $stp[1]);
+array_shift($stlines);
+
+foreach ($stlines as $stline) {
+ $stpparts = explode(" ", $stline);
+ array_shift($stpparts);
+ $stline = implode(" ", $stpparts);
+
+ if ($stline !== " thrown" && $stline !== "{main}") {
+ $pp2 = explode("(", $stline);
+ $pp2n = explode(")", $pp2[1]);
+
+ echo("\n at " . $pp2[0] . ":" . $pp2n[0]);
+ } else if ($stline === "{main}") {
+ echo("\n at UnchainedTech.\$Core (PHP " . PHP_VERSION . ")");
+ }
+}
+
+echo "
+</pre>
+ </div>
+</body>
+</html>
+ ";
+ die();
+ }
+}
+
+function customError($errno, $errstr, $errfile = "<unknown file>", $errline = "<unknown line>") {
+ ob_clean();
+ echo "
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Something went wrong on UnchainedTech ๐</title>
+ <style>
+
+ @font-face {
+ src: url(\"/font/regular.ttf\");
+ font-family: \"JetBrains Mono\";
+ font-style: normal;
+ }
+
+ @font-face {
+ src: url(\"/font/italic.ttf\");
+ font-family: \"JetBrains Mono\";
+ font-style: italic;
+ }
+
+ *, pre {
+ font-family: \"JetBrains Mono\", sans-serif;
+ transition: none !important;
+ }
+
+ nav, * {
+ color: #00ff00 !important;
+ }
+
+ html, body, nav.navbar, .card {
+ background-color: black !important;
+ }
+
+ a:hover {
+ color: black !important;
+ background: #00ff00;
+ }
+
+ pre {
+ background: #00ff00;
+ border-radius: 5px;
+ padding: 10px;
+ color: black !important;
+ text-align: left;
+ }
+
+ @media (min-width: 700px) {
+ pre {
+ margin-left: 25%;
+ margin-right: 25%;
+ }
+ }
+
+ </style>
+</head>
+<body>
+ <div style='margin-top:50px;text-align: center;'>
+ <h1>Something went wrong <small>(like, for real!)</small></h1>
+ <p>An error occured and UnchainedTech cannot load right now. Even us can make mistakes sometimes, and because you are really nice you will <a href='mailto:nekostarfan@gmail.com'>report this bug</a>.</p>
+ <p>For you, really tech-savvy people, here is that alien language thing you're probably looking for:</p>
+ <pre>
+#{$errno}: {$errstr}
+ at {$errfile}:{$errline}
+ at UnchainedTech.\$Core (PHP " . PHP_VERSION . ")
+</pre>
+ </div>
+</body>
+</html>
+ ";
+ die();
+}
+set_error_handler("customError", E_ALL);
+register_shutdown_function("customShutdown");
+
+?>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="description" content="<?= $_DESCRIPTION ?? "A page from UnchainedTech, a blog made by technology enthusiasts that talks about all sorts of stuff." ?>">
+ <title><?= isset($_TITLE) ? $_TITLE . " on UnchainedTech ๐" : "UnchainedTech" ?></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="/logo.svg">
+ <link rel="stylesheet" href="/css/bootstrap.min.css">
+ <style>
+
+ @font-face {
+ src: url("/font/regular.ttf");
+ font-family: "JetBrains Mono";
+ font-style: normal;
+ }
+
+ @font-face {
+ src: url("/font/italic.ttf");
+ font-family: "JetBrains Mono";
+ font-style: italic;
+ }
+
+ *, code {
+ font-family: "JetBrains Mono", sans-serif;
+ transition: none !important;
+ }
+
+ nav, * {
+ color: #00ff00 !important;
+ }
+
+ html, body, nav.navbar, .card {
+ background-color: black !important;
+ }
+
+ nav.navbar {
+ border-bottom: 3px solid #00ff00 !important;
+ }
+
+ .card {
+ border-color: #00ff00 !important;
+ }
+
+ .btn-primary {
+ background-color: black !important;
+ border-color: #00ff00 !important;
+ border-style: dashed;
+ }
+
+ .list-group-item {
+ background: black;
+ border: 1px solid #00ff00;
+ }
+
+ .list-group:not(.no-link) .list-group-item:hover {
+ background: #00ff00;
+ color: black !important;
+ }
+
+ .btn-primary:hover {
+ background: #00ff00 !important;
+ color: black !important;
+ }
+
+ hr {
+ border-color: #00ff00;
+ border-width: 3px;
+ }
+
+ td {
+ border: 1px solid #00ff00;
+ }
+
+ th {
+ border: 1px solid #00ff00;
+ border-bottom-width: 2px;
+ }
+
+ code {
+ background: #00ff00;
+ color: black !important;
+ }
+
+ pre {
+ background: #00ff00;
+ border-radius: 5px;
+ padding: 10px;
+ }
+
+ img {
+ max-width: 100%;
+ max-height: 50vh;
+ }
+
+ .nav-link:hover, .nav-link:focus {
+ outline: 1px dotted #00ff00;
+ }
+
+ .nav-link:active {
+ outline: 1px solid #00ff00;
+ }
+
+ .btn:focus {
+ box-shadow: none;
+ }
+
+ #article-cover {
+ width: 100%;
+ height: 50vh;
+ background-size: cover;
+ background-position: center;
+ }
+
+ .badge-secondary {
+ background: black;
+ border: 1px solid #ffff00;
+ color: #ffff00 !important;
+ font-weight: normal;
+ }
+
+ .nav-admin {
+ color: #ffff00 !important;
+ outline-color: #ffff00 !important;
+ }
+
+ a.list-group-item.list-group-item-action.list-group-item-admin {
+ border-color: #ffff00;
+ color: #ffff00 !important;
+ }
+
+ a.list-group-item.list-group-item-action.list-group-item-admin:hover {
+ background-color: #ffff00 !important;
+ }
+
+ .card-admin {
+ filter: hue-rotate(-45deg);
+ }
+
+ .admin-text {
+ color: #ffff00 !important;
+ }
+
+ .list-admin-warning, .list-admin-warning * {
+ color: #ff0000 !important;
+ }
+
+ #apps_outer {
+ background: transparent;
+ border: none;
+ }
+
+ #apps_outer::after {
+ display: none;
+ }
+
+ #apps_path {
+ fill: #00ff00;
+ }
+
+ #apps_outer:hover #apps_path {
+ opacity: .75;
+ }
+
+ #apps_outer:active #apps_path, #apps_outer:focus #apps_path {
+ opacity: .5;
+ }
+
+ .app-icon {
+ width: 24px;
+ height: 24px;
+ vertical-align: middle;
+ margin-right: 5px;
+ filter: invert(1);
+ }
+
+ .app-title {
+ vertical-align: middle;
+ }
+
+ .nav-item.dropdown {
+ float: right;
+ display: block;
+ position: fixed;
+ right: 10px;
+ }
+
+ .nav-item.dropdown, .nav-item.dropdown * {
+ outline: none !important;
+ }
+
+ #apps, #apps * {
+ color: #212529 !important;
+ font-family: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
+ }
+
+ #apps {
+ filter: invert(1);
+ }
+
+ ::-webkit-scrollbar {
+ width: 10px;
+ margin-left: 1px;
+ }
+
+ ::-webkit-scrollbar-track {
+ background: transparent;
+ margin-left: 1px;
+ }
+
+ ::-webkit-scrollbar-thumb {
+ background-color: #00dd00;
+ margin-left: 1px;
+ }
+
+ ::-webkit-scrollbar-thumb:hover {
+ background-color: #00bb00;
+ }
+
+ ::-webkit-scrollbar-thumb:active {
+ background-color: #009900;
+ }
+
+ .navbar-toggler {
+ border-color: #00ff00 !important;
+ border-radius: 0;
+ }
+
+ .navbar-collapse.collapse.show {
+ height: calc(100vh - 63px);
+ }
+
+ .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='rgba%280, 255, 0, 1%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !important;
+ }
+
+ </style>
+ <script src="/js/jquery.js"></script>
+ <script src="/js/bootstrap.bundle.min.js"></script>
+</head>
+<body>
+ <nav class="navbar navbar-expand-md bg-dark navbar-dark fixed-top">
+ <a class="navbar-brand" href="/"><img id="siteicon" src="/logo-alt.svg" width="32px"> <span style="vertical-align: middle;"># unchainedtech_ <?= $admin ? '<span class="badge badge-secondary">admin</span>' : '' ?></span></a>
+
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div id="collapsibleNavbar" class="collapse navbar-collapse">
+ <ul class="navbar-nav">
+ <li class="nav-item">
+ <a class="nav-link" href="/home">Home</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="/articles">All Articles</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="/about">About</a>
+ </li>
+ <?php if ($admin): ?>
+ <li class="nav-item">
+ <a class="nav-link nav-admin" href="/admin">Administration</a>
+ </li>
+ <?php endif; ?>
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" id="apps_outer" data-toggle="dropdown">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" class="glyph_f10"><path d="M1 19h4v-4H1zm7 0h4v-4H8zm7 0h4v-4h-4zM1 12h4V8H1zm7 0h4V8H8zm7 0h4V8h-4zM1 5h4V1H1zm7 0h4V1H8zm7-4v4h4V1z" id="apps_path"></path></svg>
+ </a>
+ <div class="dropdown-menu" id="apps" style="position:fixed;top:48px;left:initial;right:10px;">
+ <a href="https://github.com/Minteck" class="dropdown-item"><img alt="" src="/apps/github.png" class="app-icon"> <span class="app-title">GitHub</span></a>
+ <a href="https://kartik.hopto.org/online" class="dropdown-item"><img alt="" src="/apps/kartik.png" class="app-icon"> <span class="app-title">Kartik Online</span></a>
+ <a href="https://minteck.ro.lt" class="dropdown-item"><span class="app-title"><img alt="" src="/apps/minteck.svg" class="app-icon"> Minteck's Space</span></a>
+ <a href="https://unchainedtech.minteck.ro.lt" class="dropdown-item"><span class="app-title"><img alt="" src="/apps/unchainedtech.png" class="app-icon"> UnchainedTech</span></a>
+ <a href="https://jetbrains.minteck.ro.lt/hub" class="dropdown-item"><img alt="" src="/apps/hub.svg" class="app-icon"> <span class="app-title">Minteck's Hub</span></a>
+ <a href="https://jetbrains.minteck.ro.lt/youtrack" class="dropdown-item"><img alt="" src="/apps/youtrack.svg" class="app-icon"> <span class="app-title">YouTrack</span></a>
+ </div>
+ </li>
+ </ul>
+ </div>
+
+ </nav>
+<div id="separator" style="margin-top:72px;"></div>
\ No newline at end of file |