Kategorizasyon • Hiyerarşi • Eksikler • Öneriler
25 Aralık 2025
Context menu nedir? Bir şarkı, albüm veya playlist üzerine sağ tıkladığınızda (veya mobilde uzun bastığınızda) açılan menüdür. "Favorilere Ekle", "Sıraya Ekle", "Puan Ver" gibi seçenekler içerir.
Ne analiz ettik? Tüm context menu dosyalarını ve müzik kartı componentlerini inceledik. Hangi özellikler var, hangileri eksik, tutarsızlıklar neler - hepsini raporladık.
Sonuç: Sistem iyi tasarlanmış ama bazı tutarsızlıklar ve eksik özellikler var. Aşağıda detayları bulabilirsiniz.
Kullanıcıya görünen arayüz
Menü oluşturma ve action yönetimi
Ortak işlem fonksiyonları
song-actions.js
7 actionalbum-actions.js
4 actionplaylist-actions.js
5 actiongenre-actions.js
3 actionsector-actions.js
3 actionradio-actions.js
3 actionartist-actions.js
4 actionsong-card.blade.php - Grid kartsong-row.blade.php - Tablo satırısong-list-item.blade.php - Kompakt listealbum-card.blade.phpplaylist-card.blade.phpgenre-card.blade.phpsector-card.blade.phpradio-card.blade.phpartist-card.blade.phpcreate-playlist-modal.blade.phpempty-state.blade.phplazy-image.blade.phphorizontal-scroll-section.blade.phpContext Menu
context-menu.blade.phprating-modal.blade.phpplaylist-select-modal.blade.phpLayout
header.blade.phpsidebar.blade.phpfooter.blade.phpplayer.blade.phpModals
auth-modal.blade.phpdevice-limit-modal.blade.phpcreate-playlist-modal.blade.php| İçerik Tipi | Çal |
Sıraya |
Favori |
Puan |
Playlist |
Albüm |
Sanatçı |
Düzenle |
Sil |
|---|---|---|---|---|---|---|---|---|---|
| Song | - | - | |||||||
| Album | - | - | - | ||||||
| Playlist | - | - | - | ||||||
| Genre | - | - | - | - | |||||
| Sector | - | - | - | - | |||||
| Radio | - | - | - | - | |||||
| Artist | - | - | - | - |
public/themes/muzibu/js/context-menus/ ├── menu-builder.js # Dinamik menu item oluşturma ├── utils/ │ └── action-executor.js # Merkezi action yönetimi ├── actions/ │ ├── song-actions.js # 7 action: play, queue, fav, rate, playlist, album, artist │ ├── album-actions.js # 4 action: play, queue, fav, artist │ ├── playlist-actions.js # 5 action: play, queue, fav, edit, delete │ ├── genre-actions.js # 3 action: play, queue, fav │ ├── sector-actions.js # 3 action: play, queue, fav │ ├── radio-actions.js # 3 action: play, queue, fav │ ├── artist-actions.js # 4 action: play, queue, fav, goToDetail │ └── content-actions.js # Ortak (fallback) actions └── handlers/ ├── play-handler.js # Tüm tipler için play ├── queue-handler.js # Sıraya ekleme ├── favorite-handler.js # Favori toggle ├── rating-handler.js # Puan modal açma └── playlist-handler.js # Playliste ekleme modal resources/views/ ├── components/muzibu/ # Reusable card components │ ├── song-card.blade.php │ ├── song-row.blade.php │ ├── song-list-item.blade.php │ ├── album-card.blade.php │ ├── playlist-card.blade.php │ ├── genre-card.blade.php │ ├── sector-card.blade.php │ ├── radio-card.blade.php │ └── artist-card.blade.php └── themes/muzibu/components/ # Theme-specific components ├── context-menu.blade.php ├── rating-modal.blade.php └── playlist-select-modal.blade.php
Şarkılara puan verilebiliyor ama albümlere puan verilemiyor.
Tüm albümü playliste eklemek kullanıcı açısından faydalı olurdu.
artist-actions.js'de TODO notu var, özel implementasyon yok.
action-executor.js'de goToDetail var ama menu-builder.js'de yok.
Social sharing özelliği hiçbir content type için mevcut değil.
getSectorMenuItems ve getRadioMenuItems, getGenreMenuItems'a yönlendiriyor. Kendi özellikleri yok.
Diğer action dosyalarıyla aynı fonksiyonları içeriyor. DRY prensibine aykırı.
Play butonu merkeze konumlandırılmış, diğer kartlarda sağ alt.
song.id, genre.genre_id, radio.radio_id, sector.sector_id - standart yok.
song-card, song-row, song-list-item var. Diğer tipler için tek varyant.
Kullanıcılar tüm albümü tek tıkla playliste ekleyebilmeli. Ayrıca albümlere de puan verebilmeliler.
menu-builder.js → getAlbumMenuItems()
Tüm content type'lar için Web Share API veya clipboard copy ile paylaşım özelliği.
handlers/ → share-handler.js oluştur
Kod tekrarını önlemek için ya silinmeli ya da diğer action dosyaları bunu extend etmeli.
Genre'ye delegasyon yerine kendi özelliklerini içermeli. Örn: Radio için "Canlı Dinle" gibi özel action.
Tüm modeller için id kullan veya {type}_id pattern'ini tutarlı uygula.
Play butonu sağ alt köşeye taşınmalı. Şu an merkeze konumlandırılmış, diğer kartlardan farklı.