diff --git a/components/course_card_orig.html b/components/course_card_orig.html deleted file mode 100644 index 305af7a..0000000 --- a/components/course_card_orig.html +++ /dev/null @@ -1,58 +0,0 @@ -<div class="flex flex-row flex-shrink-0 m-2 p-2 w-fit font-mono - bg-red-700 - drop-shadow-[0_0px_10px_rgba(0,0,0,0.5)]"> - <div class="flex w-52"> - <div class="relative"> - <img src="{mapimagesrc}" style="height: 7.25rem; width: 12.93rem" class="object-cover"> - <div class="absolute bottom-0 text-xl font-semibold - drop-shadow-[0_0px_2px_rgba(0,0,0,1)]"> - <div class=" bg-black bg-opacity-30 pr-2 pl-1 py-0.5 pt-0" style="max-width: 12rem; overflow: hidden;"> - <a class="hover:text-yellow-200 transition-all" target="_blank" href="https://steamcommunity.com/sharedfiles/filedetails/?id={mapwid}">{coursemap}</a> - </div> - </div> - <div class="absolute top-0 text-sm font-semibold - drop-shadow-[0_0px_2px_rgba(0,0,0,1)]"> - <div class="bg-black bg-opacity-30 p-1"> - {elementcount} - </div> - </div> - </div> - </div> - <div class="flex w-96 ml-2"> - <div class="relative w-full text-left"> - <div class="h-full w-full grid grid-rows-3 grid-cols-1"> - <div class="flex flex-col justify-center text-lg font-bold w-11/12"> - <p class="truncate">{coursename}</p> - </div> - <div class="flex flex-col justify-center"> - <div class="truncate w-3/4" style="overflow:hidden;"> - <i class="fa-solid fa-file w-4"></i> - <a title="Click to copy" onclick="event.preventDefault(); navigator.clipboard.writeText('{coursecode}'); const text = this.innerText; this.innerText = 'Copied!'; setTimeout(() => { this.innerText = text }, 1000);" class="hover:text-yellow-200 transition-all" href="#">{coursecode}</a> - </div> - </div> - <div class="flex flex-col justify-center"> - <div class="truncate w-3/4" style="overflow:hidden;"> - <i class="fa-solid fa-user w-4"></i> - <a title="Click to see SteamID/Name" href="#" onclick="event.preventDefault(); this.innerText === '{uploadername}' ? this.innerText = '{uploaderuid}' : this.innerText = '{uploadername}'">{uploadername}</a> - </div> - </div> - <div class="flex flex-col justify-center"> - <div class="truncate w-3/4" style="overflow:hidden;"> - <i class="fa-solid fa-upload w-4"></i> - <span>{fdate}</span> - </div> - </div> - <div id="rating" class="text-center absolute bottom-0 right-0"> - <span id="{coursecode}-likes" class="font-bold">{likecount}</span> - <a title="Like" href="#" id="{coursecode}" onclick="event.preventDefault(); like(this)"><i class="hover:text-yellow-200 transition-all fa-solid fa-thumbs-up"></i></a> - / - <span id="{coursecode}-dislikes" class="font-bold">{dislikecount}</span> - <a title="Dislike" href="#" id="{coursecode}" onclick="event.preventDefault(); dislike(this)"><i class="hover:text-yellow-200 transition-all fa-solid fa-thumbs-down"></i></a> - </div> - <div class="absolute -top-1 right-0 hover:text-yellow-200 transition-all"> - <a title="Download course file" href="{coursedownload}" download><i class="fa-solid fa-download"></i></a> - </div> - </div> - </div> - </div> -</div> \ No newline at end of file diff --git a/components/footer.html b/components/footer.html index d561e9f..d473e78 100644 --- a/components/footer.html +++ b/components/footer.html @@ -1,6 +1,7 @@ <footer class="footer footer-center p-4 bg-base-300 text-base-content font-mono"> <div class="block"> Coperight @ Jonny_Bro & rlx 2023-<%= new Date().getFullYear() %> + <br> <a class="link link-hover" target="_blank" href="https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker">[Full source code available here!]</a> </div> </footer> \ No newline at end of file diff --git a/components/navbar.html b/components/navbar.html index 83dc577..5f995f0 100644 --- a/components/navbar.html +++ b/components/navbar.html @@ -22,6 +22,11 @@ Our Discord </a> </li> + <label class="cursor-pointer grid place-items-center"> + <input id="themeSelector" type="checkbox" class="toggle bg-base-content row-start-1 col-start-1 col-span-2"/> + <svg class="col-start-2 row-start-1 stroke-base-100 fill-base-100" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg> + <svg class="col-start-1 row-start-1 stroke-base-100 fill-base-100" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/></svg> + </label> <% if (user) { %> <a class="btn btn-sm btn-primary hover:bg-red-700" href="/key"><%= user.personaname %></a> <a class="btn btn-sm btn-primary hover:bg-red-700" href="/upload">Upload</a> @@ -48,11 +53,11 @@ Our Discord </a> </li> - <!-- <label class="cursor-pointer grid place-items-center"> + <label class="cursor-pointer grid place-items-center"> <input id="themeSelector" type="checkbox" class="toggle bg-base-content row-start-1 col-start-1 col-span-2"/> <svg class="col-start-2 row-start-1 stroke-base-100 fill-base-100" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg> <svg class="col-start-1 row-start-1 stroke-base-100 fill-base-100" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/></svg> - </label> --> + </label> <% if (user) { %> <a class="btn btn-sm btn-primary hover:bg-red-700" href="/key"><%= user.personaname %></a> <a class="btn btn-sm btn-primary hover:bg-red-700" href="/upload">Upload</a> @@ -64,21 +69,23 @@ <a class="btn btn-sm btn-primary hover:bg-red-700" href="/admin">Admin</a> <% } %> </ul> - <!-- <script> - const e = document.getElementById("themeSelector"); - e.addEventListener("change", () => { + <script> + const element = document.getElementById("themeSelector"); + + element.addEventListener("change", () => { event.preventDefault(); - const theme = localStorage.getItem("theme") + const theme = localStorage.getItem("theme"); + + if (!theme) localStorage.setItem("theme", "black"); theme === "nord" ? localStorage.setItem("theme", "black") : localStorage.setItem("theme", "nord"); - document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); - }) - if (localStorage.getItem("theme") === "black") - document.getElementById("themeSelector").checked = "checked" - else - document.getElementById("themeSelector").checked = null - </script> --> + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + }); + + if (localStorage.getItem("theme") === "black") document.getElementById("themeSelector").checked = "checked"; + else document.getElementById("themeSelector").checked = null; + </script> </nav> \ No newline at end of file diff --git a/views/admin.ejs b/views/admin.ejs index 8b2f2ab..06b9e90 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -25,6 +25,9 @@ </style> <script> + // Apply user's theme + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + function sendAction(args) { const { action } = args; const responseBox = document.getElementById("responseBox"); diff --git a/views/index.ejs b/views/index.ejs index 0722dc0..8582d7e 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -26,6 +26,9 @@ </style> <script> + // Apply user's theme + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + function update() { const page = document.getElementById("pageSelect"); const sort = document.getElementById("sortValue"); diff --git a/views/key.ejs b/views/key.ejs index 61f0409..f4ac178 100644 --- a/views/key.ejs +++ b/views/key.ejs @@ -24,6 +24,11 @@ -ms-overflow-style: none; } </style> + + <script> + // Apply user's theme + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + </script> </head> <body class="w-screen font-mono"> diff --git a/views/stats.ejs b/views/stats.ejs index 0c3e522..de42734 100644 --- a/views/stats.ejs +++ b/views/stats.ejs @@ -24,10 +24,16 @@ -ms-overflow-style: none; } </style> + + <script> + // Apply user's theme + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + </script> </head> <body class="w-screen font-mono"> <% include ../components/navbar.html %> + <div class="hero min-h-screen bg-base-200"> <div class="hero-content text-center"> <div class="text-center align-top w-full"> diff --git a/views/upload.ejs b/views/upload.ejs index 4df1b06..a49d6bc 100644 --- a/views/upload.ejs +++ b/views/upload.ejs @@ -24,6 +24,11 @@ -ms-overflow-style: none; } </style> + + <script> + // Apply user's theme + document.documentElement.setAttribute("data-theme", localStorage.getItem("theme")); + </script> </head> <body class="w-screen font-mono">