From: Yoan Le Clanche Date: Tue, 16 Dec 2025 14:14:22 +0000 (+0100) Subject: "New" badge on not read items : https://trackers.pilotsystems.net/prebarreau/0952 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=7200640d0a65a5d8e4ce7d4509c5f0928973be23;p=teleforma.git "New" badge on not read items : https://trackers.pilotsystems.net/prebarreau/0952 --- diff --git a/teleforma/static/teleforma/css/teleforma.css b/teleforma/static/teleforma/css/teleforma.css index 8deb4233..3c077182 100644 --- a/teleforma/static/teleforma/css/teleforma.css +++ b/teleforma/static/teleforma/css/teleforma.css @@ -3412,4 +3412,14 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad #flex-container > .raw-item { width: 5rem; +} + +/* New resource indicator */ +.new-resource { + background-color: #e74c3c; + color: white; + padding: 2px 8px; + border-radius: 3px; + font-size: 0.85em; + font-weight: bold; } \ No newline at end of file diff --git a/teleforma/templates/teleforma/inc/document_list.html b/teleforma/templates/teleforma/inc/document_list.html index 34542413..cc31f5fa 100644 --- a/teleforma/templates/teleforma/inc/document_list.html +++ b/teleforma/templates/teleforma/inc/document_list.html @@ -17,9 +17,14 @@ {% for doc in docs %} - {% if doc.file %}{% endif %} {{ doc.title }}{% if doc.file %}{% endif %} - {{ doc.date_added }} + {% if doc.file %}{% endif %} {{ doc.title }}{% if doc.file %}{% endif %} + {{ doc.date_added }} {% if doc.file %}{% endif %} + + {% if not doc|document_read:user %} + Nouveau + {% endif %} + {% endfor %} diff --git a/teleforma/templates/teleforma/inc/media_list.html b/teleforma/templates/teleforma/inc/media_list.html index 720994b7..3738c884 100644 --- a/teleforma/templates/teleforma/inc/media_list.html +++ b/teleforma/templates/teleforma/inc/media_list.html @@ -60,6 +60,9 @@ {% endif %} {% endif %} + {% if not conference.video|media_read:user %} + Nouveau + {% endif %} {% if conference.video.file %} {% if not "video" in conference.video.mime_type or request.user_agent.os.family == 'iOS' %} diff --git a/teleforma/templatetags/teleforma_tags.py b/teleforma/templatetags/teleforma_tags.py index f77232a0..3732c183 100644 --- a/teleforma/templatetags/teleforma_tags.py +++ b/teleforma/templatetags/teleforma_tags.py @@ -52,7 +52,7 @@ from docutils.core import publish_parts from teleforma.views.core import get_course_conferences from ..exam.models import Quota, Script -from ..models.core import Document, Professor +from ..models.core import Document, MediaRead, Professor from ..models.crfpa import IEJ, Course, NewsItem, Training, QuizValidation from ..views import get_courses from ..utils import generate_hash @@ -537,3 +537,11 @@ def quiz_validated(quiz, user): return validations[0].date_validated else: return '' + +@register.filter +def document_read(document, user): + return document.readers.filter(id=user.id).exists() + +@register.filter +def media_read(media, user): + return MediaRead.objects.filter(media=media, user=user).exists() diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 436ca5f1..c609141a 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -823,6 +823,9 @@ class DocumentView(CourseAccessMixin, DetailView): bucket = False if get_access(document, courses): + # Track document read + document.readers.add(request.user) + if settings.TELEFORMA_PRIVATE_DOCUMENTS_MODE: file = document.private_file(request.user) if settings.TELEFORMA_PRIVATE_MEDIA_USE_S3: