Dark mode and other color enhancements to match

This commit is contained in:
Cody Cook 2024-05-13 19:38:06 -07:00
commit 8b4dfe0c0c
12 changed files with 108 additions and 46 deletions

View file

@ -20,7 +20,7 @@ if ($_POST) {
} }
} }
?> ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">

10
dj.php
View file

@ -18,7 +18,7 @@ if (isset($_GET['dj']) && $_GET['dj'] != "") {
$title = $dj->get_name(); $title = $dj->get_name();
require_once 'includes/header.php'; require_once 'includes/header.php';
?> ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -43,7 +43,7 @@ require_once 'includes/header.php';
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body text-center"> <div class="card-body bg-body-secondary text-center">
<img src="<?php echo $dj->get_img(); ?>" <img src="<?php echo $dj->get_img(); ?>"
alt="avatar" alt="avatar"
class="rounded-circle img-fluid" style="width: 150px;"> class="rounded-circle img-fluid" style="width: 150px;">
@ -72,7 +72,7 @@ require_once 'includes/header.php';
if ($dj->get_socials() != []) { if ($dj->get_socials() != []) {
?> ?>
<div class="card mb-4 mb-lg-0"> <div class="card mb-4 mb-lg-0">
<div class="card-body p-0"> <div class="card-body p-0 " >
<ul class="list-group list-group-flush rounded-3"> <ul class="list-group list-group-flush rounded-3">
<?php <?php
$socials = $dj->get_socials(); $socials = $dj->get_socials();
@ -87,7 +87,7 @@ require_once 'includes/header.php';
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body"> <div class="card-body bg-body-secondary">
<div class="row"> <div class="row">
<div class="col-sm-3"> <div class="col-sm-3">
<p class="mb-0"><?php echo $locale['djName']; ?></p> <p class="mb-0"><?php echo $locale['djName']; ?></p>
@ -108,7 +108,7 @@ require_once 'includes/header.php';
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body"> <div class="card-body bg-body-secondary">
<?php <?php
$mixes = $dj->get_dj_mixes(); $mixes = $dj->get_dj_mixes();
$count = 0; $count = 0;

View file

@ -9,7 +9,7 @@ $djs = new DJs($db);
$title = $locale['djs']; $title = $locale['djs'];
require_once 'includes/header.php'; require_once 'includes/header.php';
?> ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">

View file

@ -22,7 +22,7 @@ $title = $genre->get_name();
require_once 'includes/header.php'; require_once 'includes/header.php';
?> ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -46,7 +46,7 @@ require_once 'includes/header.php';
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body text-center"> <div class="card-body bg-body-secondary text-center">
<img src="<?php echo $genre->get_img(); ?>" <img src="<?php echo $genre->get_img(); ?>"
alt="avatar" alt="avatar"
class="rounded-circle img-fluid" style="width: 150px;"> class="rounded-circle img-fluid" style="width: 150px;">
@ -65,7 +65,7 @@ require_once 'includes/header.php';
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body"> <div class="card-body bg-body-secondary">
<div class="row"> <div class="row">
<div class="col-sm-3"> <div class="col-sm-3">
<p class="mb-0"><?php echo $locale['mix-count']; ?></p> <p class="mb-0"><?php echo $locale['mix-count']; ?></p>
@ -81,7 +81,7 @@ require_once 'includes/header.php';
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body"> <div class="card-body bg-body-secondary">
<?php <?php
$count = 0; $count = 0;
$mixes = $genre->get_mixes(); $mixes = $genre->get_mixes();

View file

@ -11,7 +11,7 @@ $genres = new Genres($db);
$title = $locale['genres']; $title = $locale['genres'];
require_once 'includes/header.php'; require_once 'includes/header.php';
?> ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">

View file

@ -1,15 +1,12 @@
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row">
<div class="col text-center"> <div class="col text-center">
<p><?php <p><?php
// copyright
echo "&copy; 2008 - "; echo "&copy; 2008 - ";
echo date('Y'); echo date('Y');
echo " " . $locale['allrightsreserved']; echo " " . $locale['allrightsreserved'];
?></p> ?></p>
</div> </div>
</div>
<div class="row"> <div class="row">
<div class="col text-center"> <div class="col text-center">
Created using <a href="https://gitea.threefifteen.info/cody/dj_mix_hosting_software">DJ Mix Hosting Software</a> Created using <a href="https://gitea.threefifteen.info/cody/dj_mix_hosting_software">DJ Mix Hosting Software</a>
@ -19,7 +16,5 @@
</section> </section>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</body> </body>
</html> </html>

View file

@ -24,7 +24,7 @@ function card_output(int $count, mixed $dj, mixed $locale): void
} }
echo '<div class="col-md-3">'; echo '<div class="col-md-3">';
echo '<div class="card mb-4">'; echo '<div class="card mb-4">';
echo '<div class="card-body">'; echo '<div class="card-body bg-body-secondary">';
echo '<h5 class="card-title" title="' . $dj['name'] . '">' . $dj['name'] . '</h5>'; echo '<h5 class="card-title" title="' . $dj['name'] . '">' . $dj['name'] . '</h5>';
echo '<p class="card-text">' . $dj['count'] . ' '; echo '<p class="card-text">' . $dj['count'] . ' ';
if ($dj['count'] == 1) { if ($dj['count'] == 1) {
@ -98,7 +98,7 @@ function social_line($social, $value): string
} }
return " return "
<li class='list-group-item d-flex justify-content-between align-items-center p-3' title='$name'> <li class='list-group-item d-flex justify-content-between bg-body-secondary align-items-center p-3' title='$name'>
<i class='fa $icon fa-lg' style='color: $color;' title='$name'></i> <i class='fa $icon fa-lg' style='color: $color;' title='$name'></i>
<p class='mb-0'><a href='$url' title='$name' >$value</a> <p class='mb-0'><a href='$url' title='$name' >$value</a>
</p> </p>

View file

@ -1,10 +1,13 @@
<!doctype html > <!doctype html >
<html lang="<?php echo $lang ?>"> <html lang="<?php echo $lang ?>" <?php
<head> // dark mode checker
if (isset($_SESSION['darkmode']) && $_SESSION['darkmode'] == 'true') {
echo 'data-bs-theme="dark"';
} ?><head>
<?php if (isset($config['seo']['google']) && $config['seo']['google']) { <?php if (isset($config['seo']['google']) && $config['seo']['google']) {
require_once 'includes/google_tag_manager.php'; require_once 'includes/google_tag_manager.php';
echo get_google_tag_manager_header($config['seo']['gtm']['key']); echo get_google_tag_manager_header($config['seo']['gtm']['key']);
}?> } ?>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title><?php echo $title . " | " . $config['app']['name']; ?></title> <title><?php echo $title . " | " . $config['app']['name']; ?></title>
@ -59,10 +62,10 @@
</style> </style>
<?php } ?> <?php } ?>
</head> </head>
<body style="background-color: #eee;"> <body class="bg-body">
<?php <?php
if (isset($config['seo']['google']) && $config['seo']['google']) { if (isset($config['seo']['google']) && $config['seo']['google']) {
echo get_google_tag_manager_body($config['seo']['gtm']['key']); echo get_google_tag_manager_body($config['seo']['gtm']['key']);
} }
?> ?>
<?php require 'includes/navbar.php'; ?> <?php require_once 'includes/navbar.php'; ?>

View file

@ -12,7 +12,7 @@ if (isset($_GET['lang']) && array_key_exists($_GET['lang'], $languages)) {
$current_lang = $_SESSION['lang'] ?? $config['app']['locale']; $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
?> ?>
<header class="navbar navbar-expand-md navbar-dark bg-dark sticky-top shadow"> <header class="navbar navbar-expand-md bg-body sticky-top shadow">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand pe-3" href="/"><?php echo htmlspecialchars($config['app']['name']); ?></a> <a class="navbar-brand pe-3" href="/"><?php echo htmlspecialchars($config['app']['name']); ?></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggle" <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggle"
@ -34,7 +34,8 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
if (basename($_SERVER['SCRIPT_NAME']) == 'genres.php') { if (basename($_SERVER['SCRIPT_NAME']) == 'genres.php') {
echo current_list(); echo current_list();
} ?>" href="/genres.php"><?php echo $locale['genres']; ?></a> } ?>" href="/genres.php"><?php echo $locale['genres']; ?></a>
</li> <li class="nav-item"> </li>
<li class="nav-item">
<a class="nav-link<?php <a class="nav-link<?php
if (basename($_SERVER['SCRIPT_NAME']) == 'djs.php') { if (basename($_SERVER['SCRIPT_NAME']) == 'djs.php') {
echo current_list(); echo current_list();
@ -42,8 +43,18 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
</li> </li>
</ul> </ul>
<?php
if (isset($_SESSION['darkmode']) && $_SESSION['darkmode'] == 'true') {
echo '<button class="btn btn-outline-dark" id="darkModeToggle" onclick="toggleDarkMode()">🌙</button>';
} else {
echo '<button class="btn btn-outline-light" id="darkModeToggle" onclick="toggleDarkMode()">🌞</button>';
}
?>
<div class="dropdown"> <div class="dropdown">
<select class="form-select" id="languageSelect" onchange="location = this.value;"> <label for="languageSelect" style="display: none">Language Selector</label>
<select class="form-select" id="languageSelect"
onchange="location = this.value;">
<?php <?php
$currentUrl = strtok($_SERVER["REQUEST_URI"], '?'); $currentUrl = strtok($_SERVER["REQUEST_URI"], '?');
$queryParams = $_GET; $queryParams = $_GET;
@ -74,4 +85,45 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
</div> </div>
</div> </div>
</div> </div>
<script>
document.getElementById('darkModeToggle').addEventListener('click', function() {
var html = document.documentElement;
// Check the current theme
if (html.getAttribute('data-bs-theme') === 'dark') {
html.removeAttribute('data-bs-theme'); // Switch to light mode
this.innerHTML = '🌞'; // Update the button to reflect light mode
updateDarkModeOnServer('false');
} else {
html.setAttribute('data-bs-theme', 'dark'); // Switch to dark mode
this.innerHTML = '🌙'; // Update the button to reflect dark mode
updateDarkModeOnServer('true');
}
});
function updateDarkModeOnServer(value) {
// Create a new AJAX request
var xhr = new XMLHttpRequest();
xhr.open('POST', 'settings.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Define what happens on successful data submission
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 400) {
console.log('Dark mode setting updated on server');
}
};
// Define what happens in case of an error
xhr.onerror = function() {
console.error('An error occurred during the request.');
};
// Set the action and send the request
xhr.send('action=darkmode&value=' + value);
}
</script>
</header> </header>

View file

@ -2,7 +2,7 @@
require_once 'includes/globals.php'; require_once 'includes/globals.php';
$title = $locale['home']; $title = $locale['home'];
require_once 'includes/header.php'; ?> require_once 'includes/header.php'; ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">

View file

@ -21,7 +21,7 @@ if (isset($_GET['mix']) && $_GET['mix'] != "") {
require_once 'includes/header.php'; ?> require_once 'includes/header.php'; ?>
<section style="background-color: #eee;"> <section>
<div class="container py-5"> <div class="container py-5">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -46,7 +46,7 @@ require_once 'includes/header.php'; ?>
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body text-center"> <div class="card-body bg-body-secondary text-center">
<?php <?php
if ($mix->get_img() != "") { if ($mix->get_img() != "") {
echo "<img src='" . $mix->get_img() . "' alt='avatar' class='img-fluid' style='width: 150px;'>"; echo "<img src='" . $mix->get_img() . "' alt='avatar' class='img-fluid' style='width: 150px;'>";
@ -62,7 +62,7 @@ require_once 'includes/header.php'; ?>
</div> </div>
</div> </div>
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body text-center"> <div class="card-body bg-body-secondary text-center">
<?php <?php
if ($mix->is_download_only()) { if ($mix->is_download_only()) {
echo "<a href='" . $mix->get_url() . "' class='btn btn-primary'>" . $locale['download'] . "</a>"; echo "<a href='" . $mix->get_url() . "' class='btn btn-primary'>" . $locale['download'] . "</a>";
@ -85,7 +85,7 @@ require_once 'includes/header.php'; ?>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<div class="card mb-4"> <div class="card mb-4">
<div class="card-body"> <div class="card-body bg-body-secondary">
<div class="row"> <div class="row">
<div class="col-sm-3"> <div class="col-sm-3">
<p class="mb-0"><?php echo $locale['mixname'] ?></p> <p class="mb-0"><?php echo $locale['mixname'] ?></p>

12
settings.php Normal file
View file

@ -0,0 +1,12 @@
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'darkmode') {
$darkmode = $_POST['value'] === 'true' ? 'true' : 'false';
$_SESSION['darkmode'] = $darkmode; // Update the session to reflect the new mode
// Send a JSON response back to JavaScript
header('Content-Type: application/json');
echo json_encode(['darkmode' => $darkmode]);
exit;
}