diff --git a/server.py b/server.py index 4c2b18c5affe183c11f1008caeb65e83ddfbda4d..6cde811ad414da123ebdc287e346521187c1b019 100755 --- a/server.py +++ b/server.py @@ -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 diff --git a/shared.py b/shared.py index 624570594275471d0f91215dde1c110869f1e80b..98954b70fd38e4bb97f747be6ea5b0da7a6abcf6 100644 --- a/shared.py +++ b/shared.py @@ -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") diff --git a/static/css/pygments-manni.css b/static/css/pygments-manni.css new file mode 100644 index 0000000000000000000000000000000000000000..0fea96c6c3d9391701db41bcb5181761731531e8 --- /dev/null +++ b/static/css/pygments-manni.css @@ -0,0 +1,69 @@ +.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 */ diff --git a/templates/documentation-base.html b/templates/documentation-base.html new file mode 100644 index 0000000000000000000000000000000000000000..e2b61ffd133828c29ef6077d50e43ffb9164ac6e --- /dev/null +++ b/templates/documentation-base.html @@ -0,0 +1,75 @@ +{% 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 %} diff --git a/templates/documentation-configuration-settings.html b/templates/documentation-configuration-settings.html new file mode 100644 index 0000000000000000000000000000000000000000..ee7f5e4467e93fb9ddfa829f70c8ee8ab086d3ed --- /dev/null +++ b/templates/documentation-configuration-settings.html @@ -0,0 +1,67 @@ +{% 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 %} diff --git a/templates/documentation-configuration-todomails.html b/templates/documentation-configuration-todomails.html new file mode 100644 index 0000000000000000000000000000000000000000..8f2660153302caff2c43341be111d0197f9f3aa6 --- /dev/null +++ b/templates/documentation-configuration-todomails.html @@ -0,0 +1,73 @@ +{% 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 %} diff --git a/templates/documentation-configuration-types.html b/templates/documentation-configuration-types.html new file mode 100644 index 0000000000000000000000000000000000000000..693d3dadf4298075da3bfacf7fb980864fabc453 --- /dev/null +++ b/templates/documentation-configuration-types.html @@ -0,0 +1,532 @@ +{% extends "documentation-base.html" %} +{% set active_page = "types_configuration_documentation" %} +{% block title %}Einrichtung: Typen{% endblock %} + +{% block documentation_content %} + <h3>Einrichtung: Typen</h3> + <p> + Damit Protokolle im Protokollsystem überhaupt <a href="/documentation/sessionmanagement/write">geschrieben</a> und <a href="/documentation/sessionmanagement/plan">Sitzungen verwaltet</a> werden können, ist es unerlässlich entsprechende Protokolltypen anzulegen. Auf der <a href="{{url_for('list_types')}}">Protokolltypen-Übersichtsseite</a> werden die Typen aufgelistet, wobei nur die Typen angezeigt werden, deren Protokolle man sehen darf (weiteres hierzu unter <a href="#rechte">Rechtekonfiguration</a>). + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_types_overview">Beispiel - Übersicht Protokolltypen</a></h5> + </div> + <div id="example_types_overview" class="panel-body panel-collapse collapse"> + <h3>Protokolltypen <a href="#example_types_overview">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th class="hidden-sm hidden-md hidden-lg">Typ</th> + <th class="hidden-sm hidden-md hidden-lg">Protokoll</th> + <th class="hidden-xs">Typ</th> + <th class="hidden-xs">Name</th> + <th class="hidden-xs">Neuestes Protokoll</th> + <th class="hidden-xs"></th> + </tr> + </thead> + <tbody> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">Sitzung (sitzung)</a></td> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">sitzung-18-03-08</a><br><a href="#example_types_overview">Neues Protokoll</a></td> + <td class="hidden-xs"><a href="#example_types_overview">sitzung</a></td> + <td class="hidden-xs">Sitzung</td> + <td class="hidden-xs"><a href="#example_types_overview">sitzung-18-03-08</a></td> + <td class="hidden-xs"><a href="#example_types_overview">Neues Protokoll</a></td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">Versammlung (versammlung)</a></td> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">versammlung-18-03-11</a><br><a href="#example_types_overview">Neues Protokoll</a></td> + <td class="hidden-xs"><a href="#example_types_overview">versammlung</a></td> + <td class="hidden-xs">Versammlung</td> + <td class="hidden-xs"><a href="#example_types_overview">versammlung-18-03-11</a></td> + <td class="hidden-xs"><a href="#example_types_overview">Neues Protokoll</a></td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">Arbeitsgruppe (arbeitsgruppe)</a></td> + <td class="hidden-sm hidden-md hidden-lg"><a href="#example_types_overview">arbeitsgruppe-18-02-03</a><br><a href="#example_types_overview">Neues Protokoll</a></td> + <td class="hidden-xs"><a href="#example_types_overview">arbeitsgruppe</a></td> + <td class="hidden-xs">Arbeitsgruppe</td> + <td class="hidden-xs"><a href="#example_types_overview">arbeitsgruppe-18-02-03</a></td> + <td class="hidden-xs"><a href="#example_types_overview">Neues Protokoll</a></td> + </tr> + </tbody> + </table> + </div> + </div> + + <h4 id="type">Protokolltyp</h4> + <p> + Auf der <a href="{{url_for('list_types')}}">Übersichtsseite</a> kann über die Schaltfläche „neu“ ein entsprechender Protokolltyp angelegt werden. Bereits bestehende Protokolltypen können abhängig von der Berechtigung angepasst werden. Der Protokolltyp beinhaltet Einstellung die vom Protokollsystem stets für diesen Typ verwendet werden. Dazu gehören der Anzeigename und die Abkürzung des Sitzungstyps, die sitzungsabhaltende Organisation, der Standardbeginn der Sitzung sowie die Vorlageneinstellung. + </p> + <p> + Zu beachten ist, dass der Anzeigename des Sitzungstyps nur im Protokolltyp angepasst werden kann und im Protokoll ein Teil der Überschrift ist. + {% if config.WIKI_ACTIVE %} + Je Typ kann angegeben werdem, ob das Protokoll im Status veröffentlicht in das Wiki exportiert werden soll, wobei eien Kategorie anzugeben ist. + {% endif %} + {% if config.PRINTING_ACTIVE %} + Auch kann der Standarddrucker festgelegt werden, der für den Protokolltyp genutzt werden soll. + {% endif %} + {% if config.CALENDAR_ACTIVE %} + Des weiteren kann bei Bedarf der externe Kalender ausgewählt werden, in den die Sitzungstermine des Protokolltyp geschrieben werden sollen. + {% endif %} + {% if config.LATEX_LOCAL_TEMPLATES and config.LATEX_TEMPLATES %} + Es kann pro Protokolltyp eine der konfigurierten Vorlagen ausgewählt werden, die bei der Erstellung der PDF genutzt wird. + {% endif %} + Weitere Einstellungen, auf die im folgenden genauer eingegangen wird, sind: + </p> + <ul> + <li><a href="#rechte">Rechtekonfiguration</a></li> + <li><a href="#access_control">Zugriffskonfiguration</a></li> + {% if config.MAIL_ACTIVE %} + <li><a href="#mails">E-Maileinstellungen</a></li> + {% endif %} + <li><a href="#tops">Standard-TOPs</a></li> + <li><a href="#meta">Metadatenfelder</a></li> + <li><a href="#decision_categories">Beschlusskategorien</a></li> + </ul> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_new_type">Beispiel - Protokolltyp anlegen</a></h5> + </div> + <div id="example_new_type" 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="short_name" class="control-label"><label for="short_name">Abkürzung</label></label> + <input class="form-control" id="short_name" name="short_name" placeholder="Abkürzung" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="organization" class="control-label"><label for="organization">Organisation</label></label> + <input class="form-control" id="organization" name="organization" placeholder="Organisation" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="usual_time" class="control-label"><label for="usual_time">Üblicher Beginn</label></label> + <input class="form-control" id="usual_time" name="usual_time" placeholder="Üblicher Beginn" title="" value="" type="text"> + </div> + <div class="checkbox "> + <label> + <input id="is_public" name="is_public" value="y" type="checkbox"> <label for="is_public">Öffentlich sichtbar</label> + </label> + </div> + <div id="is_public-description" style="display:none" class="field-description"></div> + <div class="form-group "> + <label for="publish_group" class="control-label"><label for="publish_group">Verwaltungsgruppe</label></label> + <select class="form-control" id="publish_group" name="publish_group" placeholder="Verwaltungsgruppe" title=""> + <option value="">Keine Gruppe</option> + <option value="admin">admin</option> + <option value="fachschaft">fachschaft</option> + </select> + </div> + <div class="form-group "> + <label for="modify_group" class="control-label"><label for="modify_group">Bearbeitungsgruppe</label></label> + <select class="form-control" id="modify_group" name="modify_group" placeholder="Bearbeitungsgruppe" title=""> + <option value="">Keine Gruppe</option> + <option value="admin">admin</option> + <option value="fachschaft">fachschaft</option> + </select> + </div> + <div class="form-group "> + <label for="private_group" class="control-label"><label for="private_group">Interne Gruppe</label></label> + <select class="form-control" id="private_group" name="private_group" placeholder="Interne Gruppe" title=""> + <option value="">Keine Gruppe</option> + <option value="admin">admin</option> + <option value="fachschaft">fachschaft</option> + </select> + </div> + <div class="form-group "> + <label for="public_group" class="control-label"><label for="public_group">Öffentliche Gruppe</label></label> + <select class="form-control" id="public_group" name="public_group" placeholder="Öffentliche Gruppe" title=""> + <option value="">Keine Gruppe</option> + <option value="admin">admin</option> + <option value="fachschaft">fachschaft</option> + </select> + </div> + <div class="checkbox "> + <label> + <input id="non_reproducible_pad_links" name="non_reproducible_pad_links" value="y" type="checkbox"> <label for="non_reproducible_pad_links">nicht nachvollziehbare Etherpad-Links</label> + </label> + </div> + <div id="non_reproducible_pad_links-description" style="display:none" class="field-description"></div> + <div class="form-group "> + <label for="private_mail" class="control-label"><label for="private_mail">Interner Verteiler</label></label> + <input class="form-control" id="private_mail" name="private_mail" placeholder="Interner Verteiler" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="public_mail" class="control-label"><label for="public_mail">Öffentlicher Verteiler</label></label> + <input class="form-control" id="public_mail" name="public_mail" placeholder="Öffentlicher Verteiler" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="wiki_category" class="control-label"><label for="wiki_category">Wiki-Kategorie</label></label> + <input class="form-control" id="wiki_category" name="wiki_category" placeholder="Wiki-Kategorie" title="" value="" type="text"> + </div> + <div class="checkbox "> + <label> + <input id="use_wiki" name="use_wiki" value="y" type="checkbox"> <label for="use_wiki">Wiki benutzen</label> + </label> + </div> + <div id="use_wiki-description" style="display:none" class="field-description"></div> + <div class="checkbox "> + <label> + <input id="wiki_only_public" name="wiki_only_public" value="y" type="checkbox"> <label for="wiki_only_public">Wiki ist öffentlich</label> + </label> + </div> + <div id="wiki_only_public-description" style="display:none" class="field-description"></div> + <div class="form-group "> + <label for="printer" class="control-label"><label for="printer">Drucker</label></label> + <select class="form-control" id="printer" name="printer" placeholder="Drucker" title=""> + <option value="">Nicht drucken</option> + <option value="fachschaftsdrucker">fachschaftsdrucker</option> + </select> + </div> + <div class="form-group "> + <label for="calendar" class="control-label"><label for="calendar">Kalender</label></label> + <select class="form-control" id="calendar" name="calendar" placeholder="Kalender" title=""> + <option value="">Kein Kalender</option> + <option value="Fachschaftsraum">Fachschaftsraum</option> + </select> + </div> + <div class="checkbox "> + <label> + <input id="restrict_networks" name="restrict_networks" value="y" type="checkbox"> <label for="restrict_networks">Netzwerke einschränken</label> + </label> + </div> + <div id="restrict_networks-description" style="display:none" class="field-description"></div> + <div class="form-group "> + <label for="allowed_networks" class="control-label"><label for="allowed_networks">Erlaubte Netzwerke</label></label> + <input class="form-control" id="allowed_networks" name="allowed_networks" placeholder="Erlaubte Netzwerke" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="latex_template" class="control-label"><label for="latex_template">LaTeX Vorlage</label></label> + <select class="form-control" id="latex_template" name="latex_template" placeholder="LaTeX Vorlage" title=""> + <option value="">Standardvorlage</option> + <option value="yourtemplate">Deine Vorlage</option> + </select> + </div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + + <h4 id="rechte">Rechtekonfiguration</h4> + <div class="row"> + <div class="col-sm-9"> + <p> + Um zu ermöglichen, dass nur bestimmte Personengruppen auf Protokolle zugreifen können hat das Protokollsystem ein Konzept von Rechteverwaltung, dass auf den Benutzergruppen des konfigurierten Authentifizierungsdienstes (LDAP, Active-Directory oder sonstiges Auth-Backend) basiert. Die Einstellung der Rechte erfolgt pro Protokolltyp, in dem den Gruppen des Protokolltyps eine passende Benutzergruppe zugeordnet wird. + </p> + <p> + Jeder Protokolltyp verfügt über eine <code>öffentliche Gruppe</code>, eine <code>interne Gruppe</code>, eine <code>Bearbeitungsgruppe</code>, eine <code>Verwaltungsgruppe</code> und eine Einstellung, ob der Typ <code>öffentlich</code> ist. In der folgenden Tabelle werden die vorhandenen Rechte dargestellt und in Verbindung zu den Gruppen des Protokolltyps gesetzt. + </p> + </div> + <div class="col-sm-3"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h5 class="panel-title">Zu beachten</h5> + </div> + <div class="panel-body "> + Ein Recht einer Gruppe kann nur ausgeübt werden, wenn eine Benutzergruppen zugeordnet wurde. + </div> + </div> + </div> + </div> + <table class="table table-striped"> + <thead> + <tr> + <th>Recht</th> + <th>Berechtigte Gruppen</th> + </tr> + </thead> + <tbody> + <tr> + <td>darf öffentliche Version einsehen</td> + <td>jeder, wenn Protokolltyp als <code>öffentlich</code> gekennzeichnet und Protokoll veröffentlicht; <code>öffentliche Gruppe</code>; <code>interne Gruppe</code>; Benutzergruppe „{{config.ADMIN_GROUP}}“</td> + </tr> + <tr> + <td>darf interne Version einsehen</td> + <td><code>interne Gruppe</code>; Benutzergruppe „{{config.ADMIN_GROUP}}“</td> + </tr> + <tr> + <td>darf ändern</td> + <td><code>Bearbeitungsgruppe</code>; Benutzergruppe „{{config.ADMIN_GROUP}}“</td> + </tr> + <tr> + <td>darf Protokolltyp bearbeiten</td> + <td><code>Verwaltungsgruppe</code>; Benutzergruppe „{{config.ADMIN_GROUP}}“</td> + </tr> + </tbody> + </table> + <p> + Vom Protokoll wird eine interne und eine öffentliche Version generiert, falls es Inhalte gibt, die nur intern sind. Todos sind generell intern und Beschlüsse sind generell öffentlich, d.h. einsehbar, wenn man das Recht „darf öffentliche Version einsehen“ hat. Daher dürfen Beschlüsse nicht in einem internen Teil des Protokolls sein. + </p> + + <h4 id="access_control">Zugriffskonfiguration</h4> + <p> + Mit der Einstellung der Nutzerrechte kann der Zugriff auf Protokolle nur nach der erfolgreichen Authentifikation gesteuert werden. Soll der Zugriff auf öffentliche Protokolle weiter reduziert werden, so kann auf das Computernetzwerkes, dem der Zugriff gewährt werden soll, eingeschrängt werden. Dies erfolgt durch die Angabe einzelner oder mehrerer Netzwerkbereiche (vergl. <a href="https://de.wikipedia.org/wiki/Netzmaske" target="_blank">Wikipedia</a>). Bei der Angabe mehrerer Bereiche werden diese durch ein Komma voneinander getrennt. + </p> + <p> + Soll nur die Tagesordnung öffentlich gemacht werden, so muss die Option „Netzwerke einschränken“ ohne die Angabe eines Netzwerkbereiches aktiviert und der Protokolltyp als <code>öffentlich</code> gekennzeichnet werden. + </p> + + {% if config.MAIL_ACTIVE %} + <h4 id="mails">E-Maileinstellungen</h4> + <p> + Die Möglichkeit E-Mails direkt aus dem Protokollsystem zu versenden, kann sich auch bei der Einrichtung von Protokolltypen zunutzegemacht werden. Hierfür können zwei E-Mailadressen hinterlegt werden: Ein interner und ein öffentlicher Verteiler. Diese werden vom System beim Versenden des entsprechenden Protokolls verwendet. Beide Verteiler können auch für automatisierte Einladungsmails herangezogen werden. Diese Mails müssen für jeden Protokolltyp individuell erstellt werden und können in den Einstellung des Typs eingesehen werden. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_mails_overview">Beispiel - Übersicht Einladungsmails</a></h5> + </div> + <div id="example_mails_overview" class="panel-body panel-collapse collapse"> + <h3>Einladungsmails <a href="#example_mails_overview">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th>Zeit</th> + <th>Einladen</th> + <th>Zusätzlicher Mailinhalt</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td>1 Tage</td> + <td>Intern</td> + <td>Es ist mal wieder soweit und unsere Sitzung soll mit der angegeben TO statt finden.</td> + <td><a href="#example_mails_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du die Einladungsmail 1 Tage vor der Sitzung löschen willst?');" href="#example_mails_overview">Löschen</a></td> + </tr> + </tbody> + </table> + </div> + </div> + <p> + Bei der Erstellung kann festgelegt werden wie viele Tage vor der Sitzung eingeladen werden soll. Ebenfalls wird angegeben, an welche Verteiler diese automatisierte Einladung geschickt wird. Zusätzlich zur Tagesordnung und dem Datum der Sitzung kann ein individueller Mailinhalt hinterlegt werden, der zusätzlich mit versendet wird. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_mails_new">Beispiel - Einladungsmail anlegen</a></h5> + </div> + <div id="example_mails_new" class="panel-body panel-collapse collapse"> + <form role="form" class=""> + <div class="form-group "> + <label for="days_before" class="control-label"><label for="days_before">Tage vor Sitzung</label></label> + <input class="form-control" id="days_before" name="days_before" placeholder="Tage vor Sitzung" title="" value="" type="text"> + </div> + <div class="checkbox "> + <label> + <input id="send_public" name="send_public" value="y" type="checkbox"> <label for="send_public">Öffentlich einladen</label> + </label> + </div> + <div id="send_public-description" style="display:none" class="field-description"></div> + <div class="checkbox "> + <label> + <input id="send_private" name="send_private" value="y" type="checkbox"> <label for="send_private">Intern einladen</label> + </label> + </div> + <div id="send_private-description" style="display:none" class="field-description"></div> + <div class="form-group "> + <label for="additional_text" class="control-label"><label for="additional_text">Zusätzlicher Mailinhalt</label></label> + <textarea class="form-control" id="additional_text" name="additional_text" placeholder="Zusätzlicher Mailinhalt" textarea_rows="5" title="" style="min-height: 69px; overflow: hidden;"></textarea> + </div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + {% endif %} + + <h4 id="tops">Standard-TOPs</h4> + <p> + Häufig werden für eine Sitzung immer wieder die gleichen Tagesordnungspunkte in einer immer gleichen Reihenfolge benötigt, teilweise ergibt sich dies aus den Ordnungen nach denen eine Sitzung stattfindet. Diese Standard-TOPs können pro Protokolltyp festgelegt und in den Einstellung des Typs eingesehen werden. Beim Anlegen einer Sitzung werden die Standard-TOPs des Protokolltyps eingefügt. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_tops_overview">Beispiel - Übersicht Standard-TOPs</a></h5> + </div> + <div id="example_tops_overview" class="panel-body panel-collapse collapse"> + <h3>Standard-TOPs <a href="#example_tops_overview">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th>TOP</th> + <th>Sortierung</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td>Begrüßung, Beschluss der TO und Protokolle</td> + <td>-100</td> + <td><a href="#example_tops_overview">Runter</a>, <a href="#example_tops_overview">Hoch</a>, <a href="#example_tops_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du den Standard-TOP Begrüßung, Beschluss der TO und Protokolle löschen willst?');" href="#example_tops_overview">Löschen</a></td> + </tr> + <tr> + <td>Bericht</td> + <td>-90</td> + <td><a href="#example_tops_overview">Runter</a>, <a href="#example_tops_overview">Hoch</a>, <a href="#example_tops_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du den Standard-TOP Bericht löschen willst?');" href="#example_tops_overview">Löschen</a></td> + </tr> + <tr> + <td>Todos</td> + <td>-80</td> + <td><a href="#example_tops_overview">Runter</a>, <a href="#example_tops_overview">Hoch</a>, <a href="#example_tops_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du den Standard-TOP Todos löschen willst?');" href="#example_tops_overview">Löschen</a></td> + </tr> + <tr> + <td>Verschiedenes</td> + <td>100</td> + <td><a href="#example_tops_overview">Runter</a>, <a href="#example_tops_overview">Hoch</a>, <a href="#example_tops_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du den Standard-TOP Verschiedenes löschen willst?');" href="#example_tops_overview">Löschen</a></td> + </tr> + </tbody> + </table> + </div> + </div> + <p> + Werden Standard-TOPs angelegt so muss der Name des Tagesordnungspunktes stets angegeben werden. Die Reihung der TOPs kann über die Priorität bzw. Sortierung gesteuert werden. Dabei gilt: Standard-TOPs mit negativer Priorität werden vor und die mit positiver Priorität nach den Tagesordnungspunkten eines Protokolls eingefügt. Einem Standard-TOP kann zusätzlich ein feststehender vorprotokollierter Inhalt mitgegeben werden. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_tops_new">Beispiel - Standard-TOP anlegen</a></h5> + </div> + <div id="example_tops_new" 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="number" class="control-label"><label for="number">Priorität</label></label> + <input class="form-control" id="number" name="number" placeholder="Priorität" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="description" class="control-label"><label for="description">Standardinhalt</label></label> + <textarea class="form-control" id="description" name="description" placeholder="Standardinhalt" textarea_rows="5" title="" style="min-height: 69px; overflow: hidden;"></textarea> + </div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + + <h4 id="meta">Metadatenfelder</h4> + <p> + In einem Protokoll repräsentieren die Metadaten allgemeine Informationen rund um eine Sitzung. Die zuerfassenden Metadaten können für jeden Protokolltyp unterschiedlich sein und werden dementsprechend pro Typ verwaltet. Nur die im Protokolltyp angegeben Metadaten können überhaupt - müssen dann aber auch - beim Protokollieren erfasst werden. Ausgenommen von der Verwaltbarkeit sind die im Protokollsystem als Standard festgelegten Felder: Datum, Beginn und Ende. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_meta_overview">Beispiel - Übersicht Metadatenfelder</a></h5> + </div> + <div id="example_meta_overview" class="panel-body panel-collapse collapse"> + <h3>Metadatenfelder <a href="#example_meta_overview">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th>Name</th> + <th>Key</th> + <th>Standardwert</th> + <th>Intern</th> + <th>Vorher</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td>Ort</td> + <td>Ort</td> + <td>Fachschaftsraum</td> + <td>Nein</td> + <td>Nein</td> + <td><a href="#example_meta_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du das Metadatenfeld Ort löschen willst?');" href="#example_meta_overview">Löschen</a></td> + </tr> + <tr> + <td>Anwesend</td> + <td>Anwesend</td> + <td></td> + <td>Nein</td> + <td>Nein</td> + <td><a href="#example_meta_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du das Metadatenfeld Anwesend löschen willst?');" href="#example_meta_overview">Löschen</a></td> + </tr> + <tr> + <td>Protokoll</td> + <td>Protokoll</td> + <td></td> + <td>Nein</td> + <td>Nein</td> + <td><a href="#example_meta_overview">Ändern</a>, <a onclick="return confirm('Bist du dir sicher, dass du das Metadatenfeld Protokoll löschen willst?');" href="#example_meta_overview">Löschen</a></td> + </tr> + </tbody> + </table> + </div> + </div> + <p> + Die Konfiguration eines Metadatenfeldes beinhaltet immer den Anzeigenamen (Name) und den beim <a href="/documentation/syntax/meta">Protokollieren zu verwendenden Namen</a> des Feldes (Key). Des weiteren ist es möglich einen Standardwert für das Metadatenfelder zu hinterlegen, welcher beim Erstellen einer neuen Sitzung in das Feld geschrieben wird, so fern es als Planungsrelevant (vorher) markiert wurde. Zudem ist es möglich Metadaten nur in der internen Version eines Protokolls anzuzeigen, wenn das entsprechende Feld als intern festgelegt wurde. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_meta_new">Beispiel - Metadatenfeld anlegen</a></h5> + </div> + <div id="example_meta_new" class="panel-body panel-collapse collapse"> + <form role="form" class=""> + <div class="form-group "> + <label for="key" class="control-label"><label for="key">Key</label></label> + <input class="form-control" id="key" name="key" placeholder="Key" title="" value="" type="text"> + </div> + <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="value" class="control-label"><label for="value">Standardwert</label></label> + <input class="form-control" id="value" name="value" placeholder="Standardwert" title="" value="" type="text"> + </div> + <div class="checkbox "> + <label> + <input id="internal" name="internal" value="y" type="checkbox"> <label for="internal">Intern</label> + </label> + </div> + <div id="internal-description" style="display:none" class="field-description"></div> + <div class="checkbox "> + <label> + <input id="prior" name="prior" value="y" type="checkbox"> <label for="prior">Planungsrelevant</label> + </label> + </div> + <div id="prior-description" style="display:none" class="field-description"></div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + + <h4 id="decision_categories">Beschlusskategorien</h4> + <p> + Um Beschlüsse zu einzelnen Themen bzw. Kategorien zusammenfassen zu können, werden je Protokolltyp die benötigten Beschlusskategorien angelegt und verwaltet. Die verfügbaren Kategorien lassen sich im Beschluss-Tag verwenden. Fehlende Kategorien lassen sich jeder Zeit durch Angabe des Kategorienames ergänzen. Bisher nicht verwendete Kategorien können gefahrlos gelöscht werden. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_decision_categories">Beispiel - Beschlusskategorien verwalten</a></h5> + </div> + <ul id="example_decision_categories" class="list-group panel-collapse collapse"> + <li class="list-group-item"> + <h3>Beschlusskategorien <a href="#example_decision_categories">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th>Name</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td>finanzwirksam</td> + <td><a href="#example_decision_categories">Ändern</a>, <a href="#example_decision_categories" onclick="return confirm('Bist du dir sicher, dass du die Beschlusskategorie finanzwirksam löschen willst?');">Löschen</a></td> + </tr> + </tbody> + </table> + </li> + <li class="list-group-item"> + <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> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </li> + </ul> + </div> +{% endblock %} diff --git a/templates/documentation-configuration.html b/templates/documentation-configuration.html new file mode 100644 index 0000000000000000000000000000000000000000..4de6fb2aa49189515b4fb32f669f46f9e82b34c9 --- /dev/null +++ b/templates/documentation-configuration.html @@ -0,0 +1,17 @@ +{% 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 %} diff --git a/templates/documentation-sessionmanagement-plan.html b/templates/documentation-sessionmanagement-plan.html new file mode 100644 index 0000000000000000000000000000000000000000..eabc083a242ab91e894b1e6959d8c1dfe5562528 --- /dev/null +++ b/templates/documentation-sessionmanagement-plan.html @@ -0,0 +1,324 @@ +{% extends "documentation-base.html" %} +{% set active_page = "plan_sessionmanagement_documentation" %} +{% block title %}Sitzungsverwaltung: Planung{% endblock %} + +{% block documentation_content %} + <h3>Sitzungsverwaltung: Planung</h3> + <p> + Im Vorfeld einer Sitzung sollten verschiedene Tätigkeiten vorgenommen werden. Hierbei ist zu unterscheiden ob zu einem geplanten Sitzungstermin bereits ein Protokoll existiert oder nicht. Zu bereits existierenden und noch nicht geschriebenen Protokollen kann die Tagesordnung verwaltet werden. + </p> + + <h4>Nicht existierendes Protokoll</h4> + <p> + Versichere dich zuerst auf der <a href="{{url_for("list_protocols")}}">Protokollübersichtsseite</a>, dass das Protokoll nicht bereits existiert. Sollte das Protokoll noch nicht existieren, so führe die folgenden Schritte aus um es anzulegen. + </p> + <ol> + <li>Gehe auf <a href="{{url_for("new_protocol")}}">Neues Protokoll</a>.</li> + <li>Wähle bei „Typ“ den <a href="/documentation/configuration/types">Typ der Sitzung</a> aus.</li> + <li>Gib das Datum der Sitzung und ggf. einen Startzeitpunkt ein.</li> + <li>Klicke auf Anlegen.</li> + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_new_protocoll">Beispiel - Neues Protokoll anlegen</a></h5> + </div> + <div id="example_new_protocoll" class="panel-body panel-collapse collapse"> + <h3>Neue Sitzung</h3> + <form role="form" class=""> + <div class="form-group "> + <label for="protocoltype_id" class="control-label"><label for="protocoltype_id">Typ</label></label> + <select class="form-control" id="protocoltype_id" name="protocoltype_id" placeholder="Typ" title=""> + <option value="1">sitzung</option> + <option value="2">versammlung</option> + <option value="3">arbeitsgruppe</option> + </select> + </div> + <div class="form-group "> + <label for="date" class="control-label"><label for="date">Datum (dd.mm.yyyy)</label></label> + <input class="form-control" id="date" name="date" placeholder="Datum" title="" value="" type="date"> + </div> + <div class="form-group "> + <label for="start_time" class="control-label"><label for="start_time">Uhrzeit (HH:MM, optional)</label></label> + <input class="form-control" id="start_time" name="start_time" placeholder="Uhrzeit (HH:MM, optional)" title="" type="text" value=""> + </div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + + <h4 id="find">Existierendes Protokoll finden</h4> + <p> + Ist das Protokoll bereits angelegt, so kann es auf zwei verschiedenen Wegen gefunden werden. Zum einen über die Übersicht der nächsten Sitzungen auf der Startseite und zum anderen auf der Protokollübersichtsseite. + <br/> + Um ein Protokoll auf der Protokollübersichtsseite zu finden: + </p> + <ol> + <li>Gehe auf <a href="{{url_for("list_protocols")}}">Protokolle</a>,</li> + <li>Wähle die Sitzung aus - noch ausstehende Sitzungen sind ganz oben.</a> + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_protocoll_overview">Beispiel - Protokollübersicht</a></h5> + </div> + <div id="example_protocoll_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">Geplant</option> + <option value="1">Fertig</option> + </select> + </div> + <button type="button" class="btn btn-default">Suchen</button> + </form> + <h3>Protokolle <a href="#example_protocoll_overview">Neu</a></h3> + <table class="table table-striped"> + <thead> + <tr> + <th class="hidden-sm hidden-md hidden-lg">Sitzung</th> + <th class="hidden-xs">Sitzung</th> + <th class="hidden-xs">Datum</th> + <th class="hidden-sm hidden-md hidden-lg">Status</th> + <th class="hidden-xs">Status</th> + <th class=""></th> + </tr> + </thead> + <tbody> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Versammlung</a><br>11. März 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Versammlung</a></td> + <td class="hidden-xs">11. März 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-pencil"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-pencil"></span> Geplant</td> + <td class=""> + <div class="btn-group btn-group-xs"> + </div> + </td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Sitzung</a><br>08. März 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Sitzung</a></td> + <td class="hidden-xs">08. März 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-pencil"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-pencil"></span> Geplant</td> + <td class=""> + <div class="btn-group btn-group-xs"> + </div> + </td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Arbeitsgruppe</a><br>02. März 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Arbeitsgruppe</a></td> + <td class="hidden-xs">02. März 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-unchecked"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-unchecked"></span> Fertig</td> + <td class=""> + <div class="btn-group btn-group-xs"> + <a href="#example_protocoll_overview" class="btn btn-success"><span class="glyphicon glyphicon-download"></span></a> + </div> + </td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Sitzung</a><br>01. März 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Sitzung</a></td> + <td class="hidden-xs">01. März 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-unchecked"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-unchecked"></span> Fertig</td> + <td class=""> + <div class="btn-group btn-group-xs"> + <a href="#example_protocoll_overview" class="btn btn-success"><span class="glyphicon glyphicon-download"></span></a> + </div> + </td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Sitzung</a><br>22. Februar 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Sitzung</a></td> + <td class="hidden-xs">22. Februar 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-check"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-check"></span> Veröffentlicht</td> + <td class=""> + <div class="btn-group btn-group-xs"> + <a href="#example_protocoll_overview" class="btn btn-success"><span class="glyphicon glyphicon-download"></span></a> + </div> + </td> + </tr> + <tr> + <td class="hidden-sm hidden-md hidden-lg"><a href="#">Arbeitsgruppe</a><br>15. Februar 2018</td> + <td class="hidden-xs"><a href="#example_protocoll_overview">Arbeitsgruppe</a></td> + <td class="hidden-xs">15. Februar 2018</td> + <td class="hidden-sm hidden-md hidden-lg"><span class="glyphicon glyphicon-check"></span></td> + <td class="hidden-xs"><span class="glyphicon glyphicon-check"></span> Veröffentlicht</td> + <td class=""> + <div class="btn-group btn-group-xs"> + <a href="#example_protocoll_overview" class="btn btn-success"><span class="glyphicon glyphicon-download"></span></a> + </div> + </td> + </tr> + </tbody> + </table> + <div align="center"> + <span class="glyphicon glyphicon-pencil"></span> Geplant, + <span class="glyphicon glyphicon-unchecked"></span> Fertig, + <span class="glyphicon glyphicon-check"></span> Veröffentlicht + </div> + </div> + </div> + + <h4 id="prepare">Existierendes Protokoll vorbereiten</h4> + <p> + Soll ein bereits existierendes Protokoll für die Sitzung vorbereitet oder angepasst werden, so ist das Protokoll entsprechend wie <a href="#find">oben</a> dargestellt aufzurufen. Auf der Seite der Sitzung werden neben verschiedenen sogenannten <a href="/documentation/configuration/types#meta">Metadaten</a>, wie Datum und Uhrzeit der Sitzung, auch die Tagesordnung dargestellt. + <br/> + Haben sich in den für die Sitzung angegebenen Metadaten Fehler eingeschlichen oder soll die Sitzung beispielsweise verschoben werden, so können diese Protokolldaten wie folgt bearbeitet und aktualisiert werden. + </p> + <ol> + <li>Klicke auf Editieren.</li> + <li>Passe die Daten auf der neu geladenen Seite entsprechend an.</li> + <li>Speichere die Ändernungen durch das Klicken auf Ändern.</li> + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_update_protocoll">Beispiel - Protokolldaten aktualisieren</a></h5> + </div> + <ul id="example_update_protocoll" class="list-group panel-collapse collapse"> + <li class="list-group-item"> + <div class="btn-group"> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_update_protocoll">Aus Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_update_protocoll">Editieren</a> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_update_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_update_protocoll">Vorlage</a> + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_update_protocoll" onclick="return confirm('Bist du dir sicher, dass du manuell eine Einladung verschicken willst? Dies wird auch automatisch geschehen.');">Einladung versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_update_protocoll">Typ</a> + </div> + </li> + <li class="list-group-item"> + <form role="form" class=""> + <div class="form-group "> + <label for="date" class="control-label"><label for="date">Datum</label></label> + <input class="form-control" id="date" name="date" placeholder="Datum" title="" value="2018-03-14" type="date"> + </div> + <div class="form-group "> + <label for="start_time" class="control-label"><label for="start_time">Beginn (%H:%M)</label></label> + <input class="form-control" id="start_time" name="start_time" placeholder="Beginn (%H:%M)" title="" value="17:00" type="text"> + </div> + <div class="form-group "> + <label for="end_time" class="control-label"><label for="end_time">Ende (%H:%M)</label></label> + <input class="form-control" id="end_time" name="end_time" placeholder="Ende (%H:%M)" title="" value="" type="text"> + </div> + <div class="checkbox "> + <label> + <input id="done" name="done" value="y" type="checkbox"> <label for="done">Fertig</label> + </label> + </div> + <div id="done-description" style="display:none" class="field-description"></div> + <div class="checkbox "> + <label> + <input id="public" name="public" value="y" type="checkbox"> <label for="public">Veröffentlicht</label> + </label> + </div> + <div id="public-description" style="display:none" class="field-description"></div> + <button type="button" class="btn btn-default">Ändern</button> + </form> + </li> + </ul> + </div> + <p> + Für jede Sitzung kann auch die Tagesordnung individuell angepasst werden. Zwar gibt es einige Tagesordnungspunkte, die bereits durch den <a href="/documentation/configuration/types">Sitzungstyp</a> vorgegeben sind (sogenannte <a href="/documentation/configuration/types#tops">Standard-TOPs</a>), weitere Punkte können aber jeder Zeit hinzugefügt werden. Des weiteren besteht für jeden TOP die Möglichkeit durch sogenanntes Vorprotokollieren bereits bekannte Informationen zum TOP vor der Sitzung hinzuzufügen, wie bswp. einen schriftlichen Bericht. + <br/> + Bitte beachte weiterhin die folgenden Punkte beim Umgang mit Tagesordnungspunkten:</p> + <ul> + <li>Die ersten TOPs und ggf. die letztes TOPs sind <a href="/documentation/configuration/types#tops">Standard-TOPs</a> und daran zu erkennen, dass sie kursiv dargestellt sind. Diese werden durch den entsprechenden <a href="/documentation/configuration/types">Protokolltyp</a> definiert und sind bei jedem neu erstellten Protokoll automatisch vorhanden.</li> + <li>Die anderen, nicht kursiv dargestellten TOPs gehören nur zu dieser Sitzung. Du kannst diese Punkte hinzufügen oder sie umsortieren.</li> + <li>Möchtest du zu einem TOP vorprotokollieren, so klicke auf ändern und füge unter "Beschreibung" deinen Inhalt ein (hier gilt die gleiche Syntax, wie im normalen Protokoll). Bitte beachte, dass das Vorprotokollieren nicht mehr möglich ist, wenn das Protokoll bereits {% if config.ETHERPAD_ACTIVE %}in ein Etherpad übertragen wurde{% else %}lokal geführt wird{% endif %}.</li> + <li>Solltest du die TOPs nicht bearbeiten können, handelt es sich um ein Protokoll, das du lesen, aber nicht bearbeiten darfst. Mehr dazu findet sich im Abschnitt zur <a href="/documentation/configuration/types#rechte">Rechteverwaltung</a>.</li> + </ul> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_top_overview">Beispiel - Übersicht der Tagesordnung</a></h5> + </div> + <div id="example_top_overview" class="panel-body panel-collapse collapse"> + <h3>Tagesordnung <a href="#example_top_overview">Top hinzufügen</a></h3> + <ul> + <li class="defaulttop expansion-button" id="localtop-384" title="Die Versammlung wird begrüßt."> + Begrüßung + <a href="#example_top_overview">Ändern</a> + <span class="glyphicon glyphicon-info-sign"></span> + <pre id="localtop-384-description" class="expansion-text">Die Versammlung wird begrüßt.</pre> + </li> + <li class="defaulttop"> + Todos + <a href="#example_top_overview">Ändern</a> + </li> + <li class="defaulttop expansion-button" id="localtop-386" title=""> + Rundlauf + <a href="#example_top_overview">Ändern</a> + </li> + <li class="expansion-button" id="top-1951" title=""> + Änderungsbedarf + (0) + <a href="#example_top_overview">Ändern</a> + <a href="#example_top_overview">Runter</a> + <a href="#example_top_overview">Hoch</a> + <a href="#example_top_overview" onclick="return confirm('Bist du dir sicher, dass du den TOP Änderungsbedarf löschen möchtest?');">Löschen</a> + </li> + <li class="expansion-button" id="top-2271" title=""> + Neutralität + (1) + <a href="#example_top_overview">Ändern</a> + <a href="#example_top_overview">Runter</a> + <a href="#example_top_overview">Hoch</a> + <a href="#example_top_overview" onclick="return confirm('Bist du dir sicher, dass du den TOP Neutralität löschen möchtest?');">Löschen</a> + </li> + <li class="defaulttop"> + Verschiedenes + <a href="#example_top_overview">Ändern</a> + </li> + </ul> + </div> + </div> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_edit_top">Beispiel - Neuen TOP anlegen oder bestehenden TOP bearbeiten</a></h5> + </div> + <div id="example_edit_top" class="panel-body panel-collapse collapse"> + <form role="form" class=""> + <div class="form-group "> + <label for="name" class="control-label"><label for="name">TOP</label></label> + <input class="form-control" id="name" name="name" placeholder="TOP" title="" value="Änderungsbedarf" type="text"> + </div> + <div class="form-group "> + <label for="number" class="control-label"><label for="number">Sortierung</label></label> + <input class="form-control" id="number" name="number" placeholder="Sortierung" title="" value="0" type="text"> + </div> + <div class="form-group "> + <label for="description" class="control-label"><label for="description">Beschreibung</label></label> + <textarea class="form-control" id="description" name="description" placeholder="Beschreibung" textarea_rows="5" title="" style="min-height: 69px; overflow: hidden;">Hier steht der vorprotokolliert Text, der später beim ersten Erzeugen ins Protokoll übernommen aber beim Schreiben während der Sitzung noch angepasst werden kann.</textarea> + </div> + <button type="button" class="btn btn-default">Anlegen oder Ändern</button> + </form> + </div> + </div> + <p> + Im Einsatz des Protokollsystem hat sich bereits gezeigt, dass die folgenden Ratschläge dazubeitragen können, bereits aus der Tagesordnung zu erkennen, was behandelt werden soll. + </p> + <ul> + <li>Jedes selbstständige Thema oder jeder Antrag sollte in einen eigenen TOP geschrieben werden. Sammel-TOPs, oder TOPs mit allen finanzwirksamen Anträgen sorgen für wenig Übersichtlichkeit.</li> + <li>Es ist wünschenswert, dass TOPs so früh wie möglich auf die Tagesordnung geschrieben werden und unter "Beschreibung" kurz erläutert wird, worum es gehen soll. Sollte es in dem TOP darum gehen, dass Geld beantragt wird, sollte der TOP im Namen entsprechend gekennzeichnet werden.</li> + </ul> +{% endblock %} diff --git a/templates/documentation-sessionmanagement-tracking.html b/templates/documentation-sessionmanagement-tracking.html new file mode 100644 index 0000000000000000000000000000000000000000..f5533917871ed9751ef08fd03f9d7a2573e516c9 --- /dev/null +++ b/templates/documentation-sessionmanagement-tracking.html @@ -0,0 +1,242 @@ +{% 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> + <select class="form-control" id="protocoltype_id" name="protocoltype_id" placeholder="Typ" title=""> + <option value="1">sitzung</option> + <option value="2">versammlung</option> + <option value="3">arbeitsgruppe</option> + </select> + </div> + <div class="form-group "> + <label for="who" class="control-label"><label for="who">Person</label></label> + <input class="form-control" id="who" name="who" placeholder="Person" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="description" class="control-label"><label for="description">Aufgabe</label></label> + <input class="form-control" id="description" name="description" placeholder="Aufgabe" title="" value="" type="text"> + </div> + <div class="form-group "> + <label for="state" class="control-label"><label for="state">Status</label></label> + <select class="form-control" id="state" name="state" placeholder="Status" title=""> + <option value="TodoState.open">offen</option> + <option value="TodoState.waiting">wartet auf Rückmeldung</option> + <option value="TodoState.in_progress">in Bearbeitung</option> + <option value="TodoState.after">ab</option> + <option value="TodoState.before">vor</option> + <option value="TodoState.orphan">verwaist</option> + <option value="TodoState.done">erledigt</option> + <option value="TodoState.rejected">abgewiesen</option> + <option value="TodoState.obsolete">obsolet</option> + </select> + </div> + <div class="form-group "> + <label for="date" class="control-label"><label for="date">Datum</label></label> + <input class="form-control" id="date" name="date" placeholder="Datum" title="" value="" type="date"> + </div> + <button type="button" class="btn btn-default">Anlegen</button> + </form> + </div> + </div> + <p> + Neben der eigentlichen Aufgabe und den zugeordneten Personen haben Todos auch einen Zustand, in dem sie sich befinden. Die folgende Tabelle listet die möglichen Zustände und ihre Bedeutung auf. + </p> + <table class="table table-striped"> + <thead> + <tr> + <th>Zustand</th> + <th>Bedeutung</th> + </tr> + </thead> + <tbody> + <tr> + <td>offen</td> + <td>Das Todo muss noch erledigt werden</td> + </tr> + <tr> + <td>wartet auf Rückmeldung</td> + <td>Jemand kümmert sich um das Todo, wartet allerdings gerade darauf, dass jemand anderes (intern oder extern) sich zurückmeldet.</td> + </tr> + <tr> + <td>in Bearbeitung</td> + <td>Jemand kümmert sich gerade um das Todo.</td> + </tr> + <tr> + <td>ab</td> + <td>Das Todo wird erst ab dem Datum relevant.</td> + </tr> + <tr> + <td>vor</td> + <td>Das Todo muss vor dem Datum erledigt werden.</td> + </tr> + <tr> + <td>verwaist</td> + <td>Das Todo hat niemanden, der es erledigen wird.</td> + </tr> + <tr> + <td>erledigt</td> + <td>Das Todo ist erledigt.</td> + </tr> + <tr> + <td>abgewiesen</td> + <td>Das Todo ist nicht und wird nicht mehr erledigt.</td> + </tr> + <tr> + <td>obsolet</td> + <td>Das Todo wurde nicht erledigt und nun ist es zu spät, das noch zu tun.</td> + </tr> + </tbody> + </table> +{% endblock %} diff --git a/templates/documentation-sessionmanagement-write.html b/templates/documentation-sessionmanagement-write.html new file mode 100644 index 0000000000000000000000000000000000000000..f329d1cf6ece8503562a208e23d5854d2208863f --- /dev/null +++ b/templates/documentation-sessionmanagement-write.html @@ -0,0 +1,255 @@ +{% extends "documentation-base.html" %} +{% set active_page = "write_sessionmanagement_documentation" %} +{% block title %}Sitzungsverwaltung: Protokollieren{% endblock %} + +{% block documentation_content %} + <h3>Sitzungsverwaltung: Protokollieren</h3> + <p> + Der wichtigeste Bestandteil des Protokollsystems ist sicherlich das Schreiben des Protokolls selbst. Ist eine Sitzung <a href="plan#prepare">fertig vorbereitet</a> und beginnt die Sitzung in wenigen Minuten so kann das benötigte <a href="plan#find">Protokoll ausgewählt</a> werden. Anschließend kann das Mitschreiben beginnen. + </p> + <p> + Der folgende allgemeine Ablauf soll einen Überblick der Schritte geben, die beim Protokollieren im Protokollsystem vorgenommen werden. Dabei ist der Prozess in drei Phasen unterteilt: + </p> + <ul> + <li><a href="#session_start">Mit Beginn einer Sitzung</a></li> + <li><a href="#session_run">Während einer Sitzung</a></li> + <li><a href="#session_end">Nach der Sitzung</a></li> + </ul> + + <h4 id="session_start">Mit Beginn einer Sitzung</h4> + <p> + Kurz bevor die Sitzung los geht oder mit dem Beginn der Sitzung wird das Protokoll erzeugt und die offenen <a href="/documentation/syntax/meta">Metadaten</a> ausgefüllt. Um dies zu erreichen werden die folgenden Schritte durchgeführt. + </p> + <ol> + <li>Stelle sicher, dass alle mit dem Vorprotokollieren fertig sind.</li> + {% if config.ETHERPAD_ACTIVE %} + <li>Durch betätigen des Knopfes „Etherpad“ das Etherpad mit dem Protokoll öffnen. <i>Bitte beachte: Nur beim ersten Betätigen werden die TOPs und die vorprotokollierten Inhalte ins Etherpad übertragen.</i></li> + {% else %} + <li>Durch betätigen des Knopfes „Vorlage“ eine Textdatei mit der Protokollvorlage herunterladen.</li> + {% endif %} + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_create_protocoll">Beispiel - Protokoll{% if config.ETHERPAD_ACTIVE %} ins Etherpad übertragen{% else %}vorlage herunterladen{% endif %}</a></h5> + </div> + <div id="example_create_protocoll" class="panel-body panel-collapse collapse"> + <div class="btn-group"> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_create_protocoll">Aus Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_create_protocoll">Editieren</a> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_create_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_create_protocoll">Vorlage</a> + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_create_protocoll" onclick="return confirm('Bist du dir sicher, dass du manuell eine Einladung verschicken willst? Dies wird auch automatisch geschehen.');">Einladung versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_create_protocoll">Typ</a> + </div> + </div> + </div> + + <h4 id="session_run">Während einer Sitzung</h4> + <p> + Läuft eine Sitzung so gibt es neben der <a href="/documentation/syntax">Syntax</a> des Protokolls auch weitere Punkte zu beachten. + </p> + <ul> + {% if config.ETHERPAD_ACTIVE %} + <li>Schreibe das Protokoll im Etherpad.</li> + {% endif %} + <li>Fülle alle benötigten <a href="/documentation/syntax/meta">Metadatenfelder</a>.</li> + <li>Falls <a href="/documentation/syntax/tags#todo">Todos</a> erledigt sind, markiere diese als erledigt.</li> + <li>Erfasse Beschlüsse die während einer Sitzung getroffen werden mit dem <a href="/documentation/syntax/tags#decision">Beschluss-Tag</a>.</li> + <li>Nutze auch die anderen <a href="/documentation/syntax/tags">Tags</a>, wo diese erforderlich sind.</li> + </ul> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_example_protocoll">Beispiel - Ausschnitt eines Protokolls</a></h5> + </div> + <figure id="example_example_protocoll" class="panel-body panel-collapse collapse"> + <pre class="highlight"><code><span class="nc">#Datum</span>;<span class="mi">14.03.2018</span> +<span class="nc">#Beginn</span>;<span class="mi">17:00</span> +<span class="nc">#Ende</span>;<span class="mi"></span> +<span class="cl">...</span> +<span class="nt">[todo</span>;<span class="s1">Diese Aufage ist noch offen</span>;<span class="kr">id</span> <span class="mi">5</span>;<span class="kt">erledigt</span><span class="nt">]</span> +<span class="cl">...</span> +<span class="nt">[beschluss</span>;<span class="s1">Die Sitzung genehmigt das Protokoll einstimmig</span><span class="nt">]</span></code></pre> + </figure> + </div> + + <h4 id="session_end">Nach der Sitzung</h4> + <p> + Ist die Sitzung zu Ende so kann die Protokoll-PDF-Datei erzeugt werden. Nicht immer klappt dies Reibungslos und gelegentlich schleichen sich Rechtschreibfehler ein, weshalb die folgenden Schritte dazu dienen Fehler so weit wie möglich zu entfernen. + </p> + <ol> + {% if config.ETHERPAD_ACTIVE %} + <li>Importiere das Protokoll am Ende der Sitzung mit „Aus Etherpad“.</li> + {% else %} + <li>Importiere das Protokoll am Ende der Sitzung über „Hochladen → Quellcode“.</li> + {% endif %} + <li>Falls Fehler beim Erstellen PDF-Date der auftreten, behebe diese und importiere das Protkoll erneut. Ein Auflistung wird dir nach dem Aktualisieren der Webseite oder auf der <a href="{{url_for("list_errors")}}">Fehlerübersichtsseite</a> angezeigt.</li> + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_import_protocoll">Beispiel - Protokoll importieren</a></h5> + </div> + <div id="example_import_protocoll" class="panel-body panel-collapse collapse"> + {% if config.ETHERPAD_ACTIVE %} + <div class="btn-group"> + <a class="btn btn-primary" href="#example_import_protocoll">Aus Etherpad</a> + <a class="btn btn-default" href="#example_import_protocoll">Editieren</a> + <a class="btn btn-primary" href="#example_import_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + <a class="btn btn-default" href="#example_import_protocoll">Vorlage</a> + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_import_protocoll" onclick="return confirm('Bist du dir sicher, dass du manuell eine Einladung verschicken willst? Dies wird auch automatisch geschehen.');">Einladung versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_import_protocoll">Typ</a> + </div> + {% else %} + <form role="form" class=""> + <div class="form-group "> + <label for="source" class="control-label"><label for="source">Quellcode</label></label> + <input class="form-control" id="source" name="source" placeholder="Quellcode" title="" type="file"> + </div> + <button type="button" class="btn btn-default">Hochladen</button> + </form> + {% endif %} + </div> + </div> + + <p> + Nach dem das Sitzungsprotokoll vorläufig fertiggestellt ist, kann in den Korrekturprozess eingestiegen werden. + </p> + <ol> + {% if config.MAIL_ACTIVE %} + <li>Wenn keine Fehler mehr auftreten, verschicke das Protokoll mit „Intern versenden”.</li> + {% else %} + <li>Wenn keine Fehler mehr auftreten, gib den Sitzungsteilnehmern Bescheid, dass das Protkoll fertiggestellt ist. Das Protokoll kann mit „Download” heruntergeladen werden.</li> + {% endif %} + <li>Lasse das Protokoll korrekturlesen und korrigieren.</li> + {% if config.ETHERPAD_ACTIVE %} + <li>Importiere das Protokoll nach den Korrekturen erneut mit „Aus Etherpad“.</li> + {% else %} + <li>Importiere das Protokoll nach den Korrekturen erneut über „Hochladen → Quellcode“.</li> + {% endif %} + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_corect_protocoll">Beispiel - Protokoll korrekturlesen</a></h5> + </div> + <div id="example_corect_protocoll" class="panel-body panel-collapse collapse"> + <div class="btn-group"> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-default" href="#example_corect_protocoll">Aus Etherpad</a> + {% endif %} + <a class="btn btn-primary" href="#example_corect_protocoll">Quelltext</a> + <a class="btn btn-success" href="#example_corect_protocoll">Editieren</a> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_corect_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + {% endif %} + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_corect_protocoll">Intern versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_corect_protocoll">Veröffentlichen</a> + <a class="btn btn-default" href="#example_corect_protocoll">Typ</a> + <a class="btn btn-success" href="#example_corect_protocoll">Download</a> + </div> + </div> + </div> + + <p> + Sind die Korrekturen abgeschlossen, so kann zur Veröffentlichung geschritten werden. + </p> + <ol> + <li>Warte alle Korrekturen ab. Ggf. werden letzte Korrekturen mit einer etwaigen Genehmigung des Protokolls auf der nächsten Sitzung vorgenommen.</li> + <li>Veröffentliche das Protkoll mit „Veröffentlichen“.</li> + {% if config.MAIL_ACTIVE %} + <li>Versende das Protkoll ggf. über den öffentenlichen Verteiler mit „Öffentlich versenden“.</li> + {% endif %} + </ol> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_publish_protocoll">Beispiel - Protokoll veröffentlichen und versenden</a></h5> + </div> + <ul id="example_publish_protocoll" class="list-group panel-collapse collapse"> + <li class="list-group-item"> + <div class="btn-group"> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-default" href="#example_publish_protocoll">Aus Etherpad</a> + {% endif %} + <a class="btn btn-primary" href="#example_publish_protocoll">Quelltext</a> + <a class="btn btn-success" href="#example_publish_protocoll">Editieren</a> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_publish_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + {% endif %} + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_publish_protocoll">Intern versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_publish_protocoll">Veröffentlichen</a> + <a class="btn btn-default" href="#example_publish_protocoll">Typ</a> + <a class="btn btn-success" href="#example_publish_protocoll">Download</a> + </div> + </li> + <li class="list-group-item"> + <div class="btn-group"> + <a class="btn btn-primary" href="#example_publish_protocoll">Quelltext</a> + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_publish_protocoll">Intern versenden</a> + <a class="btn btn-default" href="#example_publish_protocoll">Öffentlich versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_publish_protocoll">Typ</a> + <a class="btn btn-success" href="#example_publish_protocoll">Download</a> + </div> + </li> + </ul> + </div> + + {% if config.ETHERPAD_ACTIVE %} + <h4>Bekannte Problem bei der Etherpadnutzung</h4> + <h5><b>Leeres Etherpad</b></h5> + <p> + Wird mit „Etherpad“ ein Pad geöffnet und es ist leer bzw. beinhaltet nur den Standardtext, so sollte das Etherpad mit „Etherpad“ erneut geöffnet werden. Schlägt das ganze fehl, wende dich bitte an an die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a>. + </p> + <h5><b>Etherpad zu früh geöffnet</b></h5> + <p> + Wurde das Pad zu früh erstellt und es wurden noch nicht alle TOPs bzw. alle vorprotokollierten Teil in das Pad übernommen und es zu aufwendig ist diese manuell einzufügen, so lösche den Inhalt des Pad und öffne das Pad erneut mit „Etherpad“. + </p> + <h5><b>Höchst interne Protokolle</b></h5> + <p> + Falls das Protokoll Daten beinhaltet, die auf keinen Fall öffentlich sein sollten (z.B. personenbezogene Daten bei einem Sozialausschuss), kann anstelle des Editierens im Etherpad auch mit „Vorlage“ die leere Protokollvorlage heruntergeladen werden. Darin kann lokal mit einem beliebigen Texteditor die Sitzung protokolliert werden, um sie dann am Ende lokal zu speichern und mit „Quellcode hochladen“ hochzuladen. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_internal_protocoll">Beispiel - Höchst interne Protokolle</a></h5> + </div> + <ul id="example_internal_protocoll" class="list-group panel-collapse collapse"> + <li class="list-group-item"> + <div class="btn-group"> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_internal_protocoll">Aus Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_internal_protocoll">Editieren</a> + {% if config.ETHERPAD_ACTIVE %} + <a class="btn btn-primary" href="#example_internal_protocoll" onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst einigen Tagen.');">Etherpad</a> + {% endif %} + <a class="btn btn-default" href="#example_internal_protocoll">Vorlage</a> + {% if config.MAIL_ACTIVE %} + <a class="btn btn-default" href="#example_internal_protocoll" onclick="return confirm('Bist du dir sicher, dass du manuell eine Einladung verschicken willst? Dies wird auch automatisch geschehen.');">Einladung versenden</a> + {% endif %} + <a class="btn btn-default" href="#example_internal_protocoll">Typ</a> + </div> + </li> + <li class="list-group-item"> + <form role="form" class=""> + <div class="form-group "> + <label for="source" class="control-label"><label for="source">Quellcode</label></label> + <input class="form-control" id="source" name="source" placeholder="Quellcode" title="" type="file"> + </div> + <button type="button" class="btn btn-default">Hochladen</button> + </form> + </li> + </ul> + </div> + {% endif %} +{% endblock %} diff --git a/templates/documentation-sessionmanagement.html b/templates/documentation-sessionmanagement.html new file mode 100644 index 0000000000000000000000000000000000000000..350938876a344c1eb5980aed274e9ee9bd7ed9aa --- /dev/null +++ b/templates/documentation-sessionmanagement.html @@ -0,0 +1,32 @@ +{% extends "documentation-base.html" %} +{% set active_page = "sessionmanagement_documentation" %} +{% block title %}Sitzungsverwaltung{% endblock %} + +{% block documentation_content %} + <h3>Sitzungsverwaltung</h3> + <p> + Ein wesentlicher Bestandteil des Protokollsystems ist das Sitzungsmanagement. Neben dem <a href="/documentation/sessionmanagement/plan">Planen und Anlegen</a> verschiedener Sitzungstermine kann zu jeder Sitzung ein <a href="/documentation/sessionmanagement/write">Protokoll</a> verfasst und anschließend durch das System ausgegeben werden. Die <a href="/documentation/sessionmanagement/tracking">Nachverfolgung</a> von Ergebnissen ist im System in Form von Beschlüssen und Todos möglich. + </p> + <h4>Verwaltung im Detail</h4> + <p> + Die einzelnen Funktionen des Sitzungsmanagements werden jeweils auf Unterseiten erläutert. Auch werden die Arbeitsabläufe, wie sie im System vorgesehen sind, vorgestellt. + </p> + <ul> + <li><a href="/documentation/sessionmanagement/plan">Planung</a></li> + <li><a href="/documentation/sessionmanagement/write">Protokollieren</a></li> + <li><a href="/documentation/sessionmanagement/tracking">Nachverfolgung</a></li> + </ul> + <p> + Sollten die genannten Arbeitsabläufe nicht nachvollziehbar oder fehlerhaft sein, dann kontaktiere bitte das Entwicklungsteam der Software. Als Tipp: Je genauer du ein Problem beschreiben kannst, desto einfacher machst du es den betroffenen Personen selbiges zu fixen und desto schneller hast du eine Lösung. + </p> + + <h4 id="suche">Suche</h4> + <p> + Einige Elemente der Sitzungsverwaltung sind durchsuchbar - dazu zählen <a href="{{url_for("list_protocols")}}">Protokolle</a>, <a href="{{url_for("list_todos")}}">Todos</a> und <a href="{{url_for("list_decisions")}}">Beschlüsse</a>. Auf jeder der Übersichtsseiten wird ein Suchfeld vorgehalten, das zur Eingabe genutzt werden kann. + </p> + <p> + Im Suchfeld können mehrere durch Leerzeichen getrennte Suchbegriffe angegeben werden: <code>Begriff1 Begriff2</code>.<br/> + Angezeigt werden alle Ergebnisse, die jeden der Suchbegriffe (unabhängig von Groß- oder Kleinschreibung) enthalten.<br/> + Wenn ein Suchbegriff ein Leerzeichen beinhaltet, muss er mit Anführungszeichen umrandet werden: <code>"Begriff1 mit Leerzeichen" Begriff2</code>. + </p> +{% endblock %} diff --git a/templates/documentation-syntax-internal.html b/templates/documentation-syntax-internal.html new file mode 100644 index 0000000000000000000000000000000000000000..eca91c5589ae81d6a87edab4dc09217e85c7df21 --- /dev/null +++ b/templates/documentation-syntax-internal.html @@ -0,0 +1,63 @@ +{% extends "documentation-base.html" %} +{% set active_page = "internal_syntax_documentation" %} +{% block title %}Syntax: Interne Abschnitte{% endblock %} + +{% block documentation_content %} + <h3>Syntax: Interne Abschnitte</h3> + {% if config.PRIVATE_KEYWORDS %} + <p> + Das Protokollsystem ermöglicht es, in einem Protokoll bestimmte Abschnitte als nicht-öffentlich/intern zu kennzeichnen. Diese Abschnitte werden nur in der internen pdf-Datei gedruckt und nur internen Personen angezeigt - wer das ist lässt sich im System explizit festlegen. Die öffentliche Version des Protokolls enthält dann an betroffenen Stellen einen Hinweis, dass es hier einen internen Abschnitt gibt. Aus Gründen der Transparenz bietet es sich an, vor oder nach dem internen Protokollieren dessen Inhalt zusammenzufassen. + </p> + <p> + Beschlüsse sind im Protokollsystem immer öffentlich, daher ergibt es keinen Sinn diese in einem internen Abschnitt zu protokollieren. + </p> + <h4>Definition</h4> + <div class="row"> + <div class="col-sm-9"> + <p> + Der interne Abschnitt wird eingeleitet mit einem der folgenden Wörter ({{config.PRIVATE_KEYWORDS|map("code_key")|join(" ")|safe}}) gefolgt von den üblichen geschweiften Klammern <code>{ ... }</code> einer Liste. Zwischen den Klammern wird wie gewöhnlich protokolliert. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title">Beispiel - Interner Bereich</h5> + </div> + <figure id="example_internal" class="panel-body"> + <pre class="highlight"><code>{<span class="kr">TOP</span> <span class="sx">Tagesordnungspunkt</span> + <span class="nv">Dieser Punkt ist öffentlich.</span> + <span class="kr">{{config.PRIVATE_KEYWORDS[0]}}</span> { + <span class="nv">Dieser Punkt ist intern.</span> + <span class="nv">Dieser auch, wir diskutieren Kritik an einem namentlich genannten Professor und seiner Vorlesung.</span> + <span class="nv">Hier entwickeln wir eine Strategie.</span> + } + <span class="nv">Dieser ist wieder öffentlich.</span> + <span class="nv">Es wurde die Kritik an einer Vorlesung kritisiert.</span> +}</code></pre> + </figure> + </div> + </div> + <div class="col-sm-3"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h5 class="panel-title">Zu beachten</h5> + </div> + <div class="panel-body "> + <p> + Ein interner Abschnitt kann keinen Titel haben. Stattdessen wird der Titel durch das entsprechende Schlüsselwort ersetzt. + </p> + </div> + </div> + </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> + Die Verwendung von internen Abschnitte ist hier bisher noch nicht vorgesehen. Um interne Abschnitte 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 %} diff --git a/templates/documentation-syntax-lists.html b/templates/documentation-syntax-lists.html new file mode 100644 index 0000000000000000000000000000000000000000..9f1d1d7bf4317fbce0a7d6204d5feb88e99b19d5 --- /dev/null +++ b/templates/documentation-syntax-lists.html @@ -0,0 +1,72 @@ +{% extends "documentation-base.html" %} +{% set active_page = "lists_syntax_documentation" %} +{% block title %}Syntax: Listen{% endblock %} + +{% block documentation_content %} + <h3>Syntax: Listen</h3> + <p> + Das Protokollsystem sieht vor, dass Diskussionen in einem Tagesordnungspunkt strukturiert und in Unterpunkte aufgeteilt werden können. Dies wird durch sogenannte Listen umgesetzt. Mit jedem Zeilenumbruch erzeugt das Protokollsystem beim Kompilieren (Übersetzten des Syntax in ein PDF oder die Webseitenanzeige) einen neue Zeile im fertigen Protokoll und setzt ggf. ein Auszählungszeichen an den Anfang der Zeile. + </p> + <p> + Zusätzlich gibt es im Protokollsystem spezielle Listen, die es ermöglichen hinsichtlich der Ausgabe oder des Titels Unterscheidungen vornehmen zu können. {% if config.PRIVATE_KEYWORDS|length > 0 %}Diese Listen sind{% else %}Eine solche Liste ist{% endif %} der <a href="top">Tagesordnungspunkt</a>{% if config.PRIVATE_KEYWORDS|length > 0 %} und der <a href="internal">interne Abschnitt</a>{% endif %}. + </p> + <h4>Definition</h4> + <div class="row"> + <div class="col-sm-9"> + <p> + Die Liste ist im Protokoll das strukturierende Element. Es beginnt und endet mit einer geschweiften Klammer. Die Elemente der Liste werden durch das Zeilenende getrennt. Es ist möglich Listen beliebig ineinander zuschachteln. Zusätzlich kann eine Liste einen Titel haben, der vor der öffnenden Klammer <code>{</code> steht. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title">Syntax einer Liste</h5> + </div> + <figure class="panel-body"> + <pre class="highlight"><code><span class="sx">Titel der Liste</span> { + <span class="c1">Details zu diesem Punkt.</span> + <span class="c1">Mehr Details zu diesen Punkt in einer neuen Zeile.</span> +}</code></pre> + </figure> + </div> + </div> + <div class="col-sm-3"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h5 class="panel-title">Zu beachten</h5> + </div> + <ul class="list-group"> + <li class="list-group-item">Spezielle Listen weisen hinsichtlich des Titels ein anders Verhalten auf.</li> + <li class="list-group-item">Listen in der höchsten Ebene müssen <a href="top">TOPs</a> sein.</li> + </ul> + </div> + </div> + </div> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_lists">Beispiel - Verschachtelte Listen</a></h5> + </div> + <figure id="example_lists" class="panel-body panel-collapse collapse"> + <pre class="highlight"><code>{<span class="kr">TOP</span> <span class="sx">Bericht</span> + Es wird über die Aktivitäten seit der letzten Sitzung berichtet. + <span class="sx">Erstsemesterarbeit</span>{ + Die Vorbereitung für die nächste Erstsemesterwoche laufen. Ab dieser Woche werden auch wieder regelmäßige Planungstreffen stattfinden. + } + <span class="sx">Infrastruktur</span>{ + Es fand ein Treffen statt auf dem aktuelle Projekte besprochen wurden. + <span class="sx">Wasserspender</span>{ + Es wurden Vorschläge für Aufstellorte von weiteren Wasserspendern gemacht. + Weiteres wird geprüft. + } + <span class="sx">Luftpumpen</span>{ + Es sollen Luftpumpen angeschafft werden. + Ein Angebot wird eingeholt + } + <span class="sx">Renovierung</span>{ + Eine Renovierung ist geplant. + Anforderungen sollen gesammelt werden. + } + } +}</code></pre> + </figure> + </div> + +{% endblock %} diff --git a/templates/documentation-syntax-meta.html b/templates/documentation-syntax-meta.html new file mode 100644 index 0000000000000000000000000000000000000000..b69b51230980693eb80436d864418adba61266f4 --- /dev/null +++ b/templates/documentation-syntax-meta.html @@ -0,0 +1,22 @@ +{% extends "documentation-base.html" %} +{% set active_page = "meta_syntax_documentation" %} +{% block title %}Syntax: Metadaten{% endblock %} + +{% block documentation_content %} + <h3>Syntax: Metadaten</h3> + <p> + In einem Protokoll repräsentieren die Metadaten allgemeine Informationen rund um eine Sitzung. Die Metadaten stehen immer am Anfang eines Protokolls. Zu den Metadaten zählen das Datum der Sitzung, der Beginn und das Ende sowie weitere pro <a href="/documentation/configuration/types">Protokolltyp</a> konfigurierte <a href="/documentation/configuration/types#meta">Metadatenfelder</a>, wie beispielsweise der Ort, die Anwesenden oder die Protokollführung. Alle <a href="/documentation/configuration/types#meta">Metadatenfelder</a> werden beim Erzeugen der Protokollvorlage durch das System automatisch in das Protokoll übertragen. Dies schließt auch den Inhalt der Felder ein, so weit dieser vor <a href="/documentation/sessionmanagement/plan">Beginn der Sitzung</a> eingegeben wurde. + </p> + <h4>Definition</h4> + <p> + Die Syntax der Metadaten ist <code class="highlight" style="color: inherit;"><span class="nc">#Name</span>;<span class="s1">Wert</span></code> und die einzelnen Felder und Einträge werden durch Zeilenumbrüche getrennt. Weiterhin darf auf das Semikolon kein Leerzeichen folgenden, da dies zu einem nicht kompilierbaren Protokoll führt. Auch müssen die folgende Metadaten immer in diesem Format angegeben werden, da eine Interpretation des Datums und der Uhrzeit sonst fehlschlägt. + </p> + <ul> + <li><code class="highlight" style="color: inherit;"><span class="nc">#Datum</span>;<span class="mi">01.01.2017</span></code> Das Datum der Sitzung</li> + <li><code class="highlight" style="color: inherit;"><span class="nc">#Beginn</span>;<span class="mi">19:00</span></code> Beginn der Sitzung</li> + <li><code class="highlight" style="color: inherit;"><span class="nc">#Ende</span>;<span class="mi">21:42</span></code> Ende der Sitzung</li> + </ul> + <p> + Wurden <a href="/documentation/configuration/types#meta">Metadatenfelder</a> im <a href="/documentation/configuration/types">Protokolltyp</a> konfigurierte so muss als <code class="highlight" style="color: inherit;"><span class="nc">Name</span></code> der festgelegte Key verwendet werden. Dabei muss die Groß- und Kleinschreibung beachtet werden. + </p> +{% endblock %} diff --git a/templates/documentation-syntax-tags.html b/templates/documentation-syntax-tags.html new file mode 100644 index 0000000000000000000000000000000000000000..4e0b41c0e5749a1bd5155e4d14076e416b88b56b --- /dev/null +++ b/templates/documentation-syntax-tags.html @@ -0,0 +1,149 @@ +{% extends "documentation-base.html" %} +{% set active_page = "tags_syntax_documentation" %} +{% block title %}Syntax: Tags{% endblock %} + +{% block documentation_content %} + <h3>Syntax: Tags</h3> + <p> + Sollen in einem Protokoll Texte hervorgehoben oder in einer anderen Art und Weise formatiert werden, so bietet das Protokollsystem sogenannte Tags. Jeder Tag steht dabei stets in einer eigenen Zeile des Protokolls. Mit diesen Tags können neben einer veränderten Ausgabe des Textes auch bestimmte Aktionen im Protokollsystem ausgeführt werden. + </p> + <h4>Definition</h4> + <div class="row"> + <div class="col-sm-9"> + <p> + Grundsätzlich wird jeder Tag in eckige Klammern eingeschlossen. Eingeleitet wird ein Tag nach der öffnenden eckigen Klammer <code class="highlight" style="color: inherit;"><span class="nt">[</span></code> mit dem Namen des Tags. Mit Semikolons getrennt, folgen theoretisch beliebig viele Argumente, wobei je nach Tag-Typ nur endlich viele Argumente eine Bedeutung haben. Jeder Tag wird als einzelnes Element einer <a href="lists">Liste</a> interpretiert. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title">Syntax eines Tags</h5> + </div> + <figure class="panel-body"> + <pre class="highlight"><code><span class="nt">[Typ</span>;<span class="sx">Argument 1</span>;<span class="sx">Argument 2</span>;…<span class="nt">]</span></code></pre> + </figure> + </div> + </div> + <div class="col-sm-3"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title">Verfügbare Typen</h5> + </div> + <div class="panel-body"> + <ul> + <li><a href="#url">URL</a></li> + <li><a href="#decision">Beschluss</a></li> + <li><a href="#todo">Todo</a></li> + <li><a href="#footnote">Fußnote</a></li> + <li><a href="#session">Sitzung</a></li> + </ul> + </div> + </div> + </div> + </div> + + <h4 id="url">URL-Tag</h4> + <p> + Sollen URLs oder Hyperlinks in einem Protokoll dargestellt werden, so kann und sollte der Tag vom Typ <code class="highlight" style="color: inherit;"><span class="nt">url</span></code> genutzt werden. Als einziges Argument wird im Tag die URL angegeben.{% if config.ETHERPAD_ACTIVE %} Ein Leerzeichen am Ende des Arguments ist nicht notwendig für das Protokollsystem, erleichtert aber das Anklicken im Etherpad.{% endif %} + </p> + <figure> + <pre class="highlight"><code><span class="nt">[url</span>;<span class="sx">https://protokolle.fsmpi.rwth-aachen.de </span><span class="nt">]</span></code></pre> + </figure> + + <h4 id="decision">Beschluss-Tag</h4> + {% if config.PRIVATE_KEYWORDS|length > 0 %} + <div class="row"> + <div class="col-sm-9"> + {% endif %} + <p> + Werden in einer Sitzung Beschlüsse gefasst, so bietet sich die Nutzung des Tags <code class="highlight" style="color: inherit;"><span class="nt">beschluss</span></code> an. Ein Beschluss wird so im Protokoll zum einen als Beschluss gekennzeichnet und zum andern zusätzlich am Anfang des Protokolls angezeigt. Auch werden die Beschlüsse in der Beschlussdatenbank gespeichert und sind online durchsuchbar{% if config.PRINTING_ACTIVE %} sowie einzeln ausdruckbar{% endif %}. + </p> + <figure> + <pre class="highlight"><code><span class="nt">[beschluss</span>;<span class="sx">Beschlusstext</span>;<span class="sx">Beschlusskategorie 1</span>;<span class="sx">Beschlusskategorie 2</span>;…<span class="nt">]</span></code></pre> + </figure> + {% if config.PRIVATE_KEYWORDS|length > 0 %} + </div> + <div class="col-sm-3"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h5 class="panel-title">Zu beachten</h5> + </div> + <div class="panel-body">Beschluss-Tags dürfen nicht in internen Abschnitten stehen.</div> + </div> + </div> + </div> + {% endif %} + <p> + Ein Beschluss kann mit <a href="/documentation/configuration/types#decision_categories">Beschlusskategorien</a> versehen werden, um Beschlüsse zu einzelnen Themen zusammenfassen zu können. Des Versehen mit Kategorien ist jedoch kein muss. <a href="/documentation/configuration/types#decision_categories">Kategorien</a> müssen vor der Verwendung in den Einstellungen des Protokolltyps definiert werden. Danach können Beschlüsse durch die Angabe der Kategorie entsprechend zugeordnet werden, z.B. <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="sx">finanzwirksam</span>;…<span class="nt">]</span></code>. + </p> + <p> + Es empfiehlt sich Beschlüsse klar, einfach, eindeutig und auch kontextlos verständlich zu formulieren. Sind die Beschlüsse im Rahmen einer Abstimmung ergangen, so empfiehlt es sich das Abstimmungsergebnis am Ende des Beschlusses in der Form (Ja/Nein/Enthaltung) anzugeben. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_decision">Beispiel - Beschluss-Tag</a></h5> + </div> + <figure id="example_decision" class="panel-body panel-collapse collapse"> + <pre class="highlight"><code><span class="nt">[beschluss</span>;<span class="sx">Wir beschaffen für bis zu 100,00 € einen Stuhl.(9/1/3)</span>;<span class="sx">finanzwirksam</span>;<span class="sx">Inventar</span><span class="nt">]</span></code></pre> + </figure> + </div> + + <h4 id="todo">Todo-Tag</h4> + <p> + Soll in einer Sitzung die Vergebene einer <a href="/documentation/sessionmanagement/tracking#todos">Aufgabe</a> an eine oder mehrere Personen (oder AG, AK, …) festgehalten werden, so kann mittels des Tags <code class="highlight" style="color: inherit;"><span class="nt">todo</span></code> diese Aufgabe im Protokoll festgehalten werden. Neben dem Namen der Person, welche die Aufgabe erledigen möchte, wird die Aufgabe innerhalb des Tags festgehalten. Die Aufgabe ist nach der Sitzung in der <a href="{{url_for('list_todos')}}">Todo-Übersicht</a> und nur im internen Protokoll einsehbar. + </p> + <figure> + <pre class="highlight"><code><span class="nt">[todo</span>;<span class="sx">Name</span>;<span class="sx">Aufgabe</span>;<span class="sx">Argument 1</span>;<span class="sx">Argument 2</span>;…<span class="nt">]</span></code></pre> + </figure> + <p> + {% if config.MAIL_ACTIVE %}Wurde der Name einer Mail <a href="{{url_for('list_todomails')}}">zugeordnet</a>, so wird diese Person (oder AG, AK, …) per Mail über ihre offenen Todos nach einer Sitzung informiert. {% endif %}Bei der Angabe mehrerer Personen können diese durch Leerzeichen oder Kommata voneinander getrennt angegeben werden. + </p> + <p> + Eine bereits bestehende und noch offene Aufgabe wird automatisch in ein neues Protokoll eingefügt, wenn der TOP „Todos“ auf der Tagesordnung steht (der TOP also im Protokoll enthalten ist). Zusätzlich erhält die Aufgabe dann als optionales Argument eine ID: <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="kr">id</span> <span class="mi">1338</span><span class="nt">]</span></code>. Wird dieser Todo dann während des Protokollierens geändert, passiert das auch im Protokollsystem. + </p> + <p> + In einem weiteren optionalen Argument kann außerdem der Status einer Aufgabe, z.B. <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="kr">done</span>;…<span class="nt">]</span></code> angegeben werden. Die Groß- und Kleinschreibung spielen bei der Verwendung keine Rolle. Wenn der Status ein Datum benötigt, muss dieser immer mit angegeben und hat die Form: <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="mi">dd.mm.yyyy</span>;…<span class="nt">]</span></code>. Bei der Angabe des Datums ist es unerheblich, an welcher Stelle innerhalb des Tags es auftacht. Eine Auflistung der verwendbaren Status-Begriffe und ob Status ein Datum benötigt, ist in der folgenden Tabelle angegeben. + </p> + <table class="table table-striped"> + <thead> + <tr> + <th>Status</th> + <th>Benötigt Datum</th> + <th>Verwendbare Status-Begriffe</th> + </tr> + </thead> + <tbody> + {% for state, posibilities in states.items() %} + <tr> + <td>{{state.get_name()}}</td> + <td><span class="glyphicon glyphicon-{% if state.needs_date() %}ok{% else %}remove{% endif %}" aria-hidden="true"></span></td> + <td>{{posibilities|map("code_key")|join(", ")|safe}}</td> + </tr> + {% endfor %} + </tbody> + </table> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title"><a data-toggle="collapse" href="#example_todo">Beispiele - Todo-Tag</a></h5> + </div> + <figure id="example_todo" class="panel-body panel-collapse collapse"> + <pre class="highlight"><code><span class="nt">[todo</span>;<span class="sx">mmustermann</span>;<span class="sx">Planung für die ESA beginnen</span>;<span class="kr">ab</span>;<span class="mi">01.03.2018</span><span class="nt">]</span> +<span class="nt">[todo</span>;<span class="sx">mmustermann</span>;<span class="sx">Mit der Fakultät treffen</span><span class="nt">]</span> +<span class="nt">[todo</span>;<span class="sx">kmusterfrau</span>;<span class="sx">Organisiation des nächsten Events</span>;<span class="kr">in Bearbeitung</span>;<span class="kr">id</span> <span class="mi">1</span><span class="nt">]</span></code></pre> + </figure> + </div> + + <h4 id="footnote">Fußnoten-Tag</h4> + <p> + Ist es erforderlich, dass Informationen als Fußnote im Protokoll aufgeführt werden sollen, so können diese im Protokoll mit dem Tag des Types <code class="highlight" style="color: inherit;"><span class="nt">footnote</span></code> geschrieben werden. Als einziges Argument wird der Inhalt der Fußnote übergeben. + </p> + <figure> + <pre class="highlight"><code><span class="nt">[footnote</span>;<span class="sx">Inhalt</span><span class="nt">]</span></code></pre> + </figure> + + <h4 id="session">Sitzungs-Tag</h4> + <p> + Werden während einer Sitzung bereits Termine für zukünfigt Sitzungen desselben Typs festgelegt, so können diese direkt aus dem Protokoll heraus angelegt und im Protokoll entsprechend hervorgehoben werden. Es wird der Tag des Types <code class="highlight" style="color: inherit;"><span class="nt">sitzung</span></code> genutzt. Als Argument muss mindestens das Datum übergeben werden und es hat die Form: <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="mi">dd.mm.yyyy</span>;…<span class="nt">]</span></code>. Optional kann zusätzlich eine Uhrzeit in folgender Form angegeben werden: <code class="highlight" style="color: inherit;"><span class="nt">[</span>…;<span class="mi">h:mm</span><span class="nt">]</span></code>. + </p> + <figure> + <pre class="highlight"><code><span class="nt">[sitzung</span>;<span class="mi">Datum</span>;<span class="mi">Uhrzeit</span><span class="nt">]</span></code></pre> + </figure> +{% endblock %} diff --git a/templates/documentation-syntax-top.html b/templates/documentation-syntax-top.html new file mode 100644 index 0000000000000000000000000000000000000000..f94a09fbab66da40b59658c33e801c1fd6b38ad1 --- /dev/null +++ b/templates/documentation-syntax-top.html @@ -0,0 +1,43 @@ +{% extends "documentation-base.html" %} +{% set active_page = "top_syntax_documentation" %} +{% block title %}Syntax: Tagesordnungspunkte{% endblock %} + +{% block documentation_content %} + <h3>Syntax: Tagesordnungspunkte</h3> + <p> + Ein wichtiges Elements in jedem Protokoll sind Tagesordnungspunkte. Sie sind in einem Protokoll stehts die oberste Gliederungsebene. In den meisten Fällen stehen diese Punkte bereits vor Beginn der Sitzung fest und wurden entsprechend vorher <a href="/documentation/sessionmanagement/plan#prepare">eingepflegt</a>. + </p> + <p> + Beim Erstellen der Protokollvorlage durch das System werden die bereits <a href="/documentation/sessionmanagement/plan#prepare">angelegten TOPs</a> mit dem vorprotokollierten Inhalt in der Tagesordnung festgelegten Reihenfolge übertragen. Während des Schreibens des Protokolls können jeder Zeit Tagesordnungspunkte hinzugefügt oder entfernt werden. + </p> + <h4>Definition</h4> + <div class="row"> + <div class="col-sm-9"> + <p> + In Protokollsystax wird ein Tagesordnungspunkt stets von geschweiften Klammern eingeschlossen. An die öffnende Klammer schließt sich das Schlüsselwort <code>TOP</code> an. Abgesetzt mit einem Leerzeichen folgt der Titel des TOPs. Nach einem Zeilenumbruach als in einer neuen Zeile beginnt dann der Inhalt des Tagesordnungspunkts. Durch die Verwendung von sogenannten <a href="lists">Listen</a> kann die Mitschrift in einem Tagesordnungspunkt strukturiert werden. + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h5 class="panel-title">Syntax eines Tagesordnungspunkts</a></h5> + </div> + <figure class="panel-body"> + <pre class="highlight"><code>{<span class="kr">TOP</span> <span class="sx">Titel des Tagesordnungspunkts</span> + <span class="c1">Hier steht der Inhalt des Tagesordnungspunkts</span> +}</code></pre> + </figure> + </div> + </div> + <div class="col-sm-3"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h5 class="panel-title">Zu beachten</h5> + </div> + <div class="panel-body "> + <p> + Innerhalb eines Tagesordnungspunkts kann es keinen weiteren Tagesordnungspunkt geben. + </p> + </div> + </div> + </div> + </div> +{% endblock %} diff --git a/templates/documentation-syntax.html b/templates/documentation-syntax.html new file mode 100644 index 0000000000000000000000000000000000000000..5a15a4513535bf2f84a3bcc0b8f2edb99c44d8af --- /dev/null +++ b/templates/documentation-syntax.html @@ -0,0 +1,30 @@ +{% extends "documentation-base.html" %} +{% set active_page = "syntax_documentation" %} +{% block title %}Syntax{% endblock %} + +{% block documentation_content %} + <h3>Syntax</h3> + <p> + Das Herz des Protokollsystems ist die eigentliche Protokollsyntax, aus dem systemintern ein druckbares Dokument und menschenlesbarer Webseiteninhalt erstellt wird. Die Systax sieht eine Strukturierung des Prokolls vor. Ein Dokument beginn mit einigen Metadaten, danach kommen nacheinander die Tagesordnungspunkte, die strukturiert diskuiterte Punkte enthalten. Darüberhinaus gibt es Tags, mit denen unter anderem URLs, Beschlüsse oder ToDos markiert werden können. + </p> + <h4>Allgemeine Grundsätze</h4> + <p> + Hast du zum ersten Mal Kontakt mit dem Protokollsystem so sind sollten die folgenden Grundsätze beachtet werden, damit die erfolgreiche Erstellung eines Protokolls einfach gelingt. + </p> + <ul> + <li>Jede geschweifte oder eckige Klammer die aufgemacht wird, wird sofort wieder geschlossen und anschließend der Inhalt zwischen die Klammern geschrieben.</li> + <li>Jeder Zeilenumbruch erzeugt eine neue Zeile im Protokoll.</li> + <li>Beachte die geschützten Begriffe: <code class="highlight" style="color: inherit;"><span class="nc">#Datum</span></code> <code class="highlight" style="color: inherit;"><span class="nc">#Beginn</span></code> <code class="highlight" style="color: inherit;"><span class="nc">#Ende</span></code> <code class="highlight" style="color: inherit;"><span class="kr">TOP</span></code> <code class="highlight" style="color: inherit;"><span class="kr">private</span></code> <code class="highlight" style="color: inherit;"><span class="kr">todo</span></code> <code class="highlight" style="color: inherit;"><span class="kr">id</span></code> <code class="highlight" style="color: inherit;"><span class="kr">beschluss</span></code> <code class="highlight" style="color: inherit;"><span class="kr">url</span></code> <code class="highlight" style="color: inherit;"><span class="kr">footnote</span></code> <code class="highlight" style="color: inherit;"><span class="kr">sitzung</span></code></li> + </ul> + <h4>Der Syntax im Detail</h4> + <p> + Um die Funktionsweise und das Verhalten des Protokollsystems bei der Umwandlung eines Protokolls zu verstehen, wird auf den Unterseiten auf die einzelnen Elemente der Protokollsyntax näher eingegangen. + </p> + <ul> + <li><a href="/documentation/syntax/meta">Metadaten</a></li> + <li><a href="/documentation/syntax/top">Tagesordnungspunkte</a></li> + <li><a href="/documentation/syntax/lists">Listen</a></li> + <li><a href="/documentation/syntax/internal">Interne Abschnitte</a></li> + <li><a href="/documentation/syntax/tags">Tags</a></li> + </ul> +{% endblock %} diff --git a/templates/documentation.html b/templates/documentation.html index fd539659aa1c8805ff88fe6d9cd52dd0aadb4c60..488e58450511a2d555d42b56b2faa8ee7087c862 100644 --- a/templates/documentation.html +++ b/templates/documentation.html @@ -1,224 +1,51 @@ -{% extends "layout.html" %} -{% from "macros.html" import render_table %} +{% extends "documentation-base.html" %} +{% set active_page = "documentation" %} {% block title %}Dokumentation{% endblock %} -{% block content %} -<div class="row"> - <div id="left-column", class="col-lg-6"> - <h3>Protokollsystem</h3> - Das Protokollsystem dient der Planung von Sitzungen und Verwaltung von Protokollen. Die anstehenden Sitzungen der nächsten Woche sind auf der <a href="{{url_for("index")}}">Startseite</a>, alle Protokolle unter <a href="{{url_for("list_protocols")}}">Protokolle</a> zu finden. - <h4 id="planung">Sitzungsplanung</h4> - Sollte das Protokoll noch nicht existieren: - <ol> - <li>Gehe auf <a href="{{url_for("new_protocol")}}">Neu</a></li> - <li>Wähle bei „Typ“ den Typ der Sitzung aus.</li> - <li>Gib das Datum der Sitzung ein.</li> - <li>Anlegen</li> - </ol> - Wenn es existiert: - <ol> - <li>Gehe auf <a href="{{url_for("list_protocols")}}">Protokolle</a></li> - <li>Wähle die Sitzung aus. Noch ausstehende Sitzungen sind ganz oben.</a> - </ol> - Auf der Seite der Sitzung siehst du die Tagesordnung. - <ul> - <li>Die ersten und letztes TOPs sind Standard-TOPs, die jede Sitzung hat. Die kannst du nur über beim Protokolltyp ändern, nicht beim Protokoll selbst.</li> - <li>Die mittleren TOPs gehören nur zu dieser Sitzung. Du kannst welche hinzufügen oder sie umsortieren.</li> - <li>Möchtest du zu einem TOP vorprotokollieren, so klicke auf ändern und füge unter "Beschreibung" deinen Inhalt ein (hier gilt die gleiche Syntax, wie im normalen Protokoll).</li> - <li>Jedes selbstständige Thema oder jeder Antrag sollte in einen eigenen TOP geschrieben werden. Sammel-TOPs, oder TOPs mit allen finanzwirksamen Anträgen sorgen für wenig Übersichtlichkeit.</li> - <li>Wir wünschen uns, dass TOPs so früh wie möglich auf die Tagesordnung geschrieben werden und unter "Beschreibung" kurz erläutert weird, worum es gehen soll. Sollte es in dem TOP darum gehen, dass Geld beantragt wird, sollte der TOP im Namen durch ein "(€)" gekennzeichnet werden."</li> - <li>Solltest du die TOPs nicht bearbeiten können, handelt es sich um ein Protokoll, das du lesen, aber nicht bearbeiten kannst. Mehr dazu bei <a href="#rechte">Rechteverwaltung</a>.</li> - </ul> - <h4 id="wie">Wie schreibe ich eine Protokoll?</h4> - Die folgenden Schritte werden erst ein paar Minuten vor der Sitzung ausgeführt. Vorher werden Inhalte und TOPs wie oben beschrieben vorprotokolliert. - <ol> - <li>Protokoll auswählen (s.o.)</li> - <li>mit „In Etherpad“ die Vorlage in das Etherpad schreiben.</li> - <li>mit „Etherpad“ das Etherpad öffnen</li> - <li>verlese Tagesordnung und Todos</li> - <li>falls Todo erledigt, markiere als erledigt (Details siehe <a href="#Todos">Todos</a></li> - <li>schreibe das Protokoll im Etherpad</li> - <li>Importiere das Protokoll am Ende mit „Aus Etherpad“</li> - <li>Falls Fehler auftreten, behebe sie (siehe <a href="#fehler">Fehler</a></li> - <li>Wenn keine Fehler mehr auftreten, drucke das Protokoll mit „Löschen” (unten beim Anhang) aus.</li> - <li>Korrekturlesen lassen und im Etherpad korrigieren, dann nochmal „aus Etherpad“</li> - <li>Drucken und abheften</li> - <li>Intern per Mail versenden</li> - <li>Korrekturen abwarten (z.B. die Genehmigung auf der nächsten Sitzung)</li> - <li>Veröffentlichen (und ggf. öffentlich versenden)</li> - </ol> - <h5>Höchst interne Protokolle</h5> - Falls das Protokoll Daten beinhaltet, die auf keinen Fall öffentlich sein sollten (z.B. personenbezogene Daten bei einem Sozialausschuss), kann anstelle des Editierens im Etherpad auch mit „Vorlage“ die leere Protokollvorlage heruntergeladen werden. Darin kann lokal mit einem beliebigen Texteditor die Sitzung protokolliert werden, um sie dann am Ende lokal zu speichern und mit „Quellcode hochladen“ hochzuladen. - <h4 id="fehler">Was, wenn etwas nicht funktioniert?</h4> +{% block documentation_content %} + <h3>Protokollsystem 3 - Das Protokollsystem</h3> + <p> + Das Protokollsystem dient der Planung von Sitzungen und Verwaltung von Protokollen. Die anstehenden Sitzungen der nächsten Woche sind auf der <a href="{{url_for('index')}}">Startseite</a>, alle Protokolle unter <a href="{{url_for('list_protocols')}}">Protokolle</a> zu finden. + </p> + <p> + Des weiteren können die Sitzungen mittels Todos und einer Beschlussdatenbank nach verfolgt werden. Die eigenen offenen Todos werden auf der <a href="{{url_for('index')}}">Startseite</a> angezeigt, alle Todos sind unter <a href="{{url_for('list_todos')}}">Todos</a> zu finden. Die Beschlüsse finden sich in der <a href="{{url_for('list_decisions')}}">Beschlussdatenbank</a>. + </p> + <h3>Dokumentation</h3> + Dieser Dokumentation können Beschreibungen zu nahezu allen wichtigen Systemfunktionen entnommen werden. Gegliedert sind die Themen wie folgt: + <ul> + <li><a href="/documentation/sessionmanagement">Sitzungsverwaltung</a><ul> + <li><a href="/documentation/sessionmanagement/plan">Planung</a></li> + <li><a href="/documentation/sessionmanagement/write">Protokollieren</a></li> + <li><a href="/documentation/sessionmanagement/tracking">Nachverfolgung</a></li> + </ul></li> + <li><a href="/documentation/syntax">Syntax</a><ul> + <li><a href="/documentation/syntax/meta">Metadaten</a></li> + <li><a href="/documentation/syntax/top">Tagesordnungspunkte</a></li> + <li><a href="/documentation/syntax/lists">Listen</a></li> + <li><a href="/documentation/syntax/internal">Interne Abschnitte</a></li> + <li><a href="/documentation/syntax/tags">Tags</a></li> + </ul></li> + <li><a href="/documentation/configuration">Einrichtung</a><ul> + <li><a href="/documentation/configuration/types">Typen</a></li> + <li><a href="/documentation/configuration/todomails">Todo Mails</a></li> + <li><a href="/documentation/configuration/settings">Systemeinstellungen</a></li> + </ul></li> + </ul> + <p> + Sollten deine Fragen nach dem Studium der Dokumentation noch offen sein, wende dich an jemand erfahreneren oder die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a>. Offene Punkte innerhalb der Dokumentation können dann durch die Admins zur Behebung auch an die Entwickler der Software weitergegeben werden. + </p> + <h3 id="fehler">Fehlerbehandlung</h3> <ul> <li>Typische Web-Fehler (404, 500, etc.) sollten nicht auftreten. Wenn sie es doch tun, wende dich bitte an die <a href="mailto:{{config.ADMIN_MAIL}}">Admins</a></li> - <li>Wenn beim Parsen, Kompilieren, versenden, hochladen, … Fehler auftreten, werden sie aufgelistet. Die Fehler aller Protokolle findest du unter <a href="{{url_for("list_errors")}}">Fehler</a>. Bei sehr langen Beschreibungen (z.B. LaTeX-Kompilierfehlern) solltest du den einzelnen Fehler anklicken, um die ganze Beschreibung zu erhalten.</li> + <li>Wenn beim Parsen, Kompilieren, versenden, hochladen, … Fehler auftreten, werden sie aufgelistet. Die Fehler aller Protokolle findest du unter <a href="{{url_for('list_errors')}}">Fehler</a>. Bei sehr langen Beschreibungen (z.B. LaTeX-Kompilierfehlern) solltest du den einzelnen Fehler anklicken, um die ganze Beschreibung zu erhalten.</li> <li>Wenn die Fehlerbeschreibung dir nicht ausreicht, um den Fehler zu beheben, wende dich an jemand erfahreneren und lass dir helfen.</li> </ul> - <h4 id="todos">Todosystem</h4> - Das Protokollsystem verwaltet Todos über mehrere Protokolle hinweg. Offene Todos werden in die Protokollvorlage eingefügt, falls diese einen TOP „Todos“ beinhaltet. - <ul> - <li>Jedes Todo hat eine (oder durch Kommata oder Leerzeichen getrennt mehrere) Personen, die es erledigen sollen.</li> - <li>Todos haben auch einen Zustand, in dem sie sich befinden. Es gibt: - <ul> - <li>offen: Das Todo muss noch erledigt werden</li> - <li>wartet auf Rückmeldung: Jemand kümmert sich um das Todo, wartet allerdings gerade darauf, dass jemand anderes (intern oder extern) sich zurückmeldet.</li> - <li>in Bearbeitung: Jemand kümmert sich gerade um das Todo.</li> - <li>ab: Das Todo wird erst ab dem Datum relevant.</li> - <li>vor: Das Todo muss vor dem Datum erledigt werden.</li> - <li>verwaist: Das Todo hat niemanden, der es erledigen wird.</li> - <li>erledigt: Das Todo ist erledigt.</li> - <li>abgewiesen: Das Todo ist nicht und wird nicht mehr erledigt.</li> - <li>obsolet: Das Todo wurde nicht erledigt und nun ist es zu spät, das noch zu tun.</li> - </ul> - </li> - <li>Alle Todos findest du unter <a href="{{url_for("list_todos")}}">Todos</a>.</li> - </ul> - - <h4 id="suche">Suche</h4> - <a href="{{url_for("list_protocols")}}">Protokolle</a>, <a href="{{url_for("list_todos")}}">Todos</a> und <a href="{{url_for("list_decisions")}}">Beschlüsse</a> können durchsucht werden. - Im Suchfeld können mehrere durch Leerzeichen getrennte Suchbegriffe angegeben werden: <code>Begriff1 Begriff2</code>. - Angezeigt werden alle Ergebnisse, die jeden der Suchbegriffe (unabhängig von Groß- oder Kleinschreibung) enthalten. - Wenn ein Suchbegriff ein Leerzeichen beinhaltet, muss er mit Anführungszeichen umrandet werden: <code>"Begriff1 mit Leerzeichen" Begriff2</code>. - - <h4 id="rechte">Rechteverwaltung</h4> - Das Protokollsystem hat ein Konzept von Rechteverwaltung, dass auf den Benutzergruppen im LDAP basiert. - Rechte werden pro Protokolltyp eingestellt. - Die vorhandenen Rechtestufen sind „Darf öffentliche Version einsehen“, „Darf interne Version einsehen“, „Darf Ändern“ und „Darf Protokolltyp bearbeiten“. - Jedes Protokoll hat eine öffentliche Gruppe, eine interne Gruppe, eine Bearbeitungsgruppe, eine Verwaltungsgruppe und eine Einstellung, ob es öffentlich ist.<br> - - Die öffentliche Version einsehen dürfen: - <ul> - <li> - Nicht authentifizierte Nutzer, wenn für den Protokolltyp „Öffentlich“ eingestellt ist, sobald das Protokoll veröffentlicht ist. - <ul> - <li>Die Tagesordnung und Metadaten sind auch vor Veröffentlichung einsehbar.</li> - </ul> - </li> - <li>Authentifizierte Nutzer auch dann, wenn der Protokolltyp nicht „Öffentlich“ ist, aber sie die „Öffentliche Gruppe“ oder die „Interne Gruppe” des Protokolltyps haben. Wenn keine Gruppe eingestellt ist, kann auch kein Nutzer diese haben.</li> - </ul> - Die interne Version einsehen dürfen: - <ul> - <li>Authentifizierte Nutzer, wenn sie die „Interne Gruppe” des Protokolltyps haben.</li> - </ul> - Das Protokoll bearbeiten dürfen: - <ul> - <li>Authentifizierte Benutzer, wenn sie die „Bearbeitungsgruppe“ des Protokolltyps haben.</li> - </ul> - Die Einstellungen des Protokolltyps bearbeiten und das Protokoll veröffentlichen dürfen: - <ul> - <li>Authentifizierte Benutzer, wenn sie die „Verwaltungsgruppe“ des Protokolltyps haben.</li> - </ul> - - Vom Protokoll wird eine interne und eine öffentliche Version generiert, falls es Inhalte gibt, die nur intern sind. - Todos sind generell intern, Beschlüsse sind generell öffentlich (d.h. einsehbar, wenn man das Recht „Darf öffentliche Version sehen“ hat). - Daher dürfen Beschlüsse nicht in einem internen Teil des Protokolls sein. - </div> - <div id="right-column", class="col-lg-6"> - <h3 id="syntax">Syntax</h3> - Ein Dokument beginn mit einigen Metadaten, danach kommen nacheinander die Tagesordnungspunkte, die durch Listen strukturiert sind. - Darüberhinaus gibt es Tags, mit denen URLs, Beschlüsse oder ToDos markiert werden können. - - <h4 id="metadaten">Metadaten</h4> - Die Syntax der Metadaten ist <code>#Name;Wert</code> und die einzelnen Einträge werden durch Zeilenumbrüche getrennt. Folgende Metadaten müssen immer in diesem Format angegeben werden: - <ul> - <li><code>#Datum;01.01.2017</code> Das Datum der Sitzung</li> - <li><code>#Beginn;19:00</code> Beginn der Sitzung</li> - <li><code>#Ende;21:42</code> Ende der Sitzung</li> - </ul> - Zusätzlich können pro Protokolltyp weitere Metadatenfelder konfiguriert werden, beispielsweise der Ort, die Anwesenden Teilnehmer, die Protokollführung, …. Diese haben als Wert beliebigen Text. - <h4 id="tops">Tagesordnungspunkte</h4> - Ein TOP besteht aus einem Titel und beliebigem Inhalt. - Ein TOP ist eine besondere Liste (s.u.) und kann somit wie diese verwendet werden. -<pre> -{TOP Tagesordnungspunkt - Inhalt: -} -</pre> - <h4 id="liste">Liste</h4> - Die Liste ist das einzige strukturierende Element. - Listen können beliebig geschachtelt werden. - Die Elemente der Liste werden durch das Zeilenende getrennt. -<pre> -{TOP Tagesordnungspunkt - Zeile mit Text drin - Hier eine geschachtelte Liste: { - Details zu diesem Punkt. - Mehr Details zu diesen Punkt. - } -} -</pre> - - Text, der vor der öffnenden Klammer <code>{</code> steht, wird als Name der Liste angesehen, nur TOPs können Text hinter der öffnenden Klammer haben. - Listen in der höchsten Ebene müssen TOPs sein. -{% if config.PRIVATE_KEYWORDS|length > 0 %} - <h4 id="intern">Interne Abschnitte</h4> - Wenn der Name einer Liste (bis auf Leerzeichen und einen optionalen <code>:</code>) eins aus - {{config.PRIVATE_KEYWORDS|map("code")|join(" ")|safe}} - ist, ist diese Liste intern. - Daher wird sie nur in der internen Version des Protokolls angezeigt. - In der öffentlichen Version steht stattdessen nur ein Hinweis auf diese interne Stelle. - Es bietet sich beim Protokollieren an, wenn nach dem internen Bereich kurz dessen Inhalt zusammengefasst wird (natürlich nur sofern dies geht ohne die Interna zu verraten), oder begründet wird, warum dies intern ist. -<pre> -{TOP Tagesordnungspunkt - Dieser Punkt ist öffentlich. - {{config.PRIVATE_KEYWORDS[0]}}: { - Dieser Punkt ist intern. - Dieser auch, wir diskutieren Kritik an einem namentlich genannten Professor und seiner Vorlesung. - Hier entwickeln wir eine Strategie. - } - Dieser ist wieder öffentlich. - Es wurde die Krtik an einer Vorlesung kritsiert. -} -</pre> - <h4 id="tag">Tags</h4> - Tags können Text besonders hervorheben oder bestimmte Aktionen ausführen. - Die grundsätzliche Syntax ist <code>[Name;Arg1;Arg2;…]</code>, wobei theoretisch beliebig viele Argumente angegeben werden können, allerdings je nach Typ nur endlich viele eine Bedeutung haben. - <h5>URL-Tag</h5> - Mittels <code>[url;https://protokolle.fsmpi.rwth-aachen.de ]</code> kann ein entsprechend formatierter Link eingebunden werden. - Das Leerzeichen am Ende ist nicht notwendig für das Protokollsystem, erleichtert aber das Anklicken im Etherpad. - <h5>Beschluss-Tag</h5> - <code>[beschluss;Wir beschließen etwas tolles.]</code> erzeugt einen Beschluss im Protokoll. - Ein Beschluss wird zusätzlich am Anfang des Protokoll angezeigt. - Die Beschlüsse sind online durchsuchbar. - Beschluss-Tags dürfen nicht in internen Abschnitten stehen. - Falls für den Protokolltyp <b>Beschlusskategorien</b> definiert sind, können Beschlüsse mit <code>[…;finanzwirksam;…]</code> diesen zugeordnet werden. - Beschlüsse können nach Beschlusskategorien gefiltert werden. - Es empfiehlt sich Beschlüsse klar, einfach, eindeutig und auch kontextlos verständlich zu formulieren. - Sind die Beschlüsse im Rahmen einer Abstimmung ergangen, so empfiehlt es sich das Abstimmungsergebnis am Ende des Beschlusses in der Form (JA/NEIN/ENTHALTUNG) anzugeben. <code>[beschluss;Wir beschaffen für bis zu 100,00 € einen Stuhl.(9/1/3);finanzwirksam;Inventar]</code> - <h5>Todo-Tag</h5> - In den Protokollen können <a href="#todos">Todos</a> verwaltet werden. - Ein neuer Todo wird mit <code>[todo;Name;Aufgabe]</code> angelegt. - Dieser ist dann online und in den Mails sichtbar. - Falls der Name einer Mail <a href="{{url_for("list_todomails")}}">zugeordnet</a> ist, wird diese Person (oder AG, AK, …) per Mail über ihre offenen Todos informiert. - Mehrere Personen können durch Leerzeichen oder Kommata getrennt angegeben werden. - - Ein bereits bestehender Todo wird mit der zusätzlichen Option <code>[…;id 1338]</code> in ein neues Protokoll eingefügt, falls es den TOP „Todos“ beinhaltet.. Wird dieser Todo dann geändert, passiert das auch im Protokollsystem. - Außerdem kann der Status des Todos, z.B. <code>[…;done;…]</code> angegeben werden. - Wenn der Status ein Datum benötigt - ({{todostates|select("needs_date")|map("todo_get_name")|join(", ")}}) - muss dies als <code>[…;dd.mm.yyyy;…]</code> angegeben werden. - <br> - Folgende Begriffe werden vom Protokollsystem verstanden (Groß- und Kleinschreibung spielt keine Rolle): - <ul> - {% for name in name_to_state %} - {% set state = name_to_state[name] %} - <li><code>{{name}}{% if state.needs_date() %};dd.mm.yyyy{% endif %}</code>: {{state.get_name()}}</li> - {% endfor %} - </ul> - <h5>Fußnoten-Tag</h5> - Fußnoten können im Protokoll mit <code>[footnote;Inhalt]</code> geschrieben werden. - <h5>Sitzungs-Tag</h5> - Aus dem Protokoll können neue Sitzungen desselben Typs mit dem Tag <code>[sitzung;Datum]</code>, z.B. <code>[sitzung;24.12.2017]</code> angelegt werden. - Optional kann zusätzlich eine Uhrzeit angegeben werden: <code>[sitzung;Datum;Uhrzeit]</code> (z.B. <code>[sitzung;01.01.2018;9:00]</code>). - -{% endif %} {% if git_revision %} <h3 id="version">Version</h4> - Dieses Protokollsystem nutzt die Software <a href="{{git_revision.url}}">„Protokollsystem 3“</a> in der Version vom <a href="{{git_revision.url}}/commit/{{git_revision.hash}}">{{git_revision.date|datify}}</a>. + <p> + Dieses Protokollsystem nutzt die Software <a href="{{git_revision.url}}">„Protokollsystem 3“</a> in der Version vom <a href="{{git_revision.url}}/commit/{{git_revision.hash}}">{{git_revision.date|datify}}</a>.<br/> Alle Änderungen, die seitdem hinzugekommen sind, kannst du <a href="{{git_revision.url}}/compare/{{git_revision.hash}}...master">hier</a> sehen. + </p> {% endif %} - </div> -</div> {% endblock %}