403Webshell
Server IP : 193.86.120.172  /  Your IP : 216.73.216.67
Web Server : Apache/2.4.63 (Unix)
System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64
User : kubec ( 1026)
PHP Version : 8.2.28
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /volume1/web/hotellesnizatisi_cz/new/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/web/hotellesnizatisi_cz/new/includes/layout.php
<?php
// ============================================================
// Sdílený layout administrace — sidebar + topbar.
// Volá se admin_layout_start(...) na začátku stránky a
// admin_layout_end() na konci. Mezi tím přijde obsah stránky.
// ============================================================

function admin_layout_start(string $activePanel, string $title, string $sub, array $user): void
{
    $roleLabel = [
        'admin'       => 'Admin',
        'manazer'     => 'Manažer',
        'zamestnanec' => 'Zaměstnanec',
    ][$user['role']] ?? $user['role'];

    $initials = mb_strtoupper(mb_substr($user['jmeno'], 0, 1) . mb_substr($user['prijmeni'], 0, 1));
    ?>
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= htmlspecialchars($title) ?> — Administrace Lesní zátiší</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Work+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/admin.css">
</head>
<body>
<div class="shell">

  <div class="sidebar-backdrop" id="sidebarBackdrop"></div>

  <aside class="sidebar" id="sidebar">
    <div class="sidebar__logo">
      <strong>Lesní zátiší</strong>
      <span>Administrace</span>
    </div>

    <nav class="nav">
      <?php
      $maObsah = user_can($user, 'obsah') || user_can($user, 'doplnky') || user_can($user, 'okoli') || user_can($user, 'cenik') || user_can($user, 'fotky');
      ?>
      <?php if ($maObsah): ?>
      <div class="nav__group-label">Obsah webu</div>
      <?php if (user_can($user, 'obsah')): ?>
      <a class="nav__item <?= $activePanel === 'obsah' ? 'active' : '' ?>" href="obsah.php">Texty sekcí</a>
      <?php endif; ?>
      <?php if (user_can($user, 'doplnky')): ?>
      <a class="nav__item <?= $activePanel === 'doplnky' ? 'active' : '' ?>" href="doplnky.php">Doplňky</a>
      <?php endif; ?>
      <?php if (user_can($user, 'okoli')): ?>
      <a class="nav__item <?= $activePanel === 'okoli' ? 'active' : '' ?>" href="okoli.php">V okolí</a>
      <?php endif; ?>
      <?php if (user_can($user, 'cenik')): ?>
      <a class="nav__item <?= $activePanel === 'cenik' ? 'active' : '' ?>" href="cenik.php">Ceník a storno</a>
      <?php endif; ?>
      <?php if (user_can($user, 'fotky')): ?>
      <a class="nav__item <?= $activePanel === 'fotky' ? 'active' : '' ?>" href="fotky.php">Fotky</a>
      <?php endif; ?>
      <?php endif; ?>
      <!-- Pokoje záměrně bez vlastní sekce — hotel nemá rozlišené typy pokojů,
           popisný text se edituje přes Texty sekcí (klíč "pokoje_info") -->

      <?php if (in_array($user['role'], ['admin', 'manazer'], true)): ?>
      <div class="nav__group-label">Správa</div>
      <a class="nav__item <?= $activePanel === 'nastaveni' ? 'active' : '' ?>" href="nastaveni.php">Nastavení</a>
      <a class="nav__item <?= $activePanel === 'uzivatele' ? 'active' : '' ?>" href="uzivatele.php">Uživatelé</a>
      <?php endif; ?>

      <div class="nav__group-label">Rozšíření</div>
      <button type="button" class="nav__item" onclick="openDemoModal()">Rezervační systém <span class="badge-demo">DEMO</span></button>
    </nav>

    <div class="sidebar__footer">
      <div class="user-chip">
        <div class="user-chip__avatar"><?= htmlspecialchars($initials) ?></div>
        <div>
          <div class="user-chip__name"><?= htmlspecialchars($user['jmeno'] . ' ' . $user['prijmeni']) ?></div>
          <div class="user-chip__role"><?= htmlspecialchars($roleLabel) ?></div>
        </div>
      </div>
    </div>
  </aside>

  <div class="main">
    <header class="topbar">
      <div style="display:flex;align-items:center;gap:14px;">
        <button type="button" class="topbar__burger" id="sidebarToggle" aria-label="Otevřít menu">
          <span></span><span></span><span></span>
        </button>
        <div>
          <h1><?= htmlspecialchars($title) ?></h1>
          <?php if ($sub): ?><div class="topbar__sub"><?= htmlspecialchars($sub) ?></div><?php endif; ?>
        </div>
      </div>
      <a class="btn-logout" href="zmenit-heslo.php" style="margin-right:8px;">Změnit heslo</a>
      <a class="btn-logout" href="logout.php">Odhlásit se</a>
    </header>

    <div class="content">
    <?php
}

function admin_layout_end(): void
{
    ?>
    </div>
  </div>
</div>

<div class="modal-overlay" id="demoModalOverlay">
  <div class="modal-box">
    <h3>Rezervační systém — demo verze</h3>
    <p>Ukázková verze rezervačního systému. Přihlašovací údaje pro administraci (manažer/zaměstnanec):</p>
    <div class="demo-creds">
      <div class="demo-cred">
        <div class="demo-cred__role">Manažer</div>
        <div class="demo-cred__line"><b>Jméno</b><span>demo</span></div>
        <div class="demo-cred__line"><b>Heslo</b><span>JServices</span></div>
      </div>
      <div class="demo-cred">
        <div class="demo-cred__role">Zaměstnanec</div>
        <div class="demo-cred__line"><b>Jméno</b><span>demo.demo</span></div>
        <div class="demo-cred__line"><b>Heslo</b><span>JServices</span></div>
      </div>
    </div>
    <div class="modal-actions">
      <button type="button" class="btn btn-secondary" onclick="closeDemoModal()">Zavřít</button>
      <a href="https://hotel.jservices.cz" target="_blank" rel="noopener" class="btn btn-secondary" onclick="closeDemoModal()">Rezervační stránka ↗</a>
      <a href="https://hotel.jservices.cz/admin.html" target="_blank" rel="noopener" class="btn btn-primary" onclick="closeDemoModal()">Administrace ↗</a>
    </div>
  </div>
</div>

<script>
function openDemoModal(){ document.getElementById('demoModalOverlay').classList.add('open'); }
function closeDemoModal(){ document.getElementById('demoModalOverlay').classList.remove('open'); }
document.getElementById('demoModalOverlay').addEventListener('click', function(e){
  if (e.target === this) closeDemoModal();
});

// Mobilní postranní menu — otevření/zavření
var sidebarEl = document.getElementById('sidebar');
var backdropEl = document.getElementById('sidebarBackdrop');
function openSidebar(){ sidebarEl.classList.add('is-open'); backdropEl.classList.add('is-open'); }
function closeSidebar(){ sidebarEl.classList.remove('is-open'); backdropEl.classList.remove('is-open'); }
document.getElementById('sidebarToggle').addEventListener('click', openSidebar);
backdropEl.addEventListener('click', closeSidebar);
</script>

</body>
</html>
    <?php
}

/**
 * Uloží zprávu, která se zobrazí po přesměrování (typicky po uložení formuláře).
 */
function set_flash(string $type, string $text): void
{
    $_SESSION['flash'] = ['type' => $type, 'text' => $text];
}

/**
 * Vyzvedne a smaže uloženou flash zprávu (zobrazí se jen jednou).
 */
function get_flash(): ?array
{
    if (!empty($_SESSION['flash'])) {
        $f = $_SESSION['flash'];
        unset($_SESSION['flash']);
        return $f;
    }
    return null;
}

/**
 * Vypíše flash zprávu, pokud nějaká čeká.
 */
function render_flash(): void
{
    $flash = get_flash();
    if ($flash) {
        echo '<div class="flash flash-' . htmlspecialchars($flash['type']) . '">' . htmlspecialchars($flash['text']) . '</div>';
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit