diff --git a/server.py b/server.py
index 99a53dfb7a5cefb942ab972a2ae0b9538c76376d..b6c64af1261e09934fbaba6aa06a8bbbf2f0cc57 100755
--- a/server.py
+++ b/server.py
@@ -198,13 +198,13 @@ def course():
 		return app.view_functions['videos'](), 404
 	lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', courses[0]['id'], ismod())
 	videos = query('''
-			SELECT *, formats.description AS format_description
+			SELECT videos.*, formats.description AS format_description
 			FROM videos
 			JOIN lectures ON (videos.lecture_id = lectures.id)
 			JOIN formats ON (videos.video_format = formats.id)
-			WHERE lectures.course_id= ?
+			WHERE lectures.course_id= ? AND (? OR videos.visible)
 			ORDER BY formats.prio DESC
-			''', courses[0]['id'])
+			''', courses[0]['id'], ismod())
 	return render_template('course.html', course=courses[0], lectures=lectures, videos=videos)
 
 @app.route('/login', methods=['GET', 'POST'])
diff --git a/static/moderator.js b/static/moderator.js
index 0ef0e1548080eb062c4b1ed06bdc1b8077742311..e6945d46dc4ba7f4a9aad930a7bca10802a2d2d8 100644
--- a/static/moderator.js
+++ b/static/moderator.js
@@ -42,6 +42,15 @@ var moderatorinterface = {
 				$(".modeditablevalue",e).html(value);
 			}
 		}
+		moderatorinterface.set(path,value);
+	},
+	change: function() {
+		var event = window.event;
+		var value = $(event.srcElement)[0].checked;
+		var path = $($(event.srcElement)[0]).data('path');
+		moderatorinterface.set(path,value ? 1 : 0);
+	},
+	set: function(path,value) {
 		var req = {};
 		req[path] = value;
 		$.ajax({
@@ -51,7 +60,6 @@ var moderatorinterface = {
 			contentType: "application/json",
 			data: JSON.stringify(req)
 		})
-
 	}
 };
 
diff --git a/templates/macros.html b/templates/macros.html
index 8ea9ce483eb1321b32ff8b6063373a15c946c872..07a2e499eb19c5876596250574a4c2fa0ecb79bb 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -94,7 +94,7 @@
 <button class="btn btn-primary dropdown-toggle {% if videos|length is equalto 0 %}disabled{% endif %}" type="button" data-toggle="dropdown">Download <span class="caret"></span></button>
 <ul class="dropdown-menu">
 	{% for v in videos %}
-	<li><a href="{{ videoprefix }}/{{v.path}}">{{v.format_description}} ({{v.file_size|filesizeformat(true)}})</a></li>
+	<li><a href="{{ videoprefix }}/{{v.path}}">{{ valuecheckbox(['videos',v.id,'visible'], v.visible) }} {{v.format_description}} ({{v.file_size|filesizeformat(true)}})</a></li>
 	{% endfor %}
 </ul>
 <noscript>
@@ -128,13 +128,16 @@ $('#embedcodebtn').popover(
 		<img class="col-sm-2 col-xs-12"src="https://videoag.fsmpi.rwth-aachen.de/{{lecture.titlefile}}" alt="Vorschaubild">
 		<span class="col-sm-3 col-xs-12">
 			<ul class="list-unstyled">
-				<li>{{ lecture.title }}</li>
-				{% if lecture.speaker %}<li>Gehalten von {{ lecture.speaker|safe }}</li>{% endif %}
-				<li>{{ lecture.time }}</li>
+				<li>{{ valueeditor(['lectures',lecture.id,'title'], lecture.title) }}</li>
+				{% if lecture.speaker or ismod() %}<li>Gehalten von {{ valueeditor(['lectures',lecture.id,'speaker'], lecture.speaker) }}</li>{% endif %}
+				<li>{{ valueeditor(['lectures',lecture.id,'time'], lecture.time) }} </li>
 			</ul>
 		</span>
 		<span class="col-sm-4 col-xs-12">
-			{{ lecture.comment|safe }}
+			<ul class="list-unstyled">
+				<li>{{ valueeditor(['lectures',lecture.id,'comment'], lecture.comment) }}</li>
+				{% if  ismod() %}<li>{{ valueeditor(['lectures',lecture.id,'internal'], lecture.internal) }}</li>{% endif %}
+			</ul>
 		</span>
 		<span class="col-sm-3 col-xs-12">
 			<span class="pull-right">
@@ -157,4 +160,10 @@ $('#embedcodebtn').popover(
 	{% else %}
 		{{value|safe}}
 	{% endif %}
-{% endmacro%}
+{% endmacro %}
+
+{% macro valuecheckbox (path,value) %}
+	{% if ismod() %}
+	<input type="checkbox" data-path="{{path|join('.')}}" {% if value %} checked {% endif %} onchange="moderatorinterface.change()"/>
+	{% endif %}
+{% endmacro %}