Sayfa #53 - Çalma Listelerim
Çalma Listelerim
Kullanıcıların oluşturduğu tüm çalma listelerini gösteren yönetim sayfası tasarladık.
Yeni liste oluşturma, düzenleme, silme ve paylaşma
tek ekrandan yapılabiliyor.
Oluşturma
- Yeni playlist oluştur butonu
- İsim ve açıklama girişi
- Kapak görseli yükleme
- Gizlilik ayarı (Public/Private)
Yönetim
- Sürükle-bırak sıralama
- Şarkı ekleme/çıkarma
- Paylaşım linki oluşturma
- Playlist silme
1
Playlistler Yüklenir
playlists tablosundan kullanıcının listeleri çekilir
2
Şarkı Sayıları Hesaplanır
Her playlist için toplam şarkı ve süre hesaplanır
3
Mozaik Kapaklar Oluşturulur
İlk 4 şarkının kapaklarından otomatik mozaik yapılır
4
Sıralama Kaydedilir
Sürükle-bırak ile değişen sıra anında veritabanına yazılır
Admin Panelden Ne Görebilirsiniz?
Arkaplanda Neler Çalışıyor?
Çalma listelerim sayfası açıldığında, sistem tüm playlistlerinizi yükler, şarkı sayılarını hesaplar
ve kapak görsellerini oluşturur. İşte perde arkasındaki işlemler:
1. Playlist Listesi Yükleme
Playlist::where('user_id', auth()->id()) sorgusu ile kullanıcının tüm çalma listeleri çekilir. withCount('songs') ile her liste için şarkı sayısı tek sorguda alınır.
playlist_song pivot tablosu playlist-şarkı ilişkisini tutar. Her kayıtta position alanı sıralama için, added_at eklenme tarihi için kullanılır.
3. Mozaik Kapak Oluşturma
Özel kapak yüklenmemişse, MosaicService ilk 4 şarkının albüm kapaklarını 2x2 grid şeklinde birleştirir. Sonuç ImageMagick ile işlenip önbelleğe alınır.
Her playlist için toplam süre, ilişkili şarkıların duration alanları toplanarak hesaplanır: $playlist->songs->sum('duration'). Sonuç "2 saat 18 dk" formatında gösterilir.
5. Sürükle-Bırak Sıralama
SortableJS kütüphanesi ile sürükle-bırak aktif. Sıra değiştiğinde AJAX isteği ile updateOrder() endpoint'i çağrılır ve yeni pozisyonlar veritabanına yazılır.
Her playlist için visibility alanı: public (herkes görebilir), private (sadece sen), unlisted (link ile erişim). Değişiklik anında kaydedilir.
Bu Sayfanın Anahtar Terimleri
Playlist Model
Çalma listesi verilerini tutan yapı
Pivot Table
Playlist-Şarkı ilişkisini tutan ara tablo
Drag & Drop
Sürükle-bırak ile sıralama
Visibility
Public, Private, Unlisted seçenekleri