Skip to content
Snippets Groups Projects
Select Git revision
  • d64b9f998d843f2e36e3d58e53bf11a9c977966a
  • master default protected
  • postgres_integration
  • s3compatible
  • intros
  • bootstrap4
  • modules
7 results

lecture.html

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    lecture.html 5.87 KiB
    {% from 'macros.html' import player %}
    {% from 'macros.html' import authorize_helper %}
    {% from 'macros.html' import video_download_btn %}
    {% from 'macros.html' import video_embed_btn %}
    {% from 'macros.html' import vtttime %}
    {% from 'macros.html' import moderator_editor %}
    {% from 'macros.html' import moderator_editor_time %}
    {% from 'macros.html' import moderator_delete %}
    {% from 'macros.html' import moderator_checkbox %}
    {% set page_border = 1 -%}
    
    {% extends "base.html" %}
    {% block title %}- {{ course.title }}: {{ lecture.title}}{% endblock %}
    {% block header %}
    {{ super() }}
    
    	<meta property="og:image" content="{{ config.VIDEOPREFIX }}/thumbnail/l_{{lecture.id}}.jpg" />
    	<meta property="og:title" content="{{ course.title }}: {{ lecture.title}}" />
    	<meta property="og:description" content="{{ lecture.comment }}" />
    {% endblock %}
    {% block content %}
    <div class="panel panel-default">
    	<div class="panel-heading">
    		<span class="panel-title"><strong><a href="{{url_for('course', handle=course.handle)}}#lecture-{{lecture.id}}">{{ course.title }}</a></strong>: {{ lecture.title }} ({{ lecture.time.date().strftime("%a, %d.%m.%Y")}})</span>
    	</div>
    	<div class="panel-body">
    		<div class="row" style="padding: 0px;">
    			<div class="col-xs-12" style="padding-bottom: 15px;">
    				<a href="{{url_for('course', handle=course.handle)}}#lecture-{{lecture.id}}" class="btn btn-default" ><span class="fa fa-chevron-circle-left" aria-hidden="true"></span> Zur Veranstaltungsseite</a>
    			</div>
    		</div>
    		<div class="row">
    			{% if isAuthorized %}
    			<div class="col-xs-12" style="padding: 0px">
    				{{ player(lecture, videos, get_flashed_messages(category_filter=['player']), seek=seek) }}
    			</div>
    			{% else %}
    				{{ authorize_helper(course.login_info, permtypes, passwordSet, lecture, course, courses_loaded) }}
    			{% endif %}
    			
    			<div class="col-xs-12" style="padding-top: 15px;">
    				<button class="btn btn-default" id="hintnewchapter">{% if ismod() %}Neues Kapitel{% else %}Kapitelmarker vorschlagen{% endif %}</button>
    				<ul class="list-inline pull-right" style="margin-bottom: 0px;">
    					<li>{{ video_embed_btn(lecture.id, course=course.handle) }}</li>
    					<li class="dropup">{{ video_download_btn(videos) }}</li>
    				</ul>
    			</div>
    			{% if lecture.comment or ismod() %}
    			<div class="col-xs-12" style="padding-top: 15px">
    				<h4><strong>Beschreibung:</strong></h4><p style="padding-left: 5px;padding-right: 5px"> {{ moderator_editor(['lectures',lecture.id,'comment'], lecture.comment) }}</p>
    			</div>
    			{% endif %}
    			{% if chapters %}
    			<div class="col-xs-12 table-responsive" style="padding-top: 10px;">
    				<h4><strong>Kapitel:</strong></h4>
    				<table class="table table-hover">
    				{% for c in chapters|sort(attribute='time') %}
    				<tr>
    					<td style="width: 130px;">
    						<a class="chapterlink" href="{{url_for('lecture', course=course.handle, id=lecture.id, t=c['time'])}}" data-seek-time="{{c['time']}}">{{ c.time|time_offset }}</a>
    						<br>
    						{% if ismod() %}
    							{{ moderator_editor(['chapters',c.id,'time'],c['time'],true) }}
    						{% endif %}
    					</td>
    					<td>{{ moderator_editor(['chapters',c.id,'text'],c['text']|e) }}</td>
    					{% if ismod() %}
    					<td>{{ moderator_checkbox(['chapters',c.id,'visible'], c.visible) }}</td>
    					<td>{{ moderator_delete(['chapters',c.id,'deleted']) }}</td>
    					{% endif %}
    				</tr>
    				{% endfor %}
    				</table>
    			</div>
    			{% endif %}
    		</div>
    	</div>
    </div>
    
    {% if ismod() %}
    <div class="panel panel-default">
    	<div class="panel-heading">
    		<a data-toggle="collapse" href="#statspanel" class="plotlyresize"><h1 class="panel-title">Statistiken</h1></a>
    	</div>
    	<div class="row panel-body collapse out panel-collapse" id="statspanel">
    		<div class="col-md-6 col-xs-12">
    			<p class="text-center">Zuschauer pro Tag</p>
    			<div id="plot_stats_viewsperday" class="plot-view" data-url="{{url_for('stats_viewsperday', req="lecture", param=lecture.id)}}"></div>
    		</div>
    		<div class="col-md-6 col-xs-12">
    			<p class="text-center">Zuschauer im Livestream</p>
    			<div id="plot_stats_generic" class="plot-view" data-url="{{url_for('stats_generic', req="live_views", param=lecture.id)}}" data-reload="60000"></div>
    		</div>
    	</div>
    </div>
    {% endif %}
    
    
    <script>
    function hintchapterclick (src) {
    	$.ajax({
    		method: "GET",
    		url: $(src).data('url'),
    		data: $(src).serialize(),
    		success: function(data)
    		{
    			{% if not ismod() %}
    				alert("Kapitelmarker vorgeschlagen. Danke!");
    			{% else %}
    				window.location.reload();
    			{% endif %}
    			$('#hintnewchapter').click();
    		}
    	});
    	return false;
    }
    $(function() {
    	$( "#hintnewchapter" ).popover(
    			{
    				html:true,
    				title:'Kapitelmarkierung vorschlagen',
    				placement: 'top',
    				container: 'body',
    				content: function() {
    					var zeropad = function (num, places) {
    						var zero = places - num.toString().length + 1;
    						return Array(+(zero > 0 && zero)).join("0") + num;
    					};
    					var timestamp = videojs('videoplayer').currentTime()
    					var h = zeropad( Math.trunc(timestamp/3600),2);
    					var m = zeropad( Math.trunc((timestamp%3600)/60),2);
    					var s = zeropad( Math.trunc(timestamp%60),2);
    					var timeasstring = h+':'+m+':'+s;
    					return '<form class="needs-validation" method="post" data-url="{{ url_for('suggest_chapter', lectureid=lecture.id) }}" onSubmit="return hintchapterclick(this);"><input class="form-control" style="margin-top: 6px;margin-bottom: 6px;" placeholder="00:00" name="time" type="text" value="'+timeasstring+'" pattern="(|[0-9]{1,2}:(|[0-9]{1,2}:))[0-9]{1,2}"><input class="form-control" placeholder="Titel" name="text" type="text" style="margin-bottom: 15px;"required><input type="submit" class="btn btn-default" style="margin-bottom: 6px;" value="{% if ismod() %}Hinzufügen{% else %}Vorschlagen{% endif %}"></form>';
    				}
    			})
    
    });
    
    $(document).ready(function() {
    	$("a.chapterlink").click(function () {
    		videojs('videoplayer').currentTime($(this).data("seek-time"));
    		return false;
    	});
    });
    </script>
    {% endblock %}