Kurs Yayınlama Tercihi (Publishing & Visibility)
Kursun ana pazaryeri mi, academy vitrini mi, yoksa her ikisinde mi görüneceğini belirleyen görünürlük sistemi; courses.visibilityType ve güvenlik bayrakları.
Achidemy’de bir kurs hem ana pazaryerinde hem de eğitmenin kendi academy vitrini içinde görünebilir. Bu “Publishing & Visibility” sistemi, kursun nerede listeleneceğini tek kaynak üzerinden kontrol eder.
Veritabanı alanları (courses)
Section titled “Veritabanı alanları (courses)”Şema: app/db/schema.ts → courses
Yeni alanlar:
visibilityType:"marketplace_only" | "academy_only" | "both"(default:both)isMarketplacePublished: boolean (default:true) — ekstra güvenlik bayrağıisAcademyPublished: boolean (default:true)
Migration: drizzle/0042_courses_publishing_visibility.sql
Storefront filtreleme
Section titled “Storefront filtreleme”Kurs sorguları tenant olup olmamasına göre filtrelenir.
1) Academy host (tenant)
Section titled “1) Academy host (tenant)”courses.academyId === tenant.idcourses.isAcademyPublished === truevisibilityType IN ("academy_only", "both")
2) Ana pazaryeri
Section titled “2) Ana pazaryeri”courses.isMarketplaceVisible === true(legacy flag)courses.isMarketplacePublished === truevisibilityType IN ("marketplace_only", "both")
Bu mantık app/lib/db-queries.ts içindeki helper sorgularda (örn. getFeaturedCourses) ve storefront loader’larında uygulanır.
Eğitmen paneli (UI)
Section titled “Eğitmen paneli (UI)”Eğitmenin kurs yönetim ekranında, kursun görünürlük modunu seçebileceği bir “Yayınlama Tercihi” kartı bulunur:
- Dosya hedefi:
app/routes/instructor.course.$slug.manage.setup.tsx