diff --git a/server.py b/server.py index bf47cdd1916af7e129e3224844c09a52708aaaec..91c043d738e704177472bc7809114f35c3ba6a3c 100644 --- a/server.py +++ b/server.py @@ -404,7 +404,7 @@ def course(id=None, handle=None): if perm['lecture_id'] == lecture['id']: lecture['perm'].append(perm) videos = query(''' - SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, formats.description AS format_description, formats.player_prio, formats.prio + SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, "formats" AS sep, formats.* FROM videos JOIN lectures ON (videos.lecture_id = lectures.id) JOIN formats ON (videos.video_format = formats.id) @@ -412,7 +412,7 @@ def course(id=None, handle=None): WHERE lectures.course_id= ? AND (? OR videos.visible) ORDER BY lectures.time, formats.prio DESC ''', course['id'], ismod()) - livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, formats.description AS format_description, formats.player_prio, formats.prio + livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id JOIN formats ON formats.keywords = "hls" @@ -434,14 +434,14 @@ def faq(): def lecture(id, course=None, courseid=None): lecture = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod())[0] videos = query(''' - SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, formats.description AS format_description, formats.player_prio, formats.prio, formats.mimetype + SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, "formats" AS sep, formats.* FROM videos JOIN formats ON (videos.video_format = formats.id) JOIN courses ON (courses.id = ?) WHERE videos.lecture_id = ? AND (? OR videos.visible) ORDER BY formats.prio DESC ''', lecture['course_id'], lecture['id'], ismod()) - livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, formats.description AS format_description, formats.player_prio, formats.prio, formats.mimetype + livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id JOIN formats ON formats.keywords = "hls" diff --git a/templates/macros.html b/templates/macros.html index f94bf92437e39c8c862dc114c80381df3af2538c..6e15a0103ac193448628f1d090835be66c6da4b6 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -50,8 +50,9 @@ {% macro player(lecture, videos, msgs) %} <video id="videoplayer" style="width: 100%" class="video-js vjs-default-skin vjs-big-play-centered" width="640" height="320" controls data-wasnotplayed="1" data-setup='{ "language":"de", "plugins" : {"hotkeys": {"seekStep": 15, "enableVolumeScroll": false, "alwaysCaptureHotkeys": true}, "videoJsResolutionSwitcher": { "ui": true, "default": "720p", "dynamicLabel": false } }, "customControlsOnMobile": true, "playbackRates": [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4] }'> - {% for v in videos|sort(attribute='player_prio', reverse=True) %} - <source type="{{ v.mimetype }}" src="{{ config.VIDEOPREFIX }}/{{ v.path }}" label="{{ v.format_description }}"/> + {% for v in videos|sort(attribute='formats.player_prio', reverse=True) %} + <source type="{{ v.mimetype }}" src="{{ config.VIDEOPREFIX }}/{{ v.path }}" data-label="{{ v.formats.description }}" data-res="{{v.formats.resolution}}" data-aspect="{{v.formats.aspect}}" data-playerprio="{{v.formats.player_prio}}"/> + {{ v|safe }} {% endfor %} <track srclang="de" kind="chapters" src="{{ url_for('chapters',lectureid=lecture.id) }}" /> </video> @@ -162,8 +163,8 @@ $(function() { {% if not ismod() %} <span class="btn btn-default dropdown-toggle{% if not videos|selectattr('downloadable')|list and not ismod() %} disabled{% endif %}" type="button" data-toggle="dropdown">Download <span class="caret"></span></span> <ul class="dropdown-menu"> - {% for v in videos|sort(attribute='prio', reverse=True) if (v.downloadable or ismod() ) %} - <li><a href="{{ config.VIDEOPREFIX }}/{{v.path}}">{{v.format_description}} ({{v.file_size|filesizeformat(true)}})</a></li> + {% for v in videos|sort(attribute='formats.prio', reverse=True) if (v.downloadable or ismod() ) %} + <li><a href="{{ config.VIDEOPREFIX }}/{{v.path}}">{{v.formats.description}} ({{v.file_size|filesizeformat(true)}})</a></li> {% endfor %} </ul> {% endif %} @@ -171,8 +172,8 @@ $(function() { <noscript> {% endif %} <ul class="pull-right list-unstyled" style="margin-left:10px;"> -{% for v in videos|sort(attribute='prio', reverse=True) if (v.downloadable or ismod() ) %} - <li>{{moderator_delete(['videos',v.id,'deleted'])}} {{ moderator_checkbox(['videos',v.id,'visible'], v.visible) }} <a href="{{ config.VIDEOPREFIX }}/{{v.path}}">{{v.format_description}} ({{v.file_size|filesizeformat(true)}})</a></li> +{% for v in videos|sort(attribute='formats.prio', reverse=True) if (v.downloadable or ismod() ) %} + <li>{{moderator_delete(['videos',v.id,'deleted'])}} {{ moderator_checkbox(['videos',v.id,'visible'], v.visible) }} <a href="{{ config.VIDEOPREFIX }}/{{v.path}}">{{v.formats.description}} ({{v.file_size|filesizeformat(true)}})</a></li> {% endfor %} </ul> {% if not ismod() %}