Commit d7d595ca authored by Lars Kruse's avatar Lars Kruse
Browse files

docs(matrix_chat): add introduction for matrix chat integration

parent 22767e73
Pipeline #3131 passed with stages
in 4 minutes and 7 seconds
{% extends 'stadt/stadt.html' %}
{% load i18n %}
{% block title %}{% trans "Introduction to Chat" %} - {{ block.super }}{% endblock %}
{% block content_header %}
{% include 'stadt/_index_header.html' %}
{% endblock %}
{% block heading_title %}
<h1 class="content-classification">{% trans "Introduction to Chat" %}</h1>
<span class="decoration-icon sg-question" role="presentation"></span>
{% endblock %}
{% block content %}
<p>{% trans "Content" %}</p>
<ol>
<li><a href="#overview">{% trans "Overview" %}</a></li>
<li><a href="#matrix_features">{% trans "Matrix Features" %}</a></li>
<li><a href="#integration">{% trans "Integration with community website" %}</a></li>
<li><a href="#usage">{% trans "Usage" %}</a></li>
<li><a href="#faq">{% trans "FAQ" %}</a></li>
</ol>
<hr/>
<h1 id="overview">{% trans "Overview" %}</h1>
<p>{% blocktrans %}Sometimes it is useful to communicate directly and without delay in order to achieve a common goal.
Or it may be useful to direct interested people from the outside to an accessible and open communication room, where they can meet the people involved in a group or project.{% endblocktrans %}</p>
<p>{% blocktrans %}<i>Chat</i> or <i>Instant Messaging</i> can be a useful tool under these circumstances.{% endblocktrans %}</p>
<p>{% blocktrans %}A wide variety of instant messenger applications and protocols is available, e.g. Jabber, IRC, Whatsapp, Facebook Messenger, Slack, Mattermost and many more.
<i>Grouprise</i> integrates the <a href="{{ matrix_url }}">Matrix</a> protocol, since it offers a wide range of features, that turn it into a perfect fit for this platform.
These features are detailed below.{% endblocktrans %}</p>
<ul>
<li><b><a href="{{ grouprise_url }}">{% trans "grouprise" %}</a></b>: {% trans "The community website your are browsing right now is based on the grouprise software." %}</li>
<li><b><a href="{{ matrix_url }}">{% trans "Matrix" %}</a></b>: {% trans "Matrix is a decentral and federated chat communication protocol." %}</li>
</ul>
<h1 id="matrix_features">{% trans "Matrix Features" %}</h1>
<p>{% trans "Matrix offers the following features:" %}</p>
<ul>
<li><b>{% trans "trustworthy" %}</b>: {% trans 'Both the server and the client implementations are available as <a href="{{ free_software_url }}">Free Software</a>. Thus anyone interested can verify, that the software is operating in the interest of the users.' %}</li>
<li><b>{% trans "federated" %}</b>: {% trans "Everyone can host their own server and all of these servers communicate with each other. This is similar to the design of the email protocol or the telephone network, where users of different providers can communicate with each other." %}</li>
<li><b>{% trans "secure" %}</b>: {% trans "End-to-end encryption keeps the content of conversations safe from pryring eyes. Even the service provider cannot peek inside." %}</li>
<li><b>{% trans "wide range of clients" %}</b>: {% trans 'Pick your favorite client from a <a href="{{ matrix_clients_url }}">wide range of applications</a> for various mobile and desktop platforms.' %}</li>
</ul>
<h1 id="integration">{% trans "Integration with community website" %}</h1>
<p>{% trans "The integration of the Matrix chat into a grouprise instance (this community website) offers the following features:" %}</p>
<ul>
<li>{% trans "Use your grouprise user account (name and password) to log in to the Matrix homeserver. There is no need for a separate Matrix account." %}</li>
<li>{% blocktrans with matrix_client_url=matrix_client_path|full_url %}A local instance of the <a href="{{ element_url }}">Element web client</a> is provided along with the grouprise community website (<a href="{{ matrix_client_path }}">{{ matrix_client_url }}</a>).{% endblocktrans %}</li>
<li>{% trans "A public and a private Matrix room is automatically created for each grouprise group." %}</li>
<li>{% trans "All members of a grouprise group are automatically invited to the group's Matrix rooms." %}</li>
<li>{% trans "Notifications for new content (articles, events, discussions, ...) are sent to the related Matrix rooms (internal messages are announced in the private room, only)." %}</li>
</ul>
<p>{% trans "Additionally all regular features of the Matrix communication ecosystem are available:" %}</p>
<ul>
<li>{% trans "Matrix users from other servers may join your group's rooms (if you invite them)." %}</li>
<li>{% trans "You may use the Matrix account provided by grouprise or your existing (external) Matrix account." %}</li>
<li>{% trans "You are free to communicate with your group peers or with any other Matrix user in the world." %}</li>
</ul>
<h1 id="usage">{% trans "Usage" %}</h1>
<p>{% trans "Use your web browser or a mobile app to access the chat messages." %}</p>
<h2>{% trans "Web Browser" %}</h2>
<p>{% trans "There are two approaches for entering the chat rooms:" %}</p>
<ul>
<li>{% trans "Visit the page of a group and select <i>Public Chat Room</i> or <i>Private Chat Room</i>." %}</li>
<li>{% blocktrans with matrix_client_url=matrix_client_path|full_url %}Visit the URL <a href="{{ matrix_client_path }}">{{ matrix_client_url }}</a>.{% endblocktrans %}</li>
</ul>
<p>{% trans "Enter your grouprise login (username and password) in the login dialog." %}</p>
<h2>{% trans "Mobile App" %}</h2>
<ol>
<li>{% blocktrans %}Install one of the <a href="{{ matrix_clients_url }}">mobile clients</a> via your favorite app store. Pick <a href="{{ element_android_url }}">Element</a> in case of doubt.{% endblocktrans %}</li>
<li>{% trans "Select <i>Other</i> as the Matrix server." %}</li>
<li>{% trans "Enter the matrix server:" %} <code>{{ MATRIX_DOMAIN }}</code></li>
<li>{% trans "Select <i>Sign In</i>." %}</li>
<li>{% trans "Enter your grouprise username or your email address." %}</li>
<li>{% trans "Enter your grouprise password." %}</li>
</ol>
<h1 id="faq">{% trans "FAQ (Frequently Asked Questions)" %}</h1>
<h2>{% trans "Why is there a <i>public</i> and a <i>private</i> room?" %}</h2>
<p>{% blocktrans %}These pre-configured rooms for each group were prepared for your convenvience.
The <i>public room</i> is configured to be open for random visitors.
Such rooms are visible in the public "room directory" (list of rooms hosted on the Matrix server).
A <i>private room</i> is not listed in the room directory of the server.
Interested people may only join private rooms after being invited by a current room member.{% endblocktrans %}</p>
<h2>{% trans "Room members" %}</h2>
<p>{% blocktrans %}Whenever someone joins a group in the grouprise website, the corresponding matrix account of this new member automatically is invited to the public and the private Matrix room belonging to this group.{% endblocktrans %}</p>
<p>{% blocktrans %}People leaving a grouprise group are automatically removed from the group's Matrix rooms.{% endblocktrans %}</p>
<p>{% blocktrans %}Any external person (even people without an account on the local grouprise instance) may join public rooms or may be invited to private rooms.{% endblocktrans %}</p>
<h2>{% trans "I want to know more!" %}</h2>
<p>{% blocktrans %}Feel free to dive into the <a href="{{ help_matrix_url }}">Matrix FAQ</a> or visit the <a href="{{ help_element_url }}">Element community room</a>, if you have further questions.{% endblocktrans %}</p>
{% endblock %}
......@@ -12,6 +12,11 @@ if MATRIX_SETTINGS.ENABLED:
views.UpdateMatrixChatGestaltSettings.as_view(),
name="matrix-chat-settings",
),
url(
r"^stadt/help/matrix-chat/$",
views.ShowMatrixChatHelp.as_view(),
name="help-matrix-chat",
),
]
else:
urlpatterns = []
from django.urls import reverse
from django.views.generic import FormView
from django.utils.translation import gettext as _
import django.views.generic
from django.core.exceptions import ObjectDoesNotExist
from grouprise.core.views import PermissionMixin
......@@ -7,9 +8,10 @@ from grouprise.features.groups.models import Group
from .forms import MatrixChatGestaltSettingsForm
from .models import MatrixChatGestaltSettings
from .settings import MATRIX_SETTINGS
class UpdateMatrixChatGestaltSettings(PermissionMixin, FormView):
class UpdateMatrixChatGestaltSettings(PermissionMixin, django.views.generic.FormView):
permission_required = "gestalten.change"
form_class = MatrixChatGestaltSettingsForm
template_name = "matrix_chat/update_settings.html"
......@@ -50,3 +52,23 @@ class UpdateMatrixChatGestaltSettings(PermissionMixin, FormView):
matrix_settings.save()
gestalt.save()
return super().form_valid(form)
class ShowMatrixChatHelp(django.views.generic.TemplateView):
template_name = "matrix_chat/help.html"
title = _("Chat / Instant Messaging")
def get_context_data(self, **kwargs):
kwargs["MATRIX_DOMAIN"] = MATRIX_SETTINGS.DOMAIN
kwargs["help_matrix_url"] = "https://matrix.org/faq/#usage"
kwargs["help_element_url"] = "https://element.io/help"
kwargs["matrix_url"] = "https://matrix.org/"
kwargs["element_url"] = "https://github.com/vector-im/element-web"
kwargs[
"element_android_url"
] = "https://matrix.org/docs/projects/client/element-android"
kwargs["grouprise_url"] = "https://grouprise.org/"
kwargs["free_software_url"] = "https://www.gnu.org/philosophy/free-sw.html"
kwargs["matrix_clients_url"] = "https://matrix.org/clients/"
kwargs["matrix_client_path"] = "/stadt/chat/"
return super().get_context_data(**kwargs)
{% extends 'stadt/stadt.html' %}
{% load i18n %}
{% block title %}Hilfe - {{ block.super }}{% endblock %}
......@@ -62,6 +63,25 @@
</div>
</a>
</article>
{% test_rule "is_matrix_chat_enabled" as matrix_chat_enabled %}
{% if matrix_chat_enabled %}
<article class="help-content-preview">
<a href="{% url 'help-matrix-chat' %}" class="content-preview-body">
<div class="content-preview-body-content">
<div class="help-content-image">
{% load staticfiles %}
<img src="{% static 'matrix_chat/chat.svg' %}">
</div>
<div class="content-preview-text">
<div class="content-preview-header">
<h3 class="content-title">{% trans "Chat / Instant Messaging" %}</h3>
</div>
<p>{% trans "Instant communication within groups or between individuals." %}</p>
</div>
</div>
</a>
</article>
{% endif %}
<header class="content-section-header">
{% include 'core/_heading.html' with title='Kontakt' icon='sg-message' %}
......
......@@ -383,7 +383,7 @@ msgid ""
"Active groups with a lot of members or subscribes will be show first in a "
"listing."
msgstr ""
"Aktive Gruppen mit vielen Mitgliedern oder Abonnent_innen werden in "
"Aktive Gruppen mit vielen Mitgliedern oder Abonnent:innen werden in "
"Auflistungen zuerst angezeigt."
msgid "Search for groups"
......@@ -402,12 +402,335 @@ msgstr ""
"Lass das Feld leer, um die lokale Matrix-Nutzer-ID zu verwenden. Eine Matrix-"
"Nutzer-ID hat die Form '@foo:example.org'."
msgid "Introduction to Chat"
msgstr "Einführung in Chats"
msgid "Content"
msgstr "Inhalt"
msgid "Overview"
msgstr "Überblick"
msgid "Matrix Features"
msgstr "Matrix-Funktionen"
msgid "Integration with community website"
msgstr "Integration in die Community-Webseite"
msgid "Usage"
msgstr "Nutzung"
msgid "FAQ"
msgstr "Häufige Fragen"
msgid ""
"Sometimes it is useful to communicate directly and without delay in order to "
"achieve a common goal.\n"
"Or it may be useful to direct interested people from the outside to an "
"accessible and open communication room, where they can meet the people "
"involved in a group or project."
msgstr ""
"Manchmal ist es hilfreich, direkt und ohne Zeitverzug mit anderen zu "
"kommunizieren, um ein gemeinsames Ziel zu erreichen.\n"
"Zudem kann es auf interessierte Außenstehende einladend wirken, direkten "
"Kontakten zu den Aktiven einer Gruppe in einem leicht zugänglichen "
"Kommunikationsraum aufnehmen zu können."
msgid ""
"<i>Chat</i> or <i>Instant Messaging</i> can be a useful tool under these "
"circumstances."
msgstr ""
"<i>Chats</i> oder <i>Sofortnachrichten</i> können unter diesen Umständen "
"nützliche Werkzeuge sein."
#, python-format
msgid ""
"A wide variety of instant messenger applications and protocols is available, "
"e.g. Jabber, IRC, Whatsapp, Facebook Messenger, Slack, Mattermost and many "
"more.\n"
"<i>Grouprise</i> integrates the <a href=\"%(matrix_url)s\">Matrix</a> "
"protocol, since it offers a wide range of features, that turn it into a "
"perfect fit for this platform.\n"
"These features are detailed below."
msgstr ""
"Es gibt eine große Vielfalt von Chat-Anwendungen, wie beispielsweise Jabber, "
"IRC, Whatsapp, Facebook Messenger, Slack, Mattermost und viele mehr.\n"
"<i>Grouprise</i> integriert das <a href=\"%(matrix_url)s\">Matrix</a>-"
"Protokoll, da es vielerlei nützliche Funktionen zur Erweiterung der "
"grouprise-Plattform bietet.\n"
"Diese Funktionen werden weiter unten beschrieben."
msgid "grouprise"
msgstr "grouprise"
msgid ""
"The community website your are browsing right now is based on the grouprise "
"software."
msgstr ""
"Die Webseite, die du gerade liest, basiert auf der Software \"grouprise\"."
msgid "Matrix"
msgstr "Matrix"
msgid "Matrix is a decentral and federated chat communication protocol."
msgstr "Matrix ist ein dezentrales und föderiertes Kommunikationsprotokoll."
msgid "Matrix offers the following features:"
msgstr "Matrix bietet die folgenden Funktionen:"
msgid "trustworthy"
msgstr "vertrauenswürdig"
msgid ""
"Both the server and the client implementations are available as <a href="
"\"{{ free_software_url }}\">Free Software</a>. Thus anyone interested can "
"verify, that the software is operating in the interest of the users."
msgstr ""
"Sowohl die Server- als auch die Client-Implementierung sind als <a href="
"\"{{ free_software_url }}\">Freie Software</a> verfügbar. Somit kann jede "
"interessierte Person prüfen, ob die Software im Interesse der Nutzenden "
"handelt."
msgid "federated"
msgstr "föderiert"
msgid ""
"Everyone can host their own server and all of these servers communicate with "
"each other. This is similar to the design of the email protocol or the "
"telephone network, where users of different providers can communicate with "
"each other."
msgstr ""
"Jede/r kann einen eigenen Matrix-Server betreiben. All diese Matrix-Server "
"tauschen miteinander Nachrichten aus. Dies entspricht der Struktur des "
"Email- oder des Telefon-Netzwerks, in denen die Nutzer:innen verschiedener "
"Betreiber ebenfalls miteinander kommunizieren können."
msgid "secure"
msgstr "sicher"
msgid ""
"End-to-end encryption keeps the content of conversations safe from pryring "
"eyes. Even the service provider cannot peek inside."
msgstr ""
"Ende-zu-Ende-Verschlüsselung schützt den Inhalt der Kommunikation vor "
"neugierigen Blicken. Sogar den Administrator:innen des grouprise/Matrix-"
"Servers ist jeglicher Einblick verwehrt."
msgid "wide range of clients"
msgstr "viele Client-Anwendungen"
msgid ""
"Pick your favorite client from a <a href=\"{{ matrix_clients_url }}\">wide "
"range of applications</a> for various mobile and desktop platforms."
msgstr ""
"Wähle einen passenden Client aus der <a href="
"\"{{ matrix_clients_url }}\">Vielfalt von Anwendungen</a> für verschiedene "
"mobile und Desktop-Plattformen."
msgid ""
"The integration of the Matrix chat into a grouprise instance (this community "
"website) offers the following features:"
msgstr ""
"Die Integration des Matrix-Chats in eine grouprise-Instanz (diese Community-"
"Webseite) bietet die folgenden Funktionen:"
msgid ""
"Use your grouprise user account (name and password) to log in to the Matrix "
"homeserver. There is no need for a separate Matrix account."
msgstr ""
"Verwende dein grouprise-Nutzerkonto (Name und Passwort) für die Anmeldung "
"beim Matrix-Server. Ein separates Matrix-Konto ist nicht erforderlich."
#, python-format
msgid ""
"A local instance of the <a href=\"%(element_url)s\">Element web client</a> "
"is provided along with the grouprise community website (<a href="
"\"%(matrix_client_path)s\">%(matrix_client_url)s</a>)."
msgstr ""
"Eine lokale Instanz der <a href=\"%(element_url)s\">Element-Web-Anwendung</"
"a> wird zusammen mit der Community-Webseite ausgeliefert (<a href="
"\"%(matrix_client_path)s\">%(matrix_client_url)s</a>)."
msgid ""
"A public and a private Matrix room is automatically created for each "
"grouprise group."
msgstr ""
"Für jede grouprise-Gruppe wird automatisch ein öffentlicher und ein privater "
"Raum erzeugt."
msgid ""
"All members of a grouprise group are automatically invited to the group's "
"Matrix rooms."
msgstr ""
"Alle Mitglieder einer grouprise-Gruppe werden automatisch in die "
"dazugehörigen Matrix-Räume eingeladen."
msgid ""
"Notifications for new content (articles, events, discussions, ...) are sent "
"to the related Matrix rooms (internal messages are announced in the private "
"room, only)."
msgstr ""
"Benachrichtigungen zu neuen Inhalten (Artikel, Termine, Diskussionen, ...) "
"werden an die dazugehörigen Matrix-Räume versandt (interne Nachrichten "
"landen ausschließlich im privaten Raum)."
msgid ""
"Additionally all regular features of the Matrix communication ecosystem are "
"available:"
msgstr ""
"Zusätzlich sind alle sonstigen Funktionen des Matrix-Ökosystems nutzbar:"
msgid ""
"Matrix users from other servers may join your group's rooms (if you invite "
"them)."
msgstr ""
"Matrix-Nutzer:innen von anderen Matrix-Servern können die Räume der "
"grouprise-Gruppen betreten (bei privaten Räumen: nur auf Einladung)."
msgid ""
"You may use the Matrix account provided by grouprise or your existing "
"(external) Matrix account."
msgstr ""
"Du kannst entweder den Matrix-Account der grouprise-Instanz oder einen "
"eigenen (externen) Matrix-Account verwenden."
msgid ""
"You are free to communicate with your group peers or with any other Matrix "
"user in the world."
msgstr ""
"Du kannst sowohl mit anderen Nutzer:innen der Community-Webseite, also auch "
"mit Matrix-Nutzer:innen auf der ganzen Welt kommunizieren."
msgid "Use your web browser or a mobile app to access the chat messages."
msgstr ""
"Verwende deinen Web-Browser oder eine mobile Anwendung, um via Matrix "
"Nachrichten auszutauschen."
msgid "Web Browser"
msgstr "Web-Browser"
msgid "There are two approaches for entering the chat rooms:"
msgstr "Es gibt zwei Wege, die Chat-Räume zu betreten:"
msgid ""
"Visit the page of a group and select <i>Public Chat Room</i> or <i>Private "
"Chat Room</i>."
msgstr ""
"Besuche eine Gruppenübersicht und klicke auf <i>Öffentlicher Chat-Raum</i> "
"oder <i>Privater Chat-Raum</i>."
#, python-format
msgid ""
"Visit the URL <a href=\"%(matrix_client_path)s\">%(matrix_client_url)s</a>."
msgstr ""
"Besuche die URL <a href=\"%(matrix_client_path)s\">%(matrix_client_url)s</a>."
msgid "Enter your grouprise login (username and password) in the login dialog."
msgstr ""
"Gib deine grouprise-Anmeldedaten (Nutzername und Passwort) in das "
"Anmeldefenster ein."
msgid "Mobile App"
msgstr "Mobile Anwendung"
#, python-format
msgid ""
"Install one of the <a href=\"%(matrix_clients_url)s\">mobile clients</a> via "
"your favorite app store. Pick <a href=\"%(element_android_url)s\">Element</"
"a> in case of doubt."
msgstr ""
"Installiere eine der <a href=\"%(matrix_clients_url)s\">Matrix-Apps</a> über "
"den Paketmanager deiner Wahl. Wähle im Zweifelsfall <a href="
"\"%(element_android_url)s\">Element</a>."
msgid "Select <i>Other</i> as the Matrix server."
msgstr "Wähle <i>andere</i> als Matrix-Server."
msgid "Enter the matrix server:"
msgstr "Gib den Matrix-Server ein:"
msgid "Select <i>Sign In</i>."
msgstr "Wähle <i>Anmelden</i>."
msgid "Enter your grouprise username or your email address."
msgstr "Gib deinen grouprise-Nutzername oder deine Emailadresse ein."
msgid "Enter your grouprise password."
msgstr "Gib dein grouprise-Passwort ein."
msgid "FAQ (Frequently Asked Questions)"
msgstr "Häufige Fragen (FAQ)"
msgid "Why is there a <i>public</i> and a <i>private</i> room?"
msgstr ""
"Warum gibt es einen <i>öffentlichen</i> und einen <i>privaten</i> Raum?"
msgid ""
"These pre-configured rooms for each group were prepared for your "
"convenvience.\n"
"The <i>public room</i> is configured to be open for random visitors.\n"
"Such rooms are visible in the public \"room directory\" (list of rooms "
"hosted on the Matrix server).\n"
"A <i>private room</i> is not listed in the room directory of the server.\n"
"Interested people may only join private rooms after being invited by a "
"current room member."
msgstr ""
"Diese vorkonfigurierten Räume für jede Gruppe wurden zur Vereinfachung "
"typischer Abläufe angelegt.\n"
"Der <i>öffentliche Raum</i> kann von zufälligen Besuchern auch ohne "
"Einladung betreten werden.\n"
"Solch ein Raum wird im öffentlich Raumverzeichnis des Servers aufgeführt.\n"
"Ein <i>interner Raum</i> ist nicht im Raumverzeichnis zu finden.\n"
"Interessierte können interne Räume nur auf Einladung betreten."
msgid "Room members"
msgstr "Raum-Teilnehmer:innen"
msgid ""
"Whenever someone joins a group in the grouprise website, the corresponding "
"matrix account of this new member automatically is invited to the public and "
"the private Matrix room belonging to this group."
msgstr ""
"Sobald jemand einer grouprise-Gruppe beitritt, wird der dazugehörige Matrix-"
"Account dieses neuen Mitglieds automatisch in den öffentlichen und den "
"privaten Matrix-Raum dieser Gruppe eingeladen."
msgid ""
"People leaving a grouprise group are automatically removed from the group's "
"Matrix rooms."
msgstr ""
"Sobald jemand eine grouprise-Gruppe verlässt, wird sein Matrix-Konto aus den "
"dazugehörigen Räumen entfernt."
msgid ""
"Any external person (even people without an account on the local grouprise "
"instance) may join public rooms or may be invited to private rooms."
msgstr ""
"Auch externe Personen (auch ohne ein Nutzerkonto der Community-Webseite) "
"können öffentliche Räume betreten und in private Räume eingeladen werden."
msgid "I want to know more!"
msgstr "Ich möchte mehr erfahren!"
#, python-format
msgid ""
"Feel free to dive into the <a href=\"%(help_matrix_url)s\">Matrix FAQ</a> or "
"visit the <a href=\"%(help_element_url)s\">Element community room</a>, if "
"you have further questions."
msgstr ""
"Stöbere gern in der <a href=\"%(help_matrix_url)s\">Matrix-Fragensammlung</"
"a> oder schau dich in den <a href=\"%(help_element_url)s\">Element-Räumen</"
"a> um, falls du weitere Fragen haben solltest."
msgid "Chat Settings - Matrix"
msgstr "Chat-Einstellungen (Matrix)"
msgid "Save settings"
msgstr "Einstellungen speichern"
msgid "Chat / Instant Messaging"
msgstr "Chat / Direktnachrichten"
msgid "Membership"
msgstr "Mitgliedschaft"
......@@ -496,6 +819,9 @@ msgstr ""
msgid "Help about"
msgstr "Hilfe zu"
msgid "Instant communication within groups or between individuals."
msgstr "Schnelle Kommunikation innerhalb von Gruppen oder zwischen Individuen."
msgid "Chat (Matrix)"
msgstr "Chat (Matrix)"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment