PYBS (Personel Yönetim Bilgi Sistemi) / Ramsa/includes/menu.php
menu.php 220 satır • 12.16 KB
<?php
// includes/menu.php
$mevcut_sayfa = basename($_SERVER['PHP_SELF']);
$rol = $_SESSION['rol'] ?? 'calisan';

// Menü Açık/Kapalı Mantığı
$personel_acik = in_array($mevcut_sayfa, ['personel-yonetimi.php', 'personel-ekle.php', 'personel-duzenle.php', 'personel-kart.php']);
$izin_acik = in_array($mevcut_sayfa, ['tum-izinler.php', 'izin-talep.php', 'tatil-yonetimi.php', 'izin-yazdir.php', 'izin-gir.php']);
$mesai_acik = in_array($mevcut_sayfa, ['tum-mesailer.php', 'mesai-giris.php', 'admin-mesai-ekle.php', 'puantaj-cetveli.php']);
$finans_acik = in_array($mevcut_sayfa, ['maas-hesapla.php', 'raporlar.php', 'avans-giris.php', 'mali-rapor.php']);
$kisisel_acik = in_array($mevcut_sayfa, ['izin-talep.php', 'mesai-giris.php', 'profil.php', 'bordro-goruntule.php']) || (strpos($mevcut_sayfa, '-panel.php') !== false && $mevcut_sayfa !== 'root-panel.php'); 
?>

<style>
    /* Varsayılan link stili */
    #sidebar ul li a {
        padding: 12px 20px; 
        display: block;
        transition: all 0.3s;
        color: rgba(255, 255, 255, 0.7); 
        text-decoration: none;
        border-left: 4px solid transparent;
    }

    #sidebar ul li a:hover {
        color: #fff;
        background: rgba(255, 255, 255, 0.05);
    }

    /* --- AKTİF ANA BAŞLIK (Menü Başlığı) --- */
    #sidebar ul li a[aria-expanded="true"] {
        background: #F3B01B; /* Ramsa Yellow */
        color: #fff !important;
        font-weight: 600;
        border-left-color: #fff; /* Sol çizgi beyaz */
        box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    }

    /* --- AKTİF ALT LİNK (Sayfa Linki) --- */
    #sidebar ul.components ul li a {
        padding-left: 45px !important; /* Alt menü girintisi */
        font-size: 0.9em;
        background: #2c3034; /* Alt menü zemin rengi */
    }

    #sidebar ul.components ul li a.active {
        color: #F3B01B !important; /* Aktif yazı rengi */
        background: rgba(243, 176, 27, 0.1); /* Hafif sarı zemin */
        border-left: 4px solid #F3B01B; /* Sol sarı çizgi */
        font-weight: bold;
    }
    
    #sidebar ul.components ul li a:hover {
        background: rgba(255, 255, 255, 0.05);
        color: #fff !important;
    }
</style>

<nav id="sidebar">
    <div class="sidebar-header p-3 text-center" style="background: rgba(0,0,0,0.2); position: relative;">
        <h6 class="text-white mb-0 fw-bold"><i class="fas fa-cube me-2"></i>Ramsa PYBS</h6>
        <button id="sidebarCloseInside" class="btn btn-sm btn-outline-light d-md-none position-absolute top-0 end-0 m-2">
            <i class="fas fa-times"></i>
        </button>
    </div>

    <ul class="list-unstyled components" id="accordionMenu">
        
        <li>
            <a href="../panels/<?php echo $rol; ?>-panel.php" class="<?php echo (strpos($mevcut_sayfa, '-panel.php') !== false) ? 'active' : ''; ?>">
                <i class="fas fa-home me-2"></i> Ana Sayfa
            </a>
        </li>
        
        <li class="menu-item">
            <a href="#kisiselSubmenu" data-bs-toggle="collapse" aria-expanded="<?php echo $kisisel_acik ? 'true' : 'false'; ?>" class="dropdown-toggle <?php echo $kisisel_acik ? '' : 'collapsed'; ?>">
                <i class="fas fa-id-card me-2"></i> Kişisel Menü
            </a>
            <ul class="collapse list-unstyled <?php echo $kisisel_acik ? 'show' : ''; ?>" id="kisiselSubmenu" data-bs-parent="#accordionMenu">
                <li><a href="../modules/profil.php" class="<?php echo ($mevcut_sayfa == 'profil.php') ? 'active' : ''; ?>"><i class="fas fa-user-circle me-2"></i> Profilim</a></li>
                <li><a href="../modules/izin-talep.php" class="<?php echo ($mevcut_sayfa == 'izin-talep.php') ? 'active' : ''; ?>"><i class="fas fa-paper-plane me-2"></i> İzin İste</a></li>
                <li><a href="../modules/mesai-giris.php" class="<?php echo ($mevcut_sayfa == 'mesai-giris.php') ? 'active' : ''; ?>"><i class="fas fa-history me-2"></i> Fazla Mesai Bildir</a></li>
                <li><a href="../modules/bordro-goruntule.php" class="<?php echo ($mevcut_sayfa == 'bordro-goruntule.php') ? 'active' : ''; ?>"><i class="fas fa-file-invoice-dollar me-2"></i> Maaş Bordrom</a></li>

            </ul>
        </li>

        <?php if(in_array($rol, ['root', 'yonetici', 'insan_kaynaklari', 'muhasebe'])): ?>
        <li class="menu-item">
            <a href="#personelSubmenu" data-bs-toggle="collapse" aria-expanded="<?php echo $personel_acik ? 'true' : 'false'; ?>" class="dropdown-toggle <?php echo $personel_acik ? '' : 'collapsed'; ?>">
                <i class="fas fa-users me-2"></i> Personel Yönetimi
            </a>
            <ul class="collapse list-unstyled <?php echo $personel_acik ? 'show' : ''; ?>" id="personelSubmenu" data-bs-parent="#accordionMenu">
                <li><a href="../modules/personel-yonetimi.php" class="<?php echo ($mevcut_sayfa == 'personel-yonetimi.php' || $mevcut_sayfa == 'personel-duzenle.php') ? 'active' : ''; ?>"><i class="fas fa-list me-2"></i> Personel Listesi</a></li>
                <li><a href="../modules/personel-ekle.php" class="<?php echo ($mevcut_sayfa == 'personel-ekle.php') ? 'active' : ''; ?>"><i class="fas fa-user-plus me-2"></i> Personel Ekle</a></li>
            </ul>
        </li>
        <?php endif; ?>

        <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'mudur', 'insan_kaynaklari'])): ?>
        <li class="menu-item">
            <a href="#izinSubmenu" data-bs-toggle="collapse" aria-expanded="<?php echo $izin_acik ? 'true' : 'false'; ?>" class="dropdown-toggle <?php echo $izin_acik ? '' : 'collapsed'; ?>">
                <i class="fas fa-file-signature me-2"></i> İzin Onay/Takip
            </a>
            <ul class="collapse list-unstyled <?php echo $izin_acik ? 'show' : ''; ?>" id="izinSubmenu" data-bs-parent="#accordionMenu">
                <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'insan_kaynaklari'])): ?>
                    <li><a href="../modules/izin-gir.php" class="<?php echo ($mevcut_sayfa == 'izin-gir.php') ? 'active' : ''; ?>"><i class="fas fa-calendar-plus me-2"></i> İzin Girişi</a></li>
                <?php endif; ?>
                <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'mudur', 'insan_kaynaklari'])): ?>
                    <li><a href="../modules/tum-izinler.php" class="<?php echo ($mevcut_sayfa == 'tum-izinler.php') ? 'active' : ''; ?>"><i class="fas fa-check-double me-2"></i> İzin Onayları</a></li>
                <?php endif; ?>                
                <?php if(in_array($rol, ['root', 'yonetici', 'insan_kaynaklari', 'muhasebe'])): ?>
                    <li><a href="../modules/tatil-yonetimi.php" class="<?php echo ($mevcut_sayfa == 'tatil-yonetimi.php') ? 'active' : ''; ?>"><i class="fas fa-calendar-alt me-2"></i> Tatil Yönetimi</a></li>
                <?php endif; ?>
            </ul>
        </li>
        <?php endif; ?>
        
        <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'mudur', 'insan_kaynaklari'])): ?>
        <li class="menu-item">
            <a href="#mesaiSubmenu" data-bs-toggle="collapse" aria-expanded="<?php echo $mesai_acik ? 'true' : 'false'; ?>" class="dropdown-toggle <?php echo $mesai_acik ? '' : 'collapsed'; ?>">
                <i class="fas fa-clock me-2"></i> Mesai & Puantaj
            </a>
            <ul class="collapse list-unstyled <?php echo $mesai_acik ? 'show' : ''; ?>" id="mesaiSubmenu" data-bs-parent="#accordionMenu">
                <?php if(in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari'])): ?>
                    <li><a href="../modules/admin-mesai-ekle.php" class="<?php echo ($mevcut_sayfa == 'admin-mesai-ekle.php') ? 'active' : ''; ?>"><i class="fas fa-user-clock me-2"></i> Mesai Girişi</a></li>
                <?php endif; ?>
                <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'mudur', 'insan_kaynaklari'])): ?>
                    <li><a href="../modules/tum-mesailer.php" class="<?php echo ($mevcut_sayfa == 'tum-mesailer.php') ? 'active' : ''; ?>"><i class="fas fa-tasks me-2"></i> Mesai Onayları</a></li>
                <?php endif; ?>
                <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'insan_kaynaklari'])): ?>
                    <li><a href="../modules/puantaj-cetveli.php" class="<?php echo ($mevcut_sayfa == 'puantaj-cetveli.php') ? 'active' : ''; ?>"><i class="fas fa-table me-2"></i> Puantaj Cetveli</a></li>

                <?php endif; ?>
            </ul>
        </li>
        <?php endif; ?>

        <?php if(in_array($rol, ['root', 'yonetici', 'muhasebe', 'insan_kaynaklari'])): ?>
        <li class="menu-item">
            <a href="#finansSubmenu" data-bs-toggle="collapse" aria-expanded="<?php echo $finans_acik ? 'true' : 'false'; ?>" class="dropdown-toggle <?php echo $finans_acik ? '' : 'collapsed'; ?>">
                <i class="fas fa-chart-line me-2"></i> Finans & Bordro
            </a>
            <ul class="collapse list-unstyled <?php echo $finans_acik ? 'show' : ''; ?>" id="finansSubmenu" data-bs-parent="#accordionMenu">
                <li><a href="../modules/maas-hesapla.php" class="<?php echo ($mevcut_sayfa == 'maas-hesapla.php') ? 'active' : ''; ?>"><i class="fas fa-money-bill-wave me-2"></i> Bordro Göster</a></li>
                <li><a href="../modules/mali-rapor.php" class="<?php echo ($mevcut_sayfa == 'mali-rapor.php') ? 'active' : ''; ?>"><i class="fas fa-chart-line me-2"></i> Mali Rapor</a></li>
                <li><a href="../modules/avans-giris.php" class="<?php echo ($mevcut_sayfa == 'avans-giris.php') ? 'active' : ''; ?>"><i class="fas fa-hand-holding-dollar me-2"></i> Avans Yönetimi</a></li>
                <li><a href="../modules/ikramiye-ekle.php" class="<?php echo ($mevcut_sayfa == 'ikramiye-ekle.php') ? 'active' : ''; ?>"><i class="fas fa-gift me-2"></i> İkramiye Ver</a></li>
                <li><a href="../modules/raporlar.php" class="<?php echo ($mevcut_sayfa == 'raporlar.php') ? 'active' : ''; ?>"><i class="fas fa-file-invoice me-2"></i> Genel Raporlar</a></li>
            </ul>
        </li>
        <li>
            <a href="../modules/yedek-al.php" onclick="return confirm('Veritabanının tam yedeği indirilsin mi? !! Log kayıtlarına eklenecektir !!');">
                <i class="fas fa-database me-2"></i> Veritabanı Yedekle
            </a>
        </li>
        <?php endif; ?>

        <?php if($rol == 'root'): ?>
            <li>
                <a href="../modules/sistem-ayarlari.php" class="<?php echo ($mevcut_sayfa == 'sistem-ayarlari.php') ? 'active' : ''; ?>">
                    <i class="fas fa-cogs me-2"></i> Sistem Ayarları
                </a>
            </li>
            <li>
                <a href="../modules/log-izleme.php" class="<?php echo ($mevcut_sayfa == 'log-izleme.php') ? 'active' : ''; ?>">
                    <i class="fas fa-shield-alt me-2"></i> Sistem Logları
                </a>
            </li>
        <?php endif; ?>
    </ul>
</nav>

<div id="content">

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

<script>
// Menüyü Açma/Kapama İşlevleri
function toggleMobileMenu() {
    var sidebar = document.getElementById('sidebar');
    var overlay = document.getElementById('sidebar-overlay');
    
    if (sidebar.classList.contains('active')) {
        sidebar.classList.remove('active');
        if(overlay) overlay.classList.remove('active');
    } else {
        sidebar.classList.add('active');
        if(overlay) overlay.classList.add('active');
    }
}

function closeMobileMenu() {
    var sidebar = document.getElementById('sidebar');
    var overlay = document.getElementById('sidebar-overlay');
    
    sidebar.classList.remove('active');
    if(overlay) overlay.classList.remove('active');
}

document.addEventListener("DOMContentLoaded", function () {
    var mobileTrigger = document.getElementById('mobile-menu-trigger');
    if(mobileTrigger) {
        mobileTrigger.addEventListener('click', function(e) {
            e.stopPropagation(); 
            toggleMobileMenu();
        });
    }

    var overlay = document.getElementById('sidebar-overlay');
    if(overlay) {
        overlay.addEventListener('click', closeMobileMenu);
    }

    var closeBtn = document.getElementById('sidebarCloseInside');
    if(closeBtn) {
        closeBtn.addEventListener('click', closeMobileMenu);
    }
});
</script>