TAM TEŞEKKÜLLü v2 YENİ TABLO YOK! Sadece Main Alan 6 Ocak 2026

Tam Teşekküllü Dinamik Sistem v2

Sortable, Saat/Gün/Sektör/Tür, Ana/İç Sayfa, Radio/Playlist/Album - Sadece Main İçerik Alanı!

v2 Değişiklikleri

  • Zone field kaldırıldı: Artık sadece main (ana içerik) alanında gösterim var. Sidebar/footer için bu sistem kullanılmayacak.
  • Sadeleştirildi: placement_rules JSON'dan "zone" field'ı çıkarıldı. Admin panel Tab 5'ten "Zone (Bölge)" bölümü kaldırıldı.
  • Kullanım: Tüm koleksiyonlar otomatik olarak main content area'da gösterilir.

Tablo Durumu: SADECE 2 YENİ TABLO!

✅ MEVCUT (Dokunmuyoruz)

muzibu_sectors
Cafe, Restaurant, Gym, SPA
muzibu_genres
Rock, Jazz, Pop, Classical (ZATEN var!)
muzibu_playlists
Tüm playlist'ler
muzibu_albums
Tüm albümler
muzibu_radios
Tüm radio'lar
muzibu_playlistables
Polymorphic pivot (sector/genre bağlantısı)

⭐ YENİ (Sadece 2 Tablo!)

1. muzibu_content_collections
• name, slug, type, icon, color
display_rules JSON (saat/gün/sektör/tür)
visibility_conditions JSON (auth/subscription)
placement_rules JSON (sayfa/konum/sıralama)
• priority, is_active
2. muzibu_collection_items
• collection_id (FK)
item_type (playlist/album/radio)
• item_id
position INT (sortable!)
🎉 TOPLAM: 2 Yeni Tablo, Tüm Özellikler JSON'da!
Tag/Category için yeni tablo YOK! Mevcut muzibu_genres kullanacağız.

📝 Basit Anlatım (Herkes İçin)

Tüm Dinamik Özellikler:

1. Sürükle-Bırak Sıralama
  • • Koleksiyonlar sürüklenip sıralanabilir (position)
  • • İçindeki playlist'ler sürüklenip sıralanabilir
  • • Real-time önizleme
2. Saat Aralığı Seçimi
  • • Başlangıç saati: 07:00
  • • Bitiş saati: 11:00
  • • Otomatik gösterim/gizleme
3. Gün Seçimi
  • • Checkbox: Pzt, Sal, Çar, Per, Cum, Cmt, Paz
  • • Sadece seçili günlerde göster
  • • Özel günler için tarih aralığı
4. Sektör Seçimi
  • • Cafe, Restaurant, Gym, SPA (checkbox)
  • • Boş = tüm sektörler
  • • Çoklu seçim mevcut
5. Tür (Genre) Seçimi
  • • Rock, Jazz, Pop, Classical (mevcut tablo!)
  • • Çoklu seçim
  • • Boş = tüm türler
6. Sayfa Seçimi
  • • Anasayfa (home)
  • • Sektör sayfası (sector_show)
  • • Playlist listesi (playlists_index)
  • • Album listesi, Radio listesi...
7. İçerik Tipi Seçimi
  • • Playlist seç (çoklu)
  • • Album seç (çoklu)
  • • Radio seç (çoklu)
  • • Hepsini karıştır!
8. Kullanıcı Koşulları
  • • Giriş yapmış/yapmamış
  • • Premium/Free/Corporate
  • • Minimum dinleme saati

🔧 Complete JSON Schema (Zone Field KALDIRILDI)

muzibu_content_collections (3 JSON Field)

{
  "collection_id": 1,
  "name": {"tr": "☕ Kahve Keyfi", "en": "Coffee Time"},
  "slug": {"tr": "kahve-keyfi", "en": "coffee-time"},
  "type": "sector_based",
  "icon": "fa-coffee",
  "color": "#f59f00",

  // ========== 1. DISPLAY RULES (Ne Zaman Göster?) ==========
  "display_rules": {
    // Saat Aralığı
    "time_range": {
      "start": "07:00",
      "end": "11:00"
    },

    // Gün Seçimi
    "days": ["Mon", "Tue", "Wed", "Thu", "Fri"],

    // Sektör Filtreleme (display için)
    "sectors": [1, 2],  // null = tüm sektörler

    // Tür (Genre) Filtreleme
    "genres": [5, 7, 9],  // null = tüm türler

    // Tarih Aralığı (Özel Günler)
    "date_range": {
      "start": "2026-01-01",
      "end": "2026-01-31"
    },

    // Özel Tarihler (Yılbaşı, Sevgililer Günü vb.)
    "special_dates": ["2026-12-31", "2026-02-14"],

    // Timezone
    "timezone": "Europe/Istanbul"
  },

  // ========== 2. VISIBILITY CONDITIONS (Kime Göster?) ==========
  "visibility_conditions": {
    // Giriş Gerekli mi?
    "auth_required": false,

    // Abonelik Tipleri
    "subscription_types": ["premium", "corporate"],  // null = hepsi

    // Kullanıcı Sektörü
    "user_sectors": [1, 2],  // null = hepsi

    // Minimum Abonelik Süresi (gün)
    "min_subscription_days": 7,

    // Minimum Dinleme Saati
    "min_listening_hours": 10,

    // Favori Türler (varsa)
    "favorite_genres": [5, 7],

    // Yakın Zamanda Dinledi mi?
    "recently_played": true
  },

  // ========== 3. PLACEMENT RULES (Nerede Göster?) ==========
  "placement_rules": {
    // Hangi Sayfalarda?
    "pages": [
      "home",              // Anasayfa
      "sector_show",       // Sektör detay (/sectors/cafe)
      "sector_index",      // Tüm sektörler
      "playlists_index",   // Playlist listesi
      "albums_index",      // Album listesi
      "radios_index",      // Radio listesi
      "genre_show",        // Tür sayfası (/genres/rock)
      "search_results"     // Arama sonuçları
    ],

    // Hangi Sektör Sayfalarında? (sector_show için)
    "sector_ids": [1, 2],  // null = tüm sektörlerde

    // Hangi Tür Sayfalarında? (genre_show için)
    "genre_ids": [5, 7],  // null = tüm türlerde

    // Sayfa İçinde Sıralama
    "position": 1,  // 1 = en üst, 2 = ikinci sıra...

    // ❌ "zone" field KALDIRILDI - Sadece main content area kullanılıyor!

    // Sticky (Üstte Sabitle)
    "is_sticky": false
  },

  "priority": 90,
  "is_active": true
}

v2 Değişikliği: Zone Field Kaldırıldı

v1'de "zone": "main" field'ı vardı. v2'de bu alan tamamen kaldırıldı.

Sebep: Sistem sadece main (ana içerik) alanında kullanılacak. Sidebar veya footer için bu çözüm kullanılmayacak, dolayısıyla zone seçimi gereksiz.

muzibu_collection_items (Sortable İçerik)

// Playlist #15 eklendi (position 1)
{
  "id": 1,
  "collection_id": 1,
  "item_type": "playlist",
  "item_id": 15,
  "position": 1  // ⭐ Sortable!
}

// Album #8 eklendi (position 2)
{
  "id": 2,
  "collection_id": 1,
  "item_type": "album",
  "item_id": 8,
  "position": 2
}

// Radio #3 eklendi (position 3)
{
  "id": 3,
  "collection_id": 1,
  "item_type": "radio",
  "item_id": 3,
  "position": 3
}

// Sürükle-bırak ile position güncellenir!
// Admin panelde drag-drop ile: 3 → 1, 1 → 2, 2 → 3

Admin Panel Mockup (Tam Teşekküllü)

Saat Aralığı (Ne Zaman Gösterilsin?)

Otomatik: Saat 07:00-11:00 arasında gösterilir, diğer saatlerde gizlenir

Gün Seçimi (Hangi Günlerde?)

Sadece seçili günlerde gösterilir (Pazartesi-Cuma)

Tarih Aralığı (Özel Günler)

Örnek: Yılbaşı kampanyası için 25 Aralık - 2 Ocak arası

Tab 3: Sektör/Tür Kuralları

Sektör Filtreleme (Hangi Sektörlerde Gösterilsin?)

(Boş bırakılırsa tüm sektörlerde gösterilir)
Seçili: Sadece Cafe sektöründe gösterilecek

Tür (Genre) Filtreleme (Hangi Türler İçin?)

(Boş = tüm türler)
İşaretli değil → Tüm türlerde gösterilecek

Tab 5: Sayfa Yerleşimi (Zone Kaldırıldı!)

Hangi Sayfalarda Gösterilsin?

Seçili: Anasayfa ve Sektör Sayfası'nda gösterilecek

Sayfa İçinde Sıralama (Position)

1 = En üstte (ilk sıra)
2 = İkinci sıra
3 = Üçüncü sıra...
Alternatif: Koleksiyonlar listesinde sürükle-bırak ile de sıralayabilirsiniz

Zone (Bölge) Seçimi - KALDIRILDI

v1'de sayfa bölgesi seçimi vardı: main, sidebar, footer

Neden Kaldırıldı?

Bu sistem sadece main (ana içerik) alanında kullanılacak. Sidebar veya footer için bu çözüm uygulanmayacak.

Dolayısıyla zone seçimi gereksiz olduğu için v2'de kaldırıldı. Tüm koleksiyonlar otomatik olarak ana içerik alanında gösterilir.

Tab 6: İçerik Seçimi (Sortable Drag & Drop!)

Mevcut İçerikler

Morning Jazz Cafe
Playlist • 25 songs
Bossa Nova Morning
Playlist • 30 songs
Cafe Vibes Vol.1
Album • 12 tracks

Koleksiyondaki İçerikler

15
Sürükle-bırak ile sıralayabilirsiniz!
1
Morning Jazz Cafe
Playlist • 25 songs
2
Bossa Nova Morning
Playlist • 30 songs
3
Cafe Vibes Vol.1
Album • 12 tracks
Otomatik Kayıt: Sürükle-bırak ile sıralama değiştiğinde position field'ı otomatik güncellenir (AJAX)
🎉

Tam Teşekküllü Sistem v2 - SADECE 2 YENİ TABLO!

Tüm dinamik özellikler JSON field'larda, Zone kaldırıldı, Sadece Main Alan!

📊
2 Yeni Tablo
content_collections
+ collection_items
🎨
3 JSON Field
display_rules
visibility_conditions
placement_rules
⚙️
8+ Özellik
Saat/Gün/Sektör/Tür
Sayfa/Sortable/Kullanıcı
🚀
Sadece Main Alan
Zone field kaldırıldı
Basitleştirildi!
Mevcut Tablolardan Yararlanıyoruz:
muzibu_sectors (Cafe, Restaurant...)
muzibu_genres (Rock, Jazz, Pop...)
muzibu_playlists, muzibu_albums, muzibu_radios
muzibu_playlistables (polymorphic pivot)