From 6bbef587a76e3a53c972afb104569d483d7ef796 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 15:43:05 +0200 Subject: [PATCH 01/44] Ajout attribut hashId dans le model et la migration --- pod_project/pods/migrations/0001_initial.py | 2 ++ pod_project/pods/models.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/pod_project/pods/migrations/0001_initial.py b/pod_project/pods/migrations/0001_initial.py index 815968b8..09b0f44f 100644 --- a/pod_project/pods/migrations/0001_initial.py +++ b/pod_project/pods/migrations/0001_initial.py @@ -297,6 +297,8 @@ class Migration(migrations.Migration): verbose_name='Owner', to=settings.AUTH_USER_MODEL)), ('tags', pods.models.MyTaggableManager(to='taggit.Tag', through='taggit.TaggedItem', blank=True, help_text='Separate tags with spaces, enclose the tags consist of several words in quotation marks.', verbose_name='Tags')), + ('hash_id', models.CharField( + max_length=250, verbose_name='HashId')), ], options={ 'verbose_name': 'Video', diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index fd7d5560..8040146a 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -304,6 +304,11 @@ class Pod(Video): help_text=_( u'Viewing this video will not be possible without this password.'), max_length=50, blank=True, null=True) + hash_id = models.CharField( + _('hash_id'), + help_text=_( + u'Hashcode to retrieve de video'), + max_length=100, blank=True, null=True) class Meta: verbose_name = _("Video") From a909eff7fae302a19c8272282b82bf063640cc75 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 15:46:59 +0200 Subject: [PATCH 02/44] Encodage de l'id pour avoir un hashId a la sauvegarde --- pod_project/pods/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index 8040146a..c4f28708 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -351,6 +351,9 @@ def save(self, *args, **kwargs): else: newid = self.id newid = '%04d' % newid + encodedId = base64.b64encode(str(newid)) + logging.warning('encodedId = %s' % encodedId) + self.hash_id = encodedId self.slug = "%s-%s" % (newid, slugify(self.title)) super(Pod, self).save(*args, **kwargs) From 10aedc464318f25ff007a8466c9b9a6852b076d6 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 16:13:02 +0200 Subject: [PATCH 03/44] fix: slug sur le hashId pour eviter des pb d'url --- pod_project/pods/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index c4f28708..c40b96ed 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -351,9 +351,13 @@ def save(self, *args, **kwargs): else: newid = self.id newid = '%04d' % newid - encodedId = base64.b64encode(str(newid)) - logging.warning('encodedId = %s' % encodedId) - self.hash_id = encodedId + if not self.hash_id: + encodedId = base64.b64encode(str(newid)) + logging.warning('encodedId = %s' % encodedId) + self.hash_id = slugify(encodedId) + else: + tmp_slug = slugify(self.hash_id) + self.hash_id = tmp_slug self.slug = "%s-%s" % (newid, slugify(self.title)) super(Pod, self).save(*args, **kwargs) From fa10026753ed1b2807c3884d53b31a2bd1a6cf46 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 16:24:13 +0200 Subject: [PATCH 04/44] =?UTF-8?q?Affichage=20du=20lien=20de=20partage=20de?= =?UTF-8?q?=20la=20video=20priv=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/pods/templates/videos/video.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index ccb38b05..75cc8583 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -446,6 +446,8 @@
+ +
From 7d268e735a4be9565937722f220f0df9eb44b1cf Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 16:48:32 +0200 Subject: [PATCH 05/44] =?UTF-8?q?fix:=20rajout=20'/'=20=C3=A0=20la=20fin?= =?UTF-8?q?=20du=20lien=20priv=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/pods/templates/videos/video.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index 75cc8583..7cf1b18d 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -447,7 +447,7 @@
- +
From da8e952234715a6df64cd5db77c4b29abbe39d96 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 17:14:38 +0200 Subject: [PATCH 06/44] Mise en place du mapping de la nouvelle url et recherche de la video sur le hashId --- pod_project/pod_project/urls-sample.py | 1 + pod_project/pods/views.py | 108 +++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index d07b4d47..3228b867 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -65,6 +65,7 @@ url(r'^tags/$', 'pods.views.tags', name='tags'), url(r'^videos/$', 'pods.views.videos', name='videos'), url(r'^video/(?P[\-\d\w]+)/$', 'pods.views.video', name='video'), + url(r'^video_priv/(?P[\-\d\w]+)/$', 'pods.views.video_priv', name='video_priv'), url(r'^video_edit/$', 'pods.views.video_edit', name='video_edit'), url(r'^video_edit/(?P[\-\d\w]+)/$', 'pods.views.video_edit', name='video_edit'), diff --git a/pod_project/pods/views.py b/pod_project/pods/views.py index 7976177f..53ca9d2c 100755 --- a/pod_project/pods/views.py +++ b/pod_project/pods/views.py @@ -48,6 +48,8 @@ from django.contrib.sites.shortcuts import get_current_site from django.db.models import Count import simplejson as json +import base64 +import logging from django.core.servers.basehttp import FileWrapper @@ -514,6 +516,112 @@ def video(request, slug, slug_c=None, slug_t=None): context_instance=RequestContext(request) ) +@csrf_protect +def video_priv(request, slug, slug_c=None, slug_t=None): + try: + h_id = slug + except ValueError: + raise SuspiciousOperation('Invalid video id') + video = get_object_or_404(Pod, hash_id=slug) + show_report = getattr(settings, 'SHOW_REPORT', False) + channel = None + if slug_c: + channel = get_object_or_404(Channel, slug=slug_c) + theme = None + if slug_t: + theme = get_object_or_404(Theme, slug=slug_t) + + if video.is_draft: + if not request.user.is_authenticated(): + return HttpResponseRedirect(reverse('account_login') + '?next=%s' % urlquote(request.get_full_path())) + else: + if request.user == video.owner or request.user.is_superuser: + pass + else: + messages.add_message( + request, messages.ERROR, _(u'You cannot watch this video.')) + raise PermissionDenied + + if video.is_restricted: + if not request.user.is_authenticated(): + return HttpResponseRedirect(reverse('account_login') + '?next=%s' % urlquote(request.get_full_path())) + + if request.POST: + if request.POST.get("action") and request.POST.get("action") == "increase_view_count": + if request.user.is_authenticated() and (request.user == video.owner or request.user.is_superuser): + pass + else: + video.view_count += 1 + video.save() + if request.is_ajax(): + return HttpResponse(_(u'The changes have been saved.')) + + ####### VIDEO PASSWORD ######### + if video.password and not (request.user == video.owner or request.user.is_superuser): + form = VideoPasswordForm() + if not request.POST: + return render_to_response( + 'videos/video.html', + {'video': video, 'form': form, 'channel': channel, + 'theme': theme, 'show_report': show_report}, + context_instance=RequestContext(request) + ) + else: + # A form bound to the POST data + form = VideoPasswordForm(request.POST) + if form.is_valid(): + password = form.cleaned_data['password'] + if password == video.password: + if request.GET.get('action') and request.GET.get('action') == "download": + return download_video(video, request.GET) + else: + return render_to_response( + 'videos/video.html', + {'video': video, 'channel': channel, + 'theme': theme, 'show_report': show_report}, + context_instance=RequestContext(request) + ) + else: + messages.add_message( + request, messages.ERROR, _(u'Incorrect password')) + return render_to_response( + 'videos/video.html', + {'video': video, 'form': form, 'channel': channel, + 'theme': theme, 'show_report': show_report}, + context_instance=RequestContext(request) + ) + else: + messages.add_message( + request, messages.ERROR, _(u'One or more errors have been found in the form.')) + return render_to_response( + 'videos/video.html', + {'video': video, 'form': form, 'channel': channel, + 'theme': theme, 'show_report': show_report}, + context_instance=RequestContext(request) + ) + + if request.user.is_authenticated(): + note, created = Notes.objects.get_or_create( + video=video, user=request.user) + notes_form = NotesForm(instance=note) + if request.GET.get('action') and request.GET.get('action') == "download": + return download_video(video, request.GET) + else: + return render_to_response( + 'videos/video.html', + {'video': video, 'channel': channel, 'theme': theme, + 'notes_form': notes_form, 'show_report': show_report}, + context_instance=RequestContext(request) + ) + if request.GET.get('action') and request.GET.get('action') == "download": + return download_video(video, request.GET) + else: + return render_to_response( + 'videos/video.html', + {'video': video, 'channel': channel, + 'theme': theme, 'show_report': show_report}, + context_instance=RequestContext(request) + ) def download_video(video, get_request): format = "video/mp4" if "video" in video.get_mediatype() else "audio/mp3" From 3190eab886f0c6af5fa245217a92d1044563b720 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 17:17:49 +0200 Subject: [PATCH 07/44] maj label de partage --- pod_project/pods/templates/videos/video.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index 7cf1b18d..fd132289 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -444,7 +444,7 @@

- + From ad488a529d61964827edecae8ed4e5c8b4ac2932 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 17:22:55 +0200 Subject: [PATCH 08/44] maj onglets de partage --- pod_project/pods/templates/videos/video.html | 56 +++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index fd132289..789a45c0 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -280,6 +280,14 @@

{% endif %} + {% if video.is_draft %} +
  • + + + {% trans 'Embed/Share (Private Mode)' %} + +
  • + {% endif %}
    @@ -444,8 +452,52 @@

    - + +
    +
    + + + {% trans 'Start video' %} + +
    + {% trans 'Check the box to indicate the beginning of playing desired.' %} +
    + +
    +

    + {% endif %} + + {% if video.is_draft %} +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    @@ -461,7 +513,7 @@
    {% endif %} - +
    {% if not request.GET.is_iframe %} From b66f5a8789d7b3436a81165cbf68eefaba31eef9 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 17:30:10 +0200 Subject: [PATCH 09/44] =?UTF-8?q?visualisation=20de=20videos=20priv=C3=A9e?= =?UTF-8?q?s=20par=20un=20utilisateur=20anonyme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/pod_project/urls-sample.py | 3 +++ .../pods/templates/videos/video_player.html | 8 ++++++++ pod_project/pods/views.py | 19 ++++++++----------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 3228b867..b8611003 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -95,6 +95,9 @@ url(r'^get_video_encoding/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', 'pods.views.get_video_encoding', name='get_video_encoding'), + url(r'^get_video_encoding_private/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', + 'pods.views.get_video_encoding_private', + name='get_video_encoding_private'), # Channel url(r'^channels/$', 'pods.views.channels', name='channels'), diff --git a/pod_project/pods/templates/videos/video_player.html b/pod_project/pods/templates/videos/video_player.html index 693c801b..9bd98ea8 100755 --- a/pod_project/pods/templates/videos/video_player.html +++ b/pod_project/pods/templates/videos/video_player.html @@ -69,11 +69,19 @@ {% endfor %} {% for encoding in video.encodingpods_set.all %} + {% if not video.is_draft %} + {% else %} + + {% endif %} {% endfor %} {% endif %} diff --git a/pod_project/pods/views.py b/pod_project/pods/views.py index 53ca9d2c..6e128f0f 100755 --- a/pod_project/pods/views.py +++ b/pod_project/pods/views.py @@ -531,17 +531,6 @@ def video_priv(request, slug, slug_c=None, slug_t=None): if slug_t: theme = get_object_or_404(Theme, slug=slug_t) - if video.is_draft: - if not request.user.is_authenticated(): - return HttpResponseRedirect(reverse('account_login') + '?next=%s' % urlquote(request.get_full_path())) - else: - if request.user == video.owner or request.user.is_superuser: - pass - else: - messages.add_message( - request, messages.ERROR, _(u'You cannot watch this video.')) - raise PermissionDenied - if video.is_restricted: if not request.user.is_authenticated(): return HttpResponseRedirect(reverse('account_login') + '?next=%s' % urlquote(request.get_full_path())) @@ -1610,6 +1599,14 @@ def get_video_encoding(request, slug, csrftoken, size, type, ext): """ return HttpResponseRedirect("%s%s" % (settings.FMS_ROOT_URL, encodingpods.encodingFile.url)) +def get_video_encoding_private(request, slug, csrftoken, size, type, ext): + video = get_object_or_404(Pod, slug=slug) + if video.is_restricted: + if not request.user.is_authenticated(): + return HttpResponseRedirect(reverse('account_login') + '?next=%s' % urlquote(request.get_full_path())) + encodingpods = get_object_or_404(EncodingPods, + encodingFormat="%s/%s" % (type, ext), video=video, encodingType__output_height=size) + return HttpResponseRedirect("%s%s" % (settings.FMS_ROOT_URL, encodingpods.encodingFile.url)) def autocomplete(request): suggestions = [entry.object.title for entry in res] From 301cc001d0905cbbfd16b408499e79d66b828dc7 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Mon, 3 Apr 2017 17:31:37 +0200 Subject: [PATCH 10/44] =?UTF-8?q?hashId=20g=C3=A9n=C3=A9r=C3=A9=20=C3=A0?= =?UTF-8?q?=20partir=20de=20l'id=20et=20du=20titre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/pods/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index c40b96ed..68e794b1 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -352,8 +352,8 @@ def save(self, *args, **kwargs): newid = self.id newid = '%04d' % newid if not self.hash_id: - encodedId = base64.b64encode(str(newid)) - logging.warning('encodedId = %s' % encodedId) + idToEncode = ''.join([str(newid), self.title]) # on encode id+title pour avoir un id unique et plus dur à retrouver + encodedId = base64.b64encode(idToEncode) self.hash_id = slugify(encodedId) else: tmp_slug = slugify(self.hash_id) From 554e631eb1df8cf01524136ef9d195bd2d37e114 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Tue, 4 Apr 2017 11:15:22 +0200 Subject: [PATCH 11/44] Masquage du champ input de hashId --- pod_project/pods/templates/videos/video_edit.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pod_project/pods/templates/videos/video_edit.html b/pod_project/pods/templates/videos/video_edit.html index 30574131..1a401f91 100755 --- a/pod_project/pods/templates/videos/video_edit.html +++ b/pod_project/pods/templates/videos/video_edit.html @@ -159,6 +159,9 @@ var $videoForm = $('#video_form'), $uploadMessageBox = $('#js-process'); + + var $hashIdGroup = $('#id_hash_id').parent('.form-group'); + $hashIdGroup.hide(); $uploadMessageBox.hide(); From 9b92db6ec952a92d281392bd2cf1fc39501dc50f Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Tue, 4 Apr 2017 16:23:40 +0200 Subject: [PATCH 12/44] Variable USE_PRIVATE_VIDEO pour activer la feature --- pod_project/pod_project/settings-sample.py | 3 ++- pod_project/pod_project/settings_local-sample.py | 2 ++ pod_project/pods/templates/videos/video.html | 4 ++-- pod_project/pods/templates/videos/video_player.html | 12 +++++++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pod_project/pod_project/settings-sample.py b/pod_project/pod_project/settings-sample.py index 8dfeacf1..9c7c6cfd 100755 --- a/pod_project/pod_project/settings-sample.py +++ b/pod_project/pod_project/settings-sample.py @@ -280,5 +280,6 @@ 'TITLE_ETB', 'TITLE_SITE', 'USE_XHR_FORM_UPLOAD', - 'WEBTV' + 'WEBTV', + 'USE_PRIVATE_VIDEO' ) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 5d02521d..d6a2fc96 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -410,3 +410,5 @@ CELERY_NAME = "pod_project" CELERY_BACKEND = "amqp" CELERY_BROKER = "amqp://guest@localhost//" + +USE_PRIVATE_VIDEO = False \ No newline at end of file diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index 789a45c0..ef63fcfe 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -280,7 +280,7 @@

    {% endif %} - {% if video.is_draft %} + {% if video.is_draft and USE_PRIVATE_VIDEO %}
  • @@ -468,7 +468,7 @@
    {% endif %} - {% if video.is_draft %} + {% if video.is_draft and USE_PRIVATE_VIDEO %}
    diff --git a/pod_project/pods/templates/videos/video_player.html b/pod_project/pods/templates/videos/video_player.html index 9bd98ea8..18b50c1b 100755 --- a/pod_project/pods/templates/videos/video_player.html +++ b/pod_project/pods/templates/videos/video_player.html @@ -76,11 +76,13 @@ data-res="{{ encoding.encodingType.output_height }}" > {% else %} - + {% if USE_PRIVATE_VIDEO %} + + {% endif %} {% endif %} {% endfor %} From 8286c59069bafbc1a172b914e68ece8e1890344e Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Tue, 16 May 2017 11:07:56 +0200 Subject: [PATCH 13/44] =?UTF-8?q?Valeur=20de=20hash=5Fid=20mis=20=C3=A0=20?= =?UTF-8?q?None=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/pods/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index 68e794b1..c942a623 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -308,7 +308,7 @@ class Pod(Video): _('hash_id'), help_text=_( u'Hashcode to retrieve de video'), - max_length=100, blank=True, null=True) + max_length=100, blank=True, null=True, default=None) class Meta: verbose_name = _("Video") From 7c9403e66ed3c0e47dfa42b603214e458357f4e5 Mon Sep 17 00:00:00 2001 From: dsi-cnam Date: Thu, 18 May 2017 14:09:20 +0200 Subject: [PATCH 14/44] fix: migration du modele pour l'ajout de hash_id --- pod_project/pods/migrations/0001_initial.py | 2 -- pod_project/pods/migrations/0014_hash_id.py | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 pod_project/pods/migrations/0014_hash_id.py diff --git a/pod_project/pods/migrations/0001_initial.py b/pod_project/pods/migrations/0001_initial.py index 09b0f44f..815968b8 100644 --- a/pod_project/pods/migrations/0001_initial.py +++ b/pod_project/pods/migrations/0001_initial.py @@ -297,8 +297,6 @@ class Migration(migrations.Migration): verbose_name='Owner', to=settings.AUTH_USER_MODEL)), ('tags', pods.models.MyTaggableManager(to='taggit.Tag', through='taggit.TaggedItem', blank=True, help_text='Separate tags with spaces, enclose the tags consist of several words in quotation marks.', verbose_name='Tags')), - ('hash_id', models.CharField( - max_length=250, verbose_name='HashId')), ], options={ 'verbose_name': 'Video', diff --git a/pod_project/pods/migrations/0014_hash_id.py b/pod_project/pods/migrations/0014_hash_id.py new file mode 100644 index 00000000..81caaad1 --- /dev/null +++ b/pod_project/pods/migrations/0014_hash_id.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pods', '0013_pod_is_360'), + ] + + operations = [ + migrations.AddField( + model_name='pod', + name='hash_id', + field=models.CharField(default=None, max_length=100, blank=True, help_text='Hashcode to retrieve de video', null=True, verbose_name='hash_id'), + ), + ] From 251be8e2253ea9108e9ca5e1a026195efc93f383 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Thu, 11 May 2017 16:30:28 +0200 Subject: [PATCH 15/44] Settings for passworded / restricted access contents (cherry picked from commit d6f365bcd9fab89b535d91f2ec2dbd3d60d58a1b) --- pod_project/pod_project/settings_local-sample.py | 9 +++++++++ pod_project/pods/templatetags/list.py | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 0f05c823..5a9f4f3b 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -254,6 +254,15 @@ HELP_MAIL = 'support@univ.fr' +## +# Homepage shows (or not) passworded and restricted access contents. +# Note: if both settings are “False”, contents shown on homepage +# are accessible to anybody. +# +HOMEPAGE_SHOWS_PASSWORDED = True +HOMEPAGE_SHOWS_RESTRICTED = True + + ## # WebM video encoding activation: # diff --git a/pod_project/pods/templatetags/list.py b/pod_project/pods/templatetags/list.py index 5463f7f7..30c176b3 100755 --- a/pod_project/pods/templatetags/list.py +++ b/pod_project/pods/templatetags/list.py @@ -182,8 +182,14 @@ def get_label_cursus(cursus): @register.inclusion_tag("videos/videos_list.html") def get_last_videos(): + filter_args = {'encodingpods__gt': 0, 'is_draft': False} + if not settings.HOMEPAGE_SHOWS_PASSWORDED: + filter_args['password'] = "" + if not settings.HOMEPAGE_SHOWS_RESTRICTED: + filter_args['is_restricted'] = False return { - 'videos': Pod.objects.filter(is_draft=False, password='', encodingpods__gt=0).exclude(channel__visible=0).order_by("-date_added").distinct()[:9], + 'videos': Pod.objects.filter(**filter_args).exclude( + channel__visible=0).order_by("-date_added").distinct()[:9], 'DEFAULT_IMG': settings.DEFAULT_IMG } From 8d6459de7a47209bc25ab9893017e87b680a36d5 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 19 May 2017 14:59:12 +0200 Subject: [PATCH 16/44] Passworded setting modified to reflect previous built-in value --- pod_project/pod_project/settings_local-sample.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 5a9f4f3b..14cda8fa 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -259,7 +259,7 @@ # Note: if both settings are “False”, contents shown on homepage # are accessible to anybody. # -HOMEPAGE_SHOWS_PASSWORDED = True +HOMEPAGE_SHOWS_PASSWORDED = False HOMEPAGE_SHOWS_RESTRICTED = True @@ -418,7 +418,7 @@ # Enable RSS feed and ATOM feed on channels and search results # # - True : button to suscribe to feed appears in navigation toolbar -# +# # RSS_ENABLED = False ATOM_HD_ENABLED = False From 1b276dbdf2f65f7532fefac62438860563b74b87 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Thu, 11 May 2017 16:43:02 +0200 Subject: [PATCH 17/44] Setting for number of displayed contents (cherry picked from commit 8128e0f159c826895ea1f0ca33a21a908e6b021d) --- pod_project/pod_project/settings_local-sample.py | 7 ++++++- pod_project/pods/templatetags/list.py | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 14cda8fa..3ef141ea 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -255,10 +255,15 @@ ## -# Homepage shows (or not) passworded and restricted access contents. +# Homepage settings: +# +# defines how many contents are shown on homepage, +# and if it displays (or not) passworded and restricted access contents. +# # Note: if both settings are “False”, contents shown on homepage # are accessible to anybody. # +HOMEPAGE_NBR_CONTENTS_SHOWN = 9 HOMEPAGE_SHOWS_PASSWORDED = False HOMEPAGE_SHOWS_RESTRICTED = True diff --git a/pod_project/pods/templatetags/list.py b/pod_project/pods/templatetags/list.py index 30c176b3..e692991b 100755 --- a/pod_project/pods/templatetags/list.py +++ b/pod_project/pods/templatetags/list.py @@ -189,7 +189,8 @@ def get_last_videos(): filter_args['is_restricted'] = False return { 'videos': Pod.objects.filter(**filter_args).exclude( - channel__visible=0).order_by("-date_added").distinct()[:9], + channel__visible=0).order_by( + "-date_added").distinct()[:settings.HOMEPAGE_NBR_CONTENTS_SHOWN], 'DEFAULT_IMG': settings.DEFAULT_IMG } From 2c044b70f36d2664138907d605d845fc94e00f56 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 28 Apr 2017 16:35:58 +0200 Subject: [PATCH 18/44] =?UTF-8?q?Adds=20=C2=AB=C2=A0EMAIL=5FON=5FENCODING?= =?UTF-8?q?=5FCOMPLETION=C2=A0=C2=BB=20local=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … and exposes it to templates. (cherry picked from commit dd3bc458d83abd2ca2d867b9e251679690cca14c) --- pod_project/pod_project/settings-sample.py | 1 + pod_project/pod_project/settings_local-sample.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/pod_project/pod_project/settings-sample.py b/pod_project/pod_project/settings-sample.py index 620a7221..6340fc7e 100755 --- a/pod_project/pod_project/settings-sample.py +++ b/pod_project/pod_project/settings-sample.py @@ -265,6 +265,7 @@ 'DC_COVERAGE', 'DC_RIGHTS', 'DEFAULT_IMG', + 'EMAIL_ON_ENCODING_COMPLETION', 'FILTER_USER_MENU', 'FMS_LIVE_URL', 'HELP_MAIL', diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 0f05c823..e98bbdc0 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -272,6 +272,18 @@ ENCODE_WAV = True +## +# Send email to content owner when encoding is complete: +# +# True: an email is sent to content owner on encoding completion, +# False: no email on encoding completion. +# +# Note: even if this setting is set to « True », no email will be sent when +# encoding is launched via admin interface (admin re-encoding tasks). +# +EMAIL_ON_ENCODING_COMPLETION = False + + ## # Dublin Core application-wide tags: # From fd3fbfb7fe60ac20b814cba5ddcb8061256b59dc Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 28 Apr 2017 17:05:11 +0200 Subject: [PATCH 19/44] Renaming dummy variable to allow use of ugettext alias (cherry picked from commit 07877516d39eb5b4bb5ec279b6cc9645b589d36c) --- pod_project/core/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pod_project/core/utils.py b/pod_project/core/utils.py index 2bcfcae3..62dc0e5f 100755 --- a/pod_project/core/utils.py +++ b/pod_project/core/utils.py @@ -181,7 +181,7 @@ def encode_video(video_to_encode): video_to_encode.encoding_status = "GET SAR" video_to_encode.save() sar_w, sar_h = [ - int(_) for _ in stream.get("sample_aspect_ratio").split(':')] + int(__) for __ in stream.get("sample_aspect_ratio").split(':')] sar = 1 if sar_w != 0 and sar_h != 0: sar = (1. * sar_w / sar_h) From 28baed779991c13caec615e928bc6a619a3dfd1d Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 19 May 2017 16:53:30 +0200 Subject: [PATCH 20/44] Send email to user on encoding completion --- pod_project/core/utils.py | 48 +++++++++++++++++++++++++++++++++++++- pod_project/pods/models.py | 17 +++++++++++--- pod_project/pods/views.py | 26 ++++++++++++++------- 3 files changed, 79 insertions(+), 12 deletions(-) diff --git a/pod_project/core/utils.py b/pod_project/core/utils.py index 62dc0e5f..3dbf8ace 100755 --- a/pod_project/core/utils.py +++ b/pod_project/core/utils.py @@ -30,7 +30,8 @@ import logging import traceback from django.conf import settings -from django.core.mail import EmailMultiAlternatives +from django.utils.translation import ugettext_lazy as _ +from django.core.mail import EmailMultiAlternatives, send_mail from core.models import EncodingType, get_media_guard from pods.models import EncodingPods from pods.models import Pod @@ -319,6 +320,51 @@ def encode_video(video_to_encode): video.encoding_in_progress = False video.save() + encoding_user_email_data = video_to_encode.get_encoding_user_email_data() + if encoding_user_email_data and video.encoding_status.startswith("DONE"): + from django.utils.translation import override + content_url = "%s/video/%s/" % ( + encoding_user_email_data['root_url'], video.slug) + list_url = "%s/owner_videos_list/" % encoding_user_email_data['root_url'] + with override(encoding_user_email_data['curr_lang']): + send_mail( + "[%s] %s" % ( + settings.TITLE_SITE, + _(u"Encoding #%(content_id)s completed") % { + 'content_id': VIDEO_ID + } + ), + "%s\n\n%s\n%s\n%s" % ( + _(u"The content “%(content_title)s” has been encoded to Web formats, and is now available on %(site_title)s.") % { + 'content_title': video.title, + 'site_title': settings.TITLE_SITE + }, + _(u"You will find it here:"), + content_url, + _(u"and in your content list: %(content_list)s.") % { + 'content_list': list_url + } + ), + settings.DEFAULT_FROM_EMAIL, + [encoding_user_email_data['user_email']], + html_message='

    %s

    %s
    %s\ +
    %s

    ' % ( + _(u"The content “%(content_title)s” has been encoded to Web formats, and is now available on %(site_title)s.") % { + 'content_title': '%s' % video.title, + 'site_title': settings.TITLE_SITE + }, + _(u"You will find it here:"), + content_url, + content_url, + _(u"and in %(your_content_list)s.") % { + 'your_content_list': '%s' % ( + list_url, + _(u"your content list") + ) + } + ) + ) + # end encode_video(video): diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index de182968..9c906215 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -305,6 +305,7 @@ class Pod(Video): help_text=_( u'Viewing this video will not be possible without this password.'), max_length=50, blank=True, null=True) + _encoding_user_email_data = None class Meta: verbose_name = _("Video") @@ -463,6 +464,16 @@ def get_json_to_index(self): return json.dumps(data_to_dump) + def set_encoding_user_email_data(self, user_email, curr_lang, root_url): + self._encoding_user_email_data = { + 'user_email': user_email, + 'curr_lang': curr_lang, + 'root_url': root_url + } + + def get_encoding_user_email_data(self): + return self._encoding_user_email_data + @receiver(post_save, sender=Pod) def launch_encode(sender, instance, created, **kwargs): @@ -1157,12 +1168,12 @@ class Rssfeed(models.Model): help_text=_( u'If this box is checked, the video will be visible and accessible by anyone.'), default=True) - + class Meta: verbose_name = _("RSS") verbose_name_plural = _("RSS") - - + + def __unicode__(self): return self.title diff --git a/pod_project/pods/views.py b/pod_project/pods/views.py index ba2549e6..8ab32c55 100755 --- a/pod_project/pods/views.py +++ b/pod_project/pods/views.py @@ -166,7 +166,7 @@ def channel(request, slug_c, slug_t=None): return render_to_response("channels/channel.html", {"channel": channel, "theme": theme, - "param": param, "videos": videos, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD, "interactive": interactive}, + "param": param, "videos": videos, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD, "interactive": interactive}, context_instance=RequestContext(request)) @@ -350,7 +350,7 @@ def favorites_videos_list(request): 'orderby') else "order_by_-date_added" videos_list = videos_list.order_by( "%s" % replace(order_by, "order_by_", "")) - + paginator = Paginator(videos_list, per_page) page = request.GET.get('page') @@ -444,13 +444,13 @@ def videos(request): ATOM_HD = settings.ATOM_HD_ENABLED ATOM_SD = settings.ATOM_SD_ENABLED #ATOM_AUDIO = settings.ATOM_AUDIO_ENABLED - + interactive = None if settings.H5P_ENABLED: from h5pp.models import h5p_libraries if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: interactive = True - + if request.is_ajax(): some_data_to_dump = { 'json_toolbar': render_to_string('maintoolbar.html', @@ -788,6 +788,16 @@ def video_edit(request, slug=None): vid.owner = request.user if request.FILES: + if settings.EMAIL_ON_ENCODING_COMPLETION and request.user.email: + from django.utils.translation import get_language + vid.set_encoding_user_email_data( + request.user.email, + get_language(), + "%s://%s" % ( + request.scheme, + request.get_host() + ) + ) vid.to_encode = True vid.save() @@ -1553,7 +1563,7 @@ def video_interactive(request, slug): messages.add_message( request, messages.ERROR, _(u'You cannot add interactivity to this video.')) raise PermissionDenied - + if 'h5pp' in settings.INSTALLED_APPS: from h5pp.models import h5p_contents interactive = h5p_contents.objects.filter(slug=slug).values() @@ -1563,7 +1573,7 @@ def video_interactive(request, slug): 'contentId': interactive[0]['content_id'], 'slug': slug}, context_instance=RequestContext(request)) - + return render_to_response('videos/video_interactive.html', {'video': video, 'slug': slug}, @@ -1592,8 +1602,8 @@ def video_interactive(request, slug, slug_c=None, slug_t=None): if h5p_contents.objects.filter(title=video.title).count() > 0: h5p = h5p_contents.objects.get(title=video.title) interactive = {'h5p': h5p, 'version': version} - - if request.user.is_authenticated and (request.user == video.owner or request.user.is_superuser): + + if request.user.is_authenticated and (request.user == video.owner or request.user.is_superuser): return render_to_response('videos/video_interactive.html', {'video': video, 'channel': channel, 'theme': theme, 'interactive': interactive}, context_instance=RequestContext(request)) From 7aabb65e27248a5bd9916d910ff50ce77ffababf Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 19 May 2017 17:04:47 +0200 Subject: [PATCH 21/44] Adds user info about emailing when activated Without displaying it if user has no email. --- pod_project/pods/templates/videos/video_edit.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pod_project/pods/templates/videos/video_edit.html b/pod_project/pods/templates/videos/video_edit.html index 30574131..a6113f19 100755 --- a/pod_project/pods/templates/videos/video_edit.html +++ b/pod_project/pods/templates/videos/video_edit.html @@ -411,6 +411,9 @@

    {% endif %}

    {% trans "The sending time depends on the size of your file and your upload speed. This can be quite long." %}

    {% trans "While sending your file, do not close your browser until you have received a message of success or failure." %}

    + {% if EMAIL_ON_ENCODING_COMPLETION and request.user.email %} +

    {% trans "An email will be sent to you when all encoding tasks are completed." %}

    + {% endif %}

    From 7cbac40824a268a8b616df64b5f4eda3ef16a10f Mon Sep 17 00:00:00 2001 From: ppomedio Date: Fri, 19 May 2017 17:27:16 +0200 Subject: [PATCH 22/44] French localization --- pod_project/locale/fr/LC_MESSAGES/django.mo | Bin 56293 -> 57185 bytes pod_project/locale/fr/LC_MESSAGES/django.po | 85 ++++++++++++++++---- 2 files changed, 69 insertions(+), 16 deletions(-) diff --git a/pod_project/locale/fr/LC_MESSAGES/django.mo b/pod_project/locale/fr/LC_MESSAGES/django.mo index 2f27742dd164212a31ea2667694fedd4ea213ee9..d516ff89dd6cc5c14a1c4e5df8ee8b72e0404eae 100644 GIT binary patch delta 13404 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\n" "Language-Team: ESUP POD \n" "Language: fr\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" +"X-Generator: Poedit 2.0.2\n" #: core/admin.py:77 core/models.py:288 msgid "Email" @@ -738,12 +738,23 @@ msgid "Delete the interactive part of this video" msgstr "Supprimer la partie interactive de cette vidéo" #: pods/templates/videos/video_interactive.html:224 -msgid "Do not forget to save your work regularly. Especially if you add an interaction." -msgstr "N'oubliez pas de sauvegarder votre travail régulièrement. Surtout si vous ajoutez une interaction." +msgid "" +"Do not forget to save your work regularly. Especially if you add an " +"interaction." +msgstr "" +"N'oubliez pas de sauvegarder votre travail régulièrement. Surtout si vous " +"ajoutez une interaction." #: pods/templates/videos/video_interactive.html:226 -msgid "To save and continue your work click on the button [Save and continue]. If you have completed your work click on the button [Save and return to video] to view your new interactive video." -msgstr "Pour sauvegarder et continuer votre travail cliquez sur le bouton [Sauvegarder et continuer]. Si vous avez terminé votre travail cliquez sur le bouton [Sauvegarder et retour à la vidéo] pour voir votre nouvelle vidéo interactive." +msgid "" +"To save and continue your work click on the button [Save and continue]. If " +"you have completed your work click on the button [Save and return to video] " +"to view your new interactive video." +msgstr "" +"Pour sauvegarder et continuer votre travail cliquez sur le bouton " +"[Sauvegarder et continuer]. Si vous avez terminé votre travail cliquez sur " +"le bouton [Sauvegarder et retour à la vidéo] pour voir votre nouvelle vidéo " +"interactive." #: pods/templates/videos/video_interactive.html:235 #: pods/templates/videos/video_interactive.html:236 @@ -1956,8 +1967,7 @@ msgstr "Enregistreur" msgid "Recorders" msgstr "Enregistreurs" -#: pods/models.py:1087 -#: pods/templates/videos/video.html:531 +#: pods/models.py:1087 pods/templates/videos/video.html:531 msgid "User" msgstr "Utilisateur" @@ -2550,13 +2560,11 @@ msgstr "Vous devez être connecté pour prendre des notes." msgid "Edit the video" msgstr "Modifier la vidéo" -#: pods/templates/videos/video.html:291 -#: pods/templates/videos/video.html:293 +#: pods/templates/videos/video.html:291 pods/templates/videos/video.html:293 msgid "View the original video" msgstr "Voir la vidéo originale" -#: pods/templates/videos/video.html:295 -#: pods/templates/videos/video.html:297 +#: pods/templates/videos/video.html:295 pods/templates/videos/video.html:297 msgid "View the interactive video" msgstr "Voir la vidéo interactive" @@ -2569,12 +2577,19 @@ msgid "You got the following score on this video" msgstr "Vous avez obtenu le score suivant" #: pods/templates/videos/video.html:527 -msgid "The scoreboard displays the users who viewed your interactive video and their results." -msgstr "La table des scores affiche les utilisateurs ayant vues votre vidéo interactive et leurs résultats." +msgid "" +"The scoreboard displays the users who viewed your interactive video and " +"their results." +msgstr "" +"La table des scores affiche les utilisateurs ayant vues votre vidéo " +"interactive et leurs résultats." #: pods/templates/videos/video.html:550 -msgid "Your video does not have a score or no users have done the activities yet." -msgstr "Votre vidéo ne dispose pas de score ou aucun utilisateur n'a terminé les activités." +msgid "" +"Your video does not have a score or no users have done the activities yet." +msgstr "" +"Votre vidéo ne dispose pas de score ou aucun utilisateur n'a terminé les " +"activités." #: pods/templates/videos/video.html:552 msgid "This is the first time you watch this video." @@ -3498,6 +3513,44 @@ msgstr "" msgid "New mediacourse added." msgstr "Nouveaux médiacours ajoutés." +#: core/utils.py:333 +#, python-format +msgid "Encoding #%(content_id)s completed" +msgstr "Encodage n°%(content_id)s terminé" + +#: core/utils.py:338 core/utils.py:352 +#, python-format +msgid "" +"The content “%(content_title)s” has been encoded to Web formats, and is now " +"available on %(site_title)s." +msgstr "" +"Le contenu « %(content_title)s » a été encodé aux formats web, et est " +"maintenant disponible sur %(site_title)s." + +#: core/utils.py:342 core/utils.py:356 +msgid "You will find it here:" +msgstr "Retrouvez-le ici :" + +#: core/utils.py:344 +#, python-format +msgid "and in your content list: %(content_list)s." +msgstr "ainsi que dans votre liste de contenus: %(content_list)s." + +#: core/utils.py:359 +#, python-format +msgid "and in %(your_content_list)s." +msgstr "ainsi que dans %(your_content_list)s." + +#: core/utils.py:362 +msgid "your content list" +msgstr "votre liste de contenus" + +#: pods/templates/videos/video_edit.html:415 +msgid "An email will be sent to you when all encoding tasks are completed." +msgstr "" +"Un courriel vous sera envoyé lorsque toutes les tâches d'encodage seront " +"terminées." + # DJANGO-FILER FIX msgid "Adds a new Folder" msgstr "Créer un nouveau dossier" From 2cb1265eb913bf22c70ad606ef96f46a4f6c3947 Mon Sep 17 00:00:00 2001 From: DrClockwork Date: Wed, 24 May 2017 11:59:26 +0200 Subject: [PATCH 23/44] update hash_id for existing videos --- pod_project/pods/migrations/0014_hash_id.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pod_project/pods/migrations/0014_hash_id.py b/pod_project/pods/migrations/0014_hash_id.py index 81caaad1..de5f6743 100644 --- a/pod_project/pods/migrations/0014_hash_id.py +++ b/pod_project/pods/migrations/0014_hash_id.py @@ -2,7 +2,23 @@ from __future__ import unicode_literals from django.db import migrations, models +from django.template.defaultfilters import slugify +import base64 +def create_hash_if_exist(apps, schema_editor): + from pods.models import * + Videos = Pod.objects.filter(pod__is_draft=True) + # Check if we have videos before this migration + if len(Videos) > 0: + # Create hash_id + for video in Videos: + if video.is_draft: + newid = video.id + newid = '%04d' % newid + idToEncode = ''.join([str(newid), video.title]) + encodeId = base64.b64encode(idToEncode.encode('utf-8')) + video.hash_id = slugify(encodeId) + video.save() class Migration(migrations.Migration): @@ -16,4 +32,5 @@ class Migration(migrations.Migration): name='hash_id', field=models.CharField(default=None, max_length=100, blank=True, help_text='Hashcode to retrieve de video', null=True, verbose_name='hash_id'), ), + migrations.RunPython(create_hash_if_exist), ] From 0d773cc0fdf29070d3d69c83eb258c8ac2f1b02a Mon Sep 17 00:00:00 2001 From: DrClockwork Date: Wed, 24 May 2017 14:56:23 +0200 Subject: [PATCH 24/44] share if staff and not interactive --- pod_project/pods/templates/videos/video.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pod_project/pods/templates/videos/video.html b/pod_project/pods/templates/videos/video.html index b27cc867..7472a2f3 100755 --- a/pod_project/pods/templates/videos/video.html +++ b/pod_project/pods/templates/videos/video.html @@ -345,7 +345,7 @@

  • {% endif %} {% endif %} - {% if video.is_draft and USE_PRIVATE_VIDEO %} + {% if video.is_draft and USE_PRIVATE_VIDEO and not interactive.h5p and request.user.is_staff %}
  • @@ -569,7 +569,7 @@

    {% trans 'Scoreboard' %}

    {% endif %} - {% if video.is_draft and USE_PRIVATE_VIDEO %} + {% if video.is_draft and USE_PRIVATE_VIDEO and not interactive.h5p and request.user.is_staff %}
    From 76f8888079cafc8aea5c2d75b61e647dc912c808 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 18 Apr 2017 18:26:59 +0200 Subject: [PATCH 25/44] =?UTF-8?q?Removing=20=C2=ABmessageBeforeUnload?= =?UTF-8?q?=C2=BB=20JS=20var=20from=20templates=20(cherry=20picked=20from?= =?UTF-8?q?=20commit=20ad89d1f49c056442f3f3076ac3ddfc797f1f41c0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pod_project/core/templates/userProfile.html | 3 +-- pod_project/pods/templates/channels/channel_edit.html | 5 ++--- .../pods/templates/mediacourses/mediacourses_add.html | 3 --- pod_project/pods/templates/videos/video_chapter.html | 5 ++--- pod_project/pods/templates/videos/video_completion.html | 6 ++---- pod_project/pods/templates/videos/video_edit.html | 4 +--- pod_project/pods/templates/videos/video_enrich.html | 6 +++--- 7 files changed, 11 insertions(+), 21 deletions(-) diff --git a/pod_project/core/templates/userProfile.html b/pod_project/core/templates/userProfile.html index 39e1f404..5eac92f9 100755 --- a/pod_project/core/templates/userProfile.html +++ b/pod_project/core/templates/userProfile.html @@ -27,8 +27,7 @@ {% endblock bootstrap3_extra_head %} diff --git a/pod_project/pods/templates/channels/channel_edit.html b/pod_project/pods/templates/channels/channel_edit.html index 6bbfb134..44ae8126 100755 --- a/pod_project/pods/templates/channels/channel_edit.html +++ b/pod_project/pods/templates/channels/channel_edit.html @@ -52,9 +52,8 @@ {% endblock bootstrap3_extra_head %} diff --git a/pod_project/pods/templates/videos/video_chapter.html b/pod_project/pods/templates/videos/video_chapter.html index 42df9adb..52486033 100644 --- a/pod_project/pods/templates/videos/video_chapter.html +++ b/pod_project/pods/templates/videos/video_chapter.html @@ -119,9 +119,8 @@ /*** end table scroll ***/ -//var messageBeforeUnload = "{% trans "Warning, you will leave this page. If you have made changes without clicking the Save button, your changes will be lost." %}"; -var num = 0; -var name = ''; +var num = 0, + name = ''; /*** For the form ***/; var video_duration = {{video.duration}}; /*** For the Cancel button ***/ diff --git a/pod_project/pods/templates/videos/video_completion.html b/pod_project/pods/templates/videos/video_completion.html index c2f40349..86448c76 100644 --- a/pod_project/pods/templates/videos/video_completion.html +++ b/pod_project/pods/templates/videos/video_completion.html @@ -171,10 +171,8 @@ /*** end table scroll ***/ -var messageBeforeUnload = ""; -var text_to_show = "{% trans "Warning, you will leave this page. If you have made changes without clicking the Save button, your changes will be lost." %}"; -var num = 0; -var name = ''; +var num = 0, + name = ''; $(document).on("reset", "#page-video form", function (e) { var id_form = $(this).attr("id") diff --git a/pod_project/pods/templates/videos/video_edit.html b/pod_project/pods/templates/videos/video_edit.html index f6d76c5e..7601b9b2 100755 --- a/pod_project/pods/templates/videos/video_edit.html +++ b/pod_project/pods/templates/videos/video_edit.html @@ -144,8 +144,7 @@ }; {% endif %} -var messageBeforeUnload = "{% trans "Warning, you will leave this page. If you have made changes without clicking the Save button, your changes will be lost." %}", - themetab = new Array(); +var themetab = new Array(); {% for c in form.fields.channel.queryset %} themetab[{{c.id}}] = []; @@ -210,7 +209,6 @@ } else { - Pod.preventUnloadPrompt = true; $uploadMessageBox.find( 'div.panel-body > img' ).removeClass( 'hidden' ); form.submit( ); } diff --git a/pod_project/pods/templates/videos/video_enrich.html b/pod_project/pods/templates/videos/video_enrich.html index ea13e250..80428a8a 100755 --- a/pod_project/pods/templates/videos/video_enrich.html +++ b/pod_project/pods/templates/videos/video_enrich.html @@ -134,9 +134,9 @@ } -//var messageBeforeUnload = "{% trans "Warning, you will leave this page. If you have made changes without clicking the Save button, your changes will be lost." %}"; -var num = 0; -var name = ''; +var num = 0, + name = ''; + /*** For the form ***/; var video_duration = {{video.duration}}; From 583eb2a383321b0d66227882b49b94927d09d42f Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 18 Apr 2017 18:32:45 +0200 Subject: [PATCH 26/44] =?UTF-8?q?Removing=20=C2=ABbeforeunload=C2=BB=20JS?= =?UTF-8?q?=20event=20binding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … and «preventUnloadPrompt» variable. (cherry picked from commit d6928fcdbac5bdf6150fc43a12b26e51ac602ced) --- pod_project/core/static/js/main.js | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pod_project/core/static/js/main.js b/pod_project/core/static/js/main.js index 25de84ca..961a82ef 100644 --- a/pod_project/core/static/js/main.js +++ b/pod_project/core/static/js/main.js @@ -23,9 +23,6 @@ voir http://www.gnu.org/licenses/ var Pod = ( function ( Pod ) { - // Prevents page unload alert box. - Pod.preventUnloadPrompt = false; - // Used to prevent XHR video form upload when file field is empty. Pod.allowAjaxUpload = true; @@ -104,24 +101,10 @@ $(document).ready(function() { /** FORM VIDEO **/ $('form:not(#video_form)').on('submit', function() { - //$('form').on('submit', function() { - Pod.preventUnloadPrompt = true; - //$('#process').find('div.anim').html(ajax_image); - //$('#process').show(); $('form').hide(); return true; }); - $(window).bind("beforeunload", function(e) { - if (typeof messageBeforeUnload != 'undefined' && messageBeforeUnload != "") { - if (Pod.preventUnloadPrompt) { - return; - } else { - return messageBeforeUnload; - } - } - }); - var initial = new Array(); $('#id_theme option:selected').each(function () { initial.push($(this).val()); @@ -333,8 +316,6 @@ function show_messages( msgText, msgClass, loadUrl ) { if ( loadUrl !== false ) { - Pod.preventUnloadPrompt = true; - $msgBox.delay( 4000 ).fadeOut( function( ) { if ( loadUrl === true ) { From 0cce0742212ae02d82a27bbd2813c38d8e2e4bc4 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 18 Apr 2017 18:48:13 +0200 Subject: [PATCH 27/44] JS functions notation consistancy (cherry picked from commit d87ac60ca7aa672f44d6eeb1c19e34cca20e0caa) --- pod_project/core/static/js/main.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pod_project/core/static/js/main.js b/pod_project/core/static/js/main.js index 961a82ef..9ab28b87 100644 --- a/pod_project/core/static/js/main.js +++ b/pod_project/core/static/js/main.js @@ -78,11 +78,11 @@ $(document).ready(function() { /** SELECT USER **/ - $('#ownerbox').keyup(function(){ + $('#ownerbox').keyup(function() { var valThis = $(this).val().toLowerCase(); if(valThis == "") $('.navList>div>label>input:not(:checked)').parent("label").parent("div").hide(); else { - $('.navList>div>label>input:not(:checked)').each(function(){ //:not(:checked) + $('.navList>div>label>input:not(:checked)').each(function() { //:not(:checked) var text = $(this).parent("label").children("span.fullname").text().toLowerCase(); (text.indexOf(valThis) != -1) ? $(this).parent("label").parent("div").show() : $(this).parent("label").parent("div").hide(); }); @@ -124,7 +124,7 @@ $(document).ready(function() { }; }); - $('#id_channel').change(function(){ + $('#id_channel').change(function() { var str = ""; $('#id_theme') .find('option') @@ -203,18 +203,18 @@ var csrftoken = getCookie('csrftoken'); /** video list **/ -$(document).on('click', "#pagination .paginator a", function () { +$(document).on('click', "#pagination .paginator a", function() { var newurl = $(this).attr('href'); get_ajax_url(newurl); return false; }); -$(document).on('change', "#orderby", function () { +$(document).on('change', "#orderby", function() { createCookie("orderby", $(this).val(), null); get_ajax_url(window.location.href); }); -$(document).on('change', "#perpage", function () { +$(document).on('change', "#perpage", function() { createCookie("perpage", $(this).val(), null); get_ajax_url(window.location.href); }); @@ -268,7 +268,7 @@ $(document).on('click', "#share a", function() { /** end video share embed **/ -$(document).on('click', 'button#button_video_report', function (event) { +$(document).on('click', 'button#button_video_report', function(event) { event.preventDefault(); if($(this).parent('form').length==0){ alert($(this).children('span.sr-only').text()); @@ -344,7 +344,7 @@ function show_messages( msgText, msgClass, loadUrl ) { /** FUNCTIONS **/ -Number.prototype.toHHMMSS = function () { +Number.prototype.toHHMMSS = function() { var seconds = Math.floor(this), hours = Math.floor(seconds / 3600); seconds -= hours*3600; @@ -399,7 +399,7 @@ function setPerPage() { cperpage = getCookie("perpage"); if(cperpage!=null) { $("#perpage").val(cperpage); - $("#perpage option").each(function(){ + $("#perpage option").each(function() { if ($(this).attr("value") == cperpage) { $(this).attr("selected",true); } else { @@ -415,7 +415,7 @@ function setOrderBy() { if(corderby==null) corderby="order_by_-date_added" if(corderby!=null) { $("#orderby").val(corderby); - $("#orderby option").each(function(){ + $("#orderby option").each(function() { if ($(this).attr("value") == corderby) { $(this).attr("selected",true); } else { @@ -491,7 +491,7 @@ function get_ajax_url(newurl, attrs) { }); } -function frameReady(){ +function frameReady() { //alert('frameready'); $("#framemessage").hide(); $("#resultFrame").height("450px"); From 85baf145b8e5115036a4aa0a00b912549a06bc49 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Mon, 29 May 2017 17:59:35 +0200 Subject: [PATCH 28/44] po / mo files update --- pod_project/locale/fr/LC_MESSAGES/django.mo | Bin 57185 -> 56898 bytes pod_project/locale/fr/LC_MESSAGES/django.po | 16 +--------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/pod_project/locale/fr/LC_MESSAGES/django.mo b/pod_project/locale/fr/LC_MESSAGES/django.mo index d516ff89dd6cc5c14a1c4e5df8ee8b72e0404eae..8c53e805fd6e8be6ecf5f3fbab8352fb043fc5b1 100644 GIT binary patch delta 10841 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 delta 11104 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 G!v6\n" "Language-Team: ESUP POD \n" "Language: fr\n" @@ -703,20 +703,6 @@ msgstr "Contactez nous" msgid "My profile" msgstr "Mon profil" -#: core/templates/userProfile.html:30 -#: pods/templates/channels/channel_edit.html:55 -#: pods/templates/mediacourses/mediacourses_add.html:31 -#: pods/templates/videos/video_chapter.html:122 -#: pods/templates/videos/video_completion.html:175 -#: pods/templates/videos/video_edit.html:147 -#: pods/templates/videos/video_enrich.html:137 -msgid "" -"Warning, you will leave this page. If you have made changes without clicking " -"the Save button, your changes will be lost." -msgstr "" -"Attention, vous quittez cette page. Si vous avez apporté des modifications " -"sans cliquer sur le bouton Enregistrer, vos modifications seront perdues." - #: core/templates/userProfile.html:38 core/templates/userProfile.html.py:48 msgid "My Profile" msgstr "Mon profil" From a472d030a7b320b86b175fe0f9c5e2c015436469 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 11:38:33 +0200 Subject: [PATCH 29/44] Reordering migrations --- .../pods/migrations/{0014_hash_id.py => 0015_hash_id.py} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename pod_project/pods/migrations/{0014_hash_id.py => 0015_hash_id.py} (86%) diff --git a/pod_project/pods/migrations/0014_hash_id.py b/pod_project/pods/migrations/0015_hash_id.py similarity index 86% rename from pod_project/pods/migrations/0014_hash_id.py rename to pod_project/pods/migrations/0015_hash_id.py index de5f6743..1366ff26 100644 --- a/pod_project/pods/migrations/0014_hash_id.py +++ b/pod_project/pods/migrations/0015_hash_id.py @@ -7,13 +7,14 @@ def create_hash_if_exist(apps, schema_editor): from pods.models import * - Videos = Pod.objects.filter(pod__is_draft=True) + # Videos = Pod.objects.filter(pod__is_draft=True) + Videos = Pod.objects.filter(is_draft=True) # Check if we have videos before this migration if len(Videos) > 0: # Create hash_id for video in Videos: if video.is_draft: - newid = video.id + newid = video.id newid = '%04d' % newid idToEncode = ''.join([str(newid), video.title]) encodeId = base64.b64encode(idToEncode.encode('utf-8')) @@ -23,7 +24,7 @@ def create_hash_if_exist(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('pods', '0013_pod_is_360'), + ('pods', '0014_rssfeed'), ] operations = [ From 787c9aa432359cc1720ab0d9fb7e7093f7f449ab Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 14:27:52 +0200 Subject: [PATCH 30/44] Invalid syntax fix --- pod_project/pod_project/urls-sample.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 1ae7ad62..343644b4 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -97,6 +97,7 @@ url(r'^get_video_encoding/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', 'pods.views.get_video_encoding', name='get_video_encoding'), +] if settings.USE_PRIVATE_VIDEO: urlpatterns += [ @@ -111,7 +112,7 @@ 'pods.views.video_interactive', name='video_interactive'), url(r'^h5p/', include('h5pp.urls')), ] - + urlpatterns += [ # Channel url(r'^channels/$', 'pods.views.channels', name='channels'), @@ -141,7 +142,7 @@ if settings.RSS_ENABLED: urlpatterns += [ url(r'^rss/select/(?P[^\/]+)/$', MySelectFeed(), name = 'rss_select'), - ] + ] #ATOM HD Feed if settings.ATOM_HD_ENABLED: urlpatterns += [ From 776eb6aa4611abef9e39ed7f6e36276d76d724db Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 14:31:36 +0200 Subject: [PATCH 31/44] Help text typo --- pod_project/pods/migrations/0015_hash_id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pod_project/pods/migrations/0015_hash_id.py b/pod_project/pods/migrations/0015_hash_id.py index 1366ff26..43eeee55 100644 --- a/pod_project/pods/migrations/0015_hash_id.py +++ b/pod_project/pods/migrations/0015_hash_id.py @@ -31,7 +31,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='pod', name='hash_id', - field=models.CharField(default=None, max_length=100, blank=True, help_text='Hashcode to retrieve de video', null=True, verbose_name='hash_id'), + field=models.CharField(default=None, max_length=100, blank=True, help_text='Hashcode to retrieve the video', null=True, verbose_name='hash_id'), ), migrations.RunPython(create_hash_if_exist), ] From 939a2d0ead302da52899d7689d6bca6e1245dc2a Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 15:31:00 +0200 Subject: [PATCH 32/44] PEP8 --- pod_project/pod_project/urls-sample.py | 45 +++++++++++++++----------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 343644b4..ad2d6795 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -3,9 +3,10 @@ from django.conf import settings from django.views.generic import RedirectView from django.contrib import admin -admin.autodiscover() +from pods.utils_itunesfeed import PodcastHdFeed, PodcastSdFeed, MySelectFeed +# from pods.utils_itunesfeed import AudiocastFeed -from pods.utils_itunesfeed import PodcastHdFeed, PodcastSdFeed, AudiocastFeed, MySelectFeed +admin.autodiscover() urlpatterns = [ url(r'^favicon\.ico$', RedirectView.as_view( @@ -100,16 +101,16 @@ ] if settings.USE_PRIVATE_VIDEO: - urlpatterns += [ - url(r'^get_video_encoding_private/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', - 'pods.views.get_video_encoding_private', - name='get_video_encoding_private'), -] + urlpatterns += [ + url(r'^get_video_encoding_private/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', + 'pods.views.get_video_encoding_private', + name='get_video_encoding_private'), + ] if settings.H5P_ENABLED: urlpatterns += [ url(r'^video_interactive/(?P[\-\d\w]+)/$', - 'pods.views.video_interactive', name='video_interactive'), + 'pods.views.video_interactive', name='video_interactive'), url(r'^h5p/', include('h5pp.urls')), ] @@ -138,23 +139,29 @@ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -#RSS Feed +# RSS Feed if settings.RSS_ENABLED: urlpatterns += [ - url(r'^rss/select/(?P[^\/]+)/$', MySelectFeed(), name = 'rss_select'), - ] -#ATOM HD Feed + url(r'^rss/select/(?P[^\/]+)/$', + MySelectFeed(), name='rss_select'), + ] +# ATOM HD Feed if settings.ATOM_HD_ENABLED: urlpatterns += [ - url(r'^rss/hd/(?P[^\/]+)/$', PodcastHdFeed(), name = 'podcast_hd'), + url(r'^rss/hd/(?P[^\/]+)/$', + PodcastHdFeed(), name='podcast_hd'), ] # ATOM SD Feed if settings.ATOM_SD_ENABLED: urlpatterns += [ - url(r'^rss/sd/(?P[^\/]+)/$', PodcastSdFeed(), name = 'podcast_sd'), + url(r'^rss/sd/(?P[^\/]+)/$', + PodcastSdFeed(), name='podcast_sd'), + ] +""" +# ATOM Audio Feed +if settings.ATOM_AUDIO_ENABLED: + urlpatterns += [ + url(r'^rss/audio/(?P[^\/]+)/$', + AudiocastFeed(), name = 'audiocast'), ] -#ATOM Audio Feed -#if settings.ATOM_AUDIO_ENABLED: -# urlpatterns += [ -# url(r'^rss/audio/(?P[^\/]+)/$', AudiocastFeed(), name = 'audiocast'), -# ] +""" From 8bb9fbf2644cfd0f4457bbaed92e05527f01267c Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 15:37:19 +0200 Subject: [PATCH 33/44] Channels patterns moved down --- pod_project/pod_project/urls-sample.py | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index ad2d6795..899e9f42 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -114,20 +114,6 @@ url(r'^h5p/', include('h5pp.urls')), ] -urlpatterns += [ - # Channel - url(r'^channels/$', 'pods.views.channels', name='channels'), - url(r'^(?P[\-\d\w]+)/$', 'pods.views.channel', name='channel'), - url(r'^(?P[\-\d\w]+)/edit$', - 'pods.views.channel_edit', name='channel_edit'), - url(r'^(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', - 'pods.views.channel', name='theme'), - url(r'^(?P[\-\d\w]+)/video/(?P[\-\d\w]+)/$', - 'pods.views.video', name='video'), - url(r'^(?P[\-\d\w]+)/(?P[\-\d\w]+)/video/(?P[\-\d\w]+)/$', - 'pods.views.video', name='video'), -] - ## # Add-on to serve MEDIA files when using django-admin runserver: # - django.contrib.staticfiles.views.serve() works only in debug mode, so @@ -165,3 +151,17 @@ AudiocastFeed(), name = 'audiocast'), ] """ + +urlpatterns += [ + # Channel + url(r'^channels/$', 'pods.views.channels', name='channels'), + url(r'^(?P[\-\d\w]+)/$', 'pods.views.channel', name='channel'), + url(r'^(?P[\-\d\w]+)/edit$', + 'pods.views.channel_edit', name='channel_edit'), + url(r'^(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', + 'pods.views.channel', name='theme'), + url(r'^(?P[\-\d\w]+)/video/(?P[\-\d\w]+)/$', + 'pods.views.video', name='video'), + url(r'^(?P[\-\d\w]+)/(?P[\-\d\w]+)/video/(?P[\-\d\w]+)/$', + 'pods.views.video', name='video'), +] From 2fb1a1ce82c06ec0e4f5c1268024d2da8a5b121f Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 16:33:18 +0200 Subject: [PATCH 34/44] Dev mode media files pattern moved to end --- pod_project/pod_project/urls-sample.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 899e9f42..16526458 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -114,17 +114,6 @@ url(r'^h5p/', include('h5pp.urls')), ] -## -# Add-on to serve MEDIA files when using django-admin runserver: -# - django.contrib.staticfiles.views.serve() works only in debug mode, so -# the two lines below may be removed into production; -# - note: as we use django.contrib.staticfiles, static files are -# automatically served by runserver when DEBUG=True. -# -if settings.DEBUG: - urlpatterns += static(settings.MEDIA_URL, - document_root=settings.MEDIA_ROOT) - # RSS Feed if settings.RSS_ENABLED: urlpatterns += [ @@ -165,3 +154,15 @@ url(r'^(?P[\-\d\w]+)/(?P[\-\d\w]+)/video/(?P[\-\d\w]+)/$', 'pods.views.video', name='video'), ] + + +## +# Add-on to serve MEDIA files when using django-admin runserver: +# - django.contrib.staticfiles.views.serve() works only in debug mode, so +# the two lines below may be removed into production; +# - note: as we use django.contrib.staticfiles, static files are +# automatically served by runserver when DEBUG=True. +# +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT) From 88ac7c0724e861f3a56f8ba20f155c7b524077b3 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 16:55:38 +0200 Subject: [PATCH 35/44] Adding comments to help future contributors --- pod_project/pod_project/urls-sample.py | 54 ++++++++++++++++++++------ 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 16526458..4e25fa46 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -8,6 +8,10 @@ admin.autodiscover() + +## +# Pod standard patterns +# urlpatterns = [ url(r'^favicon\.ico$', RedirectView.as_view( url=settings.STATIC_URL + 'images/favicon.ico', permanent=True)), @@ -100,6 +104,18 @@ name='get_video_encoding'), ] + +############################################################################### +# +# Optional feature patterns +# +# All optional feature url patterns should be inserted below. +# +# + +## +# Private video feature pattern +# if settings.USE_PRIVATE_VIDEO: urlpatterns += [ url(r'^get_video_encoding_private/(?P[\-\d\w]+)/(?P[\-\d\w]+)/(?P[\-\d]+)/(?P[\-\d\w]+)/(?P[\-\d\w]+)/$', @@ -107,6 +123,9 @@ name='get_video_encoding_private'), ] +## +# H5P feature patterns +# if settings.H5P_ENABLED: urlpatterns += [ url(r'^video_interactive/(?P[\-\d\w]+)/$', @@ -114,35 +133,46 @@ url(r'^h5p/', include('h5pp.urls')), ] -# RSS Feed +## +# RSS /ATOM feature patterns +# if settings.RSS_ENABLED: + # RSS Feed urlpatterns += [ url(r'^rss/select/(?P[^\/]+)/$', MySelectFeed(), name='rss_select'), ] -# ATOM HD Feed +""" +if settings.ATOM_AUDIO_ENABLED: + # ATOM Audio Feed + urlpatterns += [ + url(r'^rss/audio/(?P[^\/]+)/$', + AudiocastFeed(), name = 'audiocast'), + ] +""" if settings.ATOM_HD_ENABLED: + # ATOM HD Feed urlpatterns += [ url(r'^rss/hd/(?P[^\/]+)/$', PodcastHdFeed(), name='podcast_hd'), ] -# ATOM SD Feed if settings.ATOM_SD_ENABLED: + # ATOM SD Feed urlpatterns += [ url(r'^rss/sd/(?P[^\/]+)/$', PodcastSdFeed(), name='podcast_sd'), ] -""" -# ATOM Audio Feed -if settings.ATOM_AUDIO_ENABLED: - urlpatterns += [ - url(r'^rss/audio/(?P[^\/]+)/$', - AudiocastFeed(), name = 'audiocast'), - ] -""" +# +# End of optional feature patterns +# +############################################################################### + + +## +# Pod channels standard patterns +# urlpatterns += [ - # Channel url(r'^channels/$', 'pods.views.channels', name='channels'), url(r'^(?P[\-\d\w]+)/$', 'pods.views.channel', name='channel'), url(r'^(?P[\-\d\w]+)/edit$', From e88f43e017e365edba2723971185383f41f381a8 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 17:44:13 +0200 Subject: [PATCH 36/44] =?UTF-8?q?Remove=20=C2=AB=C2=A0film=20border=C2=A0?= =?UTF-8?q?=C2=BB=20in=20thumbnails=20generation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 42a12b952a50c722429d7d0e9afbe1a499f3c8da) Conflicts: pod_project/pod_project/settings_local-sample.py --- pod_project/pod_project/settings_local-sample.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 3597911e..03d603fe 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -404,7 +404,7 @@ # Encoding tools default parameters overriding: # # ENCODE_VIDEO_CMD = "%(ffprobe)s -v quiet -show_format -show_streams -print_format json -i %(src)s" -ADD_THUMBNAILS_CMD = "nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -f -t 10%% -o %(out)s_2.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -f -t 50%% -o %(out)s_3.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -f -t 75%% -o %(out)s_4.png" +ADD_THUMBNAILS_CMD = "nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 10%% -o %(out)s_2.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 50%% -o %(out)s_3.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 75%% -o %(out)s_4.png" ADD_OVERVIEW_CMD = "rm %(out)s;for i in $(seq 0 99); do nice -n 19 ffmpegthumbnailer -t $i%% -s %(scale)s -c jpeg -i \"%(src)s\" -o %(out)s_strip$i.jpg; nice -n 19 montage -geometry +0+0 %(out)s %(out)s_strip$i.jpg %(out)s; done; rm %(out)s_strip*.jpg" # ENCODE_MP4_CMD = "%(ffmpeg)s -i %(src)s -codec:v libx264 -profile:v high -pix_fmt yuv420p -preset faster -b:v %(bv)s -maxrate %(bv)s -bufsize %(bufsize)s -vf scale=%(scale)s -force_key_frames \"expr:gte(t,n_forced*1)\" -deinterlace -threads 0 -codec:a aac -strict -2 -ar %(ar)s -ac 2 -b:a %(ba)s -movflags faststart -y %(out)s" # ENCODE_WEBM_CMD = "%(ffmpeg)s -i %(src)s -codec:v libvpx -quality realtime -cpu-used 3 -b:v %(bv)s -maxrate %(bv)s -bufsize %(bufsize)s -qmin 10 -qmax 42 -threads 4 -codec:a libvorbis -y %(out)s" @@ -448,7 +448,7 @@ CELERY_BROKER = "amqp://guest@localhost//" ## -# Video in draft mode can be shared +# Video in draft mode can be shared USE_PRIVATE_VIDEO = False # H5P relative parameters @@ -460,4 +460,4 @@ H5P_SAVE = 30 # How often current content state should be saved H5P_EXPORT = '/exports/' # Location of exports (packages .h5p) H5P_LANGUAGE = 'fr' # Language of the module H5P. -BASE_URL = 'http://localhost:8000' # Hostname of your django ap \ No newline at end of file +BASE_URL = 'http://localhost:8000' # Hostname of your django ap From c27bf0381b8d28e393b4178ec1c6f42a4ddd93e7 Mon Sep 17 00:00:00 2001 From: ppomedio Date: Tue, 30 May 2017 17:45:07 +0200 Subject: [PATCH 37/44] Changed overview / thumbs command (nice) (cherry picked from commit 6b24fd61b558900670f91e6bae5f6dbcfe56f2be) Conflicts: pod_project/pod_project/settings_local-sample.py --- pod_project/pod_project/settings_local-sample.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pod_project/pod_project/settings_local-sample.py b/pod_project/pod_project/settings_local-sample.py index 03d603fe..ca05da94 100644 --- a/pod_project/pod_project/settings_local-sample.py +++ b/pod_project/pod_project/settings_local-sample.py @@ -404,8 +404,8 @@ # Encoding tools default parameters overriding: # # ENCODE_VIDEO_CMD = "%(ffprobe)s -v quiet -show_format -show_streams -print_format json -i %(src)s" -ADD_THUMBNAILS_CMD = "nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 10%% -o %(out)s_2.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 50%% -o %(out)s_3.png && nice -n 19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 75%% -o %(out)s_4.png" -ADD_OVERVIEW_CMD = "rm %(out)s;for i in $(seq 0 99); do nice -n 19 ffmpegthumbnailer -t $i%% -s %(scale)s -c jpeg -i \"%(src)s\" -o %(out)s_strip$i.jpg; nice -n 19 montage -geometry +0+0 %(out)s %(out)s_strip$i.jpg %(out)s; done; rm %(out)s_strip*.jpg" +ADD_THUMBNAILS_CMD = "nice -19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 10%% -o %(out)s_2.png && nice -19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 50%% -o %(out)s_3.png && nice -19 ffmpegthumbnailer -i \"%(src)s\" -s 256x256 -t 75%% -o %(out)s_4.png" +ADD_OVERVIEW_CMD = "rm %(out)s;for i in $(seq 0 99); do nice -19 ffmpegthumbnailer -t $i%% -s %(scale)s -c jpeg -i \"%(src)s\" -o %(out)s_strip$i.jpg; nice -19 montage -geometry +0+0 %(out)s %(out)s_strip$i.jpg %(out)s; done; rm %(out)s_strip*.jpg" # ENCODE_MP4_CMD = "%(ffmpeg)s -i %(src)s -codec:v libx264 -profile:v high -pix_fmt yuv420p -preset faster -b:v %(bv)s -maxrate %(bv)s -bufsize %(bufsize)s -vf scale=%(scale)s -force_key_frames \"expr:gte(t,n_forced*1)\" -deinterlace -threads 0 -codec:a aac -strict -2 -ar %(ar)s -ac 2 -b:a %(ba)s -movflags faststart -y %(out)s" # ENCODE_WEBM_CMD = "%(ffmpeg)s -i %(src)s -codec:v libvpx -quality realtime -cpu-used 3 -b:v %(bv)s -maxrate %(bv)s -bufsize %(bufsize)s -qmin 10 -qmax 42 -threads 4 -codec:a libvorbis -y %(out)s" # ENCODE_MP3_CMD = "%(ffmpeg)s -i %(src)s -vn -ar %(ar)s -ab %(ab)s -f mp3 -threads 0 -y %(out)s" From 631df8a96caa842ca1939bc2aac2edcfe414c3ba Mon Sep 17 00:00:00 2001 From: Ptitloup Date: Wed, 31 May 2017 11:49:26 +0200 Subject: [PATCH 38/44] code review, pass RSS parameters in context processor, fix default value for homepage video settings and import only once h5p libraries --- pod_project/pod_project/urls-sample.py | 8 +++--- pod_project/pods/models.py | 1 - pod_project/pods/templatetags/list.py | 9 ++++-- pod_project/pods/views.py | 39 ++++++++++---------------- 4 files changed, 25 insertions(+), 32 deletions(-) diff --git a/pod_project/pod_project/urls-sample.py b/pod_project/pod_project/urls-sample.py index 4e25fa46..776af700 100755 --- a/pod_project/pod_project/urls-sample.py +++ b/pod_project/pod_project/urls-sample.py @@ -136,27 +136,27 @@ ## # RSS /ATOM feature patterns # -if settings.RSS_ENABLED: +if settings.RSS: # RSS Feed urlpatterns += [ url(r'^rss/select/(?P[^\/]+)/$', MySelectFeed(), name='rss_select'), ] """ -if settings.ATOM_AUDIO_ENABLED: +if settings.ATOM_AUDIO: # ATOM Audio Feed urlpatterns += [ url(r'^rss/audio/(?P[^\/]+)/$', AudiocastFeed(), name = 'audiocast'), ] """ -if settings.ATOM_HD_ENABLED: +if settings.ATOM_HD: # ATOM HD Feed urlpatterns += [ url(r'^rss/hd/(?P[^\/]+)/$', PodcastHdFeed(), name='podcast_hd'), ] -if settings.ATOM_SD_ENABLED: +if settings.ATOM_SD: # ATOM SD Feed urlpatterns += [ url(r'^rss/sd/(?P[^\/]+)/$', diff --git a/pod_project/pods/models.py b/pod_project/pods/models.py index 5f4c44f4..0d970dae 100755 --- a/pod_project/pods/models.py +++ b/pod_project/pods/models.py @@ -529,7 +529,6 @@ def update_video_index(sender, instance=None, created=False, **kwargs): @receiver(post_delete) # instead of @receiver(post_save, sender=Rebel) def update_es_index(sender, instance=None, created=False, **kwargs): - print "POST DELETE" list_of_models = ('ChapterPods', 'EnrichPods', 'ContributorPods', 'Pod') if sender.__name__ in list_of_models: # this is the dynamic part you want pod = None diff --git a/pod_project/pods/templatetags/list.py b/pod_project/pods/templatetags/list.py index e692991b..f51d4e6c 100755 --- a/pod_project/pods/templatetags/list.py +++ b/pod_project/pods/templatetags/list.py @@ -39,6 +39,9 @@ DOT = '.' PAGE_VAR = 'page' +HOMEPAGE_SHOWS_PASSWORDED = getattr(settings, 'HOMEPAGE_SHOWS_PASSWORDED', True) +HOMEPAGE_SHOWS_RESTRICTED = getattr(settings, 'HOMEPAGE_SHOWS_RESTRICTED', True) +HOMEPAGE_NBR_CONTENTS_SHOWN = getattr(settings, 'HOMEPAGE_NBR_CONTENTS_SHOWN', 12) @register.simple_tag(takes_context=True) @@ -183,14 +186,14 @@ def get_label_cursus(cursus): @register.inclusion_tag("videos/videos_list.html") def get_last_videos(): filter_args = {'encodingpods__gt': 0, 'is_draft': False} - if not settings.HOMEPAGE_SHOWS_PASSWORDED: + if not HOMEPAGE_SHOWS_PASSWORDED: filter_args['password'] = "" - if not settings.HOMEPAGE_SHOWS_RESTRICTED: + if not HOMEPAGE_SHOWS_RESTRICTED: filter_args['is_restricted'] = False return { 'videos': Pod.objects.filter(**filter_args).exclude( channel__visible=0).order_by( - "-date_added").distinct()[:settings.HOMEPAGE_NBR_CONTENTS_SHOWN], + "-date_added").distinct()[:HOMEPAGE_NBR_CONTENTS_SHOWN], 'DEFAULT_IMG': settings.DEFAULT_IMG } diff --git a/pod_project/pods/views.py b/pod_project/pods/views.py index 0c824f38..1917cb00 100755 --- a/pod_project/pods/views.py +++ b/pod_project/pods/views.py @@ -55,6 +55,11 @@ from django.core.servers.basehttp import FileWrapper +H5P_ENABLED = getattr(settings, 'H5P_ENABLED', False) +if H5P_ENABLED: + from h5pp.models import h5p_contents, h5p_libraries + from h5pp.h5p.h5pmodule import getUserScore, h5pGetContentId + DEFAULT_PER_PAGE = 12 VIDEOS = Pod.objects.filter(is_draft=False, encodingpods__gt=0).distinct() ES_URL = getattr(settings, 'ES_URL', ['http://127.0.0.1:9200/']) @@ -145,30 +150,26 @@ def channel(request, slug_c, slug_t=None): page = request.GET.get('page') videos = get_pagination(page, paginator) - RSS = settings.RSS_ENABLED - ATOM_HD = settings.ATOM_HD_ENABLED - ATOM_SD = settings.ATOM_SD_ENABLED #ATOM_AUDIO = settings.ATOM_AUDIO_ENABLED interactive = None - if settings.H5P_ENABLED: - from h5pp.models import h5p_libraries + if H5P_ENABLED: if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: interactive = True if request.is_ajax(): return render_to_response("videos/videos_list.html", - {"videos": videos, "param": param, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD}, + {"videos": videos, "param": param}, context_instance=RequestContext(request)) if request.GET.get('is_iframe', None): return render_to_response("videos/videos_iframe.html", - {"videos": videos, "param": param, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD}, + {"videos": videos, "param": param}, context_instance=RequestContext(request)) return render_to_response("channels/channel.html", {"channel": channel, "theme": theme, - "param": param, "videos": videos, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD, "interactive": interactive}, + "param": param, "videos": videos, "interactive": interactive}, context_instance=RequestContext(request)) @@ -325,8 +326,7 @@ def owner_videos_list(request): videos = get_pagination(page, paginator) interactive = None - if settings.H5P_ENABLED: - from h5pp.models import h5p_libraries + if H5P_ENABLED: if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: interactive = True @@ -442,9 +442,6 @@ def videos(request): videos = get_pagination(page, paginator) - RSS = settings.RSS_ENABLED - ATOM_HD = settings.ATOM_HD_ENABLED - ATOM_SD = settings.ATOM_SD_ENABLED #ATOM_AUDIO = settings.ATOM_AUDIO_ENABLED interactive = None @@ -456,7 +453,7 @@ def videos(request): if request.is_ajax(): some_data_to_dump = { 'json_toolbar': render_to_string('maintoolbar.html', - {'videos': videos, 'param': param, 'RSS': RSS, 'ATOM_HD': ATOM_HD, 'ATOM_SD': ATOM_SD}), + {'videos': videos, 'param': param}), 'json_videols': render_to_string('videos/videos_list.html', {'videos': videos, 'types': type, 'owners': list_owner, 'disciplines': discipline, 'param': param}) } @@ -473,7 +470,7 @@ def videos(request): return render_to_response("videos/videos.html", {"videos": videos, "types": type, "owners": list_owner, - "disciplines": discipline, "tags_slug": tag, "param": param, "RSS": RSS, "ATOM_HD": ATOM_HD, "ATOM_SD": ATOM_SD, "interactive": interactive}, + "disciplines": discipline, "tags_slug": tag, "param": param, "interactive": interactive}, context_instance=RequestContext(request)) @@ -497,9 +494,7 @@ def video(request, slug, slug_c=None, slug_t=None): param = param + "slug_t=%s" % (str(slug_t),) interactive = None - if settings.H5P_ENABLED: - from h5pp.models import h5p_contents, h5p_libraries - from h5pp.h5p.h5pmodule import getUserScore, h5pGetContentId + if H5P_ENABLED: if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: score = None h5p = None @@ -939,8 +934,7 @@ def video_edit(request, slug=None): ', '.join(settings.VIDEO_EXT_ACCEPT), ".", "").upper() interactive = None - if settings.H5P_ENABLED: - from h5pp.models import h5p_libraries + if H5P_ENABLED: if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: interactive = True @@ -979,8 +973,7 @@ def video_completion(request, slug): list_contributor = video.contributorpods_set.all() interactive = None - if settings.H5P_ENABLED: - from h5pp.models import h5p_libraries + if H5P_ENABLED: if h5p_libraries.objects.filter(machine_name='H5P.InteractiveVideo').count() > 0: interactive = True @@ -1662,7 +1655,6 @@ def video_interactive(request, slug): raise PermissionDenied if 'h5pp' in settings.INSTALLED_APPS: - from h5pp.models import h5p_contents interactive = h5p_contents.objects.filter(slug=slug).values() if len(interactive) > 0: return render_to_response('videos/video_interactive.html', @@ -1693,7 +1685,6 @@ def video_interactive(request, slug, slug_c=None, slug_t=None): theme = get_object_or_404(Theme, slug=slug_t) interactive = None - from h5pp.models import h5p_contents, h5p_libraries h5p = None version = h5p_libraries.objects.get(machine_name='H5P.InteractiveVideo') if h5p_contents.objects.filter(title=video.title).count() > 0: From ecbe44b9c62333303fe4592585e2cca90cb40c3f Mon Sep 17 00:00:00 2001 From: Ptitloup Date: Wed, 31 May 2017 12:15:16 +0200 Subject: [PATCH 39/44] improve video 360 --- pod_project/core/static/js/player.js | 5 +- pod_project/locale/fr/LC_MESSAGES/django.mo | Bin 56898 -> 56394 bytes pod_project/locale/fr/LC_MESSAGES/django.po | 1198 +++++++++-------- .../templates/videos/extraheadplayer.html | 2 + 4 files changed, 621 insertions(+), 584 deletions(-) diff --git a/pod_project/core/static/js/player.js b/pod_project/core/static/js/player.js index 8e24785e..db81414c 100755 --- a/pod_project/core/static/js/player.js +++ b/pod_project/core/static/js/player.js @@ -85,8 +85,11 @@ function loadVideo() { clickToToggle: (!isMobile()), clickAndDrag: true, autoMobileOrientation: true, + backToVerticalCenter: false, + backToHorizonCenter: false, initFov: 100, - NoticeMessage: (isMobile())? "please move your phone" : "please use your mouse drag and drop the video", + VREnable: false, + NoticeMessage: (isMobile())? NoticeMessageMobile : NoticeMessageMouse, callback: function () { //if(!isMobile()) myPlayer.play(); } diff --git a/pod_project/locale/fr/LC_MESSAGES/django.mo b/pod_project/locale/fr/LC_MESSAGES/django.mo index 8c53e805fd6e8be6ecf5f3fbab8352fb043fc5b1..e7289c7f85e0e8fb88e9544ac38621da273b6f73 100644 GIT binary patch delta 12871 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 delta 13319 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\n" +"POT-Creation-Date: 2017-05-31 12:10+0200\n" +"PO-Revision-Date: 2017-05-31 12:14+0100\n" +"Last-Translator: Nicolas \n" "Language-Team: ESUP POD \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.0.2\n" +"X-Generator: Poedit 1.6.4\n" #: core/admin.py:77 core/models.py:288 msgid "Email" @@ -49,8 +49,8 @@ msgstr "" "Ce champ vous permet d'ajouter une photo d'identité. L'image sera affichée " "avec vos vidéos." -#: core/models.py:93 core/models.py:188 pods/models.py:66 -#: pods/templates/videos/video_edit.html:507 +#: core/models.py:93 core/models.py:188 pods/models.py:70 +#: pods/templates/videos/video_edit.html:511 msgid "Description" msgstr "Description" @@ -62,7 +62,7 @@ msgstr "" "Ce champ vous permet d'écrire quelques mots sur vous-même. Le texte sera " "affiché avec vos vidéos." -#: core/models.py:95 pods/models.py:566 pods/models.py:763 +#: core/models.py:95 pods/models.py:607 pods/models.py:804 #: pods/templates/videos/completion/contributor/list_contributor.html:35 msgid "Web link" msgstr "Lien web" @@ -71,7 +71,7 @@ msgstr "Lien web" msgid "This field allows you to add an url." msgstr "Ce champ vous permet d'ajouter une adresse web." -#: core/models.py:100 pods/models.py:1089 +#: core/models.py:100 pods/models.py:1130 msgid "Comment" msgstr "Commentaire" @@ -83,8 +83,8 @@ msgstr "Profil" msgid "Profiles" msgstr "Profils" -#: core/models.py:166 pods/models.py:330 pods/models.py:507 pods/models.py:683 -#: pods/models.py:1086 +#: core/models.py:166 pods/models.py:317 pods/models.py:548 pods/models.py:724 +#: pods/models.py:1127 msgid "Video" msgstr "Vidéo" @@ -98,19 +98,19 @@ msgstr "Autoriser le téléchargement" msgid "video 360" msgstr "video" -#: core/models.py:170 pods/models.py:60 pods/models.py:111 pods/models.py:152 +#: core/models.py:170 pods/models.py:64 pods/models.py:109 pods/models.py:144 #: pods/templates/videos/chapter/list_chapter.html:34 #: pods/templates/videos/enrich/list_enrich.html:34 -#: pods/templates/videos/video_edit.html:452 +#: pods/templates/videos/video_edit.html:456 msgid "Title" msgstr "Titre" -#: core/models.py:171 pods/models.py:62 pods/models.py:113 pods/models.py:154 +#: core/models.py:171 pods/models.py:66 pods/models.py:111 pods/models.py:146 msgid "Slug" msgstr "Titre web" -#: core/models.py:173 pods/models.py:64 pods/models.py:115 pods/models.py:156 -#: pods/models.py:192 pods/models.py:737 pods/models.py:892 +#: core/models.py:173 pods/models.py:68 pods/models.py:113 pods/models.py:148 +#: pods/models.py:178 pods/models.py:778 pods/models.py:933 msgid "" "Used to access this instance, the \"slug\" is a short label containing only " "letters, numbers, underscore or dash top." @@ -119,10 +119,11 @@ msgstr "" "étiquette formée uniquement de lettres (non accentuées), de chiffres, de " "l'underscore (barre de soulignement) et du tiret." -#: core/models.py:175 core/templates/admin/filer/folder/directory_table.html:14 +#: core/models.py:175 +#: core/templates/admin/filer/folder/directory_table.html:14 #: core/templates/admin/filer/folder/directory_table.html:33 #: core/templates/admin/filer/folder/directory_table.html:81 pods/admin.py:120 -#: pods/templates/search/search_video.html:168 +#: pods/admin.py:217 pods/templates/search/search_video.html:168 msgid "Owner" msgstr "Propriétaire" @@ -135,12 +136,12 @@ msgid "Date of event" msgstr "Date de l'évènement" #: core/models.py:182 pods/templates/search/search_video.html:243 -#: pods/templates/videos/video_edit.html:480 +#: pods/templates/videos/video_edit.html:484 msgid "University course" msgstr "Cursus universitaire" #: core/models.py:185 pods/templates/search/search_video.html:230 -#: pods/templates/videos/video_edit.html:494 +#: pods/templates/videos/video_edit.html:498 msgid "Main language" msgstr "Langue principale" @@ -164,16 +165,16 @@ msgstr "Vignette" msgid "Overview" msgstr "Vue d'ensemble" -#: core/models.py:207 core/models.py:242 pods/templates/videos/video.html:318 +#: core/models.py:207 core/models.py:242 pods/templates/videos/video.html:391 msgid "Duration" msgstr "Durée" -#: core/models.py:215 core/models.py:216 pods/models.py:545 pods/models.py:621 -#: pods/models.py:732 pods/models.py:887 +#: core/models.py:215 core/models.py:216 pods/models.py:586 pods/models.py:662 +#: pods/models.py:773 pods/models.py:928 msgid "video" msgstr "video" -#: core/models.py:252 pods/models.py:1033 pods/models.py:1051 +#: core/models.py:252 pods/models.py:1074 pods/models.py:1092 msgid "name" msgstr "nom" @@ -201,7 +202,8 @@ msgstr "réglage d'encodage" msgid "encoding types" msgstr "réglages d'encodage" -#: core/models.py:287 core/templates/admin/filer/folder/directory_table.html:12 +#: core/models.py:287 +#: core/templates/admin/filer/folder/directory_table.html:12 msgid "Name" msgstr "Nom" @@ -237,7 +239,8 @@ msgstr "Vous n'êtes pas autorisé à accéder à cette ressource" #: core/templates/403.html:51 core/templates/404.html:51 #: core/templates/admin/base.html:47 core/templates/base.html:98 #: core/templates/contactus/contactus.html:43 core/templates/navbar.html:41 -#: core/templates/registration/login.html:99 core/templates/userProfile.html:72 +#: core/templates/registration/login.html:99 +#: core/templates/userProfile.html:71 msgid "Home" msgstr "Accueil" @@ -350,7 +353,7 @@ msgstr "Supprimer '%(item_label)s'" #: core/templates/admin/filer/folder/directory_table.html:86 #: pods/templates/videos/chapter/list_chapter.html:59 #: pods/templates/videos/enrich/list_enrich.html:63 -#: pods/templates/videos/ownertools.html:51 +#: pods/templates/videos/ownertools.html:56 #: pods/templates/videos/video_delete.html:73 msgid "Delete" msgstr "Supprimer" @@ -459,14 +462,14 @@ msgid "Share" msgstr "Partager" #: core/templates/base.html:159 core/templates/base.html.py:166 -#: pods/models.py:210 pods/models.py:305 +#: pods/models.py:196 pods/models.py:285 pods/models.py:1172 #: pods/templates/disciplines/disciplines.html:24 #: pods/templates/disciplines/disciplines.html:31 #: pods/templates/disciplines/disciplines.html:39 #: pods/templates/disciplines/disciplines.html:41 #: pods/templates/disciplines/disciplines.html:74 -#: pods/templates/videos/video_edit.html:550 -#: pods/templates/videos/videos.html:106 +#: pods/templates/videos/video_edit.html:554 +#: pods/templates/videos/videos.html:108 msgid "Disciplines" msgstr "Disciplines" @@ -474,11 +477,11 @@ msgstr "Disciplines" msgid "See all" msgstr "Afficher tout" -#: core/templates/base.html:179 pods/models.py:302 -#: pods/templates/search/search_video.html:192 pods/templates/tags/tags.html:25 -#: pods/templates/tags/tags.html.py:86 pods/templates/tags/tags.html:96 -#: pods/templates/tags/tags.html.py:104 pods/templates/videos/video.html:292 -#: pods/templates/videos/videos.html:130 +#: core/templates/base.html:179 pods/models.py:282 +#: pods/templates/search/search_video.html:192 +#: pods/templates/tags/tags.html:25 pods/templates/tags/tags.html.py:86 +#: pods/templates/tags/tags.html:96 pods/templates/tags/tags.html.py:104 +#: pods/templates/videos/video.html:365 pods/templates/videos/videos.html:132 msgid "Tags" msgstr "Mots clés" @@ -486,26 +489,26 @@ msgstr "Mots clés" msgid "See the cloud" msgstr "Voir le nuage" -#: core/templates/base.html:199 pods/models.py:988 +#: core/templates/base.html:199 pods/models.py:1029 msgid "Notes" msgstr "Notes" -#: core/templates/base.html:207 pods/templates/channels/channel_edit.html:162 -#: pods/templates/channels/channel_edit.html:163 +#: core/templates/base.html:207 pods/templates/channels/channel_edit.html:161 +#: pods/templates/channels/channel_edit.html:162 #: pods/templates/pagination.html:41 #: pods/templates/videos/chapter/form_chapter.html:42 #: pods/templates/videos/enrich/form_enrich.html:42 -#: pods/templates/videos/video.html:480 pods/templates/videos/video.html:481 -#: pods/templates/videos/video_edit.html:353 +#: pods/templates/videos/video.html:635 pods/templates/videos/video.html:636 +#: pods/templates/videos/video_edit.html:354 msgid "Save" msgstr "Enregistrer" #: core/templates/base.html:217 core/templates/registration/login.html:116 -#: core/templates/userProfile.html:93 +#: core/templates/userProfile.html:92 #: pods/templates/channels/my_channels.html:76 #: pods/templates/videos/my_videos.html:64 -#: pods/templates/videos/video_chapter.html:378 -#: pods/templates/videos/video_completion.html:540 +#: pods/templates/videos/video_chapter.html:377 +#: pods/templates/videos/video_completion.html:538 #: pods/templates/videos/video_enrich.html:491 msgid "Information" msgstr "Information" @@ -549,21 +552,22 @@ msgid "Please, specify the problem:" msgstr "Veuillez expliquer le problème :" #: core/templates/base.html:278 core/templates/contactus/contactus.html:35 -#: core/templates/header.html:50 core/templates/userProfile.html:64 -#: pods/templates/mediacourses/mediacourses_add.html:65 -#: pods/templates/videos/video.html:174 pods/templates/videos/video.html:175 -#: pods/templates/videos/video.html:212 pods/templates/videos/video.html:230 +#: core/templates/header.html:50 core/templates/userProfile.html:63 +#: pods/templates/mediacourses/mediacourses_add.html:62 +#: pods/templates/videos/video.html:214 pods/templates/videos/video.html:215 +#: pods/templates/videos/video.html:259 pods/templates/videos/video.html:277 msgid "Send" msgstr "Envoyer" #: core/templates/contactus/contactus.html:26 -#: core/templates/userProfile.html:55 core/views.py:166 -#: pods/templates/channels/channel_edit.html:83 -#: pods/templates/mediacourses/mediacourses_add.html:52 -#: pods/templates/videos/video_chapter.html:249 -#: pods/templates/videos/video_edit.html:320 -#: pods/templates/videos/video_enrich.html:255 pods/views.py:201 -#: pods/views.py:478 pods/views.py:727 pods/views.py:731 pods/views.py:1683 +#: core/templates/userProfile.html:54 core/views.py:166 +#: pods/templates/channels/channel_edit.html:82 +#: pods/templates/mediacourses/mediacourses_add.html:49 +#: pods/templates/videos/video_chapter.html:248 +#: pods/templates/videos/video_edit.html:321 +#: pods/templates/videos/video_enrich.html:255 pods/views.py:221 +#: pods/views.py:572 pods/views.py:668 pods/views.py:926 pods/views.py:930 +#: pods/views.py:1978 msgid "One or more errors have been found in the form." msgstr "Une ou plusieurs erreurs ont été trouvées dans le formulaire." @@ -573,10 +577,10 @@ msgid "Erase" msgstr "Effacer" #: core/templates/contactus/contactus.html:41 -#: core/templates/registration/login.html:97 core/templates/userProfile.html:70 -#: core/templates/userProfile.html.py:76 -#: pods/templates/videos/video_interactive.html:215 -#: pods/templates/videos/video_interactive.html:217 +#: core/templates/registration/login.html:97 +#: core/templates/userProfile.html:69 core/templates/userProfile.html.py:75 +#: pods/templates/videos/video_interactive.html:210 +#: pods/templates/videos/video_interactive.html:212 msgid "Back" msgstr "Retour" @@ -584,7 +588,7 @@ msgstr "Retour" msgid "Here are the latest videos" msgstr "Voici les dernières vidéos" -#: core/templates/header.html:41 pods/models.py:631 +#: core/templates/header.html:41 pods/models.py:672 #: pods/templates/videos/completion/subtitle/list_subtitle.html:34 msgid "Language" msgstr "Langue" @@ -620,42 +624,44 @@ msgid "Log in" msgstr "Connexion" #: core/templates/navbar.html:45 core/templates/navbar.html.py:68 -#: pods/models.py:87 pods/models.py:307 pods/templates/channels/channel.html:49 +#: pods/models.py:91 pods/models.py:287 pods/models.py:1174 +#: pods/templates/channels/channel.html:49 #: pods/templates/channels/channels.html:24 #: pods/templates/channels/channels.html:31 #: pods/templates/channels/channels.html:39 #: pods/templates/channels/channels.html:41 -#: pods/templates/videos/video.html:141 -#: pods/templates/videos/video_edit.html:568 -#: pods/templates/videos/video_interactive.html:173 +#: pods/templates/videos/video.html:181 +#: pods/templates/videos/video_edit.html:572 +#: pods/templates/videos/video_interactive.html:168 msgid "Channels" msgstr "Chaînes" #: core/templates/navbar.html:76 core/templates/navbar.html.py:92 -#: pods/models.py:76 pods/templates/channels/channel_edit.html:177 +#: pods/models.py:80 pods/templates/channels/channel_edit.html:176 #: pods/templates/owners/owners.html:24 pods/templates/owners/owners.html:39 -#: pods/templates/owners/owners.html:41 pods/templates/videos/videos.html:52 +#: pods/templates/owners/owners.html:41 pods/templates/videos/videos.html:54 msgid "Users" msgstr "Utilisateurs" #: core/templates/navbar.html:99 core/templates/navbar.html.py:110 -#: pods/models.py:174 pods/templates/types/types.html:24 +#: pods/models.py:166 pods/templates/types/types.html:24 #: pods/templates/types/types.html.py:28 pods/templates/types/types.html:33 -#: pods/templates/types/types.html.py:41 pods/templates/videos/videos.html:82 +#: pods/templates/types/types.html.py:41 pods/templates/videos/videos.html:84 msgid "Types" msgstr "Types" -#: core/templates/navbar.html:115 pods/models.py:331 -#: pods/templates/videos/video.html:144 pods/templates/videos/videos.html:26 -#: pods/templates/videos/videos.html:30 pods/templates/videos/videos.html:32 +#: core/templates/navbar.html:115 pods/models.py:318 +#: pods/templates/videos/video.html:184 +#: pods/templates/videos/video_interactive.html:171 +#: pods/templates/videos/videos.html:26 pods/templates/videos/videos.html:30 +#: pods/templates/videos/videos.html:32 #: pods/templates/videos/videos_iframe.html:25 -#: pods/templates/videos/video_interactive.html:176 msgid "Videos" msgstr "Vidéos" #: core/templates/navbar.html:119 pods/templates/videos/video_edit.html:26 -#: pods/templates/videos/video_edit.html:276 -#: pods/templates/videos/video_edit.html:311 +#: pods/templates/videos/video_edit.html:277 +#: pods/templates/videos/video_edit.html:312 msgid "Add a new video" msgstr "Ajouter une nouvelle vidéo" @@ -664,7 +670,7 @@ msgstr "Ajouter une nouvelle vidéo" #: pods/templates/search/search_video.html:54 #: pods/templates/search/search_video.html:64 #: pods/templates/search/search_video.html:158 -#: pods/templates/videos/videos.html:54 +#: pods/templates/videos/videos.html:56 msgid "Search" msgstr "Rechercher" @@ -694,71 +700,27 @@ msgstr "N'hésitez pas à nous contacter pour toute assistance :" #: core/templates/registration/login.html:119 #: core/theme/DEFAULT/templates/footer.html:27 #: core/theme/DEFAULT/templates/footer.html:28 core/views.py:226 -#: pods/templates/videos/video.html:180 +#: pods/templates/videos/video.html:220 msgid "Contact us" msgstr "Contactez nous" #: core/templates/userProfile.html:24 -#: pods/templates/channels/channel_edit.html:70 +#: pods/templates/channels/channel_edit.html:69 msgid "My profile" msgstr "Mon profil" -#: core/templates/userProfile.html:38 core/templates/userProfile.html.py:48 +#: core/templates/userProfile.html:37 core/templates/userProfile.html.py:47 msgid "My Profile" msgstr "Mon profil" -#: core/templates/userProfile.html:67 +#: core/templates/userProfile.html:66 #: pods/templates/videos/chapter/form_chapter.html:43 #: pods/templates/videos/enrich/form_enrich.html:43 #: pods/templates/videos/video_delete.html:71 msgid "Cancel" msgstr "Annuler" -#: pods/templates/videos/video_interactive.html:178 -msgid "Creation" -msgstr "Création" - -#: pods/templates/videos/video_interactive.html:208 -#: pods/templates/videos/video_interactive.html:210 -msgid "Delete the interactive part of this video" -msgstr "Supprimer la partie interactive de cette vidéo" - -#: pods/templates/videos/video_interactive.html:224 -msgid "" -"Do not forget to save your work regularly. Especially if you add an " -"interaction." -msgstr "" -"N'oubliez pas de sauvegarder votre travail régulièrement. Surtout si vous " -"ajoutez une interaction." - -#: pods/templates/videos/video_interactive.html:226 -msgid "" -"To save and continue your work click on the button [Save and continue]. If " -"you have completed your work click on the button [Save and return to video] " -"to view your new interactive video." -msgstr "" -"Pour sauvegarder et continuer votre travail cliquez sur le bouton " -"[Sauvegarder et continuer]. Si vous avez terminé votre travail cliquez sur " -"le bouton [Sauvegarder et retour à la vidéo] pour voir votre nouvelle vidéo " -"interactive." - -#: pods/templates/videos/video_interactive.html:235 -#: pods/templates/videos/video_interactive.html:236 -#: pods/templates/videos/video_interactive.html:237 -msgid "Save and continue" -msgstr "Sauvegarder et continuer" - -#: pods/templates/videos/video_interactive.html:239 -#: pods/templates/videos/video_interactive.html:240 -#: pods/templates/videos/video_interactive.html:241 -msgid "Save and return to video" -msgstr "Sauvegarder et retour à la vidéo" - -#: pods/templates/videos/video_interactive.html:199 -msgid "Loading, please wait..." -msgstr "Chargement en cours, veuillez patienter..." - -#: core/templates/userProfile.html:95 +#: core/templates/userProfile.html:94 msgid "" "Your current permissions do not allow you to add a photo to your profile. " "Please contact us to add these rights." @@ -771,12 +733,44 @@ msgstr "" msgid "FAQ" msgstr "Foire aux questions" +#: core/utils.py:333 +#, python-format +msgid "Encoding #%(content_id)s completed" +msgstr "Encodage n°%(content_id)s terminé" + +#: core/utils.py:338 core/utils.py:352 +#, python-format +msgid "" +"The content “%(content_title)s” has been encoded to Web formats, and is now " +"available on %(site_title)s." +msgstr "" +"Le contenu « %(content_title)s » a été encodé aux formats web, et est " +"maintenant disponible sur %(site_title)s." + +#: core/utils.py:342 core/utils.py:356 +msgid "You will find it here:" +msgstr "Retrouvez-le ici :" + +#: core/utils.py:344 +#, python-format +msgid "and in your content list: %(content_list)s." +msgstr "ainsi que dans votre liste de contenus: %(content_list)s." + +#: core/utils.py:359 +#, python-format +msgid "and in %(your_content_list)s." +msgstr "ainsi que dans %(your_content_list)s." + +#: core/utils.py:362 +msgid "your content list" +msgstr "votre liste de contenus" + #: core/views.py:93 msgid "Login" msgstr "Identifiant" #: core/views.py:95 pods/admin.py:146 pods/forms.py:318 -#: pods/templates/videos/video_edit.html:633 +#: pods/templates/videos/video_edit.html:637 msgid "Password" msgstr "Mot de passe" @@ -1467,7 +1461,7 @@ msgstr "Doctorat" msgid "Other" msgstr "Autre" -#: pods/admin.py:54 pods/models.py:73 +#: pods/admin.py:54 pods/models.py:77 msgid "Owners" msgstr "Propriétaires" @@ -1479,34 +1473,34 @@ msgstr "(Ré)encoder la sélection" msgid "Filetype not allowed! Filetypes allowed: " msgstr "Type de fichier non admis ! Les types de fichiers acceptés sont : " -#: pods/forms.py:156 pods/templates/videos/video_edit.html:467 +#: pods/forms.py:156 pods/templates/videos/video_edit.html:471 msgid "Date of the event" msgstr "Date de l'évènement" -#: pods/forms.py:158 pods/templates/videos/video_edit.html:438 +#: pods/forms.py:158 pods/templates/videos/video_edit.html:442 msgid "File" msgstr "Fichier" -#: pods/models.py:68 pods/models.py:118 pods/models.py:159 pods/models.py:195 -#: pods/templates/channels/channel.html:109 -#: pods/templates/channels/channel.html:146 -#: pods/templates/channels/channel.html:159 +#: pods/models.py:72 pods/models.py:116 pods/models.py:151 pods/models.py:181 +#: pods/templates/channels/channel.html:125 +#: pods/templates/channels/channel.html:162 +#: pods/templates/channels/channel.html:175 msgid "Headband" msgstr "Bandeau" -#: pods/models.py:70 +#: pods/models.py:74 msgid "Background color" msgstr "Couleur de fond" -#: pods/models.py:71 +#: pods/models.py:75 msgid "Extra style" msgstr "Style supplémentaire" -#: pods/models.py:79 +#: pods/models.py:83 pods/models.py:1179 msgid "Visible" msgstr "Visible" -#: pods/models.py:81 +#: pods/models.py:85 msgid "" "If checked, the channel appear in a list of available channels on the " "platform." @@ -1514,48 +1508,45 @@ msgstr "" "Si cochée, la chaîne apparait dans la liste des chaînes disponibles sur la " "plate-forme." -#: pods/models.py:86 pods/models.py:120 +#: pods/models.py:90 pods/models.py:118 #: pods/templates/search/search_video.html:217 msgid "Channel" msgstr "Chaîne" -#: pods/models.py:106 pods/models.py:147 pods/models.py:183 pods/models.py:219 -msgid "count" -msgstr "compte" - -#: pods/models.py:134 +#: pods/models.py:132 msgid "Theme" msgstr "Thème" -#: pods/models.py:135 pods/models.py:309 -#: pods/templates/channels/channel.html:120 -#: pods/templates/channels/channel_edit.html:96 -#: pods/templates/videos/video_edit.html:586 +#: pods/models.py:133 pods/models.py:289 pods/models.py:1176 +#: pods/templates/channels/channel.html:136 +#: pods/templates/channels/channel_edit.html:95 +#: pods/templates/videos/video_edit.html:590 msgid "Themes" msgstr "Thèmes" -#: pods/models.py:173 pods/models.py:303 pods/models.py:757 -#: pods/templates/search/search_video.html:180 +#: pods/models.py:165 pods/models.py:283 pods/models.py:798 +#: pods/models.py:1170 pods/templates/search/search_video.html:180 #: pods/templates/videos/enrich/list_enrich.html:35 -#: pods/templates/videos/video.html:324 -#: pods/templates/videos/video_edit.html:534 +#: pods/templates/videos/video.html:397 +#: pods/templates/videos/video_edit.html:538 msgid "Type" msgstr "Type" -#: pods/models.py:188 pods/models.py:733 pods/models.py:888 pods/models.py:1002 +#: pods/models.py:174 pods/models.py:774 pods/models.py:929 +#: pods/models.py:1043 msgid "title" msgstr "titre" -#: pods/models.py:190 pods/models.py:735 pods/models.py:890 +#: pods/models.py:176 pods/models.py:776 pods/models.py:931 msgid "slug" msgstr "titre court" -#: pods/models.py:209 pods/templates/search/search_video.html:204 -#: pods/templates/videos/video.html:331 +#: pods/models.py:195 pods/templates/search/search_video.html:204 +#: pods/templates/videos/video.html:404 msgid "Discipline" msgstr "Discipline" -#: pods/models.py:301 +#: pods/models.py:281 msgid "" "Separate tags with spaces, enclose the tags consist of several words in " "quotation marks." @@ -1563,23 +1554,23 @@ msgstr "" "Séparez les mots-clés avec des espaces, placez les mots-clés constitués de " "plusieurs mots entre guillemets." -#: pods/models.py:314 pods/templates/videos/video_edit.html:605 +#: pods/models.py:294 pods/templates/videos/video_edit.html:609 msgid "Draft" msgstr "Brouillon" -#: pods/models.py:316 +#: pods/models.py:296 msgid "" "If this box is checked, the video will be visible and accessible only by you." msgstr "" "Si cette case est cochée, la vidéo sera visible et accessible uniquement par " "vous." -#: pods/models.py:319 pods/models.py:1063 -#: pods/templates/videos/video_edit.html:618 +#: pods/models.py:299 pods/models.py:1104 +#: pods/templates/videos/video_edit.html:622 msgid "Restricted access" msgstr "Accès restreint" -#: pods/models.py:321 +#: pods/models.py:301 msgid "" "If this box is checked, the video will only be accessible to authenticated " "users." @@ -1587,388 +1578,419 @@ msgstr "" "Si cette case est cochée, la vidéo sera accessible uniquement par les " "utilisateurs authentifiés." -#: pods/models.py:324 +#: pods/models.py:304 msgid "password" msgstr "Mot de passe" -#: pods/models.py:326 +#: pods/models.py:306 msgid "Viewing this video will not be possible without this password." msgstr "" "Le visionnage de la vidéo ne pourra se faire qu'après avoir fourni ce mot de " "passe." -#: pods/models.py:509 +#: pods/models.py:309 +msgid "hash_id" +msgstr "" + +#: pods/models.py:311 +msgid "Hashcode to retrieve de video" +msgstr "" + +#: pods/models.py:550 msgid "encodingType" msgstr "type d'encodage" -#: pods/models.py:511 +#: pods/models.py:552 msgid "encodingFile" msgstr "Fichier résultant" -#: pods/models.py:519 +#: pods/models.py:560 msgid "Format" msgstr "format" -#: pods/models.py:527 +#: pods/models.py:568 msgid "encoding" msgstr "encodage" -#: pods/models.py:528 +#: pods/models.py:569 msgid "encodings" msgstr "encodages" -#: pods/models.py:546 +#: pods/models.py:587 msgid "lastname / firstname" msgstr "Nom / Prénom" -#: pods/models.py:548 +#: pods/models.py:589 msgid "mail" msgstr "courriel" -#: pods/models.py:550 +#: pods/models.py:591 msgid "actor" msgstr "acteur" -#: pods/models.py:551 +#: pods/models.py:592 msgid "author" msgstr "auteur" -#: pods/models.py:552 +#: pods/models.py:593 msgid "designer" msgstr "concepteur" -#: pods/models.py:553 +#: pods/models.py:594 msgid "consultant" msgstr "consultant" -#: pods/models.py:554 +#: pods/models.py:595 msgid "contributor" msgstr "contributeur" -#: pods/models.py:555 +#: pods/models.py:596 msgid "editor" msgstr "éditeur" -#: pods/models.py:556 +#: pods/models.py:597 msgid "speaker" msgstr "intervenant" -#: pods/models.py:557 +#: pods/models.py:598 msgid "soundman" msgstr "preneur de son" -#: pods/models.py:558 +#: pods/models.py:599 msgid "director" msgstr "réalisateur" -#: pods/models.py:559 +#: pods/models.py:600 msgid "writer" msgstr "scénariste" -#: pods/models.py:560 +#: pods/models.py:601 msgid "technician" msgstr "technicien" -#: pods/models.py:561 +#: pods/models.py:602 msgid "voice-over" msgstr "voix-off" -#: pods/models.py:564 +#: pods/models.py:605 msgid "role" msgstr "rôle" -#: pods/models.py:569 +#: pods/models.py:610 msgid "Contributor Pod" msgstr "Contributeur" -#: pods/models.py:570 +#: pods/models.py:611 msgid "Contributors Pod" msgstr "Contributeurs" -#: pods/models.py:582 +#: pods/models.py:623 msgid "please enter a name from 2 to 200 caracteres." msgstr "Veuillez renseigner un titre contenant entre 2 et 100 caractères. " -#: pods/models.py:585 +#: pods/models.py:626 msgid "you cannot enter a weblink with more than 200 caracteres." msgstr "les liens internet doivent être inférieur à 200 caractères. " -#: pods/models.py:587 +#: pods/models.py:628 msgid "please enter a role." msgstr "Veuillez renseigner un rôle." -#: pods/models.py:602 +#: pods/models.py:643 msgid "there is already a contributor with the same name and role in the list." msgstr "Un contributeur avec le même nom et le même role existe déjà." -#: pods/models.py:624 +#: pods/models.py:665 msgid "subtitles" msgstr "sous-titres" -#: pods/models.py:625 +#: pods/models.py:666 msgid "captions" msgstr "légendes" -#: pods/models.py:628 +#: pods/models.py:669 #: pods/templates/videos/completion/subtitle/list_subtitle.html:33 msgid "Kind" msgstr "Genre" -#: pods/models.py:633 +#: pods/models.py:674 msgid "subtitle file" msgstr "fichier de sous-titres" -#: pods/models.py:636 +#: pods/models.py:677 msgid "Track Pod" msgstr "Piste" -#: pods/models.py:637 +#: pods/models.py:678 msgid "Tracks Pod" msgstr "Pistes" -#: pods/models.py:649 +#: pods/models.py:690 msgid "please enter a correct kind." msgstr "veuillez renseigner le type de piste." -#: pods/models.py:651 +#: pods/models.py:692 msgid "please enter a correct lang." msgstr "veuillez renseigner une langue." -#: pods/models.py:653 +#: pods/models.py:694 msgid "please specify a track file." msgstr "veuillez spécifier un fichier de sous-titre ou de légende." -#: pods/models.py:655 +#: pods/models.py:696 msgid "only “.vtt” format is allowed." msgstr "seul le format « .vtt » est autorisé." -#: pods/models.py:670 +#: pods/models.py:711 msgid "" "there is already a subtitle with the same kind and language in the list." msgstr "un sous-titrage de même nature et de même langue existe déjà." -#: pods/models.py:687 +#: pods/models.py:728 msgid "Document Pod" msgstr "Document" -#: pods/models.py:688 +#: pods/models.py:729 msgid "Documents Pod" msgstr "Documents" -#: pods/models.py:705 +#: pods/models.py:746 msgid "please enter a document " msgstr "veuillez sélectionner un document " -#: pods/models.py:721 +#: pods/models.py:762 msgid "this document is already contained in the list." msgstr "Ce document a déjà été envoyé." -#: pods/models.py:740 +#: pods/models.py:781 msgid "Stop video" msgstr "Arrêter la lecture" -#: pods/models.py:741 +#: pods/models.py:782 msgid "The video will pause when displaying this enrichment." msgstr "La vidéo se met en pause lors de l'affichage de cet enrichissement." -#: pods/models.py:743 pods/templates/videos/enrich/list_enrich.html:36 +#: pods/models.py:784 pods/templates/videos/enrich/list_enrich.html:36 msgid "Start" msgstr "Début" -#: pods/models.py:744 +#: pods/models.py:785 msgid "Start of enrichment display in seconds" msgstr "Début d'affichage de l'enrichissement en secondes" -#: pods/models.py:746 pods/templates/videos/enrich/list_enrich.html:37 +#: pods/models.py:787 pods/templates/videos/enrich/list_enrich.html:37 msgid "End" msgstr "Fin" -#: pods/models.py:747 +#: pods/models.py:788 msgid "End of enrichment display in seconds" msgstr "Fin d'affichage de l'enrichissement en secondes" -#: pods/models.py:750 +#: pods/models.py:791 msgid "image" msgstr "image" -#: pods/models.py:751 pods/models.py:761 +#: pods/models.py:792 pods/models.py:802 msgid "richtext" msgstr "texte enrichi et mis en forme" -#: pods/models.py:752 +#: pods/models.py:793 msgid "weblink" msgstr "lien web" -#: pods/models.py:753 +#: pods/models.py:794 msgid "document" msgstr "document" -#: pods/models.py:754 +#: pods/models.py:795 msgid "embed" msgstr "intégrer" -#: pods/models.py:767 +#: pods/models.py:808 msgid "Integrate an document (PDF, text, html)" msgstr "Afficher un document (PDF, texte ou html)" -#: pods/models.py:769 +#: pods/models.py:810 msgid "Embed" msgstr "Intégrer" -#: pods/models.py:771 +#: pods/models.py:812 msgid "Integrate an external source" msgstr "Afficher une source externe (video youtube par exemple)" -#: pods/models.py:774 +#: pods/models.py:815 msgid "Enrichment" msgstr "Enrichissement" -#: pods/models.py:775 +#: pods/models.py:816 msgid "Enrichments" msgstr "Enrichissements" -#: pods/models.py:796 pods/models.py:919 -#: pods/templates/videos/video_chapter.html:272 +#: pods/models.py:837 pods/models.py:960 +#: pods/templates/videos/video_chapter.html:271 #: pods/templates/videos/video_enrich.html:327 msgid "Please enter a title from 2 to 100 characters." msgstr "Veuillez renseigner un titre contenant entre 2 et 100 caractères." -#: pods/models.py:799 pods/models.py:922 +#: pods/models.py:840 pods/models.py:963 #, python-format msgid "Please enter a correct start field between 0 and %(duration)s." msgstr "" "Veuillez renseigner une valeur de début d'enrichissement comprise entre 0 et " "%(duration)s." -#: pods/models.py:803 +#: pods/models.py:844 #, python-format msgid "Please enter a correct end field between 1 and %(duration)s." msgstr "" "Veuillez renseigner une valeur de fin d'enrichissement comprise entre 1 et " "%(duration)s." -#: pods/models.py:807 pods/templates/videos/video_enrich.html:345 +#: pods/models.py:848 pods/templates/videos/video_enrich.html:345 msgid "Please enter a correct image." msgstr "Veuillez renseigner une image." -#: pods/models.py:811 pods/templates/videos/video_enrich.html:352 +#: pods/models.py:852 pods/templates/videos/video_enrich.html:352 msgid "Please enter a correct richtext." msgstr "Veuillez renseigner un texte." -#: pods/models.py:815 pods/templates/videos/video_enrich.html:359 +#: pods/models.py:856 pods/templates/videos/video_enrich.html:359 msgid "Please enter a correct weblink." msgstr "Veuillez renseigner un lien internet." -#: pods/models.py:819 pods/templates/videos/video_completion.html:422 +#: pods/models.py:860 pods/templates/videos/video_completion.html:420 #: pods/templates/videos/video_enrich.html:372 msgid "Please select a document." msgstr "Veuillez sélectionner un document." -#: pods/models.py:823 pods/templates/videos/video_enrich.html:379 +#: pods/models.py:864 pods/templates/videos/video_enrich.html:379 msgid "Please enter a correct embed." msgstr "Veuillez renseigner un code embed." -#: pods/models.py:825 pods/templates/videos/video_enrich.html:391 +#: pods/models.py:866 pods/templates/videos/video_enrich.html:391 msgid "Please enter a type in index field." msgstr "Veuillez choisir un type d'enrichissement." -#: pods/models.py:837 +#: pods/models.py:878 msgid "The value of the start field is greater than the value of end field." msgstr "La valeur du commencement ne peut être supérieure à celle de la fin." -#: pods/models.py:840 +#: pods/models.py:881 msgid "The value of end field is greater than the video duration." msgstr "" "La valeur de fin d'enrichissement est supérieure à la durée de la vidéo." -#: pods/models.py:842 +#: pods/models.py:883 msgid "End field and start field can't be equal." msgstr "Le commencement et la fin ne peuvent être équivalents." -#: pods/models.py:860 pods/templates/videos/video_enrich.html:421 +#: pods/models.py:901 pods/templates/videos/video_enrich.html:421 msgid "There is an overlap with the enrichment " msgstr "Il y a un chevauchement avec l'enrichissement " -#: pods/models.py:895 pods/templates/videos/chapter/list_chapter.html:35 +#: pods/models.py:936 pods/templates/videos/chapter/list_chapter.html:35 msgid "Start time" msgstr "Début" -#: pods/models.py:896 +#: pods/models.py:937 msgid "Start time of the chapter, in seconds." msgstr "Début du chapitre, en secondes." -#: pods/models.py:899 +#: pods/models.py:940 msgid "Chapter" msgstr "Chapitre" -#: pods/models.py:900 +#: pods/models.py:941 msgid "Chapters" msgstr "Chapitres" -#: pods/models.py:940 +#: pods/models.py:981 msgid "There is an overlap with the chapter " msgstr "Il y a un chevauchement avec le chapitre " -#: pods/models.py:970 +#: pods/models.py:1011 msgid "Favorite" msgstr "Favoris" -#: pods/models.py:971 +#: pods/models.py:1012 msgid "Favorites" msgstr "Mes favoris" -#: pods/models.py:984 pods/models.py:987 +#: pods/models.py:1025 pods/models.py:1028 msgid "Note" msgstr "Note" -#: pods/models.py:1010 +#: pods/models.py:1051 msgid "Mediacourse" msgstr "Mediacours" -#: pods/models.py:1011 +#: pods/models.py:1052 msgid "Mediacourses" msgstr "Mediacours" -#: pods/models.py:1045 pods/models.py:1052 +#: pods/models.py:1086 pods/models.py:1093 msgid "Building" msgstr "Bâtiment" -#: pods/models.py:1046 +#: pods/models.py:1087 msgid "Buildings" msgstr "Bâtiments" -#: pods/models.py:1054 +#: pods/models.py:1095 msgid "description" msgstr "description" -#: pods/models.py:1065 +#: pods/models.py:1106 msgid "Live is accessible only to authenticated users." msgstr "La vidéo est accessible uniquement aux utilisateurs authentifiés." -#: pods/models.py:1078 +#: pods/models.py:1119 msgid "Recorder" msgstr "Enregistreur" -#: pods/models.py:1079 +#: pods/models.py:1120 msgid "Recorders" msgstr "Enregistreurs" -#: pods/models.py:1087 pods/templates/videos/video.html:531 +#: pods/models.py:1128 pods/templates/videos/video.html:544 msgid "User" msgstr "Utilisateur" -#: pods/models.py:1090 +#: pods/models.py:1131 msgid "Answer" msgstr "Réponse" -#: pods/models.py:1106 +#: pods/models.py:1147 msgid "Report" msgstr "Signaler" -#: pods/models.py:1107 +#: pods/models.py:1148 msgid "Reports" msgstr "Signalements" +#: pods/models.py:1177 +msgid "Count items" +msgstr "" + +#: pods/models.py:1178 +msgid "Keep 0 to mean all items" +msgstr "" + +#: pods/models.py:1181 +#, fuzzy +#| msgid "" +#| "If this box is checked, the video will be visible and accessible only by " +#| "you." +msgid "" +"If this box is checked, the video will be visible and accessible by anyone." +msgstr "" +"Si cette case est cochée, la vidéo sera visible et accessible uniquement par " +"vous." + +#: pods/models.py:1185 pods/models.py:1186 +msgid "RSS" +msgstr "" + #: pods/templates/channels/channel.html:61 #: pods/templates/disciplines/disciplines.html:50 #: pods/templates/favorites/my_favorites.html:20 @@ -2032,43 +2054,43 @@ msgid_plural "%(counter)s videos" msgstr[0] "%(counter)s vidéo" msgstr[1] "%(counter)s vidéos" -#: pods/templates/channels/channel.html:92 -#: pods/templates/channels/channel.html:94 +#: pods/templates/channels/channel.html:108 +#: pods/templates/channels/channel.html:110 #: pods/templates/channels/channels_list.html:39 msgid "edit" msgstr "modifier" -#: pods/templates/channels/channel.html:117 +#: pods/templates/channels/channel.html:133 msgid "Here related themes in this channel" msgstr "Voici les thèmes liés à cette chaîne" -#: pods/templates/channels/channel.html:175 +#: pods/templates/channels/channel.html:191 msgid "no video found" msgstr "Aucune vidéo trouvée" #: pods/templates/channels/channel_edit.html:27 -#: pods/templates/channels/channel_edit.html:68 -#: pods/templates/channels/channel_edit.html:70 +#: pods/templates/channels/channel_edit.html:67 +#: pods/templates/channels/channel_edit.html:69 msgid "Edition of the channel" msgstr "Édition de la chaîne" -#: pods/templates/channels/channel_edit.html:120 -#: pods/templates/channels/channel_edit.html:147 +#: pods/templates/channels/channel_edit.html:119 +#: pods/templates/channels/channel_edit.html:146 msgid "Delete this theme" msgstr "Supprimer ce thème" -#: pods/templates/channels/channel_edit.html:154 +#: pods/templates/channels/channel_edit.html:153 msgid "Add a new theme" msgstr "Ajouter un nouveau thème" +#: pods/templates/channels/channel_edit.html:164 #: pods/templates/channels/channel_edit.html:165 -#: pods/templates/channels/channel_edit.html:166 -#: pods/templates/videos/video_edit.html:356 +#: pods/templates/videos/video_edit.html:357 msgid "Save and return to previous page" msgstr "Enregistrer et revenir à la page précédente" +#: pods/templates/channels/channel_edit.html:167 #: pods/templates/channels/channel_edit.html:168 -#: pods/templates/channels/channel_edit.html:169 msgid "Save and see channel" msgstr "Enregistrer et voir la chaîne" @@ -2121,19 +2143,19 @@ msgid "Change display" msgstr "Changer l'affichage" #: pods/templates/mediacourses/mediacourses_add.html:25 -#: pods/templates/mediacourses/mediacourses_add.html:38 -#: pods/templates/mediacourses/mediacourses_add.html:45 +#: pods/templates/mediacourses/mediacourses_add.html:35 +#: pods/templates/mediacourses/mediacourses_add.html:42 msgid "Adding a new record" msgstr "Ajouter un nouvel enregistrement" -#: pods/templates/mediacourses/mediacourses_add.html:38 +#: pods/templates/mediacourses/mediacourses_add.html:35 #: pods/templates/videos/my_videos.html:24 #: pods/templates/videos/my_videos.html:32 #: pods/templates/videos/my_videos.html:43 -#: pods/templates/videos/video_chapter.html:332 -#: pods/templates/videos/video_completion.html:452 +#: pods/templates/videos/video_chapter.html:331 +#: pods/templates/videos/video_completion.html:450 #: pods/templates/videos/video_delete.html:35 -#: pods/templates/videos/video_edit.html:273 +#: pods/templates/videos/video_edit.html:274 #: pods/templates/videos/video_enrich.html:445 msgid "My videos" msgstr "Mes vidéos" @@ -2204,6 +2226,7 @@ msgstr "Recherche avancée" #: pods/templates/search/search_video.html:152 #: pods/templates/videos/ownertools.html:25 +#: pods/templates/videos/video_interactive.html:173 msgid "Edit" msgstr "Modifier" @@ -2338,7 +2361,15 @@ msgstr "Modifier l'enrichissement" msgid "Delete the enrichment" msgstr "Supprimer l'enrichissement" -#: pods/templates/videos/extraheadplayer.html:97 +#: pods/templates/videos/extraheadplayer.html:86 +msgid "please move your phone" +msgstr "Déplacer votre téléphone" + +#: pods/templates/videos/extraheadplayer.html:87 +msgid "please use your mouse drag and drop the video" +msgstr "Utilisez votre souris pour vous déplacer dans la vidéo" + +#: pods/templates/videos/extraheadplayer.html:99 #, python-format msgid "Access this content on “%(TITLE_SITE)s” in a new window / tab." msgstr "" @@ -2394,175 +2425,170 @@ msgstr "Regarder la vidéo." msgid "Watch" msgstr "Regarder" -#: pods/templates/videos/ownertools.html:50 -msgid "Delete the video." -msgstr "Supprimer la vidéo." - -#: pods/templates/videos/ownertools.html:43 +#: pods/templates/videos/ownertools.html:51 msgid "Add interactivity to the video." msgstr "Ajoutez de l'interactivité à la vidéo." -#: pods/templates/videos/ownertools.html:44 +#: pods/templates/videos/ownertools.html:52 msgid "Interactivity" msgstr "Interactivité" -#: pods/templates/videos/video.html:44 pods/templates/videos/video.html:75 -#: pods/templates/videos/video_chapter.html:175 -#: pods/templates/videos/video_chapter.html:201 -#: pods/templates/videos/video_chapter.html:240 +#: pods/templates/videos/ownertools.html:55 +msgid "Delete the video." +msgstr "Supprimer la vidéo." + +#: pods/templates/videos/video.html:45 pods/templates/videos/video.html:76 +#: pods/templates/videos/video_chapter.html:174 +#: pods/templates/videos/video_chapter.html:200 +#: pods/templates/videos/video_chapter.html:239 #: pods/templates/videos/video_enrich.html:182 #: pods/templates/videos/video_enrich.html:208 #: pods/templates/videos/video_enrich.html:246 msgid "You are no longer authenticated. Please log in again." msgstr "Vous n'êtes plus authentifié. Veuillez vous reconnecter." -#: pods/templates/videos/video.html:49 pods/templates/videos/video.html:94 +#: pods/templates/videos/video.html:50 pods/templates/videos/video.html:95 msgid "Error sending information." msgstr "Erreur lors de l'envoi des informations." -#: pods/templates/videos/video.html:49 pods/templates/videos/video.html:94 +#: pods/templates/videos/video.html:50 pods/templates/videos/video.html:95 msgid "No data could be given." msgstr "Aucune données récupérées." -#: pods/templates/videos/video.html:167 +#: pods/templates/videos/video.html:207 msgid "This video is protected by password, please fill in and click send." msgstr "" "Cette vidéo est protégée par mot de passe, merci de le renseigner et de " "cliquer sur « Envoyer »." -#: pods/templates/videos/video.html:171 +#: pods/templates/videos/video.html:211 msgid "Password requiered" msgstr "Mot de passe requis" -#: pods/templates/videos/video.html:180 +#: pods/templates/videos/video.html:220 msgid "If you do not have the password or if you have connection problems" msgstr "" "Si vous n'avez pas le mot de passe ou si vous avez des problèmes de connexion" -#: pods/templates/videos/video.html:201 pods/templates/videos/video.html:203 +#: pods/templates/videos/video.html:248 pods/templates/videos/video.html:250 msgid "favorite" msgstr "favoris" -#: pods/templates/videos/video.html:206 pods/templates/videos/video.html:208 +#: pods/templates/videos/video.html:253 pods/templates/videos/video.html:255 msgid "Add to your favorites videos." msgstr "ajouter à vos vidéos favorites." -#: pods/templates/videos/video.html:217 pods/templates/videos/video.html:219 +#: pods/templates/videos/video.html:264 pods/templates/videos/video.html:266 msgid "You have already reported this video." msgstr "Vous avez déjà signalé cette vidéo." -#: pods/templates/videos/video.html:224 pods/templates/videos/video.html:226 +#: pods/templates/videos/video.html:271 pods/templates/videos/video.html:273 msgid "Report this video." msgstr "Signaler cette vidéo." -#: pods/templates/videos/video.html:238 +#: pods/templates/videos/video.html:285 msgid "You must be logged in to add this video to your favorites." msgstr "Vous devez être connecté pour ajouter cette vidéo à vos favoris." -#: pods/templates/videos/video.html:243 +#: pods/templates/videos/video.html:290 msgid "You must be logged in to report inappropriate content." msgstr "Vous devez être connecté pour signaler cette vidéo." -#: pods/templates/videos/video.html:258 +#: pods/templates/videos/video.html:295 pods/templates/videos/video.html:297 +msgid "View the original video" +msgstr "Voir la vidéo originale" + +#: pods/templates/videos/video.html:299 pods/templates/videos/video.html:301 +msgid "View the interactive video" +msgstr "Voir la vidéo interactive" + +#: pods/templates/videos/video.html:315 msgid "Summary" msgstr "Résumé" -#: pods/templates/videos/video.html:264 +#: pods/templates/videos/video.html:321 msgid "Infos" msgstr "Informations" -#: pods/templates/videos/video.html:271 +#: pods/templates/videos/video.html:328 msgid "Downloads" msgstr "Télécharger" -#: pods/templates/videos/video.html:279 +#: pods/templates/videos/video.html:336 msgid "Embed/Share" msgstr "Intégrer / Partager" -#: pods/templates/videos/video.html:311 pods/templates/videos/videos.html:67 +#: pods/templates/videos/video.html:343 +#, fuzzy +#| msgid "Scoreboard" +msgid "Score" +msgstr "Table des scores" + +#: pods/templates/videos/video.html:352 +msgid "Embed/Share (Private Mode)" +msgstr "intégrer/partager (mode privé)" + +#: pods/templates/videos/video.html:384 pods/templates/videos/videos.html:69 msgid "File missing" msgstr "Fichier manquant" -#: pods/templates/videos/video.html:321 +#: pods/templates/videos/video.html:394 msgid "Number of view(s)" msgstr "Nombre de vues" -#: pods/templates/videos/video.html:341 +#: pods/templates/videos/video.html:414 msgid "Updated on" msgstr "Mise en ligne le" -#: pods/templates/videos/video.html:346 +#: pods/templates/videos/video.html:419 msgid "Contributor(s): writers, directors, editors, designers…" msgstr "Contributeur(s) : scénaristes, réalisateurs, éditeurs, concepteurs…" -#: pods/templates/videos/video.html:351 +#: pods/templates/videos/video.html:424 msgid "send an email" msgstr "envoyer un courriel" -#: pods/templates/videos/video.html:359 +#: pods/templates/videos/video.html:432 msgid "go to his web link" msgstr "se rendre à cette adresse web" -#: pods/templates/videos/video.html:373 +#: pods/templates/videos/video.html:446 msgid "Download the video" msgstr "Télécharger la vidéo" -#: pods/templates/videos/video.html:411 +#: pods/templates/videos/video.html:484 msgid "Social Networks" msgstr "Réseaux Sociaux" -#: pods/templates/videos/video.html:423 +#: pods/templates/videos/video.html:496 pods/templates/videos/video.html:578 msgid "Copy the content of this text box and paste it in the page" msgstr "Copiez le contenu de cette zone de texte et collez-le dans la page" -#: pods/templates/videos/video.html:429 +#: pods/templates/videos/video.html:505 pods/templates/videos/video.html:584 msgid "Video size" msgstr "Taille" -#: pods/templates/videos/video.html:440 +#: pods/templates/videos/video.html:516 pods/templates/videos/video.html:595 msgid "Autoplay" msgstr "Lecture automatique" -#: pods/templates/videos/video.html:447 +#: pods/templates/videos/video.html:523 msgid "Use this link to share the video" msgstr "Utilisez ce lien pour partager la vidéo" -#: pods/templates/videos/video.html:453 +#: pods/templates/videos/video.html:529 pods/templates/videos/video.html:608 msgid "Start video" msgstr "Début de la vidéo" -#: pods/templates/videos/video.html:456 +#: pods/templates/videos/video.html:532 pods/templates/videos/video.html:611 msgid "Check the box to indicate the beginning of playing desired." msgstr "Cochez la case pour indiquer le début de lecture souhaité." -#: pods/templates/videos/video.html:486 -msgid "You must be logged in to take notes." -msgstr "Vous devez être connecté pour prendre des notes." - -#: pods/templates/videos/video.html:495 -#: pods/templates/videos/video_chapter.html:370 -#: pods/templates/videos/video_completion.html:532 -#: pods/templates/videos/video_enrich.html:483 -msgid "Edit the video" -msgstr "Modifier la vidéo" - -#: pods/templates/videos/video.html:291 pods/templates/videos/video.html:293 -msgid "View the original video" -msgstr "Voir la vidéo originale" - -#: pods/templates/videos/video.html:295 pods/templates/videos/video.html:297 -msgid "View the interactive video" -msgstr "Voir la vidéo interactive" - -#: pods/templates/videos/video.html:523 +#: pods/templates/videos/video.html:538 msgid "Scoreboard" msgstr "Table des scores" -#: pods/templates/videos/video.html:525 -msgid "You got the following score on this video" -msgstr "Vous avez obtenu le score suivant" - -#: pods/templates/videos/video.html:527 +#: pods/templates/videos/video.html:540 msgid "" "The scoreboard displays the users who viewed your interactive video and " "their results." @@ -2570,97 +2596,119 @@ msgstr "" "La table des scores affiche les utilisateurs ayant vues votre vidéo " "interactive et leurs résultats." -#: pods/templates/videos/video.html:550 +#: pods/templates/videos/video.html:556 +msgid "No score available" +msgstr "Score non disponible" + +#: pods/templates/videos/video.html:563 +msgid "You got the following score on this video" +msgstr "Vous avez obtenu le score suivant" + +#: pods/templates/videos/video.html:565 msgid "" "Your video does not have a score or no users have done the activities yet." msgstr "" "Votre vidéo ne dispose pas de score ou aucun utilisateur n'a terminé les " "activités." -#: pods/templates/videos/video.html:552 +#: pods/templates/videos/video.html:567 msgid "This is the first time you watch this video." msgstr "C'est la première fois que vous regardez cette vidéo." -#: pods/templates/videos/video.html:543 -msgid "No score available" -msgstr "Score non disponible" +#: pods/templates/videos/video.html:602 +#, fuzzy +#| msgid "Use this link to share the video" +msgid "Use this link to share the video in private mode" +msgstr "Utilisez ce lien pour partager la vidéo" + +#: pods/templates/videos/video.html:641 +msgid "You must be logged in to take notes." +msgstr "Vous devez être connecté pour prendre des notes." + +#: pods/templates/videos/video.html:650 +#: pods/templates/videos/video_chapter.html:369 +#: pods/templates/videos/video_completion.html:530 +#: pods/templates/videos/video_enrich.html:483 +msgid "Edit the video" +msgstr "Modifier la vidéo" #: pods/templates/videos/video_chapter.html:29 -#: pods/templates/videos/video_chapter.html:321 -#: pods/templates/videos/video_chapter.html:333 +#: pods/templates/videos/video_chapter.html:320 +#: pods/templates/videos/video_chapter.html:332 msgid "Chaptering the video" msgstr "Chapitrer la vidéo " -#: pods/templates/videos/video_chapter.html:184 -#: pods/templates/videos/video_completion.html:249 +#: pods/templates/videos/video_chapter.html:183 +#: pods/templates/videos/video_completion.html:247 #: pods/templates/videos/video_enrich.html:191 msgid "Error getting form." msgstr "Erreur lors de la récupération du formulaire." -#: pods/templates/videos/video_chapter.html:184 -#: pods/templates/videos/video_completion.html:249 +#: pods/templates/videos/video_chapter.html:183 +#: pods/templates/videos/video_completion.html:247 #: pods/templates/videos/video_enrich.html:191 msgid "The form could not be recovered." msgstr "Le formulaire n'a pu être rechargé." -#: pods/templates/videos/video_chapter.html:193 +#: pods/templates/videos/video_chapter.html:192 msgid "Are you sure you want to delete this chapter?" msgstr "Etes-vous sûr de vouloir supprimer ce chapitre ?" -#: pods/templates/videos/video_chapter.html:206 -#: pods/templates/videos/video_completion.html:277 +#: pods/templates/videos/video_chapter.html:205 +#: pods/templates/videos/video_completion.html:275 #: pods/templates/videos/video_enrich.html:213 msgid "Error during deletion." msgstr "Erreur lors de la suppression." -#: pods/templates/videos/video_chapter.html:206 -#: pods/templates/videos/video_completion.html:277 +#: pods/templates/videos/video_chapter.html:205 +#: pods/templates/videos/video_completion.html:275 #: pods/templates/videos/video_enrich.html:213 msgid "No data could be deleted." msgstr "Aucune données n'a pu être supprimée." -#: pods/templates/videos/video_chapter.html:245 -#: pods/templates/videos/video_completion.html:315 +#: pods/templates/videos/video_chapter.html:244 +#: pods/templates/videos/video_completion.html:313 #: pods/templates/videos/video_enrich.html:251 msgid "Error during recording." msgstr "Erreur lors de l'enregistrement." -#: pods/templates/videos/video_chapter.html:245 -#: pods/templates/videos/video_completion.html:315 +#: pods/templates/videos/video_chapter.html:244 +#: pods/templates/videos/video_completion.html:313 #: pods/templates/videos/video_enrich.html:251 msgid "No data could be stored." msgstr "Aucune donnée n'a pu être enregistrée." -#: pods/templates/videos/video_chapter.html:265 -#: pods/templates/videos/video_enrich.html:275 pods/views.py:191 -#: pods/views.py:440 pods/views.py:633 pods/views.py:635 pods/views.py:700 +#: pods/templates/videos/video_chapter.html:264 +#: pods/templates/videos/video_enrich.html:275 pods/views.py:211 +#: pods/views.py:534 pods/views.py:630 pods/views.py:822 pods/views.py:824 +#: pods/views.py:899 msgid "The changes have been saved." msgstr "Les modifications ont été enregistrées." -#: pods/templates/videos/video_chapter.html:277 +#: pods/templates/videos/video_chapter.html:276 msgid "Please enter a correct start field between 0 and" msgstr "" "Veuillez renseigner une valeur de début d’enrichissement comprise entre 0 et" -#: pods/templates/videos/video_chapter.html:289 +#: pods/templates/videos/video_chapter.html:288 msgid "The chapter" msgstr "Le chapitre" -#: pods/templates/videos/video_chapter.html:289 +#: pods/templates/videos/video_chapter.html:288 msgid "starts at the same time." msgstr "commence en même temps." -#: pods/templates/videos/video_chapter.html:301 +#: pods/templates/videos/video_chapter.html:300 #: pods/templates/videos/video_enrich.html:283 #: pods/templates/videos/video_enrich.html:285 msgid "Get time from the player" msgstr "Récupérer le temps depuis le lecteur" -#: pods/templates/videos/video_chapter.html:360 +#: pods/templates/videos/video_chapter.html:359 msgid "Add a new chapter" msgstr "Ajouter un nouveau chapitre" -#: pods/templates/videos/video_chapter.html:380 +#: pods/templates/videos/video_chapter.html:379 msgid "" "\"Add a new chapter\" allows you to add a new chapter, \"modify\" allows you " "to modify it and \"delete\" allows you to remove the chapter." @@ -2669,7 +2717,7 @@ msgstr "" "\"modifier\" permet de le modifier et \"supprimer\" vous permet de le " "supprimer." -#: pods/templates/videos/video_chapter.html:381 +#: pods/templates/videos/video_chapter.html:380 msgid "" "Start playback of the video, pause the video and click on \"Get time from " "the player\" to fill in the field intitled \"Start time\"." @@ -2678,17 +2726,17 @@ msgstr "" "le temps depuis le lecteur\" pour renseigner automatiquement le champ " "\"début du chapitre\"." -#: pods/templates/videos/video_chapter.html:382 +#: pods/templates/videos/video_chapter.html:381 msgid "The chapters cannot start at the same time." msgstr "Les chapitres ne peuvent pas commencer en même temps." -#: pods/templates/videos/video_chapter.html:383 +#: pods/templates/videos/video_chapter.html:382 msgid "You must save your chapters to view the result." msgstr "Vous devez sauvegarder pour visualiser le résultat." #: pods/templates/videos/video_completion.html:29 -#: pods/templates/videos/video_completion.html:441 -#: pods/templates/videos/video_completion.html:453 +#: pods/templates/videos/video_completion.html:439 +#: pods/templates/videos/video_completion.html:451 msgid "Completion video" msgstr "Complétion de la vidéo " @@ -2700,118 +2748,118 @@ msgstr "Cacher" msgid "Display" msgstr "Afficher" -#: pods/templates/videos/video_completion.html:241 -#: pods/templates/videos/video_completion.html:272 -#: pods/templates/videos/video_completion.html:310 +#: pods/templates/videos/video_completion.html:239 +#: pods/templates/videos/video_completion.html:270 +#: pods/templates/videos/video_completion.html:308 msgid "You are no longer authenticated. Please log in again" msgstr "Vous n'êtes plus authentifié. Veuillez vous reconnecter." -#: pods/templates/videos/video_completion.html:258 +#: pods/templates/videos/video_completion.html:256 msgid "Are you sure you want to delete this file?" msgstr "Etes-vous sûr de vouloir supprimer ce fichier ?" -#: pods/templates/videos/video_completion.html:260 +#: pods/templates/videos/video_completion.html:258 msgid "Are you sure you want to delete this contributor?" msgstr "Etes-vous sûr de vouloir supprimer ce contributeur ?" -#: pods/templates/videos/video_completion.html:262 +#: pods/templates/videos/video_completion.html:260 msgid "Are you sure you want to delete this download?" msgstr "Etes-vous sûr de vouloir supprimer ce document à télécharger ?" -#: pods/templates/videos/video_completion.html:307 +#: pods/templates/videos/video_completion.html:305 #: pods/templates/videos/video_enrich.html:243 msgid "Changes have been saved." msgstr "Les modifications ont été enregistrées." -#: pods/templates/videos/video_completion.html:319 +#: pods/templates/videos/video_completion.html:317 msgid "Errors found in the form, please correct it." msgstr "" "Des erreurs ont été trouvées dans le formulaire. Veuillez les corriger." -#: pods/templates/videos/video_completion.html:334 +#: pods/templates/videos/video_completion.html:332 msgid "Display '+ name_section + ' section" msgstr "Afficher la section '+ name_section + ' " -#: pods/templates/videos/video_completion.html:357 +#: pods/templates/videos/video_completion.html:355 msgid "Please enter a name from 2 to 100 caracteres." msgstr "Veuillez renseigner un nom contenant entre 2 et 100 caractères." -#: pods/templates/videos/video_completion.html:362 +#: pods/templates/videos/video_completion.html:360 msgid "You cannot enter a weblink with more than 200 caracteres." msgstr "les liens internet doivent être inférieur à 200 caractères." -#: pods/templates/videos/video_completion.html:367 +#: pods/templates/videos/video_completion.html:365 msgid "Please enter a role." msgstr "Veuillez renseigner un rôle." -#: pods/templates/videos/video_completion.html:375 +#: pods/templates/videos/video_completion.html:373 msgid "" "There is already a contributor with this same name and role in the list." msgstr "il y a déjà un contributeur avec le même nom et le même rôle." -#: pods/templates/videos/video_completion.html:386 +#: pods/templates/videos/video_completion.html:384 msgid "Please enter a correct kind." msgstr "Veuillez renseigner le type de piste (sous-titre ou légende)." -#: pods/templates/videos/video_completion.html:393 +#: pods/templates/videos/video_completion.html:391 msgid "Please select a language." msgstr "Veuillez sélectionner une langue." -#: pods/templates/videos/video_completion.html:398 +#: pods/templates/videos/video_completion.html:396 msgid "Please specify a track file." msgstr "Veuillez indiquer un fichier de sous-titre ou de légende." -#: pods/templates/videos/video_completion.html:403 +#: pods/templates/videos/video_completion.html:401 msgid "Only “.vtt” format is allowed." msgstr "Seul le format « .vtt » est autorisé." -#: pods/templates/videos/video_completion.html:415 +#: pods/templates/videos/video_completion.html:413 msgid "" "There is already a subtitle with the same kind and language in the list." msgstr "Un sous-titrage de même nature et de même langue existe déjà." -#: pods/templates/videos/video_completion.html:429 +#: pods/templates/videos/video_completion.html:427 msgid "" "There is already a download with this same name of document in the list." msgstr "Il y a déjà un document à télécharger portant le même nom." -#: pods/templates/videos/video_completion.html:462 +#: pods/templates/videos/video_completion.html:460 msgid "Display "Contributor(s)" section" msgstr "Afficher la section des contributeurs" -#: pods/templates/videos/video_completion.html:463 +#: pods/templates/videos/video_completion.html:461 msgid "Contributor(s)" msgstr "Contributeurs" -#: pods/templates/videos/video_completion.html:481 +#: pods/templates/videos/video_completion.html:479 msgid "Add a new contributor" msgstr "Ajouter un nouveau contributeur" -#: pods/templates/videos/video_completion.html:486 +#: pods/templates/videos/video_completion.html:484 msgid "Display "Subtitle(s) and Captions(s) " section" msgstr "Afficher la section de sous-titre ou de légende" -#: pods/templates/videos/video_completion.html:486 +#: pods/templates/videos/video_completion.html:484 msgid "Subtitle(s) and caption(s)" msgstr "Sous-titre(s) et légende(s)" -#: pods/templates/videos/video_completion.html:502 +#: pods/templates/videos/video_completion.html:500 msgid "Add a new subtitle or caption file" msgstr "Ajouter un nouveau fichier de sous-titre ou de légende" -#: pods/templates/videos/video_completion.html:506 +#: pods/templates/videos/video_completion.html:504 msgid "Display " Additional resource(s)" section" msgstr "Afficher la section documents complémentaires" -#: pods/templates/videos/video_completion.html:506 +#: pods/templates/videos/video_completion.html:504 msgid "Additional resource(s)" msgstr "Document(s) complémentaire(s)" -#: pods/templates/videos/video_completion.html:521 +#: pods/templates/videos/video_completion.html:519 msgid "Add a new additional resource" msgstr "Ajouter un nouveau document à télécharger" -#: pods/templates/videos/video_completion.html:543 +#: pods/templates/videos/video_completion.html:541 msgid "" "Several web sites allows you to subtitle or caption videos (for example: " "Amara)." @@ -2819,7 +2867,7 @@ msgstr "" "Plusieurs sites Web offrent des outils pour sous-titrer ou légender des " "vidéos (Par exemple : Amara)." -#: pods/templates/videos/video_completion.html:544 +#: pods/templates/videos/video_completion.html:542 msgid "" "You can add several subtitle or caption files to a single video (for " "example, in order to subtitle or caption this video in several languages)." @@ -2827,11 +2875,11 @@ msgstr "" "Vous pouvez ajouter plusieurs fichiers de sous-titre ou de légende pour une " "même vidéo (par exemple, vous pouvez sous-titrer en plusieurs langues)." -#: pods/templates/videos/video_completion.html:545 +#: pods/templates/videos/video_completion.html:543 msgid "Those files must be in “.vtt” format." msgstr "Ces fichiers doivent être au format « .vtt »." -#: pods/templates/videos/video_completion.html:546 +#: pods/templates/videos/video_completion.html:544 msgid "" "For this purpose, you will need the URL of your video. This URL is a direct " "access to this video. Please do not communicate it outside of this site in " @@ -2842,7 +2890,7 @@ msgstr "" "Evitez de la communiquer en dehors de ce site pour éviter tout " "téléchargement et utilisation abusive." -#: pods/templates/videos/video_completion.html:550 +#: pods/templates/videos/video_completion.html:548 msgid "" "Your current permissions do not allow you to add subtitle files or documents " "to download videos. Please contact us to add these rights." @@ -2869,13 +2917,14 @@ msgstr "" "d'encodage." #: pods/templates/videos/video_edit.html:24 -#: pods/templates/videos/video_edit.html:274 -#: pods/templates/videos/video_edit.html:309 +#: pods/templates/videos/video_edit.html:275 +#: pods/templates/videos/video_edit.html:310 msgid "Editing the video" msgstr "Modification de la vidéo" #: pods/templates/videos/video_edit.html:80 -#: pods/templates/videos/video_edit.html:244 +#: pods/templates/videos/video_edit.html:245 +#, python-brace-format msgid "The file size exceeds the maximum allowed value ({0} {1})." msgstr "La taille du fichier dépasse la valeur maximum autorisée ({0} {1})." @@ -2887,94 +2936,94 @@ msgstr "Vos données ont été envoyées avec succès." msgid "The page will refresh in a few seconds." msgstr "La page sera actualisée dans quelques secondes." -#: pods/templates/videos/video_edit.html:202 +#: pods/templates/videos/video_edit.html:204 msgid "Unable to compute upload progress." msgstr "Calcul de la progression du téléversement impossible" -#: pods/templates/videos/video_edit.html:203 +#: pods/templates/videos/video_edit.html:205 msgid "Upload canceled." msgstr "Téléversement annulé." -#: pods/templates/videos/video_edit.html:204 +#: pods/templates/videos/video_edit.html:206 msgid "Error while uploading or connection dropped." msgstr "Erreur durant le téléversement ou connexion interrompue." -#: pods/templates/videos/video_edit.html:242 +#: pods/templates/videos/video_edit.html:243 msgid "Please select a file to upload." msgstr "Veuillez sélectionner un fichier à téléverser." -#: pods/templates/videos/video_edit.html:243 +#: pods/templates/videos/video_edit.html:244 msgid "File format not supported." msgstr "Ce format de fichier n'est pas supporté." -#: pods/templates/videos/video_edit.html:248 +#: pods/templates/videos/video_edit.html:249 msgid "Please, specify a title." msgstr "Veuillez indiquer un titre." -#: pods/templates/videos/video_edit.html:249 +#: pods/templates/videos/video_edit.html:250 msgid "Your title should contain more than two characters." msgstr "Votre titre doit contenir plus de deux caractères." -#: pods/templates/videos/video_edit.html:250 +#: pods/templates/videos/video_edit.html:251 msgid "Your title should contain less than two hundred fifty characters." msgstr "Votre titre doit contenir moins de deux cents cinquante caractères." -#: pods/templates/videos/video_edit.html:253 +#: pods/templates/videos/video_edit.html:254 msgid "Please, specify a type." msgstr "Veuillez spécifier un type." -#: pods/templates/videos/video_edit.html:291 -#: pods/templates/videos/video_player.html:118 +#: pods/templates/videos/video_edit.html:292 +#: pods/templates/videos/video_player.html:128 msgid "The video is currently being encoded." msgstr "Cette vidéo est en cours d'encodage." -#: pods/templates/videos/video_edit.html:336 +#: pods/templates/videos/video_edit.html:337 msgid "Upload limit reached." msgstr "Limite de téléversement atteinte." -#: pods/templates/videos/video_edit.html:338 +#: pods/templates/videos/video_edit.html:339 #, python-format msgid "You have reached the %(counter)s file per day upload limit." msgid_plural "You have reached the %(counter)s files per day upload limit." msgstr[0] "Vous avez atteint la limite de %(counter)s téléversement par jour." msgstr[1] "Vous avez atteint la limite de %(counter)s téléversements par jour." -#: pods/templates/videos/video_edit.html:339 +#: pods/templates/videos/video_edit.html:340 msgid "Please come back tomorrow!" msgstr "Merci de revenir demain !" -#: pods/templates/videos/video_edit.html:359 +#: pods/templates/videos/video_edit.html:360 msgid "Save and watch the video" msgstr "Enregistrer et voir la vidéo" -#: pods/templates/videos/video_edit.html:368 +#: pods/templates/videos/video_edit.html:369 msgid "Sending, please wait." msgstr "Envoi en cours, merci de patienter." -#: pods/templates/videos/video_edit.html:378 +#: pods/templates/videos/video_edit.html:379 msgid "The page will refresh after the upload completes." msgstr "La page sera actualisée lorsque le téléversement sera terminé." -#: pods/templates/videos/video_edit.html:398 +#: pods/templates/videos/video_edit.html:399 msgid "Important" msgstr "" -#: pods/templates/videos/video_edit.html:404 +#: pods/templates/videos/video_edit.html:405 msgid "Uploading" msgstr "Téléversement" -#: pods/templates/videos/video_edit.html:408 +#: pods/templates/videos/video_edit.html:409 #, python-format msgid "The file size must be lower than %(MAX_UPLOAD_FILE_SIZE)s." msgstr "La taille du fichier doit être inférieure à %(MAX_UPLOAD_FILE_SIZE)s." -#: pods/templates/videos/video_edit.html:410 +#: pods/templates/videos/video_edit.html:411 #, python-format msgid "You can upload up to %(MAX_DAILY_USER_UPLOADS)s files per day." msgstr "" "Vous pouvez téléverser jusqu’à %(MAX_DAILY_USER_UPLOADS)s fichiers par jour." -#: pods/templates/videos/video_edit.html:412 +#: pods/templates/videos/video_edit.html:413 msgid "" "The sending time depends on the size of your file and your upload speed. " "This can be quite long." @@ -2982,7 +3031,7 @@ msgstr "" "Le temps d'envoi dépend de la taille de votre fichier et de votre vitesse de " "transfert. Cela peut être assez long." -#: pods/templates/videos/video_edit.html:413 +#: pods/templates/videos/video_edit.html:414 msgid "" "While sending your file, do not close your browser until you have received a " "message of success or failure." @@ -2990,27 +3039,33 @@ msgstr "" "Pendant l'envoi de votre fichier, ne fermez pas votre navigateur avant " "d'avoir reçu un message de succès ou d'échec." -#: pods/templates/videos/video_edit.html:420 +#: pods/templates/videos/video_edit.html:416 +msgid "An email will be sent to you when all encoding tasks are completed." +msgstr "" +"Un courriel vous sera envoyé lorsque toutes les tâches d'encodage seront " +"terminées." + +#: pods/templates/videos/video_edit.html:424 msgid "Mandatory fields" msgstr "Champs obligatoires" -#: pods/templates/videos/video_edit.html:424 +#: pods/templates/videos/video_edit.html:428 msgid "Fields marked with an asterisk are mandatory." msgstr "Les champs marqués d'un astérisque sont obligatoires." -#: pods/templates/videos/video_edit.html:430 +#: pods/templates/videos/video_edit.html:434 msgid "Form fields" msgstr "Champs du formulaire" -#: pods/templates/videos/video_edit.html:443 +#: pods/templates/videos/video_edit.html:447 msgid "You can send an audio or video file." msgstr "Vous pouvez envoyer un fichier audio ou vidéo." -#: pods/templates/videos/video_edit.html:444 +#: pods/templates/videos/video_edit.html:448 msgid "The following formats are supported:" msgstr "Les formats suivants sont supportés :" -#: pods/templates/videos/video_edit.html:457 +#: pods/templates/videos/video_edit.html:461 msgid "" "Please choose a title as short and accurate as possible, reflecting the main " "subject / context of the content." @@ -3018,14 +3073,14 @@ msgstr "" "Veuillez choisir un titre aussi court et précis que possible, reflétant le " "sujet / contexte principal du contenu." -#: pods/templates/videos/video_edit.html:458 +#: pods/templates/videos/video_edit.html:462 msgid "" "You can use the “Description” field below for all additional information." msgstr "" "Vous pouvez utiliser le champ « Description » ci-après pour toute " "information additionnelle." -#: pods/templates/videos/video_edit.html:459 +#: pods/templates/videos/video_edit.html:463 msgid "" "You may add contributors later using the second button of the content " "edition toolbar: they will appear in the “Info” tab at the bottom of the " @@ -3035,15 +3090,15 @@ msgstr "" "bouton de la barre d'outil d'édition de contenu : ils apparaîtront dans " "l'onglet « Info » sous le lecteur audio / vidéo." -#: pods/templates/videos/video_edit.html:472 +#: pods/templates/videos/video_edit.html:476 msgid "Enter the date of the event, if applicable, in the AAAA-MM-JJ format." msgstr "Entrez la date de l'événement, le cas échéant, au format JJ/MM/AAAA." -#: pods/templates/videos/video_edit.html:485 +#: pods/templates/videos/video_edit.html:489 msgid "Select an university course as audience target of the content." msgstr "Sélectionnez un cursus universitaire comme audience cible du contenu." -#: pods/templates/videos/video_edit.html:486 +#: pods/templates/videos/video_edit.html:490 msgid "" "Choose “None / All” if it does not apply or if all are concerned, or “Other” " "for an audience outside the european LMD scheme." @@ -3051,11 +3106,11 @@ msgstr "" "Choisissez « Aucun / Tous » si cela ne s'applique pas ou si tous sont " "concernés, ou « Autres » pour une audience en dehors du schéma européen LMD." -#: pods/templates/videos/video_edit.html:499 +#: pods/templates/videos/video_edit.html:503 msgid "Select the main language used in the content." msgstr "Sélectionnez la langue principale employée dans le contenu." -#: pods/templates/videos/video_edit.html:512 +#: pods/templates/videos/video_edit.html:516 msgid "" "In this field you can describe your content, add all needed related " "information, and format the result using the toolbar." @@ -3063,11 +3118,11 @@ msgstr "" "Dans ce champ vous pouvez décrire votre contenu, préciser toute information " "utile, et formater le résultat en utilisant la barre d'outils." -#: pods/templates/videos/video_edit.html:539 +#: pods/templates/videos/video_edit.html:543 msgid "Select the type of your content." msgstr "Sélectionnez le type de votre contenu." -#: pods/templates/videos/video_edit.html:541 +#: pods/templates/videos/video_edit.html:545 msgid "" "If the type you wish does not appear in the list, please temporary select " "“Other” and" @@ -3075,26 +3130,26 @@ msgstr "" "Si le type souhaité n'apparaît pas dans la liste, veuillez sélectionner " "temporairement « Autre » et" -#: pods/templates/videos/video_edit.html:541 -#: pods/templates/videos/video_edit.html:557 -#: pods/templates/videos/video_edit.html:576 -#: pods/templates/videos/video_edit.html:594 +#: pods/templates/videos/video_edit.html:545 +#: pods/templates/videos/video_edit.html:561 +#: pods/templates/videos/video_edit.html:580 +#: pods/templates/videos/video_edit.html:598 #: pods/templates/videos/videos_iframe.html:37 msgid "Click to open in a new window / tab." msgstr "Cliquez pour ouvrir dans une nouvelle fenêtre / un nouvel onglet." -#: pods/templates/videos/video_edit.html:541 -#: pods/templates/videos/video_edit.html:557 -#: pods/templates/videos/video_edit.html:576 -#: pods/templates/videos/video_edit.html:594 +#: pods/templates/videos/video_edit.html:545 +#: pods/templates/videos/video_edit.html:561 +#: pods/templates/videos/video_edit.html:580 +#: pods/templates/videos/video_edit.html:598 msgid "explain us your needs." msgstr "expliquez-nous vos attentes." -#: pods/templates/videos/video_edit.html:555 +#: pods/templates/videos/video_edit.html:559 msgid "Select the discipline to which your content belongs." msgstr "Sélectionnez la discipline à laquelle appartient votre contenu." -#: pods/templates/videos/video_edit.html:557 +#: pods/templates/videos/video_edit.html:561 msgid "" "If the discipline you wish does not appear in the list, please select " "nothing and" @@ -3102,28 +3157,28 @@ msgstr "" "Si la discipline souhaitée n'apparaît pas dans la liste, veuillez ne rien " "sélectionner et" -#: pods/templates/videos/video_edit.html:559 -#: pods/templates/videos/video_edit.html:578 -#: pods/templates/videos/video_edit.html:596 +#: pods/templates/videos/video_edit.html:563 +#: pods/templates/videos/video_edit.html:582 +#: pods/templates/videos/video_edit.html:600 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Maintenez appuyé « Control » (ou « Commande » sur un Mac) pour en " "sélectionner plusieurs." -#: pods/templates/videos/video_edit.html:573 +#: pods/templates/videos/video_edit.html:577 msgid "Select the channel in which you want your content to appear." msgstr "" "Sélectionnez la chaîne dans laquelle vous voulez faire apparaître votre " "contenu." -#: pods/templates/videos/video_edit.html:574 +#: pods/templates/videos/video_edit.html:578 msgid "Themes related to this channel will appear in the “Themes” list below." msgstr "" "Les thèmes liés à cette chaîne apparaîtront dans la liste « Thèmes » ci-" "dessous." -#: pods/templates/videos/video_edit.html:576 +#: pods/templates/videos/video_edit.html:580 msgid "" "If the channel you wish does not appear in the list, please select nothing " "and" @@ -3131,12 +3186,12 @@ msgstr "" "Si la chaîne souhaitée n'apparaît pas dans la liste, veuillez ne rien " "sélectionner et" -#: pods/templates/videos/video_edit.html:591 +#: pods/templates/videos/video_edit.html:595 msgid "Select the theme in which you want your content to appear." msgstr "" "Sélectionnez le thème dans lequel vous voulez faire apparaître votre contenu." -#: pods/templates/videos/video_edit.html:593 +#: pods/templates/videos/video_edit.html:597 msgid "" "If the theme you wish does not appear in the list and if you are an owner of " "the related channel, you can edit this channel to create it (use your user " @@ -3146,11 +3201,11 @@ msgstr "" "propriétaire de la chaîne concernée, vous pouvez éditer cette chaîne pour le " "créer (utilisez votre menu utilisateur en haut à droite de la page)." -#: pods/templates/videos/video_edit.html:594 +#: pods/templates/videos/video_edit.html:598 msgid "If you do not own the channel, please select nothing and" msgstr "Si vous n'êtes pas propriétaire de la chaîne, ne sélectionnez rien et" -#: pods/templates/videos/video_edit.html:610 +#: pods/templates/videos/video_edit.html:614 msgid "" "In “Draft mode”, the content shows nowhere and nobody else but you can see " "it." @@ -3158,18 +3213,18 @@ msgstr "" "En mode « Brouillon », le contenu n’apparaît nulle part et personne d’autre " "que vous ne le voit." -#: pods/templates/videos/video_edit.html:623 -#: pods/templates/videos/video_edit.html:638 +#: pods/templates/videos/video_edit.html:627 +#: pods/templates/videos/video_edit.html:642 msgid "If you don't select “Draft mode”," msgstr "Si vous ne sélectionnez pas le mode « Brouillon »," -#: pods/templates/videos/video_edit.html:624 +#: pods/templates/videos/video_edit.html:628 msgid "you can restrict the content access to only people belonging to" msgstr "" "vous pouvez restreindre l’accès à votre contenu aux seules personnes " "appartenant à" -#: pods/templates/videos/video_edit.html:639 +#: pods/templates/videos/video_edit.html:643 msgid "" "you can add a password which will be asked to anybody willing to watch your " "content." @@ -3177,11 +3232,11 @@ msgstr "" "vous pouvez ajouter un mot de passe qui sera demandé à toute personne " "souhaitant visionner votre contenu." -#: pods/templates/videos/video_edit.html:647 +#: pods/templates/videos/video_edit.html:651 msgid "Keywords" msgstr "Mots-clés" -#: pods/templates/videos/video_edit.html:652 +#: pods/templates/videos/video_edit.html:656 msgid "" "Please try to add only relevant keywords that can be useful to other users." msgstr "" @@ -3263,21 +3318,67 @@ msgstr "Les enrichissements ne peuvent se chevaucher." msgid "You must save your enrichments to view the result." msgstr "Vous devez sauvegarder pour visualiser le résultat." -#: pods/templates/videos/videos.html:48 +#: pods/templates/videos/video_interactive.html:173 +msgid "Creation" +msgstr "Création" + +#: pods/templates/videos/video_interactive.html:194 +msgid "Loading, please wait..." +msgstr "Chargement en cours, veuillez patienter..." + +#: pods/templates/videos/video_interactive.html:203 +#: pods/templates/videos/video_interactive.html:205 +msgid "Delete the interactive part of this video" +msgstr "Supprimer la partie interactive de cette vidéo" + +#: pods/templates/videos/video_interactive.html:219 +msgid "" +"Do not forget to save your work regularly. Especially if you add an " +"interaction." +msgstr "" +"N'oubliez pas de sauvegarder votre travail régulièrement. Surtout si vous " +"ajoutez une interaction." + +#: pods/templates/videos/video_interactive.html:221 +msgid "" +"To save and continue your work click on the button [Save and continue]. If " +"you have completed your work click on the button [Save and return to video] " +"to view your new interactive video." +msgstr "" +"Pour sauvegarder et continuer votre travail cliquez sur le bouton " +"[Sauvegarder et continuer]. Si vous avez terminé votre travail cliquez sur " +"le bouton [Sauvegarder et retour à la vidéo] pour voir votre nouvelle vidéo " +"interactive." + +#: pods/templates/videos/video_interactive.html:225 +#: pods/templates/videos/video_interactive.html:226 +#: pods/templates/videos/video_interactive.html:242 +#: pods/templates/videos/video_interactive.html:243 +msgid "Save and continue" +msgstr "Sauvegarder et continuer" + +#: pods/templates/videos/video_interactive.html:229 +#: pods/templates/videos/video_interactive.html:230 +#: pods/templates/videos/video_interactive.html:246 +#: pods/templates/videos/video_interactive.html:247 +msgid "Save and return to video" +msgstr "Sauvegarder et retour à la vidéo" + +#: pods/templates/videos/videos.html:50 msgid "Filters" msgstr "Filtres" -#: pods/templates/videos/videos.html:101 pods/templates/videos/videos.html:125 -#: pods/templates/videos/videos.html:151 +#: pods/templates/videos/videos.html:103 pods/templates/videos/videos.html:127 +#: pods/templates/videos/videos.html:153 msgid "more" msgstr "plus" -#: pods/templates/videos/videos.html:101 pods/templates/videos/videos.html:125 -#: pods/templates/videos/videos.html:151 +#: pods/templates/videos/videos.html:103 pods/templates/videos/videos.html:127 +#: pods/templates/videos/videos.html:153 msgid "less" msgstr "moins" -#: pods/templates/videos/videos.html:155 +#: pods/templates/videos/videos.html:157 msgid "Submit" msgstr "Envoyer" @@ -3289,7 +3390,7 @@ msgstr "Ce contenu n'est pas en ligne (mode brouillon activé)." msgid "This content is online (draft mode desactivated)." msgstr "Ce contenu est en ligne (mode brouillon désactivé)." -#: pods/templatetags/list.py:195 pods/templatetags/list.py:206 +#: pods/templatetags/list.py:205 pods/templatetags/list.py:216 msgid "New" msgstr "Nouveau" @@ -3297,35 +3398,35 @@ msgstr "Nouveau" msgid "-- sorry, no translation provided --" msgstr "-- désolé, aucune traduction disponible --" -#: pods/views.py:169 +#: pods/views.py:189 msgid "You cannot edit this channel." msgstr "Vous ne pouvez pas modifier cette chaîne." -#: pods/views.py:425 pods/views.py:1460 +#: pods/views.py:519 pods/views.py:1700 pods/views.py:1747 msgid "You cannot watch this video." msgstr "Vous ne pouvez pas regarder cette vidéo." -#: pods/views.py:469 +#: pods/views.py:563 pods/views.py:659 msgid "Incorrect password" msgstr "Mot de passe incorrect" -#: pods/views.py:529 +#: pods/views.py:718 msgid "The video has been added to your favorites." msgstr "La vidéo a été ajoutée à vos vidéos favorites." -#: pods/views.py:534 +#: pods/views.py:723 msgid "The video has been removed from your favorites." msgstr "La vidéo a été supprimée de vos vidéos favorites." -#: pods/views.py:543 pods/views.py:617 pods/views.py:639 +#: pods/views.py:732 pods/views.py:806 pods/views.py:828 msgid "You cannot acces this page." msgstr "Vous ne pouvez pas accéder à cette page." -#: pods/views.py:555 +#: pods/views.py:744 msgid "Video report confirmation" msgstr "Confirmation de signalement de vidéo" -#: pods/views.py:557 +#: pods/views.py:746 #, python-format msgid "" "\n" @@ -3344,7 +3445,7 @@ msgstr "" "Cordialement.\n" "L'équipe Pod." -#: pods/views.py:562 +#: pods/views.py:751 #, python-format msgid "" "

    You just report the video: \"%(title)s\" with this comment:
    " @@ -3355,11 +3456,11 @@ msgstr "" "
    \"%(comment)s\".

    Un courriel vient de nous être envoyé et votre " "signalement enregistré.

    Cordialement

    L'équipe Pod

    " -#: pods/views.py:572 +#: pods/views.py:761 msgid "A video has just been reported." msgstr "Une vidéo vient d'être signalée." -#: pods/views.py:574 +#: pods/views.py:763 #, python-format msgid "" "The video intitled \"%(video_title)s\" has just been reported by " @@ -3383,7 +3484,7 @@ msgstr "" "%(owner_email)s>.\n" "Vidéo mise en ligne le : %(video_date_added)s.\n" -#: pods/views.py:588 +#: pods/views.py:777 #, python-format msgid "" "

    The video intitled \"%(video_title)s\" has just been reported by " @@ -3404,58 +3505,68 @@ msgstr "" "href=\"mailto:%(owner_email)s\">%(owner_email)s>.
    Vidéo mise en " "ligne le : %(video_date_added)s.

    " -#: pods/views.py:608 +#: pods/views.py:797 msgid "This video has been reported." msgstr "La vidéo a été signalée." -#: pods/views.py:663 +#: pods/views.py:852 msgid "You cannot edit this video." msgstr "Vous ne pouvez pas éditer cette vidéo." -#: pods/views.py:760 pods/views.py:794 pods/views.py:928 pods/views.py:1059 +#: pods/views.py:965 pods/views.py:1006 pods/views.py:1140 pods/views.py:1271 msgid "You cannot complement this video." msgstr "Vous ne pouvez pas compléter cette vidéo." -#: pods/views.py:852 pods/views.py:985 pods/views.py:1118 +#: pods/views.py:1064 pods/views.py:1197 pods/views.py:1330 msgid "Please correct errors" msgstr "Veuillez corriger les erreurs." -#: pods/views.py:1194 +#: pods/views.py:1406 msgid "You cannot chapter this video." msgstr "Vous ne pouvez pas chapitrer cette vidéo." -#: pods/views.py:1240 pods/views.py:1358 +#: pods/views.py:1458 pods/views.py:1582 msgid "Please correct errors." msgstr "Veuillez corriger les erreurs." -#: pods/views.py:1311 +#: pods/views.py:1529 msgid "You cannot enrich this video." msgstr "Vous ne pouvez pas enrichir cette vidéo." -#: pods/views.py:1422 +#: pods/views.py:1654 +#, fuzzy +#| msgid "Add interactivity to the video." +msgid "You cannot add interactivity to this video." +msgstr "Ajoutez de l'interactivité à la vidéo." + +#: pods/views.py:1673 +msgid "Interactive video is not available in this server." +msgstr "Les vidéos interactives ne sont pas activées" + +#: pods/views.py:1709 msgid "You cannot delete this video." msgstr "Vous ne pouvez pas supprimer cette vidéo." -#: pods/views.py:1438 +#: pods/views.py:1725 msgid "The video has been deleted." msgstr "La vidéo a été supprimée." -#: pods/views.py:1655 +#: pods/views.py:1950 msgid "Mediapath should be indicated." msgstr "MediaPath doit être indiqué." -#: pods/views.py:1679 +#: pods/views.py:1974 msgid "" "Your publication is saved. Adding it to your videos will be in a few minutes." msgstr "" "Votre publication est enregistrée. Son ajout à vos vidéos se fera dans " "quelques minutes." -#: pods/views.py:1736 +#: pods/views.py:2031 msgid "Recording" msgstr "En cours d'enregistrement" -#: pods/views.py:1738 +#: pods/views.py:2033 #, python-format msgid "" "Hello, \n" @@ -3481,7 +3592,7 @@ msgstr "" "\n" "Cordialement" -#: pods/views.py:1742 +#: pods/views.py:2037 #, python-format msgid "" "Hello,

    a new mediacourse has just be added on %(title_site)s from the " @@ -3495,88 +3606,9 @@ msgstr "" "%(link_url)s
    Si le lien n'est pas actif, il faut le copier-coller " "dans la barre d'adresse de votre navigateur.

    Cordialement

    " -#: pods/views.py:1749 +#: pods/views.py:2044 msgid "New mediacourse added." msgstr "Nouveaux médiacours ajoutés." -#: core/utils.py:333 -#, python-format -msgid "Encoding #%(content_id)s completed" -msgstr "Encodage n°%(content_id)s terminé" - -#: core/utils.py:338 core/utils.py:352 -#, python-format -msgid "" -"The content “%(content_title)s” has been encoded to Web formats, and is now " -"available on %(site_title)s." -msgstr "" -"Le contenu « %(content_title)s » a été encodé aux formats web, et est " -"maintenant disponible sur %(site_title)s." - -#: core/utils.py:342 core/utils.py:356 -msgid "You will find it here:" -msgstr "Retrouvez-le ici :" - -#: core/utils.py:344 -#, python-format -msgid "and in your content list: %(content_list)s." -msgstr "ainsi que dans votre liste de contenus: %(content_list)s." - -#: core/utils.py:359 -#, python-format -msgid "and in %(your_content_list)s." -msgstr "ainsi que dans %(your_content_list)s." - -#: core/utils.py:362 -msgid "your content list" -msgstr "votre liste de contenus" - -#: pods/templates/videos/video_edit.html:415 -msgid "An email will be sent to you when all encoding tasks are completed." -msgstr "" -"Un courriel vous sera envoyé lorsque toutes les tâches d'encodage seront " -"terminées." - -# DJANGO-FILER FIX -msgid "Adds a new Folder" -msgstr "Créer un nouveau dossier" - -# DJANGO-FILER FIX -msgid "New Folder" -msgstr "Nouveau dossier" - -# DJANGO-FILER FIX -msgid "Upload" -msgstr "Téléverser" - -# DJANGO-FILER FIX -msgid "Go back to the parent folder" -msgstr "Revenir au dossier parent" - -# DJANGO-FILER FIX -msgid "Go back to root folder" -msgstr "Revenir au dossier racine" - -# DJANGO-FILER FIX -msgid "Change current folder details" -msgstr "Modifier les informations du dossier courant." - -# DJANGO-FILER FIX -msgid "There are no files or subfolders." -msgstr "Il n’y a aucun fichier ni sous-dossier." - -# DJANGO-FILER FIX -msgid "Thumbnail missing" -msgstr "Vignette manquante" - -# DJANGO-FILER FIX -msgid "None selected" -msgstr "Aucune sélection" - -# DJANGO-FILER FIX -msgid "There are no files and/or folders available to move." -msgstr "Il n'y a aucun fichier ni dossier à déplacer." - -# DJANGO-FILER FIX -msgid "There are no files available to rename." -msgstr "Il n'y a pas de fichier à renommer." +#~ msgid "count" +#~ msgstr "compte" diff --git a/pod_project/pods/templates/videos/extraheadplayer.html b/pod_project/pods/templates/videos/extraheadplayer.html index ff7dfc33..dad05f25 100755 --- a/pod_project/pods/templates/videos/extraheadplayer.html +++ b/pod_project/pods/templates/videos/extraheadplayer.html @@ -83,6 +83,8 @@