CONTEXT MENU ANALİZİ

Muzibu Sağ Tuş Menüleri & Componentler

Kategorizasyon • Hiyerarşi • Eksikler • Öneriler

25 Aralık 2025

Basit Anlatım (Herkes İçin)

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.

1 Sistem Mimarisi

UI Layer (Blade)

  • context-menu.blade.php
  • rating-modal.blade.php
  • playlist-select-modal.blade.php

Kullanıcıya görünen arayüz

Logic Layer (JS)

  • menu-builder.js
  • action-executor.js

Menü oluşturma ve action yönetimi

Handler Layer (JS)

  • play-handler.js
  • queue-handler.js
  • favorite-handler.js
  • rating-handler.js
  • playlist-handler.js

Ortak işlem fonksiyonları

Content Type Actions (JS)

song-actions.js

7 action

album-actions.js

4 action

playlist-actions.js

5 action

genre-actions.js

3 action

sector-actions.js

3 action

radio-actions.js

3 action

artist-actions.js

4 action

2 Blade Componentler

resources/views/components/muzibu/

Song Components 3 varyant
  • song-card.blade.php - Grid kart
  • song-row.blade.php - Tablo satırı
  • song-list-item.blade.php - Kompakt liste
Diğer Kartlar 6 adet
  • album-card.blade.php
  • playlist-card.blade.php
  • genre-card.blade.php
  • sector-card.blade.php
  • radio-card.blade.php
  • artist-card.blade.php
Yardımcılar
  • create-playlist-modal.blade.php
  • empty-state.blade.php
  • lazy-image.blade.php
  • horizontal-scroll-section.blade.php

resources/views/themes/muzibu/components/

Context Menu

  • context-menu.blade.php
  • rating-modal.blade.php
  • playlist-select-modal.blade.php

Layout

  • header.blade.php
  • sidebar.blade.php
  • footer.blade.php
  • player.blade.php

Modals

  • auth-modal.blade.php
  • device-limit-modal.blade.php
  • create-playlist-modal.blade.php

3 Menu Actions Karşılaştırması

İçerik Tipi
Çal

Sıraya

Favori

Puan

Playlist

Albüm

Sanatçı

Düzenle

Sil
Song - -
Album - - -
Playlist - - -
Genre - - - -
Sector - - - -
Radio - - - -
Artist - - - -
Aktif Yok Şartlı (varsa görünür) Sadece sahip ise - Geçerli değil

4 Dosya Hiyerarşisi

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
                

5 Eksikler & Tutarsızlıklar

Eksik Özellikler

  • Album için "Puan Ver" yok

    Şarkılara puan verilebiliyor ama albümlere puan verilemiyor.

  • Album için "Playliste Ekle" yok

    Tüm albümü playliste eklemek kullanıcı açısından faydalı olurdu.

  • Artist için "playArtist" TODO

    artist-actions.js'de TODO notu var, özel implementasyon yok.

  • "Detaya Git" menu item'ı eksik

    action-executor.js'de goToDetail var ama menu-builder.js'de yok.

  • "Paylaş" action'ı yok

    Social sharing özelliği hiçbir content type için mevcut değil.

Tutarsızlıklar

  • Sector/Radio delegasyon yapıyor

    getSectorMenuItems ve getRadioMenuItems, getGenreMenuItems'a yönlendiriyor. Kendi özellikleri yok.

  • content-actions.js gereksiz kod tekrarı

    Diğer action dosyalarıyla aynı fonksiyonları içeriyor. DRY prensibine aykırı.

  • Radio card farklı layout

    Play butonu merkeze konumlandırılmış, diğer kartlarda sağ alt.

  • ID field isimleri tutarsız

    song.id, genre.genre_id, radio.radio_id, sector.sector_id - standart yok.

  • Song component 3 varyant

    song-card, song-row, song-list-item var. Diğer tipler için tek varyant.

6 Öneriler

1

Album için "Playliste Ekle" ve "Puan Ver" ekle

Kullanıcılar tüm albümü tek tıkla playliste ekleyebilmeli. Ayrıca albümlere de puan verebilmeliler.

menu-builder.js → getAlbumMenuItems()
2

"Paylaş" action'ı ekle

Tüm content type'lar için Web Share API veya clipboard copy ile paylaşım özelliği.

handlers/ → share-handler.js oluştur
3

content-actions.js'yi kaldır veya base class yap

Kod tekrarını önlemek için ya silinmeli ya da diğer action dosyaları bunu extend etmeli.

4

Sector ve Radio için özel menu items

Genre'ye delegasyon yerine kendi özelliklerini içermeli. Örn: Radio için "Canlı Dinle" gibi özel action.

5

ID field isimlerini standartlaştır

Tüm modeller için id kullan veya {type}_id pattern'ini tutarlı uygula.

6

Radio card layout'u diğerlerle uyumlu yap

Play butonu sağ alt köşeye taşınmalı. Şu an merkeze konumlandırılmış, diğer kartlardan farklı.

15
JS Dosyası
12
Blade Component
7
Content Type
5
Eksik Özellik