Skip to content
Snippets Groups Projects
Commit fa261b4b authored by Julian Rother's avatar Julian Rother
Browse files

Merge branch 'master' of git.fsmpi.rwth-aachen.de:videoagwebsite/videoagwebsite

parents a36f2c02 dcf9dfb0
No related branches found
No related tags found
No related merge requests found
# Website der Video AG
## Entwicklung
### Zum Testen:
Hinweis: diese Variante startet eine lokale Testversion der Website, es sind nicht alle Features verfügbar, z.B. LDAP-Login.
1. Repo Clonen
2. Verzeichnis betreten
3. (optional) config.py anpassen
4. Schauen ob alle Dependencies erfüllt sind (siehe weiter unten)
5. `./run.py` ausführen
6. unter [link](http://localhost:5000) ist die Website verfügbar
7. Moderatorlogin mit user: `videoag` Passwort: `videoag`
### Zum Mitmachen:
1. Repo zum User clonen, dafür den "Clone-Button auf der Website verwenden
2. Weiter mit 'Zum Testen'
3. Änderungen machen
4. ins eigene Repo pushen
5. Pull-Request an uns, dazu unter "Merge-Requests" einmal auf "New Merge Request" und das Private Repo auswählen.
6. Warten
7. Wir mergen die Änderungen
### Dependencies
* python
* flask
* sqlite
* lxml (optional, wird für den Campus Import benötigt)
# Lizenz
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License Version 2 modify it under the terms of the GNU General Public License Version 2
as published by the Free Software Foundation; as published by the Free Software Foundation;
......
...@@ -192,6 +192,7 @@ def faq(): ...@@ -192,6 +192,7 @@ def faq():
return render_template('faq.html') return render_template('faq.html')
@app.route('/play/<int:id>') @app.route('/play/<int:id>')
@app.route('/embed/<int:id>', endpoint='embed')
@handle_errors('course', 'Diese Vorlesung existiert nicht!', 404, IndexError) @handle_errors('course', 'Diese Vorlesung existiert nicht!', 404, IndexError)
def lecture(id): def lecture(id):
lectures = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod()) lectures = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod())
...@@ -202,7 +203,8 @@ def lecture(id): ...@@ -202,7 +203,8 @@ def lecture(id):
if not courses: if not courses:
return render_endpoint('course', 'Diese Veranstaltung existiert nicht!'), 404 return render_endpoint('course', 'Diese Veranstaltung existiert nicht!'), 404
chapters = query('SELECT * FROM chapters WHERE lecture_id = ? AND NOT deleted AND (? OR visible) ORDER BY time ASC', id, ismod()) chapters = query('SELECT * FROM chapters WHERE lecture_id = ? AND NOT deleted AND (? OR visible) ORDER BY time ASC', id, ismod())
return render_template('lecture.html', course=courses[0], lecture=lectures[0], videos=videos, chapters=chapters) return render_template('embed.html' if request.endpoint == 'embed' else 'lecture.html', course=courses[0], lecture=lectures[0], videos=videos, chapters=chapters)
@app.route('/search') @app.route('/search')
def search(): def search():
...@@ -395,6 +397,24 @@ def new_featured(): ...@@ -395,6 +397,24 @@ def new_featured():
return redirect(request.values['ref']) return redirect(request.values['ref'])
return id, 200 return id, 200
@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
pages=[]
# static pages
for rule in app.url_map.iter_rules():
if 'GET' in rule.methods and len(rule.arguments)==0:
if rule.endpoint not in mod_endpoints:
pages.append([rule.rule])
for i in query('select * from courses where visible and listed'):
pages.append([url_for('course',handle=i['handle'])])
for j in query('select * from lectures where (course_id = ? and visible)',i['id']):
pages.append([url_for('lecture',id=j['id'])])
return Response(render_template('sitemap.xml', pages=pages), 200, {'Content-Type': 'application/atom+xml'} )
import feeds import feeds
import importer import importer
import schedule import schedule
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
{%if ismod() %}<script src="{{url_for('static', filename='moderator.js')}}"></script>{% endif %} {%if ismod() %}<script src="{{url_for('static', filename='moderator.js')}}"></script>{% endif %}
</head> </head>
<body> <body>
{% block navbar %}
<nav class="navbar navbar-default navbar-static-top"> <nav class="navbar navbar-default navbar-static-top">
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
...@@ -98,6 +99,7 @@ ...@@ -98,6 +99,7 @@
</div> </div>
</div> </div>
</nav> </nav>
{% endblock %}
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
{% if page_border == 0 %} {% if page_border == 0 %}
...@@ -127,8 +129,6 @@ ...@@ -127,8 +129,6 @@
</div> </div>
{% endfor %} {% endfor %}
{% block content %} {% block content %}
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
......
{% from 'macros.html' import player %}
{% from 'macros.html' import video_download_btn %}
{% from 'macros.html' import video_embed_btn %}
{% set page_border = 0 -%}
{% extends "base.html" %}
{% block navbar %}
{% endblock %}
{% block content %}
<div class="row">
<div class="col-xs-12" style="padding: 0px">
{{ player(lecture, videos) }}
</div>
</div>
{% endblock %}
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
<span>Einbetten</span> <span>Einbetten</span>
</a> </a>
<script> <script>
{% set embedcode = '<iframe width="700" height="394" src="https://videoag.fsmpi.rwth-aachen.de/site/embed.php?lecture='+lectureid|string+'" frameborder="0" allowfullscreen="true"></iframe>' %} {% set embedcode = '<iframe width="700" height="394" src="'+url_for('embed', id=lectureid, _external=True)+'" frameborder="0" allowfullscreen="true"></iframe>' %}
$('#embedcodebtn').popover( $('#embedcodebtn').popover(
{ {
html:true, html:true,
......
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in pages %}
<url>
<loc>{{page[0]|safe}}</loc>
<lastmod>{{page[1]}}</lastmod>
</url>
{% endfor %}
</urlset>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment