Commit 59e1896c authored by Administrator's avatar Administrator

Update 4 files via Son of Anton

parent 54a87b2e
This diff is collapsed.
<?php
use App\Core\CSRF;
?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ar" dir="rtl"> <html lang="ar" dir="rtl">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="csrf-token" content="<?= e(CSRF::token()) ?>"> <title><?php $__template->yield('title', 'تسجيل الدخول'); ?> — نادي النادي</title>
<title><?= $__template->yield('title', 'تسجيل الدخول') ?> — نادي النادي شيراتون</title> <link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="<?= url('assets/css/main.css') ?>"> <link rel="stylesheet" href="<?= url('assets/css/main.css') ?>">
<style> <style>
body { body { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: linear-gradient(135deg, #0D7377 0%, #1A1A2E 100%); padding: 20px; }
display: flex; .auth-card { background: #fff; border-radius: 12px; padding: 40px; width: 100%; max-width: 420px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }
justify-content: center; .auth-logo { text-align: center; margin-bottom: 30px; }
align-items: center; .auth-logo h1 { font-size: 24px; color: #0D7377; margin: 0; }
min-height: 100vh; .auth-logo p { color: #6B7280; font-size: 13px; margin-top: 5px; }
margin: 0; @media (max-width: 480px) {
background: linear-gradient(135deg, #1A1A2E 0%, #0D7377 100%); .auth-card { padding: 25px 20px; }
font-family: 'Cairo', 'Segoe UI', Tahoma, Arial, sans-serif; .auth-logo h1 { font-size: 20px; }
direction: rtl;
}
.auth-card {
background: #fff;
border-radius: 12px;
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
padding: 40px;
width: 100%;
max-width: 420px;
}
.auth-header {
text-align: center;
margin-bottom: 30px;
}
.auth-header h1 {
color: #0D7377;
font-size: 24px;
margin: 0 0 5px;
}
.auth-header p {
color: #6B7280;
font-size: 14px;
margin: 0;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="auth-card"> <div class="auth-card">
<div class="auth-header"> <div class="auth-logo">
<h1>نادي النادي شيراتون</h1> <h1>🏛️ THE CLUB</h1>
<p>THE CLUB Sheraton</p> <p>نادي النادي شيراتون — Sports City</p>
</div> </div>
<?php <?php
$session = \App\Core\App::getInstance()->session(); $__session = \App\Core\App::getInstance()->session();
$alerts = $session->getAlerts(); $__alerts = $__session->flash('_alerts') ?? [];
if (!empty($alerts)): ?>
foreach ($alerts as $alert): <?php if (!empty($__alerts)): ?>
?> <?php foreach ($__alerts as $__alert): ?>
<div style="padding:10px 15px;border-radius:6px;margin-bottom:15px;font-size:13px; <div class="alert alert-<?= e($__alert['type'] ?? 'info') ?>" style="margin-bottom:15px;"><?= e($__alert['message'] ?? '') ?></div>
background:<?= ($alert['type'] ?? '') === 'error' ? '#FEF2F2' : '#F0FDF4' ?>; <?php endforeach; ?>
color:<?= ($alert['type'] ?? '') === 'error' ? '#DC2626' : '#059669' ?>; <?php endif; ?>
border:1px solid <?= ($alert['type'] ?? '') === 'error' ? '#FECACA' : '#BBF7D0' ?>;">
<?= e($alert['message'] ?? '') ?>
</div>
<?php
endforeach;
endif;
?>
<?= $__template->yield('content', '') ?> <?php $__template->yield('content'); ?>
</div> </div>
</body> </body>
</html> </html>
\ No newline at end of file
<?php
/**
* Main application layout — RTL Arabic-first.
* All authenticated pages use this layout.
*/
use App\Core\App;
use App\Core\CSRF;
$app = App::getInstance();
$employee = $app->currentEmployee();
$employeeName = $employee ? ($employee->full_name_ar ?? 'مستخدم') : 'زائر';
$currentPath = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ar" dir="rtl"> <html lang="ar" dir="rtl">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="csrf-token" content="<?= e(CSRF::token()) ?>"> <title><?php $__template->yield('title', 'النظام'); ?> — نادي النادي</title>
<title><?= $__template->yield('title', 'لوحة التحكم') ?> — نادي النادي شيراتون</title> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="<?= url('assets/css/main.css') ?>"> <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<?= $__template->yield('styles', '') ?> <link rel="stylesheet" href="<?= url('assets/css/main.css') ?>?v=<?= filemtime(App\Core\App::getInstance()->basePath() . '/public/assets/css/main.css') ?>">
</head> </head>
<body> <body>
<!-- Sidebar --> <div class="app-layout">
<aside class="sidebar" id="sidebar"> <!-- Sidebar Overlay (mobile) -->
<?php $__template->include('Shared.Components.sidebar'); ?> <div class="sidebar-overlay" id="sidebarOverlay"></div>
</aside>
<!-- Main Wrapper --> <!-- Sidebar -->
<div class="main-wrapper" id="main-wrapper"> <?php $__template->include('Shared.Components.sidebar'); ?>
<!-- Top Header --> <!-- Main Wrapper -->
<header class="top-header"> <div class="main-wrapper">
<div class="header-right"> <!-- Header -->
<button class="sidebar-toggle-btn" onclick="toggleSidebar()"></button> <header class="main-header">
<div class="header-title"> <div style="display:flex;align-items:center;gap:12px;">
<h1><?= $__template->yield('title', 'لوحة التحكم') ?></h1> <button class="hamburger-btn" id="hamburgerBtn" aria-label="القائمة"></button>
<h1 class="page-title"><?php $__template->yield('title', 'لوحة التحكم'); ?></h1>
</div> </div>
</div> <div class="page-actions">
<div class="header-left"> <?php $__template->yield('page_actions', ''); ?>
<?= $__template->yield('page_actions', '') ?> <div class="user-info">
<div class="header-user"> <?php
<span class="header-user-name"><?= e($employeeName) ?></span> $__employee = \App\Core\App::getInstance()->currentEmployee();
<a href="/logout" class="header-logout" title="تسجيل الخروج">🚪</a> if ($__employee):
?>
<span class="user-name-text"><?= e($__employee->full_name_ar ?? '') ?></span>
<a href="/logout" class="btn btn-sm btn-outline" style="color:var(--red);border-color:var(--red);">خروج</a>
<?php endif; ?>
</div>
</div> </div>
</div> </header>
</header>
<!-- Alerts --> <!-- Alerts -->
<?php $__template->include('Shared.Components.alerts'); ?> <?php
$__session = \App\Core\App::getInstance()->session();
<!-- Page Content --> $__alerts = $__session->flash('_alerts') ?? [];
<main class="page-content"> ?>
<?= $__template->yield('content', '') ?> <?php if (!empty($__alerts)): ?>
</main> <div style="padding:15px 25px 0;">
<?php foreach ($__alerts as $__alert): ?>
<div class="alert alert-<?= e($__alert['type'] ?? 'info') ?>"><?= e($__alert['message'] ?? '') ?></div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- Footer --> <!-- Main Content -->
<footer class="page-footer"> <main class="main-content">
<span>نادي النادي شيراتون &copy; <?= date('Y') ?></span> <?php $__template->yield('content'); ?>
<span>الإصدار 1.0.0</span> </main>
<span><?= arabic_date(date('Y-m-d')) ?></span> </div>
</footer>
</div> </div>
<script src="<?= url('assets/js/app.js') ?>"></script> <script src="<?= url('assets/js/app.js') ?>"></script>
<script> <script>
function toggleSidebar() { (function() {
var sb = document.getElementById('sidebar'); var sidebar = document.querySelector('.sidebar');
var mw = document.getElementById('main-wrapper'); var overlay = document.getElementById('sidebarOverlay');
sb.classList.toggle('collapsed'); var hamburger = document.getElementById('hamburgerBtn');
mw.classList.toggle('sidebar-collapsed');
} function openSidebar() {
function toggleSubmenu(el) { sidebar.classList.add('open');
var parent = el.parentElement; overlay.classList.add('active');
var submenu = parent.querySelector('.sidebar-submenu'); document.body.style.overflow = 'hidden';
if (submenu) { }
var isOpen = submenu.style.display === 'block'; function closeSidebar() {
submenu.style.display = isOpen ? 'none' : 'block'; sidebar.classList.remove('open');
parent.classList.toggle('open', !isOpen); overlay.classList.remove('active');
document.body.style.overflow = '';
}
if (hamburger) {
hamburger.addEventListener('click', function(e) {
e.stopPropagation();
if (sidebar.classList.contains('open')) {
closeSidebar();
} else {
openSidebar();
}
});
} }
} if (overlay) {
overlay.addEventListener('click', closeSidebar);
}
// Close sidebar on link click (mobile)
var sidebarLinks = sidebar ? sidebar.querySelectorAll('.sidebar-link') : [];
sidebarLinks.forEach(function(link) {
link.addEventListener('click', function() {
if (window.innerWidth <= 768) {
closeSidebar();
}
});
});
// Close on Escape
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSidebar();
});
// Close sidebar if window resizes above mobile
window.addEventListener('resize', function() {
if (window.innerWidth > 768) {
closeSidebar();
}
});
})();
</script> </script>
<?= $__template->yield('scripts', '') ?> <?php $__template->yield('scripts', ''); ?>
</body> </body>
</html> </html>
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment