Add Premium feature with UI, model changes, and admin configuration

This commit is contained in:
mrtoine 2025-12-11 09:38:00 +01:00
parent 95111240bc
commit abe4a1a965
7 changed files with 156 additions and 6 deletions

View file

@ -11,15 +11,41 @@
<ol class="tocLessons">
{% for item in group.list %}
<li class="tocLesson{% if lesson and lesson.id == item.id %} current{% endif %}">
<a class="tocLink" href="{% url 'courses:lesson_detail' course.slug item.module.slug item.slug %}">
{{ item.name }}
<a class="tocLink {% if item.is_premium and user.profile.is_premium == False %}premium{% endif %}" href="{% url 'courses:lesson_detail' course.slug item.module.slug item.slug %}">
{{ item.name }} {% if item.is_premium %}<span class="premium-tag">PREMIUM</span>{% endif %}
{% if lesson and lesson.id == item.id %}<span class="tocCurrentTag">(cours actuel)</span>{% endif %}
</a>
{% if lesson and lesson.id == item.id %}
<div class="lessonInline">
<article class="lesson">
<div class="lesson">
{% if lesson.video_id %}
VIDEO {{ lesson.video_id }}<br />
{% if not lesson.is_premium %}
VIDEO {{ lesson.video_id }}<br />
{% else %}
{% if not user.profile.is_premium %}
<div class="alert premium-lock" role="note" aria-live="polite">
<div style="display:flex; gap:16px; align-items:flex-start;">
<i class="fa-solid fa-lock" aria-hidden="true" style="font-size:20px; margin-top:2px; color: var(--muted);"></i>
<div>
<h4 style="margin:0 0 8px 0;">Contenu réservé aux membres Premium</h4>
{% if user.is_authenticated %}
<p class="muted" style="margin:0 0 12px 0;">Devenez membre Premium pour accéder à la vidéo de ce cours.</p>
<div class="actions">
<a class="btn btn-primary" href="{% url 'home:premium' item.id %}">Découvrir Premium</a>
</div>
{% else %}
<p class="muted" style="margin:0 0 12px 0;">Connectez-vous ou devenez membre Premium pour accéder à la vidéo.</p>
<div class="actions" style="display:flex; gap:8px; flex-wrap:wrap;">
<a class="btn btn-secondary" href="{% url 'login' %}?next={% url 'courses:lesson_detail' course.slug module.slug lesson.slug %}">Se connecter</a>
<a class="btn btn-primary" href="{% url 'courses:list' %}">Découvrir Premium</a>
</div>
{% endif %}
</div>
</div>
</div>
{% endif %}
{% endif %}
{% endif %}
{{ lesson.content|safe }}
</article>