fix: InfinityFree 500 error (putenv safety), mobile dark toggle inside side panel
This commit is contained in:
1 parent
9eeb82ed89
commit
4685a6c3a2
4 files changed
+49
-35
No files matched your search
+17
-3
@@ -319,6 +319,11 @@ body:has(#dark-mode-toggle:not(:checked)) .icon-sun {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Desktop: hide the duplicate mode-btn inside nav-links panel */
|
||||
.mode-btn-panel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.bar {
|
||||
display: block;
|
||||
width: 24px;
|
||||
@@ -1210,11 +1215,13 @@ footer {
|
||||
transition: right 0.35s var(--ease);
|
||||
z-index: 1001;
|
||||
box-shadow: -4px 0 40px rgba(0, 0, 0, 0.3);
|
||||
pointer-events: none; /* prevent clicks when off-screen */
|
||||
}
|
||||
|
||||
/* Slide in from right */
|
||||
.nav-links.active {
|
||||
right: 0;
|
||||
pointer-events: auto; /* re-enable clicks when open */
|
||||
}
|
||||
|
||||
.nav-links a {
|
||||
@@ -1269,10 +1276,17 @@ footer {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* Theme toggle repositioned inside mobile nav */
|
||||
.mode-btn {
|
||||
margin-top: 20px;
|
||||
/* Theme toggle — inside the slide panel on mobile */
|
||||
.mode-btn-panel {
|
||||
display: flex;
|
||||
margin-top: 24px;
|
||||
margin-left: 0;
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
/* Hide the nav-bar toggle on mobile (it's now inside the panel) */
|
||||
.mode-btn-nav {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hero */
|
||||
|
||||
+15
-6
@@ -19,9 +19,17 @@ if (!function_exists('loadEnv')) {
|
||||
if (count($parts) < 2) continue;
|
||||
$key = trim($parts[0]);
|
||||
$value = trim($parts[1]);
|
||||
// Strip surrounding quotes if present
|
||||
if (strlen($value) >= 2 && $value[0] === '"' && $value[strlen($value)-1] === '"') {
|
||||
$value = substr($value, 1, -1);
|
||||
}
|
||||
if (!array_key_exists($key, $_ENV)) {
|
||||
$_ENV[$key] = $value;
|
||||
putenv("$key=$value");
|
||||
$_ENV[$key] = $value;
|
||||
$_SERVER[$key] = $value;
|
||||
// putenv() may be disabled on some shared hosts (e.g. InfinityFree)
|
||||
if (function_exists('putenv')) {
|
||||
putenv("$key=$value");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,10 +39,11 @@ if (!function_exists('loadEnv')) {
|
||||
$envPath = __DIR__ . '/../.env';
|
||||
loadEnv($envPath);
|
||||
|
||||
$host = getenv('DB_HOST') ?: ($_ENV['DB_HOST'] ?? '');
|
||||
$ngalan = getenv('DB_USER') ?: ($_ENV['DB_USER'] ?? '');
|
||||
$sikreto = getenv('DB_PASS') ?: ($_ENV['DB_PASS'] ?? '');
|
||||
$deytabeys = getenv('DB_NAME') ?: ($_ENV['DB_NAME'] ?? '');
|
||||
// Read env vars — prefer $_ENV (always populated) with getenv() fallback
|
||||
$host = $_ENV['DB_HOST'] ?? getenv('DB_HOST') ?? '';
|
||||
$ngalan = $_ENV['DB_USER'] ?? getenv('DB_USER') ?? '';
|
||||
$sikreto = $_ENV['DB_PASS'] ?? getenv('DB_PASS') ?? '';
|
||||
$deytabeys = $_ENV['DB_NAME'] ?? getenv('DB_NAME') ?? '';
|
||||
|
||||
if (empty($host) || empty($ngalan)) {
|
||||
die('<p style="color:red;font-family:monospace;padding:20px">DB config missing. Please create a .env file from .env.example</p>');
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
<?php
|
||||
// Load environment variables — PHP 7.x compatible
|
||||
if (!function_exists('loadEnv')) {
|
||||
function loadEnv($path) {
|
||||
if (!file_exists($path)) return;
|
||||
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
if ($lines === false) return;
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if ($line === '' || $line[0] === '#') continue;
|
||||
$parts = explode('=', $line, 2);
|
||||
if (count($parts) < 2) continue;
|
||||
$key = trim($parts[0]); $value = trim($parts[1]);
|
||||
if (!array_key_exists($key, $_ENV)) { $_ENV[$key] = $value; putenv("$key=$value"); }
|
||||
}
|
||||
}
|
||||
}
|
||||
loadEnv(__DIR__ . '/.env');
|
||||
// db.php loads .env and connects to MySQL
|
||||
|
||||
require_once __DIR__ . '/config/db.php';
|
||||
require_once __DIR__ . '/controllers/SettingsController.php';
|
||||
@@ -36,8 +20,9 @@ if (!$settings) {
|
||||
];
|
||||
}
|
||||
|
||||
$recaptchaSiteKey = getenv('RECAPTCHA_SITE_KEY') ?: ($_ENV['RECAPTCHA_SITE_KEY'] ?? '');
|
||||
$contactEmail = getenv('CONTACT_EMAIL') ?: ($_ENV['CONTACT_EMAIL'] ?? '');
|
||||
// Prefer $_ENV (always set by loadEnv), fall back to getenv()
|
||||
$recaptchaSiteKey = $_ENV['RECAPTCHA_SITE_KEY'] ?? getenv('RECAPTCHA_SITE_KEY') ?? '';
|
||||
$contactEmail = $_ENV['CONTACT_EMAIL'] ?? getenv('CONTACT_EMAIL') ?? '';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
+13
-7
@@ -4,12 +4,6 @@
|
||||
<a href="index.php" class="logo-link">CG</a><a href="admin/login.php" class="logo-dot-link">.</a>
|
||||
</div>
|
||||
|
||||
<div class="hamburger" id="hamburger" aria-label="Toggle menu" aria-expanded="false" role="button" tabindex="0">
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
</div>
|
||||
|
||||
<div class="nav-links" id="nav-links" role="navigation">
|
||||
<button class="nav-close-btn" id="nav-close-btn" aria-label="Close menu">×</button>
|
||||
<a href="index.php#about" class="nav-item">About</a>
|
||||
@@ -17,11 +11,23 @@
|
||||
<a href="index.php#certificates" class="nav-item">Certs</a>
|
||||
<a href="blog.php" class="nav-item">Blog</a>
|
||||
<a href="index.php#contact" class="nav-item">Contact</a>
|
||||
<label for="dark-mode-toggle" class="mode-btn" title="Toggle Theme" aria-label="Toggle dark/light mode">
|
||||
<label for="dark-mode-toggle" class="mode-btn mode-btn-panel" title="Toggle Theme" aria-label="Toggle dark/light mode">
|
||||
<span class="icon-moon">🌙</span>
|
||||
<span class="icon-sun">☀️</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- Always-visible theme toggle (desktop + mobile nav bar) -->
|
||||
<label for="dark-mode-toggle" class="mode-btn mode-btn-nav" title="Toggle Theme" aria-label="Toggle dark/light mode">
|
||||
<span class="icon-moon">🌙</span>
|
||||
<span class="icon-sun">☀️</span>
|
||||
</label>
|
||||
|
||||
<div class="hamburger" id="hamburger" aria-label="Toggle menu" aria-expanded="false" role="button" tabindex="0">
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Nav overlay backdrop -->
|
||||
|
||||
Reference in new issue
Block a user