Sayfa #48 - Playlist Detay
Playlist Detay Sayfası
Çalma listesi detay sayfası ile kullanıcılar playlistlerin içeriğini görebilir.
Kapak görseli, açıklama, şarkı sayısı, toplam süre ve
tek tıkla tüm listeyi çalma imkanı sunuluyor.
Playlist Bilgileri
- Kapak görseli (4 şarkıdan mozaik)
- Playlist adı ve açıklaması
- Oluşturan kullanıcı bilgisi
- Beğeni ve kaydetme sayısı
Çalma Özellikleri
- Tümünü çal butonu
- Karıştır (shuffle) modu
- Sürükle-bırak sıralama
- Şarkı ekleme/çıkarma
1
Playlist Verileri Yüklenir
playlists tablosundan başlık, açıklama, kapak çekilir
2
Şarkı Listesi Getirilir
playlist_songs pivot tablosundan sıralı şarkı listesi
3
Yetki Kontrolü Yapılır
Public mi? Kullanıcının kendi listesi mi? Düzenleme yetkisi var mı?
4
Toplam Süre Hesaplanır
Tüm şarkıların süreleri toplanır (örn: 2 saat 34 dakika)
Admin Panelden Ne Görebilirsiniz?
Arkaplanda Neler Çalışıyor?
Bir playlist detay sayfası görüntülendiğinde, sistem şu adımları sırayla gerçekleştirir:
Playlist Verisi Çekme
Playlist::where('slug', $slug)->with(['user', 'media'])->firstOrFail() sorgusu çalışır. Playlist başlığı, açıklaması, oluşturan kullanıcı ve kapak görseli tek sorguda getirilir.
Pivot Table ile Şarkı Listesi
$playlist->songs()->withPivot('order')->orderBy('pivot_order')->get() sorgusu playlist_song pivot tablosundan şarkıları sırasına göre getirir. Her şarkının playlist içindeki pozisyonu order alanında tutulur.
Görünürlük ve Yetki Kontrolü
$playlist->visibility alanı kontrol edilir: "public" (herkes görür), "private" (sadece sahibi) veya "unlisted" (linkle erişim). Gate::allows('view', $playlist) ile yetki doğrulanır.
Toplam Süre Hesaplama
$playlist->songs->sum('duration') ile tüm şarkıların süreleri toplanır. Sonuç gmdate('H:i:s', $totalSeconds) formatında "1:42:35" olarak gösterilir.
Shuffle Modu Hazırlığı
"Karıştır" butonuna basıldığında $playlist->songs->shuffle() metodu çalışır. Şarkılar rastgele sıraya dizilir ve Alpine.js store'a bu sıra aktarılır.
Collaborative Editing Kontrolü
$playlist->collaborators()->where('user_id', auth()->id())->exists() kontrolü yapılır. Kullanıcı collaborator ise "Şarkı Ekle/Çıkar" ve "Sıra Değiştir" butonları aktif edilir.
Bu Sayfanın Anahtar Terimleri
Pivot Table
Playlist-şarkı ilişkisini tutan ara tablo
Shuffle
Şarkıları rastgele sırada çalma modu
Collaborative Playlist
Birden fazla kişinin düzenleyebildiği liste
Visibility
Public, Private veya Unlisted erişim türleri