Commit e76ebbe8 authored by markus scheller's avatar markus scheller

Merge branch '172-dokumentation-ueberarbeiten' into 'master'

Resolve "Dokumentation überarbeiten"

Closes #172

See merge request !11
parents 23b68036 50e1f117
......@@ -26,7 +26,7 @@ from shared import (
date_filter_short, time_filter, time_filter_short, user_manager,
security_manager, current_user, check_login, login_required,
class_filter, needs_date_test, todostate_name_filter,
code_filter, indent_tab_filter)
code_filter, code_key_filter, indent_tab_filter)
from utils import (
get_first_unused_int, get_etherpad_text, split_terms, optional_int_arg,
fancy_join, footnote_hash, get_git_revision, get_max_page_length_exp,
......@@ -110,6 +110,7 @@ app.jinja_env.filters["datify_long"] = date_filter_long
app.jinja_env.filters["class"] = class_filter
app.jinja_env.filters["todo_get_name"] = todostate_name_filter
app.jinja_env.filters["code"] = code_filter
app.jinja_env.filters["code_key"] = code_key_filter
app.jinja_env.filters["indent_tab"] = indent_tab_filter
app.jinja_env.filters["fancy_join"] = fancy_join
app.jinja_env.filters["footnote_hash"] = footnote_hash
......@@ -280,17 +281,115 @@ def index():
protocol=protocol, todos=todos, show_private=show_private,
has_public_view_right=has_public_view_right)
@app.route("/documentation")
@back.anchor
@login_required
def documentation():
todostates = list(TodoState)
name_to_state = TodoState.get_name_to_state()
return render_template(
"documentation.html", todostates=todostates,
name_to_state=name_to_state)
"documentation.html")
@app.route("/documentation/sessionmanagement")
@back.anchor
@login_required
def sessionmanagement_documentation():
return render_template(
"documentation-sessionmanagement.html")
@app.route("/documentation/sessionmanagement/plan")
@back.anchor
@login_required
def plan_sessionmanagement_documentation():
return render_template(
"documentation-sessionmanagement-plan.html")
@app.route("/documentation/sessionmanagement/write")
@back.anchor
@login_required
def write_sessionmanagement_documentation():
return render_template(
"documentation-sessionmanagement-write.html")
@app.route("/documentation/sessionmanagement/tracking")
@back.anchor
@login_required
def tracking_sessionmanagement_documentation():
return render_template(
"documentation-sessionmanagement-tracking.html")
@app.route("/documentation/syntax")
@back.anchor
@login_required
def syntax_documentation():
return render_template(
"documentation-syntax.html")
@app.route("/documentation/syntax/meta")
@back.anchor
@login_required
def meta_syntax_documentation():
return render_template(
"documentation-syntax-meta.html")
@app.route("/documentation/syntax/top")
@back.anchor
@login_required
def top_syntax_documentation():
return render_template(
"documentation-syntax-top.html")
@app.route("/documentation/syntax/lists")
@back.anchor
@login_required
def lists_syntax_documentation():
return render_template("documentation-syntax-lists.html")
@app.route("/documentation/syntax/internal")
@back.anchor
@login_required
def internal_syntax_documentation():
return render_template(
"documentation-syntax-internal.html")
@app.route("/documentation/syntax/tags")
@back.anchor
@login_required
def tags_syntax_documentation():
states = {state:[] for state in list(TodoState)}
name_to_state = TodoState.get_name_to_state()
for state_name in name_to_state:
states[name_to_state[state_name]].append(state_name)
return render_template(
"documentation-syntax-tags.html", states=states)
@app.route("/documentation/configuration")
@back.anchor
@login_required
def configuration_documentation():
return render_template(
"documentation-configuration.html")
@app.route("/documentation/configuration/types")
@back.anchor
@login_required
def types_configuration_documentation():
return render_template(
"documentation-configuration-types.html")
@app.route("/documentation/configuration/todomails")
@back.anchor
@login_required
def todomails_configuration_documentation():
return render_template(
"documentation-configuration-todomails.html")
@app.route("/documentation/configuration/settings")
@back.anchor
@login_required
def settings_configuration_documentation():
user = current_user()
return render_template(
"documentation-configuration-settings.html",
system_administrator=(user is not None and config.ADMIN_GROUP in user.groups))
@app.route("/types/list")
@back.anchor
......
......@@ -128,6 +128,8 @@ def class_filter(obj):
def code_filter(text):
return "<code>{}</code>".format(text)
def code_key_filter(text):
return '<code class="highlight" style="color: inherit;"><span class="kr">{}</span></code>'.format(text)
from common.auth import UserManager, SecurityManager, User
max_duration = getattr(config, "AUTH_MAX_DURATION")
......
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f0f3f3; }
.highlight .c { color: #0099FF; font-style: italic } /* Comment */
.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #006699; font-weight: bold } /* Keyword */
.highlight .o { color: #555555 } /* Operator */
.highlight .ch { color: #0099FF; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #009999 } /* Comment.Preproc */
.highlight .cpf { color: #0099FF; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
.highlight .go { color: #AAAAAA } /* Generic.Output */
.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #99CC66 } /* Generic.Traceback */
.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #006699 } /* Keyword.Pseudo */
.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #FF6600 } /* Literal.Number */
.highlight .s { color: #CC3300 } /* Literal.String */
.highlight .na { color: #330099 } /* Name.Attribute */
.highlight .nb { color: #336666 } /* Name.Builtin */
.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
.highlight .no { color: #336600 } /* Name.Constant */
.highlight .nd { color: #9999FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #CC00FF } /* Name.Function */
.highlight .nl { color: #9999FF } /* Name.Label */
.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #003333 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #FF6600 } /* Literal.Number.Bin */
.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
.highlight .sa { color: #CC3300 } /* Literal.String.Affix */
.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
.highlight .sc { color: #CC3300 } /* Literal.String.Char */
.highlight .dl { color: #CC3300 } /* Literal.String.Delimiter */
.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
.highlight .sx { color: #CC3300 } /* Literal.String.Other */
.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #CC00FF } /* Name.Function.Magic */
.highlight .vc { color: #003333 } /* Name.Variable.Class */
.highlight .vg { color: #003333 } /* Name.Variable.Global */
.highlight .vi { color: #003333 } /* Name.Variable.Instance */
.highlight .vm { color: #003333 } /* Name.Variable.Magic */
.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
{% extends "layout.html" %}
{% block additional_js %}
<link rel="stylesheet" href="{{url_for('static', filename='css/pygments-manni.css')}}" />
{% endblock %}
{% set navigation_bar = [
('sessionmanagement_documentation', '/documentation/sessionmanagement', 'Sitzungsverwaltung', [
('plan_sessionmanagement_documentation', '/documentation/sessionmanagement/plan', 'Planung'),
('write_sessionmanagement_documentation', '/documentation/sessionmanagement/write', 'Protokollieren'),
('tracking_sessionmanagement_documentation', '/documentation/sessionmanagement/tracking', 'Nachverfolgung')
]),
('syntax_documentation', '/documentation/syntax', 'Syntax', [
('meta_syntax_documentation', '/documentation/syntax/meta', 'Metadaten'),
('top_syntax_documentation', '/documentation/syntax/top', 'Tagesordnungspunkte'),
('lists_syntax_documentation', '/documentation/syntax/lists', 'Listen'),
('internal_syntax_documentation', '/documentation/syntax/internal', 'Interne Abschnitte'),
('tags_syntax_documentation', '/documentation/syntax/tags', 'Tags')
]),
('configuration_documentation', '/documentation/configuration', 'Einrichtung', [
('types_configuration_documentation', '/documentation/configuration/types', 'Typen'),
('todomails_configuration_documentation', '/documentation/configuration/todomails', 'Todo Mails'),
('settings_configuration_documentation', '/documentation/configuration/settings', 'Systemeinstellungen')
])
] -%}
{% set active_page = active_page|default('documentation') -%}
{% block content %}
<div class="row">
<div id="left-column", class="col-lg-3">
<nav class="navbar navbar-default" style="border: none; background-color:white">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#documentation-navigation" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/documentation">Dokumentation</a>
</div>
<div class="collapse navbar-collapse" id="documentation-navigation">
<ul class="nav navbar-nav" style="width:100%">
{% for id, url, caption, children in navigation_bar %}
<li{% if id == active_page %} class="active"{% endif %} style="width:100%">
<div class="btn-group" style="width:100%">
<a class="btn btn-{% if id == active_page %}primary{% else %}default{% endif %}{% if children %} col-xs-10{% endif %}" href="{{url|e}}" role="button" style="font-weight: bold; text-align:left; border: none; padding: 10px 15px">{{caption|e}}</a>
{% if children %}
<button class="btn btn-{% if id == active_page %}primary{% else %}default{% endif %} col-xs-2" type="button" data-toggle="collapse" role="button" data-target="#{{id}}-collapse" aria-expanded="true" style="float:right; border:none; padding: 10px 15px">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
{% endif %}
</div>
{% if children %}
<ul class="collapse{% if active_page.endswith(id) %}.in{% endif %} nav nav-pills nav-stacked" id="{{id}}-collapse">
{% for child_id, child_url, child_caption in children %}
<li{% if child_id == active_page %} class="active"{% endif %}>
<a href="{{child_url|e}}" style="padding-left: 30px">{{child_caption|e}}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
</div>
</nav>
</div>
<div id="right-column", class="col-lg-9">
{% block documentation_content %}
Diese Seite ist leer.
{% endblock %}
</div>
</div>
{% endblock %}
{% extends "documentation-base.html" %}
{% set active_page = "settings_configuration_documentation" %}
{% block title %}Einrichtung: Systemeinstellungen{% endblock %}
{% block documentation_content %}
<h3>Einrichtung: Systemeinstellungen</h3>
<p>
Einige Features des Protokollsystems müssen bei der Installation und Einrichtung durch die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a> aktiviert werden. Dies ist eine Übersicht über die mit diesen Systemeinstellungen verbundenen Features. Sollten einige der angegeben Funktionalitäten aktiviert werden, so wende dich an die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a>. Bedenke vor deiner Anfrage, dass einige Features eventuell aus wichtigen Gründen bisher noch nicht aktiviert wurden.
</p>
<table class="table table-striped">
<thead>
<tr>
<th>Feature</th>
<th>Aktiviert</th>
<th>Kurzbeschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td>E-Mailversand</td>
<td><span class="glyphicon glyphicon-{% if config.MAIL_ACTIVE %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System kann selbstständig E-Mails versenden, um über anstehende Sitzungen, neue Protokolle oder Todos zu informieren.</td>
</tr>
<tr>
<td>Druckeranbindung</td>
<td><span class="glyphicon glyphicon-{% if config.PRINTING_ACTIVE %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System kann Druckaufträge starten, um Beschlüsse oder Protokolle direkt über das Webinterface zu drucken.</td>
</tr>
<tr>
<td>Etherpadanbindung</td>
<td><span class="glyphicon glyphicon-{% if config.ETHERPAD_ACTIVE %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System kann mit einem Etherpad interagieren, um das Schreiben von Protokollen dort zu ermöglichen.</td>
</tr>
<tr>
<td>Wikianbindung</td>
<td><span class="glyphicon glyphicon-{% if config.WIKI_ACTIVE %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System kann veröffentlichte Protokolle in ein Wiki übertragen.</td>
</tr>
<tr>
<td>Kalenderanbindung</td>
<td><span class="glyphicon glyphicon-{% if config.CALENDAR_ACTIVE %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System kann eingetragene Sitzungstermine in einen Kalender übertragen.</td>
</tr>
<tr>
<td>Nutzung interner Abschnitte</td>
<td><span class="glyphicon glyphicon-{% if config.PRIVATE_KEYWORDS %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System bietet die Möglichkeit bestimmte Abschnitte als nicht-öffentlich/intern zu kennzeichnen.</td>
</tr>
<tr>
<td>Angepasste Standardvorlage</td>
<td><span class="glyphicon glyphicon-{% if (config.LATEX_LOCAL_TEMPLATES and config.LATEX_LOGO_TEMPLATE) or config.LATEX_GEOMETRY or config.LATEX_PAGESTYLE or config.LATEX_ADDITIONAL_PACKAGES or config.LATEX_HEADER_FOOTER %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System nutzt die Standardprotokollvorlage in einer angepassten Form - ggf. mit Logo, Kopf-/Fußzeile oder anderen Seitenformaten bzw. -abständen</td>
</tr>
<tr>
<td>Individuelle Protokollvorlagen</td>
<td><span class="glyphicon glyphicon-{% if config.LATEX_LOCAL_TEMPLATES and config.LATEX_TEMPLATES %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td>
<td>Das System stellt zusätzlich zur Standardvorlage individuelle Protokollvorlagen zur Verfügung, die zuvor erstellt und durch die Administratoren eingespielt wurden.</td>
</tr>
</tbody>
</table>
{% if system_administrator and git_revision %}
<h4>Hinweise für Administratoren</h4>
<p>
Eine Beschreibung der Einrichtung des einzelnen Features kann der Projektseite der Software <a href="{{git_revision.url}}">„Protokollsystem 3“</a> entnommen werden. Bitte lies dir die <code>README.md</code> aufmerksam durch und entnimm bei Bedarf Konfigurationsbeispiele aus <code>config.py.example</code>. Bei schwerwiegenden Problemen kontaktiere die <a href="{{git_revision.url}}/project_members">Entwickler</a>.
</p>
{% endif %}
{% endblock %}
{% extends "documentation-base.html" %}
{% set active_page = "todomails_configuration_documentation" %}
{% block title %}Einrichtung: Todo Mails{% endblock %}
{% block documentation_content %}
<h3>Einrichtung: Todo Mails</h3>
{% if config.MAIL_ACTIVE %}
<p>
Werden im Protokollsystem im Rahmen einer Sitzung Aufgaben verwaltet, so kann eingestellt werden, dass die mit der Aufgabe betrauten Personen eine Benachrichtigung erhalten können. Damit diese Personen eine Benachrichtigung erhalten kann, sollten zu jedem genutzten Personenkürzel eine E-Mailadresse hinterlegt werden. Diese Konfiguration erfolgt zentral auf der Übersicht der <a href="{{url_for('list_todomails')}}">Todo-Mail-Zuordnungen</a>.
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title"><a data-toggle="collapse" href="#example_todomails_overview">Beispiel - Übersicht Todo-Mail-Zuordnungen</a></h5>
</div>
<div id="example_todomails_overview" class="panel-body panel-collapse collapse">
<h3>Todo-Mail-Zuordnungen <a href="#example_todomails_overview">Neu</a></h3>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Mail</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>mmustermann</td>
<td>mmustermann@domain.example</td>
<td><a href="#example_todomails_overview">Ändern</a>, <a href="#example_todomails_overview" onclick="return confirm('Bist du dir sicher, dass du die Todomailzuordnung mmustermann zu mmustermann@domain.example löschen willst?');">Löschen</a></td>
</tr>
<tr>
<td>kmusterfrau</td>
<td>kmusterfrau@domain.example</td>
<td><a href="#example_todomails_overview">Ändern</a>, <a href="#example_todomails_overview" onclick="return confirm('Bist du dir sicher, dass du die Todomailzuordnung kmusterfrau zu kmusterfrau@domain.example löschen willst?');">Löschen</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>
Auf der <a href="{{url_for('list_todomails')}}">Übersicht</a> kann über die Schaltfläche „neu“ eine entsprechende Todo-Mail-Zuordnungen angelegt werden. Bereits bestehende Belegungen können jederzeit angepasst oder gelöscht werden. Beim Anlegen bzw. der Bearbeitung müssen stets das genutzten Personenkürzel (Name) sowie die korresspondierende E-Mailadresse angegeben werden.
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title"><a data-toggle="collapse" href="#example_new_todomail">Beispiel - Todo-Mail anlegen bzw. bearbeiten</a></h5>
</div>
<div id="example_new_todomail" class="panel-body panel-collapse collapse">
<form role="form" class="">
<div class="form-group ">
<label for="name" class="control-label"><label for="name">Name</label></label>
<input class="form-control" id="name" name="name" placeholder="Name" title="" value="" type="text">
</div>
<div class="form-group ">
<label for="mail" class="control-label"><label for="mail">Mail</label></label>
<input class="form-control" id="mail" name="mail" placeholder="Mail" title="" value="" type="text">
</div>
<button type="button" class="btn btn-default">Ändern</button>
</form>
</div>
</div>
{% else %}
<div class="panel panel-warning">
<div class="panel-heading">
<h5 class="panel-title">Nutzung nicht vorgesehen</h5>
</div>
<div class="panel-body ">
<p>
Das Versenden von E-Mails zu offenen Aufgaben ist hier bisher noch nicht vorgesehen. Um den automatischen E-Mailversand nutzen zu können, wende dich bitte an die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a> und lasse die <a href="/documentation/configuration/settings">Konfiguration</a> durch sie entsprechend anpassen.
</p>
</div>
</div>
{% endif %}
{% endblock %}
This diff is collapsed.
{% extends "documentation-base.html" %}
{% set active_page = "configuration_documentation" %}
{% block title %}Einrichtung{% endblock %}
{% block documentation_content %}
<h3>Einrichtung</h3>
<p>
Eine wichtige Eigenschaft des Protokollsystems ist die Konfigurierbarkeit. Das System lässt sich individuell auf die Bedürfnisse der eigenen Organisationseinheit anpassen. Einige Einstellungen können direkt über die Weboberfläche vorgenommen werden und stehen allen Benutzern zur Verfügung. Dazu gehören:
</p>
<ul>
<li><a href="configuration/types">Protokolltypen</a></li>
<li><a href="configuration/todomails">Todo-Mails</a></li>
</ul>
<p>
Andere Einstellungen werden direkt bei der Installation und Einrichtung des Protokollsystems durch die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a> vorgenommen. Zu diesen <a href="configuration/settings">Systemeinstellungen</a> zählen unter anderem Features wie das automatische Versenden von E-Mails oder die Nutzung eines Etherpads zum Schreiben von Protokollen.
</p>
{% endblock %}
This diff is collapsed.
{% extends "documentation-base.html" %}
{% set active_page = "tracking_sessionmanagement_documentation" %}
{% block title %}Sitzungsverwaltung: Nachverfolgung{% endblock %}
{% block documentation_content %}
<h3>Sitzungsverwaltung: Nachverfolgung</h3>
<p>
Nachdem eine Sitzung beendet und das <a href="write#session_end">Protokoll importiert</a> wurde, können in einer Sitzung gefasste <a href="#decisions">Beschlüsse</a> und verteilte <a href="#todos">Aufgaben</a> eingesehen sowie nachverfolgt werden.
</p>
<h4 id="decisions">Beschlüsse</h4>
<p>
Alle in den Protollen festgehaltenen Beschlüsse werden in der <a href="{{url_for('list_decisions')}}">Beschlussübersicht</a> angezeigt. Neben dem Beschlusstext beinhaltet die Übersicht die zu den Beschlüssen gehörenden Protokoll sowie die <a href="/documentation/configuration/types#decision_categories">Beschlusskategorie</a>. In den einzelnen Protokollen werdend die Beschlüsse ebenfalls zusammengefasst dargestellt, um einen Überbrlick über alle Beschlüsse der betrefenden Sitzung zu erhalten.
</p>
{% if config.PRINTING_ACTIVE %}
<p>
Beschlüsse können direkt aus dem Protokollsystem an den im <a href="/documentation/configuration/types">Protokolltyp</a> hinterlegten Drucker durch klicken auf „Drucken“ zum Drucken gesendet werden, so dass gedruckte Beschlüsse beispielsweise mit Kassenanweisungen abgeheftet werden können.
</p>
{% endif %}
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title"><a data-toggle="collapse" href="#example_decision_overview">Beispiel - Beschlussübersicht</a></h5>
</div>
<div id="example_decision_overview" class="panel-body panel-collapse collapse">
<form role="form" class="form-inline">
<div class="form-group ">
<input class="form-control" id="search" name="search" placeholder="Suchbegriff" title="" type="text" value="">
</div>
<div class="form-group ">
<select class="form-control" id="protocoltype_id" name="protocoltype_id" placeholder="Typ" title="">
<option value="-1">Alle Typen</option>
<option value="1">sitzung</option>
<option value="2">versammlung</option>
<option value="3">arbeitsgruppe</option>
</select>
</div>
<div class="form-group ">
<select class="form-control" id="decisioncategory_id" name="decisioncategory_id" placeholder="Kategorie" title="">
<option value="-1">Alle Kategorien</option>
<option value="1">finanzwirksam</option>
<option value="2">ESA</option>
</select>
</div>
<button type="button" class="btn btn-default">Suchen</button>
</form>
<h3>Beschlüsse <a href="#">Neu</a></h3>
<table class="table table-striped">
<thead>
<tr>
<th>Sitzung</th>
<th>Beschluss</th>
<th>Kategorie</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#">Sitzung-18-03-01</a></td>
<td>Die Sitzung beschließt den Finanzplan der ESA (M/0/2).</td>
<td>finanzwirksam</td>
<td>{% if config.PRINTING_ACTIVE %}<a href="#">Drucken</a>{% endif %}</td>
</tr>
<tr>
<td><a href="#">Sitzung-18-03-01</a></td>
<td>Die Sitzung beschließt die ESAG mit nach Kräften zu unterstützen (5/1/3).</td>
<td>ESA</td>
<td>{% if config.PRINTING_ACTIVE %}<a href="#">Drucken</a>{% endif %}</td>
</tr>
<tr>
<td><a href="#">Arbeitsgruppe-18-02-15</a></td>
<td>Die Arbeitsgruppe wählt Katrin Musterfrau als Eventkoordination (M/0/0).</td>
<td></td>
<td>{% if config.PRINTING_ACTIVE %}<a href="#">Drucken</a>{% endif %}</td>
</tr>
</tbody>
</table>
</div>
</div>
<h4 id="todos">Aufgaben (Todos)</h4>
<p>
Einzelne Aufgaben, die während oder außerhalb einer Sitzung vergeben werden, können mit dem Protokollsystem über mehrere Protokolle hinweg verwaltet werden. Offene Todos werden dabei automatisch in die Protokollvorlage eingefügt, falls diese einen <a href="/documentation/configuration/types">Standard-TOP</a> „Todos“ beinhaltet. Darüberhinaus können alle Todos auf der entsprechenden <a href="{{url_for('list_todos')}}">Übersichtsseite</a> eingesehen werden.
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title"><a data-toggle="collapse" href="#example_todo_overview">Beispiel - Todoübersicht</a></h5>
</div>
<div id="example_todo_overview" class="panel-body panel-collapse collapse">
<form role="form" class="form-inline">
<div class="form-group ">
<input class="form-control" id="search" name="search" placeholder="Suchbegriff" title="" type="text" value="">
</div>
<div class="form-group ">
<select class="form-control" id="protocoltype_id" name="protocoltype_id" placeholder="Typ" title="">
<option value="-1">Alle Typen</option>
<option value="1">sitzung</option>
<option value="2">versammlung</option>
<option value="3">arbeitsgruppe</option>
</select>
</div>
<div class="form-group ">
<select class="form-control" id="state_open" name="state_open" placeholder="Offen" title="">
<option selected="" value="-1">Alle</option>
<option value="0">Offen</option>
<option value="1">In Bearbeitung</option>
</select>
</div>
<button type="button" class="btn btn-default">Suchen</button>
</form>
<h3>Todos <a href="#">Neu</a></h3>
<table class="table table-striped">
<thead>
<tr>
<th class="hidden-sm hidden-md hidden-lg">Todo</th>
<th class="hidden-xs">ID</th>
<th class="hidden-xs">Status</th>
<th class="hidden-xs">Sitzung</th>
<th class="hidden-xs">Name</th>
<th>Aufgabe</th>
<th class="hidden-xs"></th>
</tr>
</thead>
<tbody>
<tr>
<td class="hidden-sm hidden-md hidden-lg"><a href="#">[offen]</a><br><a href="#">Sitzung</a><br>mmustermann</td>
<td class="hidden-xs"><a href="#">2</a></td>
<td class="hidden-xs">[offen]</td>
<td class="hidden-xs"><a href="#">Sitzung-18-03-01</a></td>
<td class="hidden-xs">mmustermann</td>
<td>Mit der Fakultät treffen</td>
<td class="hidden-xs"><a href="#">Ändern</a>, <a href="#">Löschen</a></td>
</tr>
<tr>
<td class="hidden-sm hidden-md hidden-lg"><a href="#">[in Bearbeitung]</a><br><a href="#">Arbeitsgruppe</a><br>kmusterfrau</td>
<td class="hidden-xs"><a href="#">1</a></td>
<td class="hidden-xs">[in Bearbeitung]</td>
<td class="hidden-xs"><a href="#">Arbeitsgruppe-18-02-15</a></td>
<td class="hidden-xs">kmusterfrau</td>
<td>Organisiation des nächsten Events</td>
<td class="hidden-xs"><a href="#">Ändern</a>, <a href="#">Löschen</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>
Aufgaben können im Protokollsystem auch außerhalb eines Protokolls direkt auf der <a href="{{url_for('list_todos')}}">Übersichtsseite</a> über die Schaltfläche „neu“ angelegt werden. Zu jeder Aufgabe sollte mindestens eine Person zugeordnet werden, die das Todo erledigt. Werden mehrere Personen angegeben, so sind diese durch Kommata oder Leerzeichen zu trennen. In aller Regel wird für jede Person ein internes Personenkürzel für die Zuweisung einer Aufgabe genutzt. Damit diese Personen eine Benachrichtigung über das neue Todo erhalten, sollten zu jedem internen Personenkürzel eine <a href="/documentation/configuration/todomails">E-Mailadresse</a> hinterlegt werden.
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title"><a data-toggle="collapse" href="#example_new_todo">Beispiel - Todo anlegen</a></h5>
</div>
<div id="example_new_todo" class="panel-body panel-collapse collapse">
<form role="form" class="">
<div class="form-group ">
<label for="protocoltype_id" class="control-label"><label for="protocoltype_id">Typ</label></label>