Tul xxx Tul
User / IP
:
216.73.216.191
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
gimnasiofitnes
/
app
/
Views
/
layout
/
Viewing: app.php
<!DOCTYPE html> <html lang="en"> <head> <meta name="description" content="Vali is a responsive and free admin theme built with Bootstrap 5, SASS and PUG.js. It's fully customizable and modular."> <!-- Twitter meta--> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:site" content="@pratikborsadiya"> <meta property="twitter:creator" content="@pratikborsadiya"> <!-- Open Graph Meta--> <meta property="og:type" content="website"> <meta property="og:site_name" content="Vali Admin"> <meta property="og:title" content="Vali - Free Bootstrap 5 admin theme"> <meta property="og:url" content="http://pratikborsadiya.in/blog/vali-admin"> <meta property="og:image" content="http://pratikborsadiya.in/blog/vali-admin/hero-social.png"> <meta property="og:description" content="Vali is a responsive and free admin theme built with Bootstrap 5, SASS and PUG.js. It's fully customizable and modular."> <?php $company = get_company(); ?> <title><?= esc($company['name'] ?? 'Gym') ?> | <?= $this->renderSection('title'); ?></title> <!-- Favicon --> <link rel="icon" type="image/png" href="<?= base_url('assets/admin/images/logo.png') ?>?v=<?= time() ?>"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Main CSS--> <link rel="stylesheet" type="text/css" href="<?= base_url('assets/admin/'); ?>css/main.css"> <!-- Select2 CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css"> <!-- Bootstrap Icons --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet"> <style> :root { --neon: #ccff00; --dark: #0a0a0a; --white: #ffffff; --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-800: #1f2937; --primary: var(--dark); } body.app { background-color: var(--gray-50); font-family: 'Inter', sans-serif; color: var(--gray-800); } /* Header / Navbar Modernization */ .app-header { background-color: var(--white); border-bottom: 1px solid var(--gray-200); box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); height: 70px; display: flex; align-items: center; position: fixed; width: 100%; left: 0; z-index: 1030; transition: all 0.3s ease; } .app-header__logo { height: 70px; display: flex; align-items: center; justify-content: center; padding: 0 20px; text-decoration: none !important; color: var(--dark) !important; font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 1.25rem; background-color: var(--white) !important; width: 250px; flex: 0 0 auto; transition: width 0.3s ease; } .sidebar-mini.sidenav-toggled .app-header__logo { width: 50px; padding: 0; } .sidebar-mini.sidenav-toggled .app-header__logo span { display: none; } .app-header__logo img { width: 35px; height: 35px; object-fit: contain; transition: all 0.3s ease; } .sidebar-mini.sidenav-toggled .app-header__logo img { margin-right: 0; } .app-header__logo span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-left: 12px; } .app-sidebar__logo { display: none !important; } .app-nav { display: flex; margin-bottom: 0; padding-left: 0; list-style: none; margin-left: auto; } .app-nav__item { color: var(--gray-800); background-color: transparent; padding: 15px 20px; line-height: 40px; transition: background-color 0.3s ease; } .app-nav__item:hover, .app-nav__item:focus { background-color: var(--gray-100); color: var(--dark); } /* Sidebar Modernization */ .app-sidebar { background-color: var(--white); border-right: 1px solid var(--gray-200); padding-top: 70px; width: 250px; box-shadow: none; position: fixed; top: 0; bottom: 0; left: 0; z-index: 1020; transition: left 0.3s ease, width 0.3s ease; } .sidebar-mini.sidenav-toggled .app-sidebar { width: 50px !important; } .app-sidebar__user { padding: 20px 25px; border-bottom: 1px solid var(--gray-100); background: var(--gray-50); display: flex; align-items: center; overflow: hidden; white-space: nowrap; transition: all 0.3s ease; } .sidebar-mini.sidenav-toggled .app-sidebar__user { padding: 12px 5px; justify-content: center; } .sidebar-mini.sidenav-toggled .app-sidebar__user > div { display: none; } .app-sidebar__user-avatar { width: 45px; height: 45px; border-radius: 10px; object-fit: cover; margin-right: 15px; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); transition: all 0.3s ease; } .sidebar-mini.sidenav-toggled .app-sidebar__user-avatar { margin-right: 0; width: 35px; height: 35px; } .app-sidebar__user-name { font-size: 0.9rem; font-weight: 600; color: var(--dark); margin-bottom: 0; } .app-sidebar__user-designation { font-size: 0.75rem; color: #6b7280; margin-bottom: 0; } .app-menu { margin-bottom: 0; padding-bottom: 40px; } .app-menu__item { border-left: 4px solid transparent; color: #4b5563; padding: 12px 25px; font-weight: 500; transition: all 0.2s; display: flex; align-items: center; text-decoration: none; background-color: transparent !important; white-space: nowrap; } .sidebar-mini.sidenav-toggled .app-menu__item { padding: 12px 13px; } .app-menu__item:hover, .app-menu__item:focus { background-color: var(--gray-100) !important; color: var(--dark) !important; } .app-menu__item.active, .treeview.is-expanded [data-toggle="treeview"] { background-color: var(--gray-50) !important; color: var(--dark) !important; border-left-color: var(--neon) !important; font-weight: 600; box-shadow: inset 2px 0 0 var(--neon); } .treeview.is-expanded [data-toggle="treeview"] .app-menu__icon, .app-menu__item.active .app-menu__icon { color: var(--dark) !important; text-shadow: 0 0 10px rgba(204, 255, 0, 0.5); } .sidebar-mini.sidenav-toggled .app-menu__item.active { border-left-color: var(--neon) !important; } .sidebar-mini.sidenav-toggled .app-menu__label { display: none; } .app-menu__icon { font-size: 1.25rem; margin-right: 12px; flex: 0 0 auto; color: inherit; transition: all 0.3s ease; } .sidebar-mini.sidenav-toggled .app-menu__icon { margin-right: 0; font-size: 1.4rem; } .app-menu__label { flex: 1 1 auto; color: inherit; } .app-menu__label-header { padding: 25px 25px 10px; font-size: 0.7rem; font-weight: 800; color: #9ca3af; text-transform: uppercase; letter-spacing: 0.1em; pointer-events: none; font-family: 'Space Grotesk', sans-serif; } .sidebar-mini.sidenav-toggled .app-menu__label-header { display: none; } /* Treeview Styles */ .treeview-menu { background: var(--white) !important; padding-left: 0; list-style: none; display: none; box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.02); } .sidebar-mini.sidenav-toggled .treeview-menu { position: absolute; left: 50px; width: 200px; background: var(--white) !important; border: 1px solid var(--gray-200); box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); } .treeview.is-expanded .treeview-menu { display: block; } .treeview-item { padding: 10px 25px 10px 60px; font-size: 0.875rem; color: #6b7280 !important; display: flex; align-items: center; text-decoration: none; transition: all 0.2s; background-color: transparent !important; } .sidebar-mini.sidenav-toggled .treeview-item { padding: 10px 20px; } .treeview-item:hover { color: var(--dark) !important; background-color: var(--gray-50) !important; } .treeview-item.active { color: var(--dark) !important; background-color: var(--gray-50) !important; font-weight: 600; } .treeview-indicator { color: inherit; transition: transform 0.3s ease; } .sidebar-mini.sidenav-toggled .treeview-indicator { display: none; } /* Content Area */ .app-content { background-color: var(--gray-50); padding: 100px 30px 30px 30px; margin-left: 250px; min-height: 100vh; transition: margin-left 0.3s ease; } .sidebar-mini.sidenav-toggled .app-content { margin-left: 50px; } /* Modern Cards (Tiles) */ .tile { background: var(--white); border-radius: 16px; border: 1px solid var(--gray-200); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03); padding: 25px; margin-bottom: 30px; position: relative; overflow: hidden; } .tile::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: var(--neon); opacity: 0.1; } .tile-title { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 1.25rem; color: var(--dark); margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; } /* Tables Modernization */ .table { color: var(--gray-800); } .table thead th { background-color: var(--gray-50); border-bottom: 2px solid var(--gray-200); color: var(--dark); font-weight: 700; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.1em; padding: 18px 15px; font-family: 'Space Grotesk', sans-serif; } .table td { padding: 15px; vertical-align: middle; border-bottom: 1px solid var(--gray-100); } /* Buttons Modernization */ .btn { border-radius: 10px; font-weight: 600; padding: 10px 20px; transition: all 0.2s; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: none !important; } .btn-primary { background-color: var(--neon) !important; color: var(--dark) !important; box-shadow: 0 4px 6px -1px rgba(204, 255, 0, 0.1); } .btn-primary:hover, .btn-primary:focus { background-color: #b8e600 !important; color: var(--dark) !important; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(204, 255, 0, 0.3); } .btn-neon { background-color: var(--neon) !important; color: var(--dark) !important; } .btn-neon:hover { background-color: #b8e600 !important; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(204, 255, 0, 0.3); } .btn-secondary { background-color: var(--gray-200) !important; color: var(--gray-800) !important; } .btn-secondary:hover { background-color: var(--gray-300) !important; } .btn-danger { background-color: #fee2e2 !important; color: #ef4444 !important; } .btn-danger:hover { background-color: #fecaca !important; } .btn-info { background-color: #e0f2fe !important; color: #0ea5e9 !important; } .btn-info:hover { background-color: #bae6fd !important; } .btn-warning { background-color: #fef3c7 !important; color: #f59e0b !important; } .btn-warning:hover { background-color: #fde68a !important; } /* Forms Modernization */ .form-control, .form-select { border-radius: 10px; padding: 12px 15px; border: 1px solid var(--gray-200); background-color: var(--gray-50); transition: all 0.2s; } .form-control:focus { border-color: var(--neon); box-shadow: 0 0 0 4px rgba(204, 255, 0, 0.1); background-color: var(--white); } /* Pagination Modernization */ .page-item.active .page-link { background-color: var(--neon) !important; border-color: var(--neon) !important; color: var(--dark) !important; } .page-link { color: var(--dark); border-radius: 8px !important; margin: 0 3px; border: none; background-color: var(--gray-100); } .page-link:hover { background-color: var(--gray-200); color: var(--dark); } /* Checkbox/Radio Modernization */ .form-check-input:checked { background-color: var(--neon) !important; border-color: var(--neon) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%230a0a0a' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e") !important; } .form-check-input:focus { box-shadow: 0 0 0 4px rgba(204, 255, 0, 0.2) !important; border-color: var(--neon) !important; } /* Dropdown Modernization */ .dropdown-item.active, .dropdown-item:active { background-color: var(--neon) !important; color: var(--dark) !important; } /* Treeview indicator color */ .treeview.is-expanded .treeview-indicator { color: var(--dark) !important; } .app-menu__item:hover .treeview-indicator { color: var(--dark) !important; } .form-label { font-weight: 600; font-size: 0.85rem; color: #4b5563; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.025em; } /* Breadcrumbs */ .breadcrumb { background: transparent; padding: 0; margin-bottom: 20px; } /* DataTables Custom Styles */ .dt-buttons.btn-group { gap: 4px; } .dt-buttons .btn { border-radius: 6px !important; padding: 4px 8px !important; font-size: 0.8rem !important; background-color: var(--gray-100) !important; color: var(--dark) !important; border: 1px solid var(--gray-200) !important; transition: all 0.2s ease; } .dt-buttons .btn:hover { background-color: var(--neon) !important; border-color: var(--neon) !important; transform: translateY(-1px); } .dataTables_wrapper .dataTables_filter input { border-radius: 10px; padding: 5px 12px; font-size: 0.85rem; border: 1px solid var(--gray-200); background-color: var(--white); margin-left: 10px; } .dataTables_wrapper .dataTables_length select { border-radius: 8px; padding: 4px 8px; font-size: 0.85rem; border: 1px solid var(--gray-200); } /* Pagination Simplification */ .dataTables_wrapper .dataTables_paginate .paginate_button { padding: 0 !important; margin: 0 2px !important; border: none !important; background: transparent !important; } .dataTables_wrapper .dataTables_paginate .paginate_button:hover { background: transparent !important; border: none !important; } .dataTables_wrapper .dataTables_paginate .paginate_button.current { background: var(--neon) !important; color: var(--dark) !important; border-radius: 8px !important; } .dataTables_wrapper .dataTables_paginate .paginate_button.previous, .dataTables_wrapper .dataTables_paginate .paginate_button.next, .dataTables_wrapper .dataTables_paginate .paginate_button.first, .dataTables_wrapper .dataTables_paginate .paginate_button.last { display: inline-block !important; background: var(--gray-100) !important; border-radius: 8px !important; padding: 5px 12px !important; font-size: 0.8rem !important; font-weight: 600 !important; color: var(--dark) !important; } .dataTables_wrapper .dataTables_paginate .paginate_button.disabled { opacity: 0.5; cursor: not-allowed; } .dataTables_info { font-size: 0.85rem; color: #6b7280; padding-top: 15px !important; } .dataTables_paginate { padding-top: 15px !important; } .breadcrumb-item + .breadcrumb-item::before { content: "\F285"; font-family: "bootstrap-icons"; font-size: 0.7rem; color: var(--gray-300); } /* Sidebar Toggle */ .app-sidebar__toggle { padding: 0 25px; font-family: "bootstrap-icons"; font-size: 1.5rem; line-height: 70px; color: var(--dark); text-decoration: none; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; height: 70px; } .app-sidebar__toggle::before { content: "\F479"; } .app-sidebar__toggle:hover { background-color: var(--gray-100); color: var(--dark); } /* Bootstrap Utility Overrides */ .bg-primary { background-color: var(--neon) !important; } .text-primary { color: var(--neon) !important; } .bg-success, .alert-success { background-color: var(--neon) !important; border-color: var(--neon) !important; color: var(--dark) !important; } .alert-success .text-white, .alert-success h6, .alert-success i { color: var(--dark) !important; } .btn-success { background-color: var(--neon) !important; border-color: var(--neon) !important; color: var(--dark) !important; font-weight: 700; } .btn-success:hover, .btn-success:focus { background-color: #b8e600 !important; border-color: #b8e600 !important; color: var(--dark) !important; transform: translateY(-1px); } /* Profile & Avatar Adjustments */ .rounded-circle.p-1.bg-primary { padding: 3px !important; background-color: var(--neon) !important; box-shadow: 0 0 15px rgba(204, 255, 0, 0.3); } .img-thumbnail { border-radius: 12px; border: 2px solid var(--gray-200); padding: 4px; } .app-title { background-color: var(--white); margin: -30px -30px 30px -30px; padding: 20px 30px; border-bottom: 1px solid var(--gray-200); display: flex; align-items: center; justify-content: space-between; } .app-title h1 { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 1.5rem; margin-bottom: 0; display: flex; align-items: center; gap: 12px; } .app-title h1 i { color: var(--neon); background: var(--dark); width: 45px; height: 45px; display: flex; align-items: center; justify-content: center; border-radius: 12px; font-size: 1.25rem; } /* Select2 Global Overrides */ .select2-container--bootstrap-5 .select2-dropdown { border-color: var(--gray-200) !important; border-radius: 12px !important; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1) !important; overflow: hidden !important; border: 1px solid var(--gray-200) !important; } .select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected] { background-color: var(--neon) !important; color: var(--dark) !important; } .select2-container--bootstrap-5 .select2-selection { border-radius: 10px !important; border: 1px solid var(--gray-200) !important; background-color: var(--gray-50) !important; min-height: 45px !important; display: flex !important; align-items: center !important; } .select2-container--bootstrap-5.select2-container--focus .select2-selection { border-color: var(--neon) !important; box-shadow: 0 0 0 4px rgba(204, 255, 0, 0.1) !important; } /* ========================================================================== MODERN RESPONSIVE MOBILE MENU (FIX DEFINITIVO) ========================================================================== */ @media (max-width: 767px) { /* Bloquear scroll del body cuando el menú está abierto */ body.sidenav-toggled { overflow: hidden !important; position: fixed !important; width: 100% !important; } /* Resetear el Sidebar para Móvil - Forzar Ancho Completo */ body.app.sidebar-mini .app-sidebar, body.app .app-sidebar, .app-sidebar { left: -100% !important; width: 100% !important; max-width: 100% !important; z-index: 1050 !important; padding-top: 0 !important; height: 100vh !important; position: fixed !important; top: 0 !important; display: block !important; visibility: hidden !important; opacity: 0 !important; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important; background-color: var(--white) !important; overflow-y: auto !important; border: none !important; } /* Estado ABIERTO en móvil - Forzar visibilidad absoluta */ body.app.sidebar-mini.sidenav-toggled .app-sidebar, body.app.sidenav-toggled .app-sidebar { left: 0 !important; visibility: visible !important; opacity: 1 !important; } /* MOSTRAR TODOS LOS ELEMENTOS INTERNOS */ body.app.sidebar-mini.sidenav-toggled .app-menu__label, body.app.sidebar-mini.sidenav-toggled .app-sidebar__user > div, body.app.sidebar-mini.sidenav-toggled .treeview-indicator, .app-menu__label, .app-sidebar__user > div, .treeview-indicator { display: block !important; opacity: 1 !important; visibility: visible !important; } /* Ajustar Iconos */ .app-menu__icon { margin-right: 15px !important; font-size: 1.2rem !important; width: auto !important; } /* Treeview Styles en Móvil */ .app-sidebar .treeview-menu { position: static !important; display: none; width: 100% !important; box-shadow: none !important; border: none !important; padding-left: 20px !important; background-color: var(--gray-50) !important; } .app-sidebar .treeview.is-expanded .treeview-menu { display: block !important; } .app-sidebar .treeview-item { padding: 12px 25px !important; font-size: 0.9rem !important; color: var(--gray-800) !important; } /* Items de menú */ .app-sidebar .app-menu__item { padding: 18px 25px !important; font-size: 1rem !important; width: 100% !important; display: flex !important; } /* Asegurar que el contenido empuje hacia abajo */ .app-menu { display: block !important; } .treeview { display: block !important; width: 100% !important; } /* Logo del Sidebar */ .app-sidebar__logo { display: flex !important; background-color: var(--dark) !important; color: var(--neon) !important; height: 70px !important; /* Altura fija para que no crezca */ min-height: 70px !important; align-items: center !important; justify-content: flex-start !important; padding: 0 15px !important; position: sticky !important; top: 0 !important; z-index: 1060 !important; border: none !important; overflow: hidden !important; /* Ocultar cualquier parte de la imagen que sobresalga */ width: 100% !important; } .app-sidebar__logo img { width: 35px !important; height: 35px !important; max-width: 35px !important; max-height: 35px !important; margin-right: 10px !important; object-fit: contain !important; flex: 0 0 35px !important; } .app-sidebar__logo span { display: block !important; font-size: 1.1rem !important; font-weight: 700 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; max-width: calc(100% - 80px) !important; /* Espacio para logo y botón X */ color: var(--white) !important; } /* Botón de Cerrar (X) */ .mobile-close { display: flex !important; position: absolute !important; right: 10px !important; top: 50% !important; transform: translateY(-50%) !important; color: var(--white) !important; font-size: 1.6rem !important; z-index: 1070 !important; padding: 5px !important; line-height: 1 !important; background: rgba(255, 255, 255, 0.15) !important; border-radius: 6px !important; height: 35px !important; width: 35px !important; align-items: center !important; justify-content: center !important; } /* Overlay con desenfoque - Asegurar que esté DETRÁS del sidebar pero SOBRE el contenido */ .app-sidebar__overlay { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; opacity: 0 !important; visibility: hidden !important; pointer-events: none !important; transition: opacity 0.3s ease, visibility 0.3s ease !important; background-color: rgba(0, 0, 0, 0.8) !important; backdrop-filter: blur(15px) !important; -webkit-backdrop-filter: blur(15px) !important; z-index: 1040 !important; /* Menor que el sidebar (1050) */ display: block !important; } body.app.sidenav-toggled .app-sidebar__overlay { opacity: 1 !important; visibility: visible !important; pointer-events: auto !important; } /* Header y Contenido */ .app-header__logo { width: auto !important; } .app-content { margin-left: 0 !important; padding: 90px 15px 30px 15px !important; } } /* Elementos móviles ocultos por defecto */ .mobile-close { display: none; } /* Estado cuando el menú está oculto en desktop */ @media (min-width: 768px) { .sidenav-toggled .app-sidebar { width: 50px !important; } .sidenav-toggled .app-content { margin-left: 50px; } } </style> <?= $this->renderSection('css'); ?> </head> <body class="app sidebar-mini"> <!-- Navbar--> <header class="app-header"> <a class="app-header__logo" href="<?= base_url('admin'); ?>"> <img src="<?= base_url('assets/admin/images/logo.png'); ?>?v=<?= time() ?>" alt="Logo"> <span><?= esc($company['name'] ?? 'Titan') ?></span> </a> <!-- Sidebar toggle button--><a class="app-sidebar__toggle" href="#" data-toggle="sidebar" aria-label="Hide Sidebar"></a> <!-- Navbar Right Menu--> <ul class="app-nav"> <!-- User Menu--> <li class="dropdown"><a class="app-nav__item" href="#" data-bs-toggle="dropdown" aria-label="Open Profile Menu"><i class="bi bi-person fs-4"></i></a> <ul class="dropdown-menu settings-menu dropdown-menu-right"> <li><a class="dropdown-item" href="<?= base_url('admin/perfil'); ?>"><i class="bi bi-person me-2 fs-5"></i> Perfil</a></li> <li><a class="dropdown-item" href="<?= base_url('admin/logout'); ?>"><i class="bi bi-box-arrow-right me-2 fs-5"></i> Salir</a></li> </ul> </li> </ul> </header> <!-- Sidebar menu--> <div class="app-sidebar__overlay" data-toggle="sidebar"></div> <aside class="app-sidebar"> <a class="mobile-close text-decoration-none" href="#" data-toggle="sidebar"> <i class="bi bi-x-lg"></i> </a> <a class="app-sidebar__logo" href="<?= base_url('admin'); ?>"> <img src="<?= base_url('assets/admin/images/logo.png'); ?>?v=<?= time() ?>" alt="Logo"> <span><?= esc($company['name'] ?? 'Titan') ?></span> </a> <?php $url = 'assets/admin/images/avatars/default.png'; if ($_SESSION['avatar'] != null) { $url = 'assets/admin/uploads/avatars/' . $_SESSION['avatar']; } ?> <div class="app-sidebar__user"><img class="app-sidebar__user-avatar" src="<?= base_url($url); ?>" alt="User Image"> <div> <p class="app-sidebar__user-name"><?= $_SESSION['nombre']; ?></p> <p class="app-sidebar__user-designation"><?= $_SESSION['correo']; ?></p> </div> </div> <?php if (is_null(session('role_id'))) { echo $this->include('layout/includes/menu-cliente'); } else { echo $this->include('layout/includes/menu-admin'); } ?> </aside> <main class="app-content"> <?= $this->renderSection('content'); ?> </main> <!-- Essential javascripts for application to work--> <script src="<?= base_url('assets/admin/'); ?>js/jquery-3.7.0.min.js"></script> <script src="<?= base_url('assets/admin/'); ?>js/bootstrap.min.js"></script> <script src="<?= base_url('assets/admin/'); ?>js/main.js"></script> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script src="<?= base_url('assets/admin/'); ?>js/botones.js"></script> <script src="<?= base_url('assets/admin/'); ?>js/custom.js"></script> <script> const base_url = '<?= rtrim(base_url(), '/') . '/'; ?>'; const csrf_token = '<?= csrf_token() ?>'; let csrf_hash = '<?= csrf_hash() ?>'; const app_currency = '<?= get_currency() ?>'; // ═══════════════════════════════════════════════════════════ // ANTI-CACHE GLOBAL: Forzar datos frescos en TODAS las // peticiones AJAX del sistema (Hostinger fix) // ═══════════════════════════════════════════════════════════ $.ajaxSetup({ cache: false, headers: { 'X-Requested-With': 'XMLHttpRequest', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache' } }); // Interceptar fetch() nativo para agregar anti-cache automáticamente (function() { const originalFetch = window.fetch; window.fetch = function(url, options) { options = options || {}; // Agregar timestamp para romper la cache const separator = (typeof url === 'string' && url.includes('?')) ? '&' : '?'; if (typeof url === 'string') { url = url + separator + '_nocache=' + Date.now(); } // Agregar headers anti-cache options.headers = Object.assign({}, options.headers || {}, { 'X-Requested-With': 'XMLHttpRequest', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache' }); return originalFetch.call(this, url, options); }; })(); </script> <?= $this->renderSection('js'); ?> </body> </html>
Coded With 💗 by
0x6ick