grouprise issueshttps://git.hack-hro.de/groups/grouprise/-/issues2021-07-12T17:03:23+02:00https://git.hack-hro.de/grouprise/grouprise/-/issues/733Move article image closer to the center of attention2021-07-12T17:03:23+02:00Lars KruseMove article image closer to the center of attentionCurrently the image assigned to an article is placed in the lower right part of the sidebar:
![grouprise-article-image-position](/uploads/1a91c21ac35c8589ca437d4a10f9f1af/grouprise-article-image-position.png)
Thus these cute images are...Currently the image assigned to an article is placed in the lower right part of the sidebar:
![grouprise-article-image-position](/uploads/1a91c21ac35c8589ca437d4a10f9f1af/grouprise-article-image-position.png)
Thus these cute images are hard to find, since they are not visible without scrolling :(
Tom (via mailinglist) proposed to put the image closer to the heading of the article.
The relevant file is [grouprise/features/content/templates/content/detail.html](https://git.hack-hro.de/grouprise/grouprise/-/blob/master/grouprise/features/content/templates/content/detail.html).
Probably we just need to:
* remove the sidebar change
* add `<img src="{{ image.intro.url }}">` somewhere around `content-title`
* add some CSS stylinghttps://git.hack-hro.de/grouprise/grouprise/-/issues/731matrix-chat: allow guest access for public rooms?2021-07-12T04:19:36+02:00Lars Krusematrix-chat: allow guest access for public rooms?In order to allow guest access for the public room of each group we would need the following changes:
* [ ] add `allow_guest_access: true` to the matrix-synapse configuration
* [ ] change the room setting "permission to enter room" from ...In order to allow guest access for the public room of each group we would need the following changes:
* [ ] add `allow_guest_access: true` to the matrix-synapse configuration
* [ ] change the room setting "permission to enter room" from "everyone (except guests)" to "everyone (including guests)"
* [ ] change the room setting "history visibility" from "members" to "everyone"
* [ ] remove element's setting `embeddedPages.loginForWelcome: true` (in `config.json`) (TODO: verify whether this is necessary)
Do we want to apply these changes?
What would be the practical benefit of this change?https://git.hack-hro.de/grouprise/grouprise/-/issues/726matrix-Chat: show number of participants in the room2021-07-01T03:42:29+02:00Lars Krusematrix-Chat: show number of participants in the roomThe current links to the public and private matrix rooms of a group could mislead people to think, that the rooms are actively used by the group, even though no one joined it, yet.
Thus the links could include the number of current part...The current links to the public and private matrix rooms of a group could mislead people to think, that the rooms are actively used by the group, even though no one joined it, yet.
Thus the links could include the number of current participants as an indicator of room activity.https://git.hack-hro.de/grouprise/grouprise/-/issues/724Settings example: CSRF_COOKIE_HTTPONLY is disabled2022-12-23T15:29:26+01:00Lars KruseSettings example: CSRF_COOKIE_HTTPONLY is disabledThe [Django documentation](https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-httponly) says:
> Whether to use HttpOnly flag on the session cookie. If this is set to True, client-side JavaScript will not be able to acces...The [Django documentation](https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-httponly) says:
> Whether to use HttpOnly flag on the session cookie. If this is set to True, client-side JavaScript will not be able to access the session cookie.
>
> [..]
>
> There aren’t many good reasons for turning this off. Your code shouldn’t read session cookies from JavaScript.
Currently this Django setting (defaulting to `True`) is overwritten (to `False`) in our example production configuration (`grouprise/settings.py.production`) and on multiple instances (e.g. `gestadten.org` and `stadtgestalten.org`).
The Django documentation indicates, that this may not be a wise choice.
How can we find out, whether `CSRF_COOKIE_HTTPONLY = False` is really relevant for grouprise?https://git.hack-hro.de/grouprise/grouprise/-/issues/723Use django-defender to protect against brute force attacs2021-06-04T14:14:06+02:00RobertUse django-defender to protect against brute force attacs@phil1 wrote:
> Für ein anderes Django-Projekt habe ich kürzlich [django-defender](https://github.com/jazzband/django-defender) eingerichtet - eine hilfreiche App gegen Brute-Force-Angriffe. Python-Abhängigkeiten sind gering, auf Server...@phil1 wrote:
> Für ein anderes Django-Projekt habe ich kürzlich [django-defender](https://github.com/jazzband/django-defender) eingerichtet - eine hilfreiche App gegen Brute-Force-Angriffe. Python-Abhängigkeiten sind gering, auf Serverebene muss Redis installiert sein. Einbindung über zwei Zeilen in der `settings.py`. Wollen wir das mit einer bestehenden GR-Instanz mal testen?https://git.hack-hro.de/grouprise/grouprise/-/issues/721Provide timed notifications for events2021-05-23T18:09:50+02:00Lars KruseProvide timed notifications for eventsCurrently notifications for any kind of articles and entries are sent to the group members (via email, chat, ...), right at the moment of the event being created.
Event notifications are probably most effective when they are received wi...Currently notifications for any kind of articles and entries are sent to the group members (via email, chat, ...), right at the moment of the event being created.
Event notifications are probably most effective when they are received within a certain time frame before the event (e.g. one day ahead for small meetings, one week ahead for culture events). This is an established feature of calendar applications.
In grouprise, this optimization needs to be executed manually by the person creating the event (timing the distribution of the notification according to the anticipated pre-notification period suitable for the event). This manual optimization is unavailable for [recurring events](#527).
Probably one of the following approaches could help:
* A) per event: allow to disable notification on *event creation*
* B) per event: allow to configure multiple notifications relative to the event time
* this somehow includes (A), since "right now" would be an immediate notification on event creation
* C) per user: allow to configure notifications for account-related events (of subscribed groups, based on [attendance](#374)), e.g. one day ahead or three days aheadhttps://git.hack-hro.de/grouprise/grouprise/-/issues/720Provide direct link to help pages for non-obvious GUI features?2021-05-23T17:08:32+02:00Lars KruseProvide direct link to help pages for non-obvious GUI features?I would like to explain the chat feature to users.
There is already a [documentation page](https://gestadten.org/stadt/help/matrix-chat/) integrated into the build. But this is probably hard to find.
Thus I am tempted to add "help" lin...I would like to explain the chat feature to users.
There is already a [documentation page](https://gestadten.org/stadt/help/matrix-chat/) integrated into the build. But this is probably hard to find.
Thus I am tempted to add "help" links to the group chat links:
![grouprise-help-links](/uploads/2a2c6c01791488d422afedacbe84ae7b/grouprise-help-links.png)
The link just required the following html snippet in the template (just for reference):
```html
<a class="sg" style="text-decoration: none; color:inherit" href="{% url 'help-matrix-chat' %}"></a>
```
What do you think? Is this approach sane? Is this the right visual implementation?https://git.hack-hro.de/grouprise/grouprise/-/issues/718Database queries: use collation2021-05-18T19:58:32+02:00RobertDatabase queries: use collationDjango 3.2 [introduces Collation support](https://docs.djangoproject.com/en/3.2/ref/models/database-functions/#django.db.models.functions.Collate). We might want to check, if we can remove the collation setting from database creation and...Django 3.2 [introduces Collation support](https://docs.djangoproject.com/en/3.2/ref/models/database-functions/#django.db.models.functions.Collate). We might want to check, if we can remove the collation setting from database creation and use it in ordering clauses instead this way.https://git.hack-hro.de/grouprise/grouprise/-/issues/716Text input widget with *form-modern* needs more space2021-05-16T13:46:39+02:00Lars KruseText input widget with *form-modern* needs more spaceA `TextInput` widget rendered within a form of the CSS class `form-modern` seems to emit overlapped text under some circumstances.
The form looks like this:
```
<h2>{% trans "Chat Settings - Matrix" %}</h2>
<form method="post" class="fo...A `TextInput` widget rendered within a form of the CSS class `form-modern` seems to emit overlapped text under some circumstances.
The form looks like this:
```
<h2>{% trans "Chat Settings - Matrix" %}</h2>
<form method="post" class="form form-modern">
{% csrf_token %}
{% field form.matrix_id prefix="@"%}
<button class="btn btn-sm btn-default" type="submit" name="action_send">{% trans "Save settings" %}</button>
</form>
```
The following issues are visible:
* The *label* text and the (optional) prefix visualization overlap. Maybe the *label* should be aligned relative to the right edge of the prefix instead of the left edge of the input field.
* The error text (in case of invalid input) is placed right aligned just below the widget. Thus it overlaps with the help text, if the help text covers the full width of the widget.
* The spacing below the widget feels a bit too small, if the widget is directly followed by a button. A forced linebreak (`<br/>`) solves the issue.
# Example with label/prefix overlap and too little space between widget and button
![text-widget-prefix-overlap](/uploads/2499a12a6c78ddf59bc209bd304529a2/text-widget-prefix-overlap.png)
# Example with error/help overlap
![text-widget-error-overlap](/uploads/de599699dbfd2809dad37da427ebe508/text-widget-error-overlap.png)https://git.hack-hro.de/grouprise/grouprise/-/issues/715Connect backend to fediverse2023-03-13T11:01:22+01:00RobertConnect backend to fediversegrouprise pursues a federated approach: For each town or region there is a distinct platform. Major drawback so far: Neither the grouprise platforms are connected in any way, nor are them connected to other platforms or networks. There h...grouprise pursues a federated approach: For each town or region there is a distinct platform. Major drawback so far: Neither the grouprise platforms are connected in any way, nor are them connected to other platforms or networks. There has been an attempt to connect it to https://wechange.de/project/fairsync/.
One option would be to implement [ActivityPub](http://activitypub.rocks/) (alternatively: [diaspora](https://fediverse.party/en/diaspora)). This would enable connection of grouprise platforms as well as connection to the [Fediverse](https://fediverse.party/). One would be able to follow (subscribe to or join) groups with any fediverse client. Especially, if there is an interesting group on one grouprise platform, one may follow it from their "home" platform.
As this would lead to quite many backend changes, we might want to check, if there is software out there which already does the same as grouprise (with Fediverse support). So far, I only found [GNU social](https://fediverse.party/en/gnusocial) which has support for *groups* like grouprise. But it is PHP, so it might not be worth considering.https://git.hack-hro.de/grouprise/grouprise/-/issues/714Include user documentation2021-05-18T03:53:58+02:00Lars KruseInclude user documentationCurrently grouprise does not include user-oriented manuals or guides.
The workaround currently used in some communities is to provide a manually copied set of articles (e.g. https://stadtgestalten.org/stadt/help/ or https://stadtgestalt...Currently grouprise does not include user-oriented manuals or guides.
The workaround currently used in some communities is to provide a manually copied set of articles (e.g. https://stadtgestalten.org/stadt/help/ or https://stadtgestalten.org/nutzungshinweise/).
Probably we want to provide a centralized approach instead in order to simplify the deployment of new communities.
I can imagine the following approaches:
* A) we maintain a central wiki (or publish documentation within a group in a grouprise instance, e.g. https://gestadten.org/)
* B) we ship documentation pages as part of the software
* C) we populate some articles during the first installation of the software (similar to [moinmoin's language setup](http://master19.moinmo.in/LanguageSetup))
These options differ regarding the required complexity for contributors as well as centralized vs. distributed.
Right now I would like to add documentation for the `matrix_chat` extension and I am not sure, where to do this.
What do you think?https://git.hack-hro.de/grouprise/grouprise/-/issues/713Remove user accounts created by bots2022-12-23T15:21:59+01:00RobertRemove user accounts created by botsRecently a lot of user accounts seem to be created by bots. With #712 this should be stopped for the moment.
To remove these accounts, I suggest adding a daily task, which removes user accounts that match all of the following criteria:
...Recently a lot of user accounts seem to be created by bots. With #712 this should be stopped for the moment.
To remove these accounts, I suggest adding a daily task, which removes user accounts that match all of the following criteria:
* account is older than 30 days
* never logged in or time span between account creation and last login is less than 5 seconds
* email address is not verified
* no memberships, no subscriptions
* no content (versions)
* no comments or messages
* no images, no poll votes
The following fragment and the account deletion code can help with implementation:
```python
for user in User.objects.filter(emailaddress__verified=False):
if not user.last_login or ((user.last_login - user.date_joined) < timedelta(seconds=5)):
// check memberships, content etc.
```https://git.hack-hro.de/grouprise/grouprise/-/issues/710Add option to allow public submissions to group mailaddress2021-02-19T09:01:44+01:00RobertAdd option to allow public submissions to group mailaddressBisher gibt es die Möglichkeit, Mailadressen der Form `<kurzname>@plattform` als interne Mailinglisten zu verwenden. Mithilfe einer Einstellung könnte es möglich sein, diese Adresse auch für externe Einsendungen (Kontaktnachrichten) zu ö...Bisher gibt es die Möglichkeit, Mailadressen der Form `<kurzname>@plattform` als interne Mailinglisten zu verwenden. Mithilfe einer Einstellung könnte es möglich sein, diese Adresse auch für externe Einsendungen (Kontaktnachrichten) zu öffnen.
Dafür müssen möglicherweise Nutzer bei Einsendungen angelegt werden (ähnlich wie bei Kontaktnachrichten).https://git.hack-hro.de/grouprise/grouprise/-/issues/698Deb-Paketierung: dh_sysuser für Systemnutzer verwenden2021-05-15T20:16:49+02:00Konrad MohrfeldtDeb-Paketierung: dh_sysuser für Systemnutzer verwendenSeit einiger Zeit gibt es in Debian dh_sysuser, der automatisch den Systemnutzer für grouprise anlegen (und ggf. entfernen) kann. Aktuell lösen wir das manuell über unsere postinst und postrm Skripte. Der debian-helper ist Teil des dh-sy...Seit einiger Zeit gibt es in Debian dh_sysuser, der automatisch den Systemnutzer für grouprise anlegen (und ggf. entfernen) kann. Aktuell lösen wir das manuell über unsere postinst und postrm Skripte. Der debian-helper ist Teil des dh-sysuser Pakets und wäre eine Buildabhängigkeit. Die [manpage](https://manpages.debian.org/buster/dh-sysuser/dh_sysuser.1.en.html) verrät mehr.https://git.hack-hro.de/grouprise/grouprise/-/issues/695Expel members from closed groups2021-04-19T10:32:24+02:00RobertExpel members from closed groupsEin aktuelles Beispiel hat mir gerade ein Problem aufgezeigt: In diesem Fall legt eine Gruppe eine neue Gruppeninstanz an, anscheinend um diese dann als geschlossene Gruppe zu führen. Vermutlich sind in der bestehenden Gruppe zu viele Mi...Ein aktuelles Beispiel hat mir gerade ein Problem aufgezeigt: In diesem Fall legt eine Gruppe eine neue Gruppeninstanz an, anscheinend um diese dann als geschlossene Gruppe zu führen. Vermutlich sind in der bestehenden Gruppe zu viele Mitglieder, die sie ja nicht rauswerfen können. (Alles Vermutungen, ich hatte keinen Kontakt)
Zumindest für geschlossene Gruppen sollte es also die Möglichkeit des *Rauswerfens* geben. Allerdings haben wir keine Admins. Daher schlage ich vor, dass jemand einer anderen Person aus der Gruppe den Austritt nahelegen kann, sie wird benachrichtigt, und wenn sie nicht binnen einer Woche widerspricht, wird die Mitgliedschaft beendet. Das dürfte das häufigste Problem lösen, nämlich dass Menschen schlicht nicht kommunizieren (keine Lust, neue oder falsche Mailadresse, ...).https://git.hack-hro.de/grouprise/grouprise/-/issues/670Subscribe hashtags2020-02-13T00:49:24+01:00Lars KruseSubscribe hashtagsPeople may be interested in specific topics with corresponding hashtags (e.g. `nature`).
For these people it could be useful to subscribe to new content marked with such hashtags or belonging to groups marked with these hashtags.
This f...People may be interested in specific topics with corresponding hashtags (e.g. `nature`).
For these people it could be useful to subscribe to new content marked with such hashtags or belonging to groups marked with these hashtags.
This feature would probably need the following details:
* UI for subscribing/unsubscribing
* avoiding duplicate notifications for the same content (e.g. as a group member and as a hashtag subscriber)
* specification of the propagation of hashtags in contributions (e.g. comments) to the parent article (and thus the following comments)
Would this be a useful feature?https://git.hack-hro.de/grouprise/grouprise/-/issues/668Zustimmung zu Datenschutzhinweisen einfordern?2021-05-15T19:48:17+02:00Lars KruseZustimmung zu Datenschutzhinweisen einfordern?Gibt es eine Notwendigkeit, von den Leuten bei der Anmeldung eine Zustimmmung zu unserer Datenspeicherung abzufordern?Gibt es eine Notwendigkeit, von den Leuten bei der Anmeldung eine Zustimmmung zu unserer Datenspeicherung abzufordern?https://git.hack-hro.de/grouprise/grouprise/-/issues/667Display calendar in group view even on small screens2019-10-17T00:27:00+02:00Lars KruseDisplay calendar in group view even on small screensAt the moment the calendar is not displayed in the mobile view of a group.
Maybe we could show it below the group summary, if there are announced events (i.e. the group actively uses the calendar). It could be hidden, if no future event...At the moment the calendar is not displayed in the mobile view of a group.
Maybe we could show it below the group summary, if there are announced events (i.e. the group actively uses the calendar). It could be hidden, if no future events are known.
User experience example: one user recently reported, that *only old events are visible*. He just misinterpreted the blog area (containing previous event announcements) and could not see the calendar with future events on his mobile device.https://git.hack-hro.de/grouprise/grouprise/-/issues/665Improve group detail page performance2021-10-27T01:43:29+02:00RobertImprove group detail page performanceDie Anzeige einer Gruppenseite benötigt rund 150 Datenbankanfragen. Da gibt es bestimmt Optimierungspotential (siehe #607).Die Anzeige einer Gruppenseite benötigt rund 150 Datenbankanfragen. Da gibt es bestimmt Optimierungspotential (siehe #607).https://git.hack-hro.de/grouprise/grouprise/-/issues/655Remove trailing slash from urls2019-08-06T17:20:01+02:00RobertRemove trailing slash from urlsSollen wir den abschließenden Slash von zentralen URLs entfernen? Wenn ja, sollen wir Weiterleitungen von den bestehenden URLs mit Slash anbieten?Sollen wir den abschließenden Slash von zentralen URLs entfernen? Wenn ja, sollen wir Weiterleitungen von den bestehenden URLs mit Slash anbieten?