Compare commits

..

1477 commits

Author SHA1 Message Date
778a69cd 4cdbf78037 Merge remote-tracking branch 'potsdamn/feature/calendar' 2024-02-01 00:40:38 +01:00
778a69cd 59c3c87281 flake.lock: Update
Flake lock file updates:

• Updated input 'napalm':
    'github:nix-community/napalm/a8215ccf1c80070f51a92771f3bc637dd9b9f7ee' (2023-09-06)
  → 'github:nix-community/napalm/edcb26c266ca37c9521f6a97f33234633cbec186' (2023-12-20)
• Updated input 'napalm/flake-utils':
    'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07)
  → 'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04)
• Added input 'napalm/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Updated input 'nix-filter':
    'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04)
  → 'github:numtide/nix-filter/3449dc925982ad46246cfc36469baf66e1b64f17' (2024-01-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a9bf124c46ef298113270b1f84a164865987a91c' (2023-12-11)
  → 'github:NixOS/nixpkgs/97b17f32362e475016f942bbdfda4a4a72a8a652' (2024-01-29)
2024-01-31 17:09:21 +01:00
778a69cd 81ae56d850 Merge remote-tracking branch 'origin/main' 2024-01-31 17:03:11 +01:00
Thomas Citharel 5770d6f0f9 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1525
2024-01-29 18:19:59 +00:00
summersamara c2fc80cade Fix z-index of FullAddressAutoComplete
potsda.mn/mobilizon#48
potsda.mn/mobilizon#46
2024-01-27 17:53:02 +01:00
summersamara 87a7738842 Fix FullAddressAutoComplete in Event form
potsda.mn/mobilizon#43
2024-01-23 22:07:56 +01:00
drkfrd 08bf4a90da Translated using Weblate (Swedish)
Currently translated at 98.7% (1623 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 17:27:55 +01:00
drkfrd fe09e43be2 Translated using Weblate (Swedish)
Currently translated at 70.1% (1153 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 14:53:32 +01:00
drkfrd 5d409d8029 Translated using Weblate (Swedish)
Currently translated at 69.8% (1149 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 14:43:34 +01:00
drkfrd ee49f57ee7 Translated using Weblate (Swedish)
Currently translated at 61.0% (1003 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 14:24:53 +01:00
drkfrd 51c7dfc593 Translated using Weblate (Swedish)
Currently translated at 53.1% (874 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 14:00:10 +01:00
drkfrd eb8d65d1c8 Translated using Weblate (Swedish)
Currently translated at 51.5% (848 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2024-01-19 11:46:26 +01:00
drkfrd 25bbab3827 Translated using Weblate (Swedish)
Currently translated at 94.5% (86 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/sv/
2024-01-19 10:47:43 +01:00
Thomas Citharel baf75dd890 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1524
2024-01-18 12:59:01 +00:00
Balázs Meskó 602798da0f Translated using Weblate (Hungarian)
Currently translated at 92.3% (1518 of 1644 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2024-01-18 13:16:43 +01:00
778a69cd a1d7adc538 add german translation for "Calendar" 2024-01-05 15:36:59 +01:00
Thomas Citharel 6178f5a76e Merge branch 'docker-compose' into 'main'
build(docker): change docker-compose to docker compose in Makefile

See merge request framasoft/mobilizon!1522
2024-01-04 14:20:57 +00:00
Thomas Citharel 08f80341c2
build(docker): change docker-compose to docker compose in Makefile
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 15:20:17 +01:00
summersamara a48b315f16 Implement graphql query for events calendar and agenda components
- remove ICSCalendar and ICSAgenda components
- fix highlight selected date

potsda.mn/mobilizon#40
potsda.mn/mobilizon#41
2024-01-04 15:03:40 +01:00
Thomas Citharel 5997e9e14c Merge branch 'fix-group-report' into 'main'
fix(front): fix reporting group

See merge request framasoft/mobilizon!1521
2024-01-04 13:25:15 +00:00
Thomas Citharel 57d0372ce8
fix(front): fix reporting group
Item was hidden unless anonymous reporting was enabled

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 14:02:13 +01:00
Thomas Citharel b317fe6163 Merge branch 'fixes' into 'main'
Fix various instance view stuff and legacy cleaning

Closes #1393

See merge request framasoft/mobilizon!1520
2024-01-04 13:00:30 +00:00
Thomas Citharel fb173414c9
style(lint): add Elixir lint on pre-commit
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:41:21 +01:00
Thomas Citharel d0835232d6
refactor(backend): change naming of function names to avoid the is_ prefix
Following Credo.Check.Readability.PredicateFunctionNames check

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:35:08 +01:00
Thomas Citharel fe0cf93604
fix(front): fix debouncing instances filtering
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:02:17 +01:00
Thomas Citharel b3ba45e8a7
fix(back): fix instances filtering
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:02:16 +01:00
Thomas Citharel 428537df1f
refactor: remove some outdated todos and legacy fallbacks
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:02:16 +01:00
Thomas Citharel f7585cfc75
fix(backend): validate length of instance actor details and set description column to text
Closes #1393

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:02:05 +01:00
Thomas Citharel eb43b7c79c
style(credo): disable credo Credo.Check.Warning.MissedMetadataKeyInLoggerConfig check
It's buggy https://github.com/rrrene/credo/issues/1101

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 13:01:22 +01:00
Thomas Citharel c3aa145148
refactor(backend): extract convert_ecto_errors in the Mobilizon.Storage.Ecto module
And use it to log refreshing instance errors

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-04 12:59:15 +01:00
778a69cd 9028332b0d Merge remote-tracking branch 'origin/main' 2024-01-03 23:38:23 +01:00
Thomas Citharel 5cdcc2e985 Merge branch 'update-deps' into 'main'
chore(deps): update deps

See merge request framasoft/mobilizon!1519
2024-01-03 18:18:41 +00:00
Thomas Citharel 11cb0a4a81 Merge branch 'fix-event-view-window-title' into 'main'
Fix: Window title in Event View doesn't show the Event title

See merge request framasoft/mobilizon!1518
2024-01-03 18:08:12 +00:00
Thomas Citharel e8d7663f2a
chore(deps): update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:54:53 +01:00
Thomas Citharel 606f3df866 Merge branch 'federation-fixes' into 'main'
fix(activitypub): various federation follow & nodeinfo fixes

See merge request framasoft/mobilizon!1516
2024-01-03 17:53:58 +00:00
Thomas Citharel 0bd7b670ae
refactor(front): move IdentityPicker and Wrapper to components instead of views
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:48:06 +01:00
Thomas Citharel 9308c5399d
fix(activitypub): handle any type of error when fetching Application actor from NodeInfo
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:16 +01:00
Thomas Citharel 0948cce83e
fix(front): uI fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:15 +01:00
Thomas Citharel 7c51ef79b9
refactor(activitypub): simplify request to get instances list and status
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:15 +01:00
Thomas Citharel 2f4b8feeba
fix(activitypub): refresh NodeInfo metadata straight away when adding a new instance to follow
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:14 +01:00
Thomas Citharel 6d2f08f3c1
refactor(activitypub): log instance actor details before it's created
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:13 +01:00
Thomas Citharel da3b074619
fix(nodeinfo): make sure we only process JSON content
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-01-03 18:33:13 +01:00
778a69cd 953033b58b Merge remote-tracking branch 'origin/main' 2023-12-31 14:21:45 +01:00
Thomas Citharel 7d3b46d905 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1517
2023-12-31 09:31:39 +00:00
summersamara 81ca3e052f Fix: Window title in Event View doesn't show the Event title
- Prevent IdentityPicker from setting the window title
2023-12-24 10:11:22 +01:00
summersamara dec26525c0 Merge remote-tracking branch 'origin/main' into feature/calendar 2023-12-24 07:51:52 +01:00
Ferdi Scholten 99867d6dda Translated using Weblate (Dutch)
Currently translated at 73.9% (1215 of 1643 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2023-12-23 08:15:42 +01:00
Thomas Citharel 881695ca19
refactor(http): extract HTTP header tests to a new module
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-22 16:00:33 +01:00
Thomas Citharel 7351468842
fix(activitypub): handle actors following with manually_approves_followers not set
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-22 15:57:29 +01:00
778a69cd 8013eb95f7 Merge remote-tracking branch 'origin/main' 2023-12-22 15:44:50 +01:00
Thomas Citharel b89f4f47fa Merge branch 'upgrade-deps' into 'main'
Upgrade deps

See merge request framasoft/mobilizon!1515
2023-12-22 13:29:18 +00:00
Thomas Citharel a6a80cabc6
Merge branch 'oruga-0.8' into upgrade-deps 2023-12-22 12:17:17 +01:00
Thomas Citharel 112019d21c
refactor: fix date-fns import in GroupView.vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-22 12:16:01 +01:00
Thomas Citharel 72c0b18aa9
chore(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-22 12:15:37 +01:00
Thomas Citharel b7cb2b9bd1 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1514
2023-12-22 11:08:51 +00:00
Milo Ivir 4ddbc20e2b Translated using Weblate (Croatian)
Currently translated at 81.5% (292 of 358 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-12-21 21:11:11 +01:00
778a69cd 6fa7e23655 Merge remote-tracking branch 'origin/main' 2023-12-21 11:28:21 +01:00
Thomas Citharel 58e4239aae Merge branch 'extract-nodeinfo-metadata' into 'main'
feat(nodeinfo): extract and save NodeInfo information from instances to...

Closes #1392

See merge request framasoft/mobilizon!1513
2023-12-21 10:05:26 +00:00
Thomas Citharel 99b2339424
feat(nodeinfo): extract and save NodeInfo information from instances to display it on instances list
We also try to detect the application actor if it's not given by NodeInfo metadata (FEP-2677)
(guessing for Mobilizon, PeerTube & Mastodon).

Closes #1392

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-21 10:45:56 +01:00
778a69cd 05381e47e8 Merge remote-tracking branch 'origin/main' 2023-12-20 14:19:10 +01:00
Thomas Citharel b09f9053b2 Merge branch 'fix-ics-feed-events-sorting' into 'main'
Fix ICS feed missing events: order by "begins_on" DESC

See merge request framasoft/mobilizon!1512
2023-12-20 08:45:18 +00:00
Thomas Citharel ff0440c634
fix(feeds): increase feed item limit from 500 to 5000
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-20 09:26:58 +01:00
Thomas Citharel 3c75856149
fix(feeds): make sure posts for feeds are ordered by publication date desc
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-20 09:26:28 +01:00
Thomas Citharel e73fd9b370
fix(activitypub): make relay outbox events ordered by desc publication date
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-20 09:24:59 +01:00
summersamara 31411bfc03
Fix ICS feed missing events: order by "begins_on" DESC so that the latest events are always included
potsda.mn/mobilizon#37
2023-12-20 09:07:47 +01:00
778a69cd 15c9518877 typo in docs 2023-12-20 00:33:44 +01:00
summersamara 1d430f5707 Supply sort and direction as arguments to list_public_local_events instead of hardcoding
potsda.mn/mobilizon#37
2023-12-20 00:25:38 +01:00
summersamara 5fb5897c34 Fix: order the fetched events for the ICS feed DESC by "beings_on"
potsda.mn/mobilizon#37
2023-12-19 23:55:34 +01:00
summersamara f3051d5f11 Remember the calendar state in ICSAgenda component when navigating back 2023-12-19 22:12:42 +01:00
778a69cd 00c408a502 Merge remote-tracking branch 'origin/main' 2023-12-19 13:16:16 +01:00
Thomas Citharel 2fba6379f1 Merge branch 'docker-remove-openssl-11-compat' into 'main'
fix(docker): remove openssl1.1-compat

Closes #1390

See merge request framasoft/mobilizon!1511
2023-12-19 11:24:01 +00:00
Thomas Citharel 889cb91f26
fix(docker): add --break-system-packages to pip install to add weasyprint and pyexcel-ods3
That's the only use of Python so we should be fine

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 12:05:22 +01:00
Thomas Citharel 75d7816a6c
fix(docker): remove openssl1.1-compat
Closes #1390

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 12:04:22 +01:00
Thomas Citharel f4e51c2a90 Merge branch 'address-text-only' into 'main'
feat(activitypub): allow simple text for address field

Closes #1387

See merge request framasoft/mobilizon!1510
2023-12-19 10:13:12 +00:00
Thomas Citharel 001a0ed1a5
fix(activitypub): do not try to calculate timezone from missing geo-coordinates
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 10:53:12 +01:00
Thomas Citharel 64237cfc26
feat(activitypub): allow simple text for address field
Closes #1387

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 10:52:31 +01:00
Thomas Citharel 8544278c9a Merge branch 'nodeinfo-fixes' into 'main'
fix(nodeinfo): fix getting application actor information from NodeInfo response

See merge request framasoft/mobilizon!1509
2023-12-19 09:40:41 +00:00
Thomas Citharel 78d3e76e46
test(nodeinfo): add tests for Mobilizon.Federation.NodeInfo
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 10:01:20 +01:00
Thomas Citharel 227c176628 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1508
2023-12-19 08:54:26 +00:00
Thomas Citharel 00250ff33a
refactor(activitypub): cleanup unused imports and variables
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 09:53:05 +01:00
Thomas Citharel dd775b6ae2
fix(nodeinfo): fix getting application actor information from NodeInfo response
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-19 09:52:32 +01:00
Phongpanot d3b0647b11 Added translation using Weblate (Thai) 2023-12-19 09:20:39 +01:00
summersamara 1e0db0d8c9 Fix sizing issue + use better type declarations 2023-12-19 03:03:14 +01:00
summersamara 4ceee2efc7 Fix Calendar View style and add features
- create ICSCalendar component
- create ICSAgenda component (for mobile view)
- temporary add rotes.potsda.mn ics feed for testing
2023-12-19 01:23:41 +01:00
778a69cd c90ad81879 Merge remote-tracking branch 'origin/main' 2023-12-18 18:46:56 +01:00
summersamara 69717f26f3 try to fix events calendar routing 2023-12-18 18:29:44 +01:00
summersamara 9c0c5b6e83 Fix fullcalendar CSP errors
- whitelist the 'data:' protocol for fonts
- Add CSP hash directive to allow fullcalendar inline style
2023-12-18 18:05:25 +01:00
778a69cd 81948b45ca fix: actually route /events/calendar 2023-12-18 18:05:25 +01:00
summersamara 5095749157 create Events Calendar View
- install full-calendar npm packages
- create FullCalendar component
- create Events Calendar route
- Fix: remove unused imports in NavBar.vue
2023-12-18 18:05:25 +01:00
Thomas Citharel 707add36dd Merge branch 'nodeinfo-relay' into 'main'
feat(activitypub): implement FEP-2677 to identify the application actor used for federation

Closes #1367

See merge request framasoft/mobilizon!1507
2023-12-18 15:44:15 +00:00
Thomas Citharel d5eb235661 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1504
2023-12-18 15:43:49 +00:00
josé m 8b2e885159 Translated using Weblate (Galician)
Currently translated at 77.3% (1268 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2023-12-18 06:37:14 +01:00
josé m 48e1b7a5ec Translated using Weblate (Galician)
Currently translated at 76.8% (1261 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2023-12-18 06:04:50 +01:00
josé m 91fdaf5abc Translated using Weblate (Galician)
Currently translated at 76.2% (1250 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2023-12-17 04:53:38 +01:00
778a69cd 863a1dbe3f reintroduce json_library config, apparently removal is not necessary anymore 2023-12-15 12:39:08 +01:00
Thomas Citharel f10977a99a
feat(activitypub): implement FEP-2677 to identify the application actor used for federation
Instead of always assuming it will be @relay@host.tld

Closes #1367

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 16:31:58 +01:00
778a69cd 1eaad40c66 flake.lock: Update
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16)
  → 'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e92039b55bcd58469325ded85d4f58dd5a4eaf58' (2023-11-29)
  → 'github:NixOS/nixpkgs/a9bf124c46ef298113270b1f84a164865987a91c' (2023-12-11)
2023-12-14 16:04:21 +01:00
778a69cd 7d7abd0dda Merge remote-tracking branch 'origin/main' 2023-12-14 15:06:06 +01:00
josé m 708bb6b353 Translated using Weblate (Galician)
Currently translated at 73.3% (1203 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2023-12-14 11:57:02 +01:00
Thomas Citharel 049ffd61b7 Merge branch 'front-fixes' into 'main'
Various front-end fixes

See merge request framasoft/mobilizon!1505
2023-12-14 10:56:57 +00:00
Thomas Citharel a9676d6481
feat(front): upgrade to Oruga 0.8.x
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:30:54 +01:00
Thomas Citharel 76668e0beb
fix(front): fix focus when creating a new resource
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:24 +01:00
Thomas Citharel cecbea6db5
fix(front): show correct label when adding a new calc or videoconference resource in resources
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:23 +01:00
Thomas Citharel 1d39eb5488
fix(front): improve display of SendPasswordReset view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:23 +01:00
Thomas Citharel a408b476cf
fix(front): add condition on DraggableList in ResourceFolder.vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:22 +01:00
Thomas Citharel 45f8757d72
fix(front): create head without old options
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:22 +01:00
Thomas Citharel 89641c502e
fix(front): fix dialog from EventParticipationCard.vue without input
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:21 +01:00
Thomas Citharel 442d072857
refactor(front): use useCurrentActorClient() instead of making query in EventParticipationCard
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:21 +01:00
Thomas Citharel f4ee116112
fix(front): escape event.title when it's passed to dialog component HTML message
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:29:13 +01:00
Thomas Citharel 83eb5c6a69
fix(front): add announcements link on EventParticipationCard as well as EventView
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:15:08 +01:00
Thomas Citharel ee6381463d
fix(front): remove broken identity check in EventMinimalistCard
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:15:07 +01:00
Thomas Citharel 00d8bc733d
fix(front): fix ErrorComponent.vue sentry integration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 11:15:07 +01:00
Thomas Citharel 51d43aa2d1
fix(front): various little CSS fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-14 10:47:41 +01:00
Thomas Citharel 68c40e6bf5
chore(deps): update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-12 11:48:54 +01:00
Thomas Citharel a47f4f6444
fix(graphql): add missing operation name for RegisterPerson
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-12 11:40:56 +01:00
Thomas Citharel d4489f691b
fix(front-end): fix issues with expired accessToken refreshment queue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-12 11:40:33 +01:00
Thomas Citharel ae466b879c
fix(front-end): fix current actor not being set on first access when relogging
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-12 11:39:27 +01:00
Thomas Citharel 820d4adb69 Merge branch 'docker-webpush' into 'main'
refactor(docker): allow webPush configuration to be configured using env variables in Docker

Closes #1383

See merge request framasoft/mobilizon!1503
2023-12-11 15:51:01 +00:00
Thomas Citharel 459f486a90
refactor(docker): allow webPush configuration to be configured using env variables in Docker
Closes #1383

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-11 16:31:24 +01:00
778a69cd 744008273d Merge remote-tracking branch 'origin/main' 2023-12-11 12:17:38 +01:00
Thomas Citharel f6ff99987f Merge branch 'html_to_text-nil' into 'main'
fix: allow html_to_text/1 to receive nil, e.g. for empty event descriptions

See merge request framasoft/mobilizon!1502
2023-12-11 09:44:06 +00:00
778a69cd 5030b755a0
fix: allow html_to_text to receive nil, e.g. for empty event descriptions
Fixes potsda.mn/mobilizon#34

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-11 09:42:06 +01:00
778a69cd 63129b0769 fix: allow html_to_text to receive nil, e.g. for empty event descriptions
Fixes potsda.mn/mobilizon#34
2023-12-09 21:48:23 +01:00
summersamara 9c60c6d1ad make group's address field optional again
- reverts some changes in e4607567ce
- issue potsda.mn/mobilizon#27
2023-12-08 19:14:57 +01:00
778a69cd 0e0272fb5a set version to 4.0.2 2023-12-08 11:26:44 +01:00
summersamara 6b26aaa1ef Merge remote-tracking branch 'upstream/main' 2023-12-07 15:08:12 +01:00
Thomas Citharel 987c5b59d3
chore(release): 4.0.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 14:55:16 +01:00
Thomas Citharel 0427e42f8a Merge branch 'xss-fixes' into 'main'
fix(front-end): add more security fixes for formatted lists and notifier

See merge request framasoft/mobilizon!1501
2023-12-07 13:52:34 +00:00
potsda.mn-Kollektiv 1af8e37e9b
fix(front-end): add more security fixes for formatted lists and notifier
- introduce html escape function
- escape message content in notifier plugin
- escape user name in ConversationListItem
- escape user name in the Event EditView contacts section
- display user summary as plain text in ActorCard

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 14:29:20 +01:00
778a69cd b91b5f8133 Merge remote-tracking branch 'origin/main' 2023-12-07 13:43:16 +01:00
Thomas Citharel 5e3d8a861f
chore(release): 4.0.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 12:36:11 +01:00
Thomas Citharel 0caaf2bf2e
build(packages): remove alpine packages as there's no demand for it
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 12:30:49 +01:00
Thomas Citharel 795ef2463f
build(packages): add back Debian Buster as it seems people are still using it
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 12:30:27 +01:00
Thomas Citharel 38f2443d7b Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1499
2023-12-07 11:19:20 +00:00
josé m 97c53bb8d3 Translated using Weblate (Galician)
Currently translated at 100.0% (91 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/gl/
2023-12-07 12:14:44 +01:00
josé m e08b057e06 Translated using Weblate (Galician)
Currently translated at 71.2% (1169 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2023-12-07 12:14:43 +01:00
josé m ec5e4366e5 Translated using Weblate (Galician)
Currently translated at 6.5% (6 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/gl/
2023-12-07 12:14:43 +01:00
Thomas Citharel 211d07b68e Merge branch 'xss-fixes' into 'main'
Security and docker fixes

See merge request framasoft/mobilizon!1500
2023-12-07 11:14:36 +00:00
Thomas Citharel db385501aa
fix(emails): use tls_certificate_check to add tls config for mailer
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 11:42:19 +01:00
Thomas Citharel 7210f86889
feat(cli): add command to test emails send correctly
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 09:17:33 +01:00
Thomas Citharel 4855af8f87
feat(docker): allow to configure loglevel at runtime through env variable
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-07 09:17:33 +01:00
Thomas Citharel 9907f887c9
fix(docker): use separate env for tzdata dir path
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 16:07:42 +01:00
Thomas Citharel 126727bf58
fix(docker): fix getting default value for MOBILIZON_SMTP_SSL env
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 16:07:03 +01:00
Thomas Citharel 7d725bd942
fix(config): fix setting path for Mobilizon.Service.SiteMap
System.get_env/2 makes no sense at compile time

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 16:06:20 +01:00
Thomas Citharel 28063bd1d9
fix(docker): fix getting configuration value from env MOBILIZON_SMTP_TLS
Closes #1381

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 16:05:33 +01:00
Thomas Citharel 09f41328ab
fix(graphql): set default value for resource type parameter
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 14:43:51 +01:00
778a69cd 3dc3e7e972 Merge remote-tracking branch 'origin/main' 2023-12-06 13:29:23 +01:00
Thomas Citharel 94bf2e53bf
fix(front): put correct value for CONVERSATION_LIST enum value
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:51:45 +01:00
Thomas Citharel dc6647f5dc
fix: sanitize descriptions from resources
Currently resources descriptions are not used anywhere but they are
prefilled from source URL preview. Still, doesn't hurt to sanitize
these.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:47:28 +01:00
Thomas Citharel 58e50e3c9f
test: add new tests for XSS in actors summary
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:19:19 +01:00
Thomas Citharel 41227d994c
style: linting front-end
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:18:36 +01:00
Thomas Citharel 2c12fbfd09
fix(front): anonymous participant text is plain text, avoid using v-html
It was using v-html when opening to "view more"

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:18:05 +01:00
Thomas Citharel 77518deb54 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1498
2023-12-06 10:07:48 +00:00
Thomas Citharel ffff379d47
fix: always consider report content as text
Report content was used as HTML in front-end and e-mails but wasn't sanitized as such.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 11:05:56 +01:00
FoW 1a1ad5295b Translated using Weblate (Korean)
Currently translated at 0.5% (2 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ko/
2023-12-06 10:49:28 +01:00
FoW 7b4c31d66a Translated using Weblate (Korean)
Currently translated at 1.1% (19 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ko/
2023-12-06 10:49:27 +01:00
Thomas Citharel ded59bec27
fix(front): fix XSS because of bad operations when setting the group's summary
Group summary (HTML) is properly sanitized by the backend, but for groups we did a special operation
before setting the HTML in the Vue app. This is now removed

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 08:47:44 +01:00
Thomas Citharel 935799f123
fix(front): fix editing group
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 08:37:48 +01:00
Thomas Citharel 5b337f952a
refactor(activitypub): handle failure finding public key in actor keys
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-06 08:25:02 +01:00
Thomas Citharel 114e850682 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1497
2023-12-06 06:38:24 +00:00
Milo Ivir 9c88faeafb Translated using Weblate (Croatian)
Currently translated at 88.9% (1458 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-05 22:34:12 +01:00
778a69cd daf33b747c Merge remote-tracking branch 'origin/main' 2023-12-05 17:41:28 +01:00
Milo Ivir 623f4ee556 Translated using Weblate (Croatian)
Currently translated at 87.1% (1430 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-05 17:34:13 +01:00
Milo Ivir 1162dd0f7d Translated using Weblate (Croatian)
Currently translated at 81.6% (290 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-12-05 17:34:13 +01:00
Thomas Citharel 3a55baeffd
chore(release): release 4.0.0
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 09:07:11 +01:00
Thomas Citharel f93457131a Merge branch 'fixes' into 'main'
Little fixes

See merge request framasoft/mobilizon!1496
2023-12-05 08:06:10 +00:00
Thomas Citharel 147096cc3d
refactor: to lower cyclomatic complexity
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 08:40:01 +01:00
Thomas Citharel f81472e081
fix(front): fix tag loading
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 08:28:11 +01:00
Thomas Citharel c4d2ec69ad
fix(front): only show participants & announcements menu items to organizers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 08:15:11 +01:00
Thomas Citharel 89d1ee42f4
fix(backend): handle ecto errors when fetching and create entities
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 08:06:16 +01:00
Thomas Citharel f1084c101f
fix(activitypub): fix receiving comments
Should fix race conditions and actors deleted of received comments

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-05 08:02:09 +01:00
Thomas Citharel 749e90b6c9 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1495
2023-12-05 06:51:42 +00:00
Milo Ivir a26ff98b13 Translated using Weblate (Croatian)
Currently translated at 86.2% (1414 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-04 19:30:01 +01:00
Milo Ivir 1683f01662 Translated using Weblate (Croatian)
Currently translated at 53.7% (143 of 266 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2023-12-04 19:30:01 +01:00
Milo Ivir aa7f870a79 Translated using Weblate (Croatian)
Currently translated at 86.2% (1414 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-04 19:18:45 +01:00
Milo Ivir 1ce34eaffb Translated using Weblate (Croatian)
Currently translated at 86.0% (1412 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-04 19:13:15 +01:00
Milo Ivir 5e7edc0784 Translated using Weblate (Croatian)
Currently translated at 85.9% (1410 of 1640 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-12-04 19:10:07 +01:00
Milo Ivir d777d8874c Translated using Weblate (Croatian)
Currently translated at 80.0% (284 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-12-04 19:10:06 +01:00
Milo Ivir 0118d974e9 Translated using Weblate (Croatian)
Currently translated at 100.0% (91 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/hr/
2023-12-04 19:10:06 +01:00
Thomas Citharel 5677f8170f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1494
2023-12-04 18:01:07 +00:00
Milo Ivir 805e931e53 Translated using Weblate (Croatian)
Currently translated at 97.8% (89 of 91 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/hr/
2023-12-04 18:47:51 +01:00
778a69cd d8ba0bc12c Merge remote-tracking branch 'origin/main' 2023-12-04 16:08:22 +01:00
Thomas Citharel c8f85df3db Merge branch 'fixes' into 'main'
make recipient field placeholder translatable and an AP fix

Closes #1378

See merge request framasoft/mobilizon!1493
2023-12-04 13:28:23 +00:00
Thomas Citharel 5e8f9afb62
fix(activitypub): compact ical:status in activitystream data
Was kept for no other reason than disambiguation with https://schema.org/status, but no need if we
specify the correct alias in the context.

Keeps a fallback for older versions compatibility

Closes #1378

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-04 14:05:27 +01:00
Thomas Citharel 10ce812660
fix(front): make recipient field placeholder translatable
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-04 13:49:42 +01:00
Thomas Citharel 24d92f60f7
chore(release): 4.0.0-rc.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-04 09:33:02 +01:00
Thomas Citharel 3851392225 Merge branch 'suspension-fixes' into 'main'
fix(backend): only send suspension notification emails when actor's suspended and not just deleted

See merge request framasoft/mobilizon!1492
2023-12-04 08:30:06 +00:00
Thomas Citharel 9e41bc1ad6
fix(backend): only send suspension notification emails when actor's suspended and not just deleted
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-04 09:02:38 +01:00
Thomas Citharel 51e1ed642c Merge branch 'nginx' into 'main'
docs(nginx): improve nginx configuration

See merge request framasoft/mobilizon!1490
2023-12-04 07:41:59 +00:00
Thomas Citharel 6c992cade5
docs(nginx): improve nginx configuration
Remove etag off and improve Cache-Control

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-04 08:18:45 +01:00
778a69cd 2d69dc2076 Merge remote-tracking branch 'origin/main' 2023-12-03 23:40:50 +01:00
Thomas Citharel 3a2c6afc0d Merge branch 'fixes' into 'main'
Two last-minute fixes

Closes #1376 et #1357

See merge request framasoft/mobilizon!1489
2023-12-03 17:34:33 +00:00
Thomas Citharel 32caebb1d0
fix: prevent sending group physical address if it's empty and allow empty text for timezone
As old addresses don't hold TZ information

Closes #1357

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-03 18:14:00 +01:00
Thomas Citharel 8795576865
fix(activitypub): add missing externalParticipationUrl context
Closes #1376

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-03 17:51:05 +01:00
778a69cd 9a10666aa8 reduce nix output path size by 60MB 2023-12-02 04:26:04 +01:00
778a69cd bedada2efc more stable override for ex_cldr 2023-12-02 03:54:04 +01:00
778a69cd 059814f751 remove unneded reference to node-packages.nix 2023-12-02 02:17:49 +01:00
778a69cd 87fd975182 bump version used in nix to 4.0.0 2023-12-01 21:21:02 +01:00
778a69cd 0ff5418978 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)
  → 'github:NixOS/nixpkgs/e92039b55bcd58469325ded85d4f58dd5a4eaf58' (2023-11-29)
2023-12-01 21:10:12 +01:00
778a69cd 69fe7b44c5 nixpkgs-fmt 2023-12-01 20:49:47 +01:00
778a69cd 4bd97ebfcb Merge remote-tracking branch 'origin/main' 2023-12-01 20:27:18 +01:00
Thomas Citharel 0d31872737
Release 4.0.0-beta.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 17:00:50 +01:00
Thomas Citharel 55287b016f Merge branch 'fix-tests' into 'main'
test: fix tests using verified routes

See merge request framasoft/mobilizon!1488
2023-12-01 15:59:04 +00:00
Thomas Citharel 5fcf3d5267
test: fix tests using verified routes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 16:34:48 +01:00
Thomas Citharel 6000c41364 Merge branch 'fixes' into 'main'
refactor: use Phoenix verified routes

See merge request framasoft/mobilizon!1487
2023-12-01 10:30:11 +00:00
Thomas Citharel d831dff9fc
feat(front): add dedicated page and route for event announcements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:56 +01:00
Thomas Citharel 11e42d6601
feat(background): add a job to refresh participant stats
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:56 +01:00
Thomas Citharel 6df16ef114
chore(i18n): update backend translations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:55 +01:00
Thomas Citharel 3f2a88fcfa
fix: fix creating participant stats
Map.update/4 does not pass initial value to callback function, so increasing for a new role would
set 0 instead of 1

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:54 +01:00
Thomas Citharel 9e6b232a78
feat: add links to cancel anonymous participations in emails
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:53 +01:00
Thomas Citharel b315e1d7ff
refactor: use Phoenix verified routes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-12-01 11:29:53 +01:00
778a69cd 696f0e4901 Merge remote-tracking branch 'origin/main' 2023-12-01 01:34:37 +01:00
Thomas Citharel 4f15535fa9
ci(docker): fix docker build for pre-releases
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-30 10:03:48 +01:00
Thomas Citharel 2e4b70cf93
Release 4.0.0-beta.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-30 09:55:23 +01:00
Thomas Citharel 1a4c4b41e3
Merge branch 'mobilizon-fix-full-address-autocomplete-not-loading-result' 2023-11-30 09:46:23 +01:00
Thomas Citharel 49b070d939
fix(api): allow localhost as a valid uri host for applications
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-30 09:45:25 +01:00
summersamara e4607567ce fix error when creating a group without a valid address
- make address input required in the group create- and group settings-view

potsda.mn/mobilizon#27
2023-11-28 10:48:19 +01:00
Thomas Citharel f81804d57f resolve result promise in a shorter way 2023-11-27 16:43:12 +00:00
summersamara 83da88ca28 fix fullAddressAutocomplete component not loading results
- introduce refetch method to fetch the result when query variables change
2023-11-27 16:52:23 +01:00
summersamara c0d530be92 fix full address autocomplete component
potsda.mn/mobilizon#28
2023-11-27 16:13:57 +01:00
778a69cd 1eb3afca56 Merge remote-tracking branch 'origin/main' 2023-11-24 12:43:48 +01:00
778a69cd bd89ca3355 rerun .#update, forgot to do that after last merge
Also remove npm2nix stage, as the lock file should be good to go now
2023-11-24 12:22:56 +01:00
Thomas Citharel ad597db271 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1485
2023-11-24 07:05:32 +00:00
Renne Rocha 9f78c73c68 Translated using Weblate (Portuguese (Brazil))
Currently translated at 32.5% (115 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pt_BR/
2023-11-24 05:22:14 +01:00
Fábio Tramasoli 802ab78968 Translated using Weblate (Portuguese (Brazil))
Currently translated at 47.4% (775 of 1632 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pt_BR/
2023-11-24 05:22:14 +01:00
778a69cd 0530612b78 even stricter source directory filtering for better caching 2023-11-23 20:00:26 +01:00
summersamara d31a5b68ec Merge remote-tracking branch 'upstream/main' 2023-11-23 16:39:53 +01:00
Thomas Citharel 0ed48d5b0a Merge branch 'fix-docker-development' into 'main'
Fix docker development:

See merge request framasoft/mobilizon!1483
2023-11-23 14:53:53 +00:00
summersamara bfb7e3ca40 introduce VITE_HOST env var and pass it to the node watcher vite --host 2023-11-23 15:33:31 +01:00
Thomas Citharel 42ddf3f653 Merge branch 'ci-build' into 'main'
ci: Release on multiple distributions & fix Docker multiple-step build

Closes #1012

See merge request framasoft/mobilizon!1484
2023-11-23 13:35:45 +00:00
Thomas Citharel f34099d384
build(docker): optimize image size
By executing the curl call directly as the nobody user

Closes #1012

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-23 14:16:47 +01:00
Thomas Citharel b2bacbf6eb
build: downgrade Sentry since it doesn't want to compile
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-23 11:20:38 +01:00
Thomas Citharel cd53062c01
fix: add a final fallback if we have default_language: nil in instance config
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-23 11:20:38 +01:00
Thomas Citharel 262d1fcd4d
ci: Release on multiple distributions & fix Docker multiple-step build
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-23 11:20:37 +01:00
summersamara 970597876b Fix docker development:
- Specify elixir version (1.15) in Dockerfile base image

- Add npm package to Dockerfile

- Fix vite server unreachable from outside the docker container:
  issue https://framagit.org/framasoft/mobilizon/-/issues/1225
2023-11-22 20:57:50 +01:00
summersamara d668067fee fix docker development environment: Add npm package to Docker image + Add vite server config 2023-11-22 20:14:08 +01:00
Thomas Citharel 797eb2334b Merge branch 'passed-events-related' into 'main'
fix: don't show passed/finished events in related events section

See merge request framasoft/mobilizon!1482
2023-11-22 16:19:13 +00:00
summersamara 8a1b122711 remove unnecessary function 2023-11-22 16:45:43 +01:00
778a69cd 55dfb554a4 make flake output truly independent of platform 2023-11-22 12:38:33 +01:00
778a69cd 115a094b88 add nixos test for better testing, fix runtime issue 2023-11-22 12:38:17 +01:00
778a69cd 1ab82cdfb8 Merge remote-tracking branch 'origin/main' 2023-11-21 23:30:30 +01:00
summersamara 69e4a5c532 fix: don't show passed/finished events in related events section 2023-11-21 22:55:35 +01:00
778a69cd 599c4ce0f5 remove unnecessary logging 2023-11-21 22:42:27 +01:00
778a69cd 257da414bf flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e44462d6021bfe23dfb24b775cc7c390844f773d' (2023-11-12)
  → 'github:NixOS/nixpkgs/e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)
2023-11-21 22:31:42 +01:00
summersamara 7d7f925907 Fix: don't show passed/finished events in related events section
potsda.mn/mobilizon#19
2023-11-21 22:28:04 +01:00
778a69cd 0a300ea5e5 Merge remote-tracking branch 'origin/main' 2023-11-21 22:09:20 +01:00
Thomas Citharel 1334bad8a8 Merge branch 'fixes' into 'main'
various fixes

Closes #888

See merge request framasoft/mobilizon!1481
2023-11-21 16:52:40 +00:00
Thomas Citharel c731f0f084
test: fix tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 17:29:58 +01:00
Thomas Citharel f47889b5e0
fix: set correct watcher config for E2E tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 16:58:30 +01:00
Thomas Citharel 5e86ef1e8c
fix(front): hide all categories card if we don't have even one
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 16:40:34 +01:00
Thomas Citharel 16cd377357
fix: fix Dockerfile copying assets path
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 16:40:33 +01:00
Thomas Citharel 5602164c62
build: replace @vueuse/head with @unhead/vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 16:40:32 +01:00
Thomas Citharel 99c80c6490
chore: upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 16:40:32 +01:00
Thomas Citharel d7daafc4ea
fix(export): fix iCalendar export description HTML conversion
Paragraphs and line breaks are now properly handled when converting from HTML to text

Closes #888

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 15:40:34 +01:00
Thomas Citharel b97f1c997f
refactor: use dedicated email for event announcements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 15:28:56 +01:00
Thomas Citharel 18314956ca
fix(api): fix allowing posting event private announcement
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 12:00:04 +01:00
Thomas Citharel 6ecfa48511
chore(i18n): add missing translation key
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-21 11:22:27 +01:00
Thomas Citharel 1f3f3e0d81 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1480
2023-11-20 17:58:39 +00:00
Weblate 9aa9cd2056 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2023-11-20 18:57:15 +01:00
Thomas Citharel 1228ec122f
ci: fix handling pages deploy with existing public folder
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-20 18:57:07 +01:00
Thomas Citharel 70e9ce0a26
chore(i18n): update translation templates
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-20 18:55:14 +01:00
FoW a11fab6e6d
Added translation using Weblate (Korean) 2023-11-20 18:46:49 +01:00
TA d065193546
Translated using Weblate (Indonesian)
Currently translated at 45.2% (730 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/id/
2023-11-20 18:46:31 +01:00
Jiri Podhorecky d702ca203c
Translated using Weblate (Czech)
Currently translated at 98.2% (1583 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-11-20 18:46:31 +01:00
Jiri Podhorecky 9224f89d9d
Translated using Weblate (Czech)
Currently translated at 98.0% (1581 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-11-20 18:46:31 +01:00
Jiri Podhorecky c14dffb234
Translated using Weblate (Czech)
Currently translated at 97.7% (1576 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-11-20 18:46:30 +01:00
Thomas Citharel dcfcf066f9 Merge branch 'feat-private-messages' into 'main'
Private messages

Closes #496

See merge request framasoft/mobilizon!1477
2023-11-20 16:58:20 +00:00
Thomas Citharel 7ef85fe19b
fix(announcements): load group announcements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-20 17:35:37 +01:00
778a69cd 5b2fb5dde7 use gender-neutral language for german translation 2023-11-20 16:05:47 +01:00
Thomas Citharel b635937091
fix: various fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-20 09:35:21 +01:00
778a69cd b441fa3761 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/85f1ba3e51676fa8cc604a3d863d729026a6b8eb' (2023-11-04)
  → 'github:NixOS/nixpkgs/e44462d6021bfe23dfb24b775cc7c390844f773d' (2023-11-12)
2023-11-16 09:33:35 +01:00
778a69cd a755fd39b7 Merge remote-tracking branch 'origin/main' 2023-11-16 09:23:00 +01:00
Thomas Citharel 074099a36e Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1478
2023-11-15 18:18:28 +00:00
Jiri Podhorecky a7d70d5b44 Translated using Weblate (Czech)
Currently translated at 97.1% (1566 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-11-15 19:16:11 +01:00
Thomas Citharel 3c288c5858
fix: build pictures at correct location and fix Plug.Static
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 18:15:21 +01:00
Thomas Citharel f24866012b
test: fix ActivityPub headers test
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 17:30:49 +01:00
Thomas Citharel 8d11073965
build: only run ecto create & migrate & tz_world update on prepare_test task, not main test one
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 16:37:22 +01:00
Thomas Citharel e051df1ab3
test: fix unit backend tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 16:35:40 +01:00
Thomas Citharel 5d65981dcd
ci: install python3 instead of python
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 14:53:30 +01:00
Thomas Citharel c255ceacbb
chore: fix prettier configuration and run it
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 14:46:09 +01:00
Thomas Citharel 105d3b5814
test: fix front-end tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-15 12:38:36 +01:00
Thomas Citharel bfbc299f37
test: fix histoire configuration
Nearly

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 18:59:28 +01:00
Thomas Citharel 2e72f6faf4
build: switch from yarn to npm to manage js dependencies and move js contents to root
yarn v1 is being deprecated and starts to have some issues

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 17:24:42 +01:00
Thomas Citharel 32055122c3
ci: bump node version in CI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 15:35:37 +01:00
Thomas Citharel 3d9beaa1ca
chore(deps): upgrade dependencies
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 14:24:19 +01:00
Thomas Citharel 435bd9dccc
build: replace @pluralsh/socket with @framasoft/socket
For https://github.com/pluralsh/absinthe-socket/issues/13

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 14:24:18 +01:00
Thomas Citharel 1d0398df42
chore: update Sobelow security ignores
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 14:24:18 +01:00
Thomas Citharel ec397aa489
build(deps): replace absinthe socket library with fork
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 14:24:17 +01:00
Thomas Citharel b5672cee7e
WIP
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 14:24:17 +01:00
Thomas Citharel 0613f7f736
fix(histoire): fix URL to Framapiaf avatars
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-11-14 12:46:14 +01:00
778a69cd 4259f47ebd Merge remote-tracking branch 'origin/main' 2023-11-07 10:49:30 +01:00
Thomas Citharel 3574256025 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1476
2023-11-07 07:52:38 +00:00
FoW c529a83ff4 Added translation using Weblate (Korean) 2023-11-07 08:50:22 +01:00
Thomas Citharel 7ca54d2b91 Merge branch 'elixir-1.15' into 'main'
update geo_postgis to 3.5.0 for Elixir 1.15 compat

See merge request framasoft/mobilizon!1475
2023-11-07 07:50:14 +00:00
778a69cd 3936eb4cc5 chore(deps): update geo_postgis to 3.5.0 for Elixir 1.15 compat 2023-11-06 18:44:53 +01:00
778a69cd e7b441493d regenerate mix.nix with newer mix2nix, use elixir 1.15 2023-11-06 18:22:35 +01:00
778a69cd 036e2924b4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)
  → 'github:NixOS/nixpkgs/85f1ba3e51676fa8cc604a3d863d729026a6b8eb' (2023-11-04)
2023-11-06 18:17:25 +01:00
778a69cd 970420760b chore(deps): update geo_postgis to 3.5.0 for Elixir 1.15 compat 2023-11-06 18:14:20 +01:00
778a69cd 4bc52f527d use default beamPackages for nix build 2023-11-06 18:09:27 +01:00
778a69cd a0b001576b make flake generic over platform 2023-11-06 17:56:12 +01:00
778a69cd 4fb5be561f provide passthru.elixirPackage as derivation passthru 2023-11-06 00:24:08 +01:00
778a69cd e56858ccc8 use instance slogan in Home for non-logged-in users instead of description 2023-11-04 18:49:09 +01:00
778a69cd ef95e543f1 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0' (2023-10-19)
  → 'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)
2023-11-02 17:02:04 +01:00
778a69cd 2527ea7764 rework mobilizonLogosOverride, patch logos at build time now 2023-11-02 16:53:29 +01:00
778a69cd e31bb5d615 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6500b4580c2a1f3d0f980d32d285739d8e156d92' (2023-09-25)
  → 'github:NixOS/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0' (2023-10-19)
2023-10-23 14:38:14 +02:00
778a69cd cea9b15361 mobilizonPatchLogos: fix path for logo.svg 2023-10-23 14:26:23 +02:00
778a69cd f7892cfc41 Merge remote-tracking branch 'origin/main' 2023-10-23 14:16:51 +02:00
Thomas Citharel 63a167b167 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1474
2023-10-23 06:27:30 +00:00
Jakub Urbanowicz d62c31e769 Translated using Weblate (Polish)
Currently translated at 100.0% (264 of 264 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2023-10-23 01:11:38 +02:00
Jaime Marquínez Ferrándiz ee5ee8d2f1 Translated using Weblate (Spanish)
Currently translated at 100.0% (79 of 79 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/es/
2023-10-22 20:27:29 +02:00
Jaime Marquínez Ferrándiz 66c49e4d26 Translated using Weblate (Spanish)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/
2023-10-22 20:27:29 +02:00
Jakub Urbanowicz a8ea217c0b Translated using Weblate (Polish)
Currently translated at 99.2% (262 of 264 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2023-10-22 10:00:45 +02:00
Jakub Urbanowicz 42537afc6e Translated using Weblate (Polish)
Currently translated at 100.0% (79 of 79 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pl/
2023-10-22 06:28:38 +02:00
Jakub Urbanowicz fb0a74e5ee Translated using Weblate (Polish)
Currently translated at 97.7% (258 of 264 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2023-10-22 06:28:37 +02:00
Jakub Urbanowicz 2458076650 Translated using Weblate (Polish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2023-10-22 06:28:37 +02:00
778a69cd c9b6653bf2 mobilizonPatchLogos: patch logo.svg 2023-10-20 20:43:18 +02:00
778a69cd 4401f32ca8 put back the regular Mobilizon logo as a default 2023-10-20 20:15:34 +02:00
778a69cd afe1cb57e3 provide mobilizonPatchLogos as a nix flake library function 2023-10-20 11:50:11 +02:00
778a69cd dad52ae432 add flake checks 2023-10-20 11:48:09 +02:00
778a69cd dad96e81bd Merge remote-tracking branch 'origin/main' 2023-10-18 14:27:10 +02:00
Thomas Citharel f8f9b4d231 Merge branch 'docs/readme-for-devs' into 'main'
docs(dev.md): keep some info about structure

See merge request framasoft/mobilizon!1473
2023-10-16 16:01:58 +00:00
Jérémy Dufraisse d130b156eb docs(dev.md): keep some info about structure 2023-10-16 14:58:18 +02:00
Thomas Citharel f451eab140 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1472
2023-10-16 10:12:50 +00:00
coronabond b5e9f62b26 Translated using Weblate (Italian)
Currently translated at 99.4% (355 of 357 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-10-16 10:36:01 +02:00
Thomas Citharel abeceba397 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1471
2023-10-16 07:54:23 +00:00
coronabond e8e1a6291b Translated using Weblate (Italian)
Currently translated at 99.4% (355 of 357 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-10-15 16:56:20 +02:00
coronabond 84fc175875 Translated using Weblate (Italian)
Currently translated at 82.1% (217 of 264 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/it/
2023-10-15 11:22:25 +02:00
coronabond 5b6438860f Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-15 11:22:24 +02:00
Vri 7732f87e0b Translated using Weblate (German)
Currently translated at 100.0% (79 of 79 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/de/
2023-10-14 02:00:48 +02:00
778a69cd 224b5607b6 Merge remote-tracking branch 'origin/main'
nix run .#update
2023-10-13 14:07:21 +02:00
Thomas Citharel 2fe7028482 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1468
2023-10-13 11:05:05 +00:00
coronabond 5e3dedb2dd Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-13 12:40:06 +02:00
coronabond afe4dd2ff8 Translated using Weblate (Italian)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-10-13 12:40:06 +02:00
coronabond fa0ae83a79 Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-13 12:40:06 +02:00
coronabond 181a5a7955 Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-13 12:40:06 +02:00
coronabond 827caa34e9 Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-13 12:40:06 +02:00
coronabond d08d350596 Translated using Weblate (Italian)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-10-13 12:40:06 +02:00
coronabond e9d38c20c2 Translated using Weblate (Italian)
Currently translated at 89.8% (1448 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-10-13 12:40:06 +02:00
coronabond a4578f376e Translated using Weblate (Italian)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-10-13 12:40:06 +02:00
Thomas Citharel 0f103df25d Merge branch 'l10n-fixes' into 'main'
fix(i18n): fix typos in translation sources

See merge request framasoft/mobilizon!1470
2023-10-13 10:39:54 +00:00
Thomas Citharel d7ad934a74
chore(i18n): update gettext dependency and regenerate translation files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-10-13 11:48:37 +02:00
Thomas Citharel 2ecd55df96
fix(i18n): fix typos in translation sources
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-10-13 10:46:09 +02:00
778a69cd 7cd4b34cb8 Merge remote-tracking branch 'origin/main' 2023-10-11 17:42:31 +02:00
Thomas Citharel 5681e6e8b8 Merge branch 'fix-ics-status' into 'main'
feat(export): add event status in iCalendar exports

See merge request framasoft/mobilizon!1469
2023-10-11 15:36:30 +00:00
Thomas Citharel 7a1bfcac49
feat(export): add event status in iCalendar exports
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-10-11 17:08:31 +02:00
Thomas Citharel da7a08d130
Merge branch 'mobilizon-derek' 2023-10-11 16:04:06 +02:00
778a69cd 0b7642b161 Merge remote-tracking branch 'origin/main' 2023-10-10 11:43:09 +02:00
Thomas Citharel 7e4310b293 Merge branch 'fix-docker-smtp-tls' into 'main'
fix(docker): allow to configure SMTP TLS

Closes #1363

See merge request framasoft/mobilizon!1467
2023-10-09 17:01:58 +00:00
Thomas Citharel 2ecdf05bf9
fix(docker): allow to configure SMTP TLS
The :tls configuration was not configurable with ENV variables, so it couldn't be changed to
:always, :never or :if_available

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-10-09 17:33:02 +02:00
Thomas Citharel 2cf4554345 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1466
2023-10-09 13:57:36 +00:00
Thomas Citharel c7ba0039f5 Translated using Weblate (French)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr/
2023-10-09 15:35:50 +02:00
778a69cd 6aa5c06462 Merge remote-tracking branch 'origin/main' 2023-10-07 18:59:40 +02:00
summersamara bd46f1fea1 Fix issue#7: resize start-time badge in Event card
Closes #7
2023-10-07 18:25:55 +02:00
summersamara 81c85df847 Fix issue#4: Event picture fills the card.
Closes #4
2023-10-07 18:14:56 +02:00
summersamara b624d6e4ba Remove Upcoming Online events section from homepage 2023-10-07 17:55:48 +02:00
summersamara 7abfcf2b1c Fix issue#6: compressed group's pfp.
Closes #6
2023-10-07 17:52:45 +02:00
778a69cd 240dfb4e40 remove colorful blobs from startpage
Closes #10
2023-10-07 17:29:19 +02:00
Thomas Citharel c0b3217e9a Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1465
2023-10-07 11:29:09 +00:00
Jakub Urbanowicz 46ffc8ceb6 Translated using Weblate (Polish)
Currently translated at 100.0% (1612 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-10-06 19:43:35 +02:00
Thomas Citharel 8a6d38c051 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1464
2023-10-06 13:01:27 +00:00
Jakub Urbanowicz f0d78079e1 Translated using Weblate (Polish)
Currently translated at 98.8% (1593 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-10-06 13:07:48 +02:00
Derek Zhou 02af9a437d add simplified Chinese mapping 2023-10-04 01:04:16 +00:00
778a69cd b578195553 Merge remote-tracking branch 'origin/main' 2023-10-03 20:41:18 +02:00
summersamara 70c4488f1e issue#8: Customized instance logo
- Install vite-svg-loader package
- Load svg logo from assets/logo.svg
2023-10-03 20:05:24 +02:00
summersamara a883f2467a issue#9: Increase the limit of the displayed events on home page to the max (99) 2023-10-03 18:03:41 +02:00
summersamara 49a9d27020 Fix issue#3: Display Events cards in full-width on mobile 2023-10-03 16:35:26 +02:00
summersamara 6bfaf97284 issue#2 move the search input to the nav bar 2023-10-03 15:47:33 +02:00
summersamara 7f77694d20 Fix issue#5: Bug in updating Group Settings.
Change the default value of address.timezone property.
2023-10-03 12:25:32 +02:00
summersamara 82e9493f44 Fix :public_key.cacerts_load error 2023-10-03 11:35:08 +02:00
Thomas Citharel 04315f91ea Merge branch 'sandro-main-patch-56891' into 'main'
Fix typo in ctl help text

See merge request framasoft/mobilizon!1461
2023-10-02 05:44:22 +00:00
Sandro 495d163a44 Fix typo in ctl help text 2023-10-02 02:09:56 +00:00
778a69cd 8b1598f8cc flake.lock: Update
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/d90c75e8319d0dd9be67d933d8eb9d0894ec9174' (2023-06-19)
  → 'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/db9208ab987cdeeedf78ad9b4cf3c55f5ebd269b' (2023-09-08)
  → 'github:NixOS/nixpkgs/6500b4580c2a1f3d0f980d32d285739d8e156d92' (2023-09-25)
2023-09-28 12:30:18 +02:00
778a69cd 61d98308f4 Merge remote-tracking branch 'origin' 2023-09-28 12:27:34 +02:00
Thomas Citharel a5c260fb52 Merge branch 'typos' into 'main'
Fix typos

See merge request framasoft/mobilizon!1460
2023-09-25 06:11:45 +00:00
Sandro Jäckel 66e89b9ee2
Fix typos 2023-09-25 01:26:02 +02:00
Thomas Citharel 017bffc155 Merge branch 'es/update-texts' into 'main'
fix(i18n): update Spanish translations

See merge request framasoft/mobilizon!1459
2023-09-22 08:20:17 +00:00
Gonzalo Arreche cfebc355de
fix(i18n): update spanish translations
This fixes some issues with spanish translations, and tries to improve
consistency within texts.
2023-09-22 01:06:58 -03:00
Thomas Citharel e09910852a Merge branch 'refresh-remote-instance-actor-after-relay-follow' into 'main'
feat(federation): expose public activities as announcements in relay outbox and refresh profile after follow

See merge request framasoft/mobilizon!1458
2023-09-20 05:46:53 +00:00
Thomas Citharel 85e4715412
feat(federation): expose public activities as announcements in relay outbx & rfrsh profile aftr fllw
Also change ActorView to send proper HTTP error codes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-19 18:07:18 +02:00
Thomas Citharel daa68533d5 Merge branch 'fix/docker-mail-tls' into 'main'
fix(docker): convert smtp tls sni to char list

Closes #1352

See merge request framasoft/mobilizon!1456
2023-09-19 11:31:36 +00:00
Hugo Renard b3be7c6a20
fix(docker): convert smtp tls sni to char list
Signed-off-by: Hugo Renard <hugo.renard@protonmail.com>
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-19 11:45:23 +02:00
Thomas Citharel 6797ceea4b Merge branch 'fix/normalize-suggested-username' into 'main'
fix: normalize suggested username

See merge request framasoft/mobilizon!1457
2023-09-19 06:59:37 +00:00
Thomas Citharel 9a563efcff Merge branch 'fix/docker-sitemap' into 'main'
fix(docker): add sitemap folder

See merge request framasoft/mobilizon!1454
2023-09-18 15:05:45 +00:00
Hugo Renard bd38449eda
fix(docker): add sitemap folder
Signed-off-by: Hugo Renard <hugo.renard@protonmail.com>
2023-09-18 14:57:50 +02:00
Hugo Renard 4960387174
fix: normalize suggested username
oauth providers can be less strict

Signed-off-by: Hugo Renard <hugo.renard@protonmail.com>
2023-09-18 14:56:21 +02:00
778a69cd 2b01de96e6 Merge remote-tracking branch 'origin/main' 2023-09-14 11:35:16 +02:00
Thomas Citharel 8324a7b4a7 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1453
2023-09-13 08:36:22 +00:00
Timur Seber ba5f8f8a12 Translated using Weblate (Tatar)
Currently translated at 0.1% (1 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/tt/
2023-09-13 07:24:18 +02:00
Timur Seber cefdaf84f1 Added translation using Weblate (Tatar) 2023-09-13 03:12:57 +02:00
Milo Ivir e510e09e4a Translated using Weblate (Croatian)
Currently translated at 86.9% (1401 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-09-12 23:22:26 +02:00
778a69cd 7522bb6134 add disclaimer about this fork to the readme 2023-09-12 18:06:19 +02:00
778a69cd 6e456a80f3 use nixos-unstable for nixpkgs 2023-09-10 10:52:50 +02:00
778a69cd c8398b07a9 use nixpkgs master for now 2023-09-08 13:45:53 +02:00
778a69cd 5b910788b1 use upsream ex_cldr, remove some outdated overrides 2023-09-08 13:32:47 +02:00
778a69cd 45b63be9f3 remove outdated compileFlags from nix expression 2023-09-08 12:17:17 +02:00
778a69cd a74c99a731 bump version in nix expression to 3.2.0 2023-09-08 12:08:02 +02:00
778a69cd 54e09ed919 Merge remote-tracking branch 'origin/main' 2023-09-08 11:55:18 +02:00
Thomas Citharel 49e4174f85
chore(release): release 3.2.0
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 13:17:47 +02:00
Thomas Citharel 384864cc82 Merge branch 'fixes' into 'main'
fix(auth): small front fixes in 3rd-party auth provider callback

See merge request framasoft/mobilizon!1451
2023-09-07 11:12:20 +00:00
778a69cd f273c69e75 Merge remote-tracking branch 'origin/main' 2023-09-07 12:48:52 +02:00
Thomas Citharel 3d63c12e88
fix(config): rollback Mailer tls setting to :never by default
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 12:41:42 +02:00
Thomas Citharel 7e4934513a
feat(auth): pre-initialize registration fields with information from 3rd-party provider
When using a 3rd-party auth provider, we now use the given username & display name information from
the provider to fill fields from the profile RegistrationView.

Partly addresses #1105

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 12:18:46 +02:00
Thomas Citharel 7e13e2baa7
fix(front): fixes in EditIdentity view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 11:57:09 +02:00
Thomas Citharel bde7206a1c
fix(auth): small front fixes in 3rd-party auth provider callback
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 11:56:49 +02:00
Thomas Citharel 28c4ae2e48 Merge branch 'docker-fix-port' into 'main'
fix(docker): fix entrypoint PostgreSQL extensions creations not using MOBILIZON_DATABASE_PORT

See merge request framasoft/mobilizon!1450
2023-09-07 07:27:48 +00:00
Thomas Citharel 9b4991844e
fix(docker): fix entrypoint PostgreSQL extensions creations not using MOBILIZON_DATABASE_PORT
Final step to complete #1321

Closes #1321

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-07 09:03:53 +02:00
Thomas Citharel cea66094d0 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1449
2023-09-06 12:38:22 +00:00
Thomas Citharel b755908e00 Translated using Weblate (Spanish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/
2023-09-06 14:15:14 +02:00
778a69cd 73aa8bd0f1 Merge remote-tracking branch 'origin/main' 2023-09-06 14:13:41 +02:00
Thomas Citharel 97439535f2
chore(release): release 3.2.0-beta.5
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-06 11:29:04 +02:00
Thomas Citharel 1c1afcb069 Merge branch 'fixes' into 'main'
Various fixes

Closes #1321

See merge request framasoft/mobilizon!1448
2023-09-06 08:24:39 +00:00
Thomas Citharel f28109ad50
fix(sitemap): save generated sitemaps in configurable directory
Previously in priv/static, now by default in production in /var/lib/mobilizon/sitemap and
configurable through the $MOBILIZON_SITEMAP_PATH ENV variable

Closes #1321

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 20:04:26 +02:00
Thomas Citharel 13099e0f11
fix(docker): make Docker entrypoint port configurable via $MOBILIZON_DATABASE_PORT
See https://framagit.org/framasoft/mobilizon/-/issues/1321

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 19:47:08 +02:00
Thomas Citharel 8c8daae006
chore(docker): bump Elixir version for Docker images
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 19:45:19 +02:00
Thomas Citharel 895378a96b
fix(front): fix fetching and rendering profile mentions and fetching tags
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 19:28:36 +02:00
778a69cd 71d2a50356 Merge remote-tracking branch 'origin/main' 2023-09-05 17:41:49 +02:00
Thomas Citharel a8ddc90ea2
chore(release): fix a typo in CHANGELOG.md
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 16:37:01 +02:00
Thomas Citharel 2881717f6d
chore(release): release 3.2.0-beta.4
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 16:36:22 +02:00
Thomas Citharel f3ea98822b Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1447
2023-09-05 14:34:23 +00:00
Thomas Citharel 23adeaee47
ci(release): bump release buildpack to 1.15.5-erlang-26.0.2-debian-buster
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 16:33:41 +02:00
Thomas Citharel 92b222b091
fix(back): allow any other type of actor to be suspended
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 16:03:45 +02:00
Thomas Citharel 8c14ba441c
fix(front): don't return promise if result is not finished loading for tags
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 15:55:13 +02:00
Thomas Citharel 31b2d065a9
fix(front): fix getting result from interactable object in InteractView
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 15:52:27 +02:00
Thomas Citharel cfc984345e
fix(back): only try to insert activities for groups
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-05 15:35:04 +02:00
778a69cd 311c989167 Merge remote-tracking branch 'origin/main'
nix run .#update
2023-09-05 11:36:53 +02:00
Thomas Citharel b86928b6b3
chore(release): release 3.2.0-beta.3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-04 14:09:00 +02:00
Thomas Citharel 814927a213
chore(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-04 14:08:37 +02:00
Thomas Citharel ed5232bb84 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1446
2023-09-04 07:20:55 +00:00
Vri 626cdc01b8 Translated using Weblate (German)
Currently translated at 92.9% (1498 of 1612 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-09-03 20:40:09 +02:00
778a69cd 25836b5971 Merge remote-tracking branch 'origin/main' 2023-09-02 14:48:50 +02:00
Thomas Citharel 19f595c2d8 Merge branch 'external-events' into 'main'
External events

See merge request framasoft/mobilizon!1229
2023-09-01 16:42:29 +00:00
Thomas Citharel f6611e8eb5
feat(back): add admin setting to disable external event feature
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 18:16:40 +02:00
Thomas Citharel af670f3947
fix(i18n): add missing translations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 18:16:39 +02:00
Luca Eichler 2de6937407
feat: Add option to link an external registration provider for events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 18:16:35 +02:00
Thomas Citharel 4fb1282e76 Merge branch 'allow-group-creation-with-HTML-description-and-location' into 'main'
improve group creation view

See merge request framasoft/mobilizon!1248
2023-09-01 14:06:44 +00:00
setop 3f60174877 improve group creation view 2023-09-01 14:06:44 +00:00
Thomas Citharel 4ce79f5136
chore(release): release 3.2.0-beta.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 14:08:04 +02:00
Thomas Citharel 7c019e59c6 Merge branch 'fixes' into 'main'
ci: fix Gitlab CI exunit run by separating mix compile and tz_world.update

See merge request framasoft/mobilizon!1445
2023-09-01 10:51:35 +00:00
778a69cd 239ca025bb Merge remote-tracking branch 'origin/main' 2023-09-01 12:43:33 +02:00
Thomas Citharel 84f62cd043
fix(front): fix behavior of local toggle for profiles & groups view depending on domain value
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 12:17:27 +02:00
Thomas Citharel 5999252e02
ci: fix Gitlab CI exunit run by separating mix compile and tz_world.update
Reference https://github.com/kimlai/tz_world/issues/33

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 12:14:36 +02:00
Thomas Citharel 89b57a5ec1
chore(release): release 3.2.0-beta.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-09-01 11:50:10 +02:00
Thomas Citharel bd4f61cc1a Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1444
2023-09-01 06:45:51 +00:00
ewm fdda088b3d Translated using Weblate (Polish)
Currently translated at 99.0% (1591 of 1607 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-09-01 01:21:04 +02:00
Weblate 3d4999e7e2 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2023-08-31 23:16:58 +02:00
Thomas Citharel e3d9a76074 Merge branch 'report-multiple-events' into 'main'
feat(reports): allow reports to hold multiple events

See merge request framasoft/mobilizon!1407
2023-08-31 21:16:40 +00:00
Thomas Citharel afd2ffe722
fix(reports): make front-end handle nullified reported_id and reported_id
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 19:06:40 +02:00
Thomas Citharel b9a165a7fc
feat(reports): show suspended status next to reported profile
And only show the suspend button if the profile isn't already suspended (or the user disabled)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 19:04:12 +02:00
Thomas Citharel 4f530cabcf
fix(reports): remove on delete cascade for reports
Deleting an actor should not remove the reports

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 19:04:12 +02:00
Thomas Citharel 69588dbf4c
feat(reports): allow to suspend a profile or a user account directly from the report view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 17:08:55 +02:00
Thomas Citharel b105c508c0
feat(reports): improve reportview and allow removing content + resolve report automatically
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 14:37:54 +02:00
Thomas Citharel f2ac3e2e5d
feat(reports): allow reports to hold multiple events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-31 10:43:36 +02:00
Thomas Citharel 538139eefa Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1443
2023-08-30 07:32:13 +00:00
Milo Ivir 482369d5fe Translated using Weblate (Croatian)
Currently translated at 87.9% (1393 of 1584 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-08-30 00:56:15 +02:00
778a69cd 0aada9ae98 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:erictapen/nixpkgs/6f43a2f938963cfebc376da771edfa0953585b4e' (2023-08-29)
  → 'github:erictapen/nixpkgs/afd2449b859efa913603181b8f21844a2db37cee' (2023-08-29)
2023-08-29 17:32:20 +02:00
778a69cd 5e4a36b4e4 use workaround for mkYarnPackage patch
flake.lock: Update

Flake lock file updates:

• Updated input 'nixpkgs':
    'github:erictapen/nixpkgs/1b8435e4c7386212d892e057620c8c167ae17adc' (2023-08-03)
  → 'github:erictapen/nixpkgs/6f43a2f938963cfebc376da771edfa0953585b4e' (2023-08-29)
2023-08-29 16:31:55 +02:00
778a69cd f7fb0283cb Merge remote-tracking branch 'origin/main' 2023-08-29 15:01:32 +02:00
Thomas Citharel 4fc1cfc3a2 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1442
2023-08-28 17:32:35 +00:00
Jakub Urbanowicz cd1549752b Translated using Weblate (Polish)
Currently translated at 100.0% (254 of 254 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2023-08-28 19:06:14 +02:00
Jakub Urbanowicz 5e49b5457b Translated using Weblate (Polish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2023-08-28 19:06:13 +02:00
Jakub Urbanowicz ccc3d228e4 Translated using Weblate (Polish)
Currently translated at 100.0% (1584 of 1584 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-28 19:06:13 +02:00
778a69cd 779563d767 remove js/yarn.nix, as it can be generated at buildtime in the Nix derivation 2023-08-28 15:11:58 +02:00
778a69cd d02d62bd0d Merge remote-tracking branch 'origin/main' 2023-08-25 13:51:29 +02:00
Thomas Citharel b1aa9ea92d Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1441
2023-08-25 07:20:00 +00:00
Jakub Urbanowicz 2bf45348cc Translated using Weblate (Polish)
Currently translated at 100.0% (1584 of 1584 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-24 22:52:53 +02:00
Thomas Citharel a8ac41bfb8 Merge branch 'fix-push-subscriptions-registration' into 'main'
Various fixes

Closes #1343 and #1344

See merge request framasoft/mobilizon!1440
2023-08-24 16:36:59 +00:00
Thomas Citharel da532c7059
feat(notifications): add missing notifications when an user registers to an event
Closes #1344

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 17:36:58 +02:00
Thomas Citharel f99267c611
fix(front): fix confirm anonymous participation
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 17:36:58 +02:00
Thomas Citharel beef3ff16d
fix(front): fix selecting all participants in participant view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 17:36:58 +02:00
Thomas Citharel 010a5e426d
fix(front): fix changing language not being saved to the user's settings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 17:36:58 +02:00
Thomas Citharel fef60ed0f9
feat(export): add date of participant creation in participant exports
Closes #1343

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 17:36:58 +02:00
Thomas Citharel 467f1ec60f Merge branch 'JocelynD-main-patch-99496' into 'main'
Fix typo in french translation

See merge request framasoft/mobilizon!1439
2023-08-24 10:20:00 +00:00
Thomas Citharel 8617382af2
test: add tests for push notification registration GraphQL resolver
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 11:49:19 +02:00
Thomas Citharel fdf87ea991
fix(push): fix push subscriptions registration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-24 11:49:19 +02:00
Jocelyn fa94d145d3 Fix typo in french translation 2023-08-23 16:47:00 +00:00
778a69cd 340aba5624 Merge remote-tracking branch 'origin/main' 2023-08-23 13:55:14 +02:00
Thomas Citharel 7cc4abd47b Merge branch 'fix-user-clitests' into 'main'
test: fix user deletion CLI tests and bring back the -k option

See merge request framasoft/mobilizon!1438
2023-08-23 06:26:13 +00:00
Thomas Citharel d2490f9304
test: fix user deletion CLI tests and bring back the -k option
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-23 08:24:28 +02:00
Thomas Citharel f61001f81e Merge branch 'correctly-skip-tests' into 'main'
test: correctly skip invalid tests

See merge request framasoft/mobilizon!1436
2023-08-22 11:57:47 +00:00
Thomas Citharel 860b4eb9a3 Merge branch 'multi-user-deletion' into 'main'
feat(cli): allow the mobilizon.users.delete command to delete multiple users by email domain or ip

See merge request framasoft/mobilizon!1437
2023-08-22 08:33:13 +00:00
Thomas Citharel bc50ab66f3
feat(cli): allow the mobilizon.users.delete command to delete multiple users by email domain or ip
Also allow to delete groups the user's actors are admins of

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-22 10:28:38 +02:00
Thomas Citharel 3d491fc034
test: correctly skip invalid tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-21 16:14:34 +02:00
778a69cd 95a69ab1f4 Merge remote-tracking branch 'origin/main' 2023-08-21 13:57:45 +02:00
Thomas Citharel d29f1e1ee2 Merge branch 'fix-arm-build' into 'main'
Fix Docker build on arm64

Closes #1249 et #1241

See merge request framasoft/mobilizon!1435
2023-08-21 11:52:01 +00:00
Thomas Citharel 8e3f90f713
fix(docker): fix Qemu segfaulting on arm64
Closes #1241 #1249

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-21 12:09:34 +02:00
778a69cd 8d9ddbdfe8 Merge remote-tracking branch 'origin/main'
nix run .#update

added cacerts_load check to build inside Nix sandbox
2023-08-19 18:12:41 +02:00
Thomas Citharel 98470f3d8d
build: remove traces of cypress
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 17:46:49 +02:00
Thomas Citharel c987d7b2e7
test: disable tests that fail unexpicably for now
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 16:20:05 +02:00
Thomas Citharel 64c28ec271 Merge branch 'main' into 'main'
add static location for img

See merge request framasoft/mobilizon!1346
2023-08-18 13:54:21 +00:00
Thomas Citharel 5160c3e526 Merge branch 'mobilizon-fork-ui-margins' into 'main'
UI: Minor tweaks and fixes

See merge request framasoft/mobilizon!1434
2023-08-18 13:51:12 +00:00
Thomas Citharel f3c218f841
fix(front): reduce horizontal padding on main element
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 15:17:33 +02:00
Thomas Citharel 8c313b5397
fix(front): fix some alignment of some UI elements in mobile event view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 15:17:33 +02:00
JonFreer 7cbbf84217
ui: dialog width and account @ alignment 2023-08-18 15:17:33 +02:00
JonFreer de30b46a87
ui: participate button align right 2023-08-18 15:17:32 +02:00
JonFreer 7688bf88ee
ui: event buttons allignment 2023-08-18 15:17:32 +02:00
JonFreer 95f3be2da9
ui: button height to match inputs 2023-08-18 15:17:32 +02:00
JonFreer f04907c2a6
ui: margins on main component 2023-08-18 15:17:32 +02:00
JonFreer 15cf103dfa
ui: rounded inputs 2023-08-18 15:17:31 +02:00
JonFreer abd609ecc8
ui: create events page margin 2023-08-18 15:17:31 +02:00
Thomas Citharel 75dddeb792 Merge branch 'otp26-mails' into 'main'
Fix sending mails on OTP26

Closes #1341

See merge request framasoft/mobilizon!1432
2023-08-18 13:02:38 +00:00
778a69cd f52ddfffa2 Merge remote-tracking branch 'origin/main'
nix run .#update
2023-08-18 15:02:28 +02:00
Thomas Citharel 4820307dad
build(deps): rollback tz_world to 1.3.0 to fix module :ssl_cipher is not available
Reference https://github.com/kimlai/tz_world/issues/33

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 14:43:03 +02:00
Thomas Citharel f54fff56fc
fix(mail): fix sending mail on OTP26
For TLS connections specifying cacerts & server_name_indication is now required

Closes #1341

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 13:41:46 +02:00
Thomas Citharel 3de4d84329
test: refactor resend confirmation email tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 13:41:46 +02:00
Thomas Citharel b2492a3870
fix(backend): handle email not being sent when resending registration instructions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 13:41:46 +02:00
Thomas Citharel 52b3e5b151 Merge branch 'fix-config-cache' into 'main'
fix(backend): fix config cache not being used everytime

See merge request framasoft/mobilizon!1433
2023-08-18 11:41:06 +00:00
Thomas Citharel af46bea7f7
fix: add inets and ssl to extra_applications in test env
Ref https://github.com/voltone/x509/issues/63 and https://github.com/voltone/x509/pull/64/files
Issue: https://github.com/phoenixframework/phoenix/issues/5502

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-18 12:29:10 +02:00
Thomas Citharel 7cc9a37c78
test: fix depreciated warn log levels in tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 17:44:13 +02:00
Thomas Citharel 1b0a7499f8
test(export): fix exporting participants CSV
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 16:35:26 +02:00
Thomas Citharel c49d816253
chore(deps): upgrade minimum Elixir version to 1.13
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 15:40:57 +02:00
Thomas Citharel e84da72ab9
build(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 15:40:29 +02:00
Thomas Citharel 7bbdae9101
build: update tests Dockerfile
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 14:50:44 +02:00
Thomas Citharel 107bab33c9
style: run mix format
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 14:50:44 +02:00
Thomas Citharel 675ac38289
style: remove leftover comment
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 14:20:28 +02:00
Thomas Citharel ed3cd5858c
fix(backend): fix config cache not being used everytime
When loading a page, we inject various meta tags in the HTML. These made database calls everytime

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-17 14:20:28 +02:00
778a69cd 922ce515f9 Merge remote-tracking branch 'origin/main' 2023-08-16 13:29:05 +02:00
Thomas Citharel a6721ec4ae Merge branch 'mobilizon-fork-ui-image-upload' into 'main'
ui: redesign image upload section

See merge request framasoft/mobilizon!1430
2023-08-16 09:33:45 +00:00
Thomas Citharel 21149cee65
refactor(front): remove unused CSS code
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-16 11:21:33 +02:00
Jon Freer 1c7383235d
Add horizontal tag to form item in profile settings 2023-08-16 11:21:33 +02:00
JonFreer b1f2d4e22d
ui: redesign image upload section 2023-08-16 11:21:33 +02:00
Thomas Citharel da40a63737 Merge branch 'setting-theme-jitter' into 'main'
Fix jitter when toggling "adapt to system theme"

Closes #1339

See merge request framasoft/mobilizon!1428
2023-08-16 09:01:36 +00:00
Sosthène Guédon d037642f55 Fix jitter when toggling "adapt to system theme"
This patch makes the border around the "dark" and "light" radio button to always be present.
Previously it was not present when the button were disabled because using the system theme,
which caused it to make the elements larger and made them move when toggling "adapt to system theme"

To keep the same meaning as previously, the border is only colored when the button is activated

Fix #1339
2023-08-13 16:13:07 +02:00
778a69cd 223eca1fa3 Merge remote-tracking branch 'origin/main' 2023-08-13 00:10:13 +02:00
Thomas Citharel 22e3e30f8f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1427
2023-08-12 05:10:38 +00:00
Jakub Urbanowicz 5d32370a6f Translated using Weblate (Polish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2023-08-12 03:06:10 +02:00
Jakub Urbanowicz 9072403eb5 Translated using Weblate (Polish)
Currently translated at 100.0% (1581 of 1581 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-12 03:06:10 +02:00
778a69cd 21e22e9514 Merge remote-tracking branch 'origin/main' 2023-08-11 17:44:33 +02:00
Thomas Citharel 6e7701b3c8 Merge branch 'mobilizon-fork-ui-input-border-box' into 'main'
fix: create event time/date allignment

Closes #1336

See merge request framasoft/mobilizon!1426
2023-08-11 13:52:52 +00:00
Thomas Citharel 50695fcfd5
fix(front): fix alignment of some input elements on event edition form
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-11 15:38:24 +02:00
JonFreer 3de90a3c73
fix: create event time/date allignment 2023-08-11 15:23:04 +02:00
778a69cd 33094bb160 Merge remote-tracking branch 'origin/main' 2023-08-11 13:39:52 +02:00
778a69cd a6b29f1745 Revert "reintroduce webmanifest for PWA compatability"
This reverts commit c1299bddf6.
2023-08-11 13:39:48 +02:00
778a69cd d1d49d827e Revert "webmanifest: add theme_color"
This reverts commit 3f747459d1.
2023-08-11 13:39:37 +02:00
Thomas Citharel 027013eba3 Merge branch 'mobilizon-webmanifest' into 'main'
reintroduce webmanifest for PWA compatability

See merge request framasoft/mobilizon!1424
2023-08-11 10:59:54 +00:00
Thomas Citharel e351d3cb2f
fix: fix some typescript issues with pwa
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-11 12:23:16 +02:00
Thomas Citharel 04c5ac1163
fix(pwa): improvements to the PWA configuration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-11 12:23:16 +02:00
778a69cd 2e08aa2573
reintroduce webmanifest for PWA compatability 2023-08-11 12:23:16 +02:00
Thomas Citharel 45a1a3a2dd Merge branch 'respect-endtime' into 'main'
Display events on startpage until their end time, unless they have no end time

See merge request framasoft/mobilizon!1423
2023-08-11 10:01:25 +00:00
Thomas Citharel 1316a9e350 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1420
2023-08-11 09:27:45 +00:00
778a69cd 951ff96b2a show events until their end time, unless they have no end time 2023-08-11 00:15:56 +02:00
778a69cd 3f747459d1 webmanifest: add theme_color 2023-08-11 00:06:34 +02:00
778a69cd 733d58a49b Merge remote-tracking branch 'origin/main'
nix run .#update
2023-08-10 23:49:12 +02:00
778a69cd 17f59c866e add some notes about this fork to the readme 2023-08-10 23:48:20 +02:00
778a69cd c1299bddf6 reintroduce webmanifest for PWA compatability 2023-08-10 23:48:12 +02:00
778a69cd 3cc51c015f remove search field for location 2023-08-10 21:11:41 +02:00
778a69cd 634438da38 remove Mobilizon advertisement from below the recent events on the start page 2023-08-10 21:11:14 +02:00
778a69cd 1f9ebc8f14 better src separation in flake, for fewer rebuilds 2023-08-10 20:43:08 +02:00
778a69cd e6c6e0c0e2 remove advertisement for Mobilizon above the search bar 2023-08-10 20:30:13 +02:00
Jakub Urbanowicz 90dca68a46 Translated using Weblate (Polish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz d9b34e4ebc Translated using Weblate (Polish)
Currently translated at 100.0% (1569 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz d8ef2e0690 Translated using Weblate (Polish)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz bac255136b Translated using Weblate (Polish)
Currently translated at 100.0% (254 of 254 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz 1901bb64ae Translated using Weblate (Polish)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz b98156854e Translated using Weblate (Polish)
Currently translated at 100.0% (1569 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz add5ce1efc Translated using Weblate (Polish)
Currently translated at 83.4% (1310 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz 1f7503f6dd Translated using Weblate (Polish)
Currently translated at 80.1% (1258 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz d8a6b551ea Translated using Weblate (Polish)
Currently translated at 60.1% (944 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz 56d6395a5d Translated using Weblate (Polish)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pl/
2023-08-10 18:30:30 +02:00
Jakub Urbanowicz 8faf9a5c79 Translated using Weblate (Polish)
Currently translated at 56.0% (880 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/pl/
2023-08-10 18:30:30 +02:00
Vodoyo Kamal 0a0f18ae9c Translated using Weblate (Bengali)
Currently translated at 2.1% (33 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/bn/
2023-08-10 18:30:30 +02:00
Thomas Citharel a3d885e6b7 Merge branch 'fix-api' into 'main'
Fix apps authorization

Closes #1314

See merge request framasoft/mobilizon!1421
2023-08-10 16:30:20 +00:00
Thomas Citharel 7e98097c71
fix(apps): add missing app scopes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel 1a6095d27a
fix(apps): make sure we can set status for an application token
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel 086d208ee5
fix(front): properly handle error when approving app
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel 2c8c332ad0
chore(deps): replace use of custom erlport with upstream one
Now that upstream has the fix

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel 12cbff154a
fix(front): fix showing error message when app to approve doesn't exist
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel c76dba3dbf
fix(front): fix missing type causing eslint error
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel c6b83c42d6
fix(front): fix display of participants list
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:01 +02:00
Thomas Citharel cc8f02d0a6
fix(front): fix comment not showing up when replying in a discussion
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:00 +02:00
Thomas Citharel fee0e388af
fix(front): fix discussion edition panel always showing up
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:00 +02:00
Thomas Citharel 8f84ba1d08
fix(front): fix map
Closes #1314

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:00 +02:00
Thomas Citharel 60aceb442a
fix(lint): fix lint after upgrades
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-10 18:02:00 +02:00
johndoe4 77274ed29d Fix Eventview Rows in 3.1.0
(cherry picked from commit 113ea75ed6)
2023-08-10 16:46:43 +02:00
johndoe4 bfcdae945f Footer: Remove Picture & change bg-color
(cherry picked from commit 9154c24332)
2023-08-10 16:45:47 +02:00
johndoe4 a722d71dae Uncomment unnecessary stuff from HomeView
(cherry picked from commit e9680509bf)
2023-08-10 16:45:25 +02:00
778a69cd 3bf7db8caa less redundancy in flake.nix 2023-08-10 14:29:06 +02:00
778a69cd d4bee06d24 enable tests for js flake build 2023-08-10 14:09:50 +02:00
778a69cd 7a1390825f make flake compile without setting --no-validate-compile-env 2023-08-10 14:09:05 +02:00
778a69cd 51ee15e659 add nix update script 2023-08-09 16:03:20 +02:00
778a69cd 8038f967cc filter *.nix files as source arguments for lesser rebuilds 2023-08-09 15:48:22 +02:00
778a69cd 6deb3f4226 nixpkgs-fmt 2023-08-09 15:28:38 +02:00
778a69cd 2c5b4ca3bc ignore nix out-links 2023-08-09 15:28:06 +02:00
778a69cd 3a8c1074c0 build latest main with nix 2023-08-09 15:22:49 +02:00
778a69cd d27bd79178 build js as own flake output 2023-08-03 18:08:15 +02:00
778a69cd e046a6ef16 move nix package definition directly into fork 2023-08-03 17:06:58 +02:00
778a69cd 11c1590cac flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/963006aab35e3e8ebbf6052b6bf4ea712fdd3c28' (2023-05-16)
  → 'github:NixOS/nixpkgs/66aedfd010204949cb225cf749be08cb13ce1813' (2023-08-02)
2023-08-03 16:52:29 +02:00
778a69cd 496ba488b6 Merge remote-tracking branch 'origin/main' 2023-08-03 16:43:36 +02:00
Thomas Citharel 7916261c5c
fix(front): avoid crashing if we don't have configuration data in time when in guard
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-02 10:06:06 +02:00
Thomas Citharel da70427e32
fix: fix Elixir 1.15 depreciations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-02 09:59:09 +02:00
Thomas Citharel 5373f1378f
chore(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-08-02 09:58:45 +02:00
Thomas Citharel 5ac1d9048a Merge branch 'fix-profile-pics-gruppe' into 'main'
fix(federation): fix getting pictures from Gruppe actors

See merge request framasoft/mobilizon!1417
2023-06-29 18:56:38 +00:00
Thomas Citharel 25a53b44dc Merge branch 'fix-post-not-found' into 'main'
fix(front): properly handle post not found

See merge request framasoft/mobilizon!1418
2023-06-29 18:29:07 +00:00
Thomas Citharel 8db31c99df
fix(front): properly handle post not found
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-29 19:45:54 +02:00
Thomas Citharel 7c5f8b2431
fix(federation): fix getting pictures from Gruppe actors
They directly put urls for icon/image properties

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-29 19:30:13 +02:00
Thomas Citharel 1858580714 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1416
2023-06-29 16:58:38 +00:00
Milo Ivir edb0445137 Translated using Weblate (Croatian)
Currently translated at 87.2% (1369 of 1569 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-06-27 18:07:28 +02:00
Thomas Citharel 8f4333b528
chore(release): release 3.1.3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-21 18:31:51 +02:00
Thomas Citharel 4b8f54a31b Merge branch 'fix' into 'main'
fix(groups): fix unauthenticated access to groups because of missing read:group:members permission

Closes #1311

See merge request framasoft/mobilizon!1415
2023-06-21 16:31:18 +00:00
Thomas Citharel 3714925896
fix(groups): fix unauthenticated access to groups because of missing read:group:members permission
The permission in question is now removed

Closes #1311

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-21 18:09:45 +02:00
Thomas Citharel 93f175da2c
chore(release): release 3.1.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-21 07:49:56 +02:00
Thomas Citharel 0f0fca0b9f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1412
2023-06-20 20:44:56 +00:00
Jiri Podhorecky e2d58906e3 Translated using Weblate (Czech)
Currently translated at 100.0% (1566 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-06-20 18:09:32 +02:00
Thomas Citharel e46a38ca2a Merge branch 'fixes' into 'main'
Various fixes

Closes #1303

See merge request framasoft/mobilizon!1414
2023-06-20 16:09:24 +00:00
Thomas Citharel a1f5d1dacc
test(federation): fix APControllerTest failing because of datetime different when we reach 2nd page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 17:40:50 +02:00
Thomas Citharel f749518bf7
fix(group): fix getting group members count
Closes #1303

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel f04d2b9225
fix(backend): filter out nil tags before starting looking for existing ones
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel d5021647d7
fix(federation): allow federated usernames with capitals
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel 56f341e960
fix(federation): ignore mentions from everything that's not a AP Person
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel 2729d5ed7a
fix(federation): handle string values for tags when constructing mentions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel 552ab4c80b
fix(federation): handle fetch_actor with a map
For some reason

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel 5cc5c9943c
fix(participant): handle re-confirming participation
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel 02098bbb3d
test(export): add basic test for ExportController
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:37 +02:00
Thomas Citharel a76b1ca66d
fix(exports): properly handle export format not being handled
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 16:55:36 +02:00
Thomas Citharel 96b4ef08c6
style: unused variable
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 14:59:57 +02:00
Thomas Citharel ca06ec397f
fix(discussions): handle changeset errors when updating discussion
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 14:49:18 +02:00
Thomas Citharel f2ffcfec5b Merge branch 'fixes' into 'main'
Participant fixes

See merge request framasoft/mobilizon!1413
2023-06-20 10:40:30 +00:00
Thomas Citharel 49b04c9b19
fix(participant exports): fix participants by returning the export type as well as the file path
We previously used the Apollo context but that's really unreliable.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 12:11:52 +02:00
Thomas Citharel a5a86a5e1b
fix(front): add missing title to Participants View page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 12:09:47 +02:00
Thomas Citharel d63999c081
fix(deps): fix compatibility with elixir-plug/mime 2.0.5
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 12:06:38 +02:00
Thomas Citharel 45ea9cc774
chore(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-20 11:36:24 +02:00
Thomas Citharel 80f73a34a6 Merge branch 'fix-pruning-old-app-activations' into 'main'
fix(apps): fix pruning old application device activations

See merge request framasoft/mobilizon!1411
2023-06-06 12:10:28 +00:00
Thomas Citharel cde171d497 Merge branch 'fix-losing-relay-private-keys' into 'main'
Federation fixes

See merge request framasoft/mobilizon!1410
2023-06-06 10:54:00 +00:00
Thomas Citharel dd00620b9a
fix(apps): fix pruning old application device activations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-06 12:47:38 +02:00
Thomas Citharel 5381eaae22
fix(federation): rotate relay keys on startup if missing private keys
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-06 12:20:35 +02:00
Thomas Citharel 6745590e54
fix(federation): only refresh instances once a day
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-06 12:12:19 +02:00
Thomas Citharel d300f9deea Merge branch 'fix-losing-relay-private-keys' into 'main'
fix(federation): prevent fetching own relay actor

See merge request framasoft/mobilizon!1409
2023-06-06 09:57:10 +00:00
Thomas Citharel e8d34b4ea9
fix(federation): restrict fetch_group first arg to binaries
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-06 09:57:14 +02:00
Thomas Citharel b981f91cf7
fix(federation): prevent fetching own relay actor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-06 09:52:46 +02:00
Thomas Citharel 99db295310 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Framasoft Weblate

See merge request framasoft/mobilizon!1408
2023-06-05 21:19:47 +00:00
Milo Ivir b6f5eed67c Translated using Weblate (Croatian)
Currently translated at 85.4% (1338 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-06-05 21:43:49 +02:00
Thomas Citharel d14a1e1288 Merge branch 'fixes' into 'main'
Various fixes

Closes #1275 et #1251

See merge request framasoft/mobilizon!1406
2023-06-05 09:11:20 +00:00
Thomas Citharel 8e21c30f92
fix(front): fix displaying user activity settings checkboxes
Related to #1251

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-05 09:28:27 +02:00
Thomas Citharel 6c1e1e98d8
fix(activity settings): fix saving activity settings
Closes #1251

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-05 09:23:22 +02:00
Thomas Citharel c8f49e1837
fix(front): fix wrong key name for dialog.confirm() option
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-05 09:21:16 +02:00
Thomas Citharel 845bb6ac90
feat(graphql): validate timezone id as a GraphQL Scalar
Related to #1299

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-05 09:12:31 +02:00
Thomas Citharel 2dd0e13eba
fix(front): fix wrong value for timezone when it has no prefix
Closes #1275

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-05 08:28:04 +02:00
Thomas Citharel cffc1d6563
chore(release): release version 3.1.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-02 09:52:31 +02:00
Thomas Citharel ceec4a36a4 Merge branch 'fixes' into 'main'
fix(front): fix group settings getting unresponsive because of reactive bug

Closes #1298

See merge request framasoft/mobilizon!1405
2023-06-02 07:51:37 +00:00
Thomas Citharel f1e119cb7a
fix(front): fix group settings getting unresponsive because of reactive bug
Closes #1298

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-02 09:40:12 +02:00
Thomas Citharel b69ffacff5 Merge branch 'fixes' into 'main'
fix(search): fix global search sorting

Closes #1297

See merge request framasoft/mobilizon!1404
2023-06-01 14:39:35 +00:00
Thomas Citharel 39e24c328a
fix(search): fix global search sorting
Closes #1297

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-01 16:11:12 +02:00
Thomas Citharel a6c77fe39e Merge branch 'spam-detection-improvement' into 'main'
refactor(anti-spam): make anti-spam agnostic from Akismet

See merge request framasoft/mobilizon!1403
2023-06-01 13:21:32 +00:00
Thomas Citharel ce15160e87
test(anti-spam): add tests for anti-spam detection command
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-01 14:49:39 +02:00
Thomas Citharel c971287624
feat(anti-spam): allow to only scan for spam in profiles or events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-01 14:49:17 +02:00
Thomas Citharel 618b3d23d9
refactor(anti-spam): make anti-spam agnostic from Akismet
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-06-01 14:48:42 +02:00
Thomas Citharel 1798acc3c0
chore(release): release 3.1.0
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-31 10:41:43 +02:00
Thomas Citharel 7320e4cbf9
chore(release): release 3.1.0-rc.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 16:52:25 +02:00
Thomas Citharel 06594e8dd0 Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1402
2023-05-30 14:50:57 +00:00
Thomas Citharel 8809db582c
fix(front): fix homepage event and groups cards snapping
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 16:13:44 +02:00
Thomas Citharel e0488dd87f
fix(front): fix selecting addresses in autocomplete
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 15:36:41 +02:00
Thomas Citharel 14d93120b5
chore(i18n): fix french translation for report not found
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 15:20:56 +02:00
Thomas Citharel 0812890d2f Merge branch 'fixes' into 'main'
Various apps fixes

See merge request framasoft/mobilizon!1401
2023-05-30 12:53:23 +00:00
Thomas Citharel 9a457fb011
fix(apps): fix device flow authorization process
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 14:24:52 +02:00
Thomas Citharel c9d20748a4
fix(apps): show scope from device activation in authorize device view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 14:24:52 +02:00
Thomas Citharel 5664625c1c
fix(apps): fix typo in redirect_uri parameter
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 14:24:51 +02:00
Thomas Citharel fa16537290
chore(release): release 3.1.0-rc.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 10:15:30 +02:00
Thomas Citharel 9eb76703d6 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1400
2023-05-30 08:02:01 +00:00
Weblate 3e7acab674 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2023-05-30 09:59:39 +02:00
Thomas Citharel 4643f00d9b Merge branch 'fixes' into 'main'
Various fixes

Closes #1279, #900 et #822

See merge request framasoft/mobilizon!1399
2023-05-30 07:59:23 +00:00
Thomas Citharel 6593616194
style(lint): lint frontend files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 09:30:40 +02:00
Thomas Citharel 9ef6c21a2a
build(deps): upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 09:11:59 +02:00
Thomas Citharel d0f4721925
fix(front): fix showing current identity avatar & banners
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 09:03:51 +02:00
Thomas Citharel 20b4aaabc9
fix(front): fix showing current group avatar & banners
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:48:26 +02:00
Thomas Citharel 02867e6e14
fix(frontend): only show map on event edition when we have an address or we want to put in details
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:55 +02:00
Thomas Citharel 0e14a36c6d
fix(frontend): event edition UI improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:55 +02:00
Thomas Citharel b0975672c1
fix(front): various UI improvements for group page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:55 +02:00
Thomas Citharel ec7ca4ddf1
feat(post): show post visibily in PostListItem component
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel 8e626dce78
fix(sharepostmodal): only show the share warning message if the post is accessible by link
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel 779812c746
fix(discussionlistitem): remove unecessary parameter in vue router target
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel 54f656d239
build(lint): add lint-staged and husky git hooks to automatically lint on commit
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel 98e8546c9a
style(lint): lint front end test files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel 759b26e203
refactor(front): cleanup PostListItem.vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:54 +02:00
Thomas Citharel b0a564f64f
fix(group): rephrase "Public Page" to "Announcements", as all posts are not necessary public
Closes #900

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:53 +02:00
Thomas Citharel 850b4e2a73
fix(rich media): fix error handling when resource preview URL leads to empty parsed data
Closes #1279

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-30 08:34:53 +02:00
Thomas Citharel 878cd84bc4 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1398
2023-05-29 14:26:58 +00:00
778a69cd b507b2ddd3 Revert "read logo from separate svg file for easier customization"
This reverts commit 67765a645e.
2023-05-29 15:58:35 +02:00
Dannek Rose 6de84a115f Translated using Weblate (Japanese)
Currently translated at 46.5% (729 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-29 15:22:24 +02:00
778a69cd 4e757b0f9e Merge remote-tracking branch 'origin/main' 2023-05-29 14:19:06 +02:00
Thomas Citharel 5a24982f12 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1397
2023-05-29 09:16:54 +00:00
Dannek Rose a01e895d79 Translated using Weblate (Japanese)
Currently translated at 46.2% (724 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-28 22:47:08 +02:00
Dannek Rose eecae5fe9d Translated using Weblate (Japanese)
Currently translated at 44.7% (701 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-28 11:55:24 +02:00
Thomas Citharel f5c2708066 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1396
2023-05-27 17:43:35 +00:00
Milo Ivir ed93978784 Translated using Weblate (Croatian)
Currently translated at 80.7% (285 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-05-27 15:05:52 +02:00
Dannek Rose 863655117e Translated using Weblate (Japanese)
Currently translated at 44.6% (700 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-27 15:05:52 +02:00
johndoe4 1041cf7cd7 Add Venue-Name to InlineAddress(for Eventcard) 2023-05-26 22:53:15 +02:00
778a69cd 88e11925df Merge remote-tracking branch 'origin/main' 2023-05-26 14:57:41 +02:00
Dannek Rose 6c74ba9f8f Translated using Weblate (Japanese)
Currently translated at 42.9% (673 of 1566 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-25 17:14:04 +02:00
Thomas Citharel f0b559d2ef Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1395
2023-05-25 10:38:01 +00:00
Thomas Citharel 08ce7e26b7
feat(front): make admin profile view linkable directly with parameters
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-25 12:08:27 +02:00
Thomas Citharel fe4fbc0bdf
test(emails): add test for group notification emails
Add test for Mobilizon.Web.Email.Group

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-25 12:08:27 +02:00
Thomas Citharel 927e95f387
fix(emails): make sure group notification emails are only sent once per email
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-25 12:08:27 +02:00
778a69cd 0d804cba1f include nodejs in devShell 2023-05-24 17:16:01 +02:00
Thomas Citharel 87208369b2 Merge branch 'fixes' into 'main'
Various improvements

See merge request framasoft/mobilizon!1394
2023-05-24 14:45:57 +00:00
Thomas Citharel dc3b93ffb5
feat(front): show skeleton content on event view until the event is loaded
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 16:14:19 +02:00
Thomas Citharel 7fa452d9e3
feat(front): improve padding on event tags
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 15:41:13 +02:00
Thomas Citharel 94f186ce50
fix(front): increase padding next to arrow down in <select> elements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 15:36:38 +02:00
Thomas Citharel 3e0324d36e
feat(front): make profiles and group admin views default to local
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 15:32:40 +02:00
Thomas Citharel 2933ee0679
fix(graphql): fix calling GET_GROUP
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 15:32:40 +02:00
Thomas Citharel 96129d2339
feat(front): make profile members link to profile on group admin view and the reverse
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 15:29:26 +02:00
Thomas Citharel 60185e80e3 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1393
2023-05-24 11:16:19 +00:00
778a69cd 4284e8e635 Merge remote-tracking branch 'origin/main' 2023-05-24 13:00:37 +02:00
Weblate 67d0ee282d Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2023-05-24 12:40:12 +02:00
Thomas Citharel d7e425dce5 Merge branch 'bug-fixes' into 'main'
Various fixes

Closes #1272, #1293, #1281 et #1278

See merge request framasoft/mobilizon!1392
2023-05-24 10:39:58 +00:00
Thomas Citharel d47b69d6ca
fix(front): improve UI of the glossary page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 12:11:25 +02:00
Thomas Citharel d5a6df9940
feat(front): redirect user to homepage on disconnect when currently on private page
Closes #1278

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 12:11:00 +02:00
Thomas Citharel 6da0dba0fd
fix(front): remove leftover console.logs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 11:50:38 +02:00
Thomas Citharel 643a5b5921
fix(i18n): fix Swedish translations error that prevented Participate button from showing up
Closes #1281

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 11:44:20 +02:00
Thomas Citharel 6858bcbbda
fix(front): remove cache-only for ABOUT GraphQL details on homepage
Otherwise this doesn't show the title of the instance when going back

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 11:34:25 +02:00
Thomas Citharel 94182aed2d
feat(i18n): activate croatian language
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 11:19:47 +02:00
Thomas Citharel 6bd8034fe8
feat(i18n): activate japanese language
Closes #1293

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 11:17:39 +02:00
Thomas Citharel a7c8cc0b9f
style(lint): lint front-end code
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 10:56:25 +02:00
Thomas Citharel d73bafec97
fix(front): reset page number to 1 when search criteria changes
Closes #1272

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-24 10:56:02 +02:00
Thomas Citharel 9249661225 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1391
2023-05-24 07:42:47 +00:00
Dannek Rose 67407dae62 Translated using Weblate (Japanese)
Currently translated at 40.8% (639 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-05-24 07:33:39 +02:00
Thomas Citharel 3eddd5fc8f
chore(release): release 3.1.0-beta.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 18:35:28 +02:00
Thomas Citharel 39da840da9
chore(changelog): fix links to commits in Changelog
See https://github.com/conventional-changelog/conventional-changelog/issues/986

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 18:34:35 +02:00
Thomas Citharel 964e479aaf Merge branch 'ci-docker-build-allow-failure' into 'main'
ci(docker-arm-build): allow Docker arm image build to fail

See merge request framasoft/mobilizon!1390
2023-05-23 16:11:37 +00:00
Thomas Citharel 9fe2f658e2
ci(docker-arm-build): allow Docker arm image build to fail
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 18:10:40 +02:00
Thomas Citharel 0b3d7d5b3c Merge branch 'fix-accessing-user-with-moderator-rights' into 'main'
include user role in moderator role

Closes #1291

See merge request framasoft/mobilizon!1389
2023-05-23 16:06:41 +00:00
Hugo Renard c4d60194a6
fix: include user role in moderator role
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 17:38:11 +02:00
Thomas Citharel 7defbe6bc9 chore(changelog): fix changelog version and move an element in the correct section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 14:37:13 +02:00
Thomas Citharel 26e22edfc0 build(docker-tests): Update test container
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 14:37:13 +02:00
Thomas Citharel ba3a52cd4b build(docker): Fix production Dockerfile
Make sure every data folder properly exists

See https://forge.tedomum.net/tedomum/mobilizon/-/issues/14

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 14:37:13 +02:00
Thomas Citharel 3309850d72
chore(changelog): fix changelog version and move an element in the correct section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-23 14:17:36 +02:00
johndoe4 08764fff72 Adding Starttime to Eventcards and Header 2023-05-23 01:30:53 +02:00
johndoe4 a50b9128fe Adding Weekday to .datetime-container-header 2023-05-22 23:12:55 +02:00
Thomas Citharel 174e3fdbf9 Merge branch 'docker-fix-data-folders' into 'main'
Fix production Dockerfile

See merge request framasoft/mobilizon!1386
2023-05-22 16:53:58 +00:00
Thomas Citharel 43eab9e680
build(docker-tests): Update test container
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-22 18:53:22 +02:00
Thomas Citharel 34f853159e
build(docker): Fix production Dockerfile
Make sure every data folder properly exists

See https://forge.tedomum.net/tedomum/mobilizon/-/issues/14

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-22 18:44:21 +02:00
johndoe4 be8a206b0d Things commented out which in my opinion are no longer needed 6bcff6d1ae 2023-05-22 00:52:05 +02:00
johndoe4 04e7a2e02d revert 96871853d1
revert Removed some unnecessary stuff
2023-05-22 00:28:49 +02:00
johndoe4 96871853d1 Removed some unnecessary stuff 2023-05-22 00:22:45 +02:00
johndoe4 6bcff6d1ae Use Columns and Rows instead of scrolling 2023-05-22 00:21:09 +02:00
778a69cd 7127b0da28 Merge remote-tracking branch 'origin/main' 2023-05-17 17:51:20 +02:00
778a69cd cba53e2e9d remove phoenix.json_library config 2023-05-17 17:35:11 +02:00
778a69cd 1fac112942 mix deps.update ex_cldr ex_cldr_numbers 2023-05-17 17:19:32 +02:00
johndoe4 c5ecaf5d7c Fix for Commit 2072402e98
- forgot to change the variable name
2023-05-17 16:55:14 +02:00
Thomas Citharel 4a8ea1738b Merge branch 'release-3.1.0-beta-1' into 'main'
Release 3.1.0-beta.1

See merge request framasoft/mobilizon!1385
2023-05-17 14:10:04 +00:00
Thomas Citharel ecd2be4f82
Release 3.1.0-beta.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 15:36:48 +02:00
Thomas Citharel 1bee1506db Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1384
2023-05-17 11:53:06 +00:00
Thomas Citharel 5563052795
fix(front): Improve resend inscription instructions view and show error when appropriate
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 11:33:50 +02:00
Thomas Citharel c420bbccc9
fix(front): Improve Delete account modal UI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 11:33:50 +02:00
Thomas Citharel 1c1d0d47d7
fix(back): Improve error message when requesting reset passwords and new instructions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 11:33:50 +02:00
Thomas Citharel 73eb4603b1
fix(password-reset): Lower time before being available to reset password or resend instructions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:45:44 +02:00
Thomas Citharel 274476ed4d
build(deps): Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:05 +02:00
Thomas Citharel 8ea00e7c18
fix(back): Replace NaiveDateTime uses with DateTime for consistency
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:05 +02:00
Thomas Citharel aa20f69911
fix(apps): Fix cleaning application data background job
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:05 +02:00
Thomas Citharel b5f106b0a8
fix(backend): Ignore group mentions for now
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel dbe2da79c3
fix(backend): Handle CLDR data having no standard property for a language
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel 79b48da222
fix(federation): Account suspension should use actor in question as author and not relay actor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel d2ba732b8b
fix(front): Fix autocomplete attribute in o-inputitems after Oruga new version BC
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel d2b48563f6
build(deps): Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel f0cc5ffb8f
fix(map): Only show marker if we have it's position
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:04 +02:00
Thomas Citharel 8dcb76c30d
fix(front): No cache-only for config
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:03 +02:00
Thomas Citharel 1e1342de12
refactor(front): Clear unused code
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:03 +02:00
Thomas Citharel 2a57340a82
fix(back): Various small fixes in backend
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:03 +02:00
Thomas Citharel 3d21a06789
fix(front): Handle "Failed to fetch dynamically imported module" errors by refreshing the page
Reference: https://stackoverflow.com/a/74861436/10204399

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:03 +02:00
Thomas Citharel b586f59288
build(version): Bump version to 3.1.0-dev
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:02 +02:00
Thomas Citharel 6faafd6393
fix(front): Small UI fixes on identity pickers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:02 +02:00
Thomas Citharel c7b90cd60a
fix(map): Fix style of the map marker
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:02 +02:00
Thomas Citharel a22a5e3cb9
fix(auth): Handle logging-in with disabled auth provider
When only MobilizonAuthenticator provider is available, user can be found, but isn't valid for auth. We need to reject those users as well.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-05-17 09:34:02 +02:00
Thomas Citharel 1ea5342fca Merge branch '1290-fix-ellipsis-navbar' into 'main'
Fix ellipsis for identity in NavBar

See merge request framasoft/mobilizon!1383
2023-05-17 05:41:33 +00:00
johndoe4 974c73e071 Temp. Fix: mbz-cards didnt get a fixed (max) width on small screens
- Add a max-width and width for mbz-card in App.vue
2023-05-17 00:59:36 +02:00
johndoe4 2072402e98 Adding UpcomingEvents.vue & include it to HomeView.vue
- Will show all upcoming Events sorted by Date on the Startpage
2023-05-17 00:52:22 +02:00
MickGe b423caf6c3 Fix ellipsis for identity in NaBar 2023-05-16 19:45:28 +00:00
summersamara 67765a645e read logo from separate svg file for easier customization 2023-05-16 21:19:49 +02:00
summersamara f887455d66 make vite server reachable from outside the container
[fix #1225] https://framagit.org/framasoft/mobilizon/-/issues/1225
2023-05-16 21:19:49 +02:00
778a69cd d52dc72f9a flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0470f36b02ef01d4f43c641bbf07020bcab71bf1' (2023-05-14)
  → 'github:NixOS/nixpkgs/963006aab35e3e8ebbf6052b6bf4ea712fdd3c28' (2023-05-16)
2023-05-16 20:47:34 +02:00
778a69cd 0b73264392 add yarn2nix to flake.nix 2023-05-16 20:45:49 +02:00
778a69cd cc89e9f98e Merge branch 'potsda.mn-3.0.4' 2023-05-16 20:41:30 +02:00
778a69cd 609512a9ed use latest nixos-unstable in devShell, add mix2nix 2023-05-16 17:32:48 +02:00
summersamara 773ddd22a7 add elixir version 1.13.4 to Dockerfile for dev 2023-05-16 17:32:48 +02:00
778a69cd 8e00c78a11 use yarn with an older nodejs version in devShell 2023-05-16 17:32:48 +02:00
778a69cd d830597206 use nixpkgs from september 2022 for nix devShell 2023-05-16 17:32:47 +02:00
778a69cd 438f1dde3e init nix flake 2023-05-16 17:32:47 +02:00
778a69cd d2af20dd59 show events until their end time, unless they have no end time 2023-05-16 17:32:47 +02:00
778a69cd aa043d8793 fix wrong link in instance follow request email
this is upstreamable
2023-05-16 17:32:47 +02:00
778a69cd 23378a378a add Mobilizon version to instance config 2023-05-16 17:32:47 +02:00
778a69cd 0824694c56 Revert "default anonymous participation in events to true"
This reverts commit 3a1b7a4660b4fd9488e7d06e677027ae41e0c10c.
2023-05-16 17:32:47 +02:00
778a69cd dcd097bf6d default anonymous participation in events to true 2023-05-16 17:32:47 +02:00
778a69cd d53f7b93e9 Use our own categories for event creation 2023-05-16 17:32:47 +02:00
778a69cd 1b9aafa855 remove pictures for error and 404 site 2023-05-15 19:36:58 +02:00
Thomas Citharel 7b796a1d3a Merge branch 'main' into 'main'
fix: bind pagination current prop

Closes #1088 et #1152

See merge request framasoft/mobilizon!1382
2023-05-02 13:33:08 +00:00
Hugo Renard 4bcf572c54
fix: bind pagination current prop
Signed-off-by: Hugo Renard <hugo.renard@protonmail.com>
2023-05-02 14:52:10 +02:00
Thomas Citharel 94a51fbcab Merge branch 'fixes' into 'main'
Various fixes

Closes #1236, #1280 et #1277

See merge request framasoft/mobilizon!1381
2023-04-26 15:07:42 +00:00
Thomas Citharel d969c6648f
fix(follow-instances): Show correct error message when trying to follow already following actor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-26 16:40:40 +02:00
Thomas Citharel 8543204bd9
fix(front): Fix instances list pagination
Closes #1277

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-26 16:40:32 +02:00
Thomas Citharel 7def6739e1
Add missing icon registration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-26 16:39:18 +02:00
Thomas Citharel a4e7ee37be
fix(search): Fix event search order
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-26 16:39:18 +02:00
Thomas Citharel 4375438dc9
fix(front): Fix pagination display on dark mode
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-26 16:31:28 +02:00
Thomas Citharel 4bb062528f
feat(docker): Specify the folder where tzdata downloads data so that it can be used in a volume
Closes #1280

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-21 15:49:40 +02:00
Thomas Citharel 2c28312fc9
fix(front): Focus report comment input in report modal
Closes #1236

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-21 15:43:36 +02:00
Thomas Citharel 2043c98717
fix(typespec): Fix missing return type in typespec
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-21 14:28:33 +02:00
Thomas Citharel 09d705a1d0 Merge branch 'event-list-fixes' into 'main'
fix(front): Fix behaviour when deleting an event from event list

See merge request framasoft/mobilizon!1380
2023-04-21 08:45:25 +00:00
Thomas Citharel 63c9ed62de
fix(front): Fix event list month order
Closes #1244

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-21 10:18:22 +02:00
Thomas Citharel 35b07dceaa
fix(front): Fix style of My Events participations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-20 17:01:36 +02:00
Thomas Citharel cfd10ea960
fix(front): Fix behaviour when deleting an event from event list
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-20 16:57:23 +02:00
Thomas Citharel 7872100af3 Merge branch 'fix-about-section-title' into 'main'
fix(front): Fix about sections titles

See merge request framasoft/mobilizon!1379
2023-04-20 12:17:56 +00:00
Thomas Citharel 487f4069b1
fix(front): Fix about sections titles
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-20 12:19:21 +02:00
Thomas Citharel 96d397baf1 Merge branch 'feed-only-future-events' into 'main'
fix(feeds): Only provide future events in ICS/Atom feeds

See merge request framasoft/mobilizon!1378
2023-04-20 09:57:16 +00:00
Thomas Citharel f3a443138a
fix(feeds): Only provide future events in ICS/Atom feeds
Closes #1246

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-20 11:30:34 +02:00
Thomas Citharel 5ae2e2254a Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1377
2023-04-20 08:33:11 +00:00
Thomas Citharel ddba7d6fc5
test: Fix Mobilizon.Service.Notifications.SchedulerTest tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-20 09:54:11 +02:00
Thomas Citharel 52c4337c4f
style(lint): Run front-end linter
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 18:50:09 +02:00
Thomas Citharel 23b5e5930c
fix(map): Only show map details when needed
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 18:33:34 +02:00
Thomas Citharel eda2761032
refactor(credo): Refactor to appease new credo checks (complexity and logging)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 18:33:06 +02:00
Thomas Citharel 8141bb0acb
feat(global-search): Add option values in debug log before calling global search service
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 12:14:03 +02:00
Thomas Citharel 6b560b9f04
build: Remove @tailwindcss/line-clamp as it's now included in Tailwind
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 12:00:40 +02:00
Thomas Citharel bcf6fd893c
fix(backend): Fix Mobilizon.Events.list_participations_for_user_query/1
Multiple on: following two join: declarations were not taken into account

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 12:00:40 +02:00
Thomas Citharel 3f5e39cd7a
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-19 11:54:51 +02:00
Thomas Citharel 09874bb049 Merge branch '1226-fix-name-sync-in-profile-setup-form' into 'main'
Change the way preferredUsername is synced

Closes #1226

See merge request framasoft/mobilizon!1369
2023-04-19 09:49:32 +00:00
Thomas Citharel 7753e4991d Merge branch 'ohemelaar-main-patch-31786' into 'main'
Add env var to use SSL when connection to DB

Closes #1282

See merge request framasoft/mobilizon!1373
2023-04-18 08:28:26 +00:00
Thomas Citharel 36a7f819a3 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1376
2023-04-18 07:37:03 +00:00
Vri ada4805961 Translated using Weblate (German)
Currently translated at 95.2% (1490 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-04-18 08:23:32 +02:00
Jiri Podhorecky df7edc9fa9 Translated using Weblate (Czech)
Currently translated at 100.0% (1565 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-04-16 14:35:22 +02:00
Jiri Podhorecky 07ea127780 Translated using Weblate (Czech)
Currently translated at 100.0% (254 of 254 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2023-04-15 00:35:25 +02:00
Jiri Podhorecky 5ce558b94a Translated using Weblate (Czech)
Currently translated at 96.1% (1504 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-04-15 00:35:25 +02:00
Thomas Citharel e1b4337a36 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1375
2023-04-13 05:12:25 +00:00
Jiri Podhorecky 845e8aa754 Translated using Weblate (Czech)
Currently translated at 86.6% (220 of 254 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2023-04-13 00:45:14 +02:00
Jiri Podhorecky 43bcfe1a90 Translated using Weblate (Czech)
Currently translated at 94.1% (1474 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-04-13 00:45:14 +02:00
oscar 4a9121825f Fix config requiring boolean 2023-04-12 11:34:23 +00:00
Thomas Citharel d7df0f5dea Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1374
2023-04-11 19:31:24 +00:00
Milo Ivir 961cb21d14 Translated using Weblate (Croatian)
Currently translated at 85.0% (1331 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-04-11 20:20:14 +02:00
Milo Ivir 9748b1b70b Translated using Weblate (Croatian)
Currently translated at 56.2% (143 of 254 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2023-04-11 20:20:13 +02:00
Milo Ivir c19f82e346 Translated using Weblate (Croatian)
Currently translated at 73.6% (260 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-04-11 20:20:13 +02:00
Thomas Citharel ca5b379b28 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1372
2023-04-11 17:43:12 +00:00
oscar 53782bf6e6 Add env var to use SSL when connection to DB 2023-04-11 13:59:30 +00:00
Milo Ivir 609d4a3b29 Translated using Weblate (Croatian)
Currently translated at 82.4% (1290 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-04-11 14:27:06 +02:00
Thomas Citharel ef1b0ed2dd Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1371
2023-04-09 21:36:38 +00:00
Vri 3d29bfaf2e Translated using Weblate (German)
Currently translated at 95.1% (1489 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-04-09 21:13:15 +02:00
Thomas Citharel 0a7504d332 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1370
2023-04-09 07:29:52 +00:00
Vri 4fcd44a1aa Translated using Weblate (German)
Currently translated at 95.0% (1488 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-04-09 09:00:08 +02:00
Thomas Citharel 49579466f7 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1368
2023-04-09 05:26:35 +00:00
Vri 24b74b1d8f Translated using Weblate (German)
Currently translated at 93.0% (1456 of 1565 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-04-08 06:49:46 +02:00
Weblate a948579858 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2023-04-07 19:00:54 +02:00
Thomas Citharel 3a9188e081 Merge branch 'manual-addresses' into 'main'
Allow to enter manual addresses

Closes #142, #610, #867 et #1040

See merge request framasoft/mobilizon!1367
2023-04-07 17:00:46 +00:00
Thomas Citharel 3b7dbcd71f
fix(i18n): Update translations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-07 18:23:36 +02:00
Thomas Citharel 85d643d0ec
feat(addresses): Allow to enter manual addresses
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-07 17:54:06 +02:00
Thomas Citharel 50ab531156
fix: Fix type of variable in navbar
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-07 17:53:03 +02:00
Cédric Wagner a73e5a085e Change the way preferredUsername is synced 2023-04-07 15:58:38 +02:00
Thomas Citharel 1a14959594 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1366
2023-04-06 07:42:00 +00:00
Jiri Podhorecky 5c91b16337 Translated using Weblate (Czech)
Currently translated at 93.4% (1453 of 1555 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-04-06 00:12:27 +02:00
Thomas Citharel e0ee9c143b
fix(apps): Show message when the user doesn't have approved apps yet
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-04-05 09:28:23 +02:00
Thomas Citharel d881703386 Merge branch '1266-fix-datepicker-ui-on-dark-mode' into 'main'
Resolve "UI is broken in dark mode"

Closes #1266

See merge request framasoft/mobilizon!1365
2023-04-05 07:16:18 +00:00
Cédric Wagner 96695524eb prettier: add line to end of file 2023-03-31 00:23:49 +02:00
Cédric Wagner b18e8fd37c datetimepicker: change colors for day & time selectors on dark mode 2023-03-30 23:54:09 +02:00
Thomas Citharel 5a5adc8a8f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1364
2023-03-27 12:24:42 +00:00
Vri b4ae4fce30 Translated using Weblate (German)
Currently translated at 93.6% (1456 of 1555 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-03-25 15:49:16 +01:00
Thomas Citharel 1a82cb95bc Merge branch 'app-tokens' into 'main'
Application tokens

Closes #67

See merge request framasoft/mobilizon!1361
2023-03-24 15:02:33 +00:00
Thomas Citharel c4fd0e062a
Extract new backend error strings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-24 15:32:27 +01:00
Thomas Citharel c07ba3a5d1
Add rate-limiting on queries with Hammer
Closes #67

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-24 15:32:27 +01:00
Thomas Citharel c4e9f88e85
Fix front-end stuff
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-24 15:32:26 +01:00
Thomas Citharel 986ae45f52
Add worker to clean obsolete application data, token revokation and spec conformance
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-24 09:18:53 +01:00
Thomas Citharel a28ce5e6b6
Fetch config for export event participant formats
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 10:19:26 +01:00
Thomas Citharel 647efad982
Add Codeclimate report from Credo to CI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 10:19:26 +01:00
Thomas Citharel 59944603b7
Update deps and fix some front-end stuff
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 10:19:25 +01:00
Thomas Citharel 8984bd7636
Introduce authorizations with Rajska
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 10:19:25 +01:00
Thomas Citharel b6875f6a4b
Introduce device flow
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 09:34:11 +01:00
Thomas Citharel 2ee329ff7b
Introduce application tokens
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 09:34:10 +01:00
Thomas Citharel 39768693c5
Only show report as spam/ham buttons if antispam feature is enabled
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 09:34:10 +01:00
Thomas Citharel cfa1754ab5
Fix warnings in akismet service
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-22 09:34:09 +01:00
Thomas Citharel 61441efbf7 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1363
2023-03-21 08:36:29 +00:00
Milo Ivir fbddee22f9 Translated using Weblate (Croatian)
Currently translated at 87.2% (1270 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-03-20 21:50:15 +01:00
Milo Ivir 0b3ae6fcf1 Translated using Weblate (Croatian)
Currently translated at 73.0% (258 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-03-20 21:50:14 +01:00
Thomas Citharel 0837090e30
Bump version to 3.0.4
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-20 18:26:59 +01:00
Thomas Citharel 5bb09927a3 Merge branch 'v3.0.4' into 'stable-3.0'
Fix LDAP and participant export

See merge request framasoft/mobilizon!1362
2023-03-20 16:14:38 +00:00
Thomas Citharel 20fc9d1f6b
Fetch config for export event participant formats
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-20 16:39:27 +01:00
Thomas Citharel cef536d5b9
Fix LDAP authentificator tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-03-20 13:07:02 +01:00
ljf 48ebdbb03a
[fix] LDAP connector with erland 24.3+ 2023-03-20 12:26:06 +01:00
Thomas Citharel b138e4aec4 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1360
2023-03-20 08:21:51 +00:00
Dannek Rose abc0f294f8 Translated using Weblate (Japanese)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/ja/
2023-03-13 21:29:01 +01:00
Dannek Rose c9d8bb10d9 Translated using Weblate (Japanese)
Currently translated at 2.2% (5 of 218 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/ja/
2023-03-13 21:29:01 +01:00
Dannek Rose 53e01ddcae Translated using Weblate (Japanese)
Currently translated at 43.7% (637 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2023-03-13 21:29:00 +01:00
lost_geographer c9f68dc709 Translated using Weblate (Italian)
Currently translated at 99.8% (1453 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-03-10 13:35:14 +01:00
lost_geographer b42056b915 Translated using Weblate (Italian)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/it/
2023-03-09 12:38:42 +01:00
lost_geographer 8e6dc30198 Translated using Weblate (Italian)
Currently translated at 100.0% (218 of 218 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/it/
2023-03-09 12:38:42 +01:00
lost_geographer 7546ced4a1 Translated using Weblate (Italian)
Currently translated at 99.1% (1443 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-03-09 12:38:41 +01:00
Derek Zhou d140d799fa Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1455 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-28 17:14:21 +01:00
Derek Zhou 5c9a5eb0ac Translated using Weblate (Chinese (Simplified))
Currently translated at 98.0% (1427 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-28 00:04:41 +01:00
Derek Zhou 437f03315f Translated using Weblate (Chinese (Simplified))
Currently translated at 93.3% (1358 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-25 21:43:21 +01:00
Derek Zhou b4bdedee02 Translated using Weblate (Chinese (Simplified))
Currently translated at 87.2% (1270 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-25 05:18:38 +01:00
Derek Zhou ffda6bdc99 Translated using Weblate (Chinese (Simplified))
Currently translated at 81.4% (1185 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-21 22:38:25 +01:00
Milo Ivir aee8e07c7c Translated using Weblate (Croatian)
Currently translated at 72.8% (257 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-02-21 22:38:25 +01:00
Derek Zhou 668869a837 Translated using Weblate (Chinese (Simplified))
Currently translated at 74.1% (1079 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-19 02:02:15 +01:00
Derek Zhou f3ec2a8d90 Translated using Weblate (Chinese (Simplified))
Currently translated at 45.4% (662 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-16 16:32:12 +01:00
Vri b8a3d9bd26 Translated using Weblate (German)
Currently translated at 100.0% (218 of 218 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2023-02-16 16:32:11 +01:00
Vri c53f3f1dc9 Translated using Weblate (German)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2023-02-16 16:32:11 +01:00
Vri ad2328bf53 Translated using Weblate (German)
Currently translated at 100.0% (1455 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2023-02-16 16:32:11 +01:00
Derek Zhou 67cef7891a Translated using Weblate (Chinese (Simplified))
Currently translated at 30.8% (449 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hans/
2023-02-14 12:42:49 +01:00
Jiri Podhorecky c7da4a15d0 Translated using Weblate (Czech)
Currently translated at 99.7% (1452 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2023-02-14 12:42:49 +01:00
Derek Zhou 2219cdcd47 Added translation using Weblate (Chinese (Simplified)) 2023-02-13 21:11:50 +01:00
Thomas Citharel 9aaaedb5df Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1359
2023-02-08 09:26:30 +00:00
Thomas Citharel 0cfe6c89d9 Translated using Weblate (French (France) (fr_FR))
Currently translated at 99.7% (1452 of 1455 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2023-02-08 03:24:52 +01:00
Thomas Citharel 0ed4434d66 Translated using Weblate (French)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr/
2023-02-08 03:24:51 +01:00
Thomas Citharel 78969d66d0 Merge branch 'registration-save-ip' into 'main'
Same IP address from newly registered accounts that didn't confirm their account and add Akismet for spam checking

See merge request framasoft/mobilizon!1358
2023-02-07 14:49:13 +00:00
Thomas Citharel 317a3434b2
feat(spam): Introduce checking new accounts, events & comments for spam with the help of Akismet
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-02-07 15:18:29 +01:00
Thomas Citharel 1db5c4ae2d
Save IP and login date from directly registered accounts
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-31 19:33:33 +01:00
Thomas Citharel 5c43713d85
Forgot call to clear_feeds_cache
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-31 15:22:22 +01:00
Thomas Citharel 4cea61bd9f Merge branch 'work' into 'main'
Various fixes

Closes #1251, #1252 et #1215

See merge request framasoft/mobilizon!1357
2023-01-28 17:03:15 +00:00
Thomas Citharel 8eb949af60
Fix dynamic import of datefns with downcase locale
Closes #1215

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:21 +01:00
Thomas Citharel f531c39b7e
Make sure every cache is properly cleared when managing an event
Closes #1252

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:20 +01:00
Thomas Citharel 92d7de51d0
Add debug logging to locale
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:20 +01:00
Thomas Citharel 0775814e19
Add page title for Categories view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:19 +01:00
Thomas Citharel 31fd99bd37
Fix notifications settings not working
Closes #1251

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:19 +01:00
Thomas Citharel 1a03c49fa4
Fix MyGroups and MyEvents views
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-28 17:37:19 +01:00
Thomas Citharel 8ce1f596cc
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-27 14:53:46 +01:00
Thomas Citharel 41267bc9a6 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1356
2023-01-25 08:39:51 +00:00
Milo Ivir dabcae7f98 Translated using Weblate (Croatian)
Currently translated at 74.0% (1074 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2023-01-25 01:32:36 +01:00
Milo Ivir f48e2c3e9c Translated using Weblate (Croatian)
Currently translated at 72.5% (256 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2023-01-25 01:32:35 +01:00
Thomas Citharel e42167d22e Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1355
2023-01-20 08:45:30 +00:00
李奕寯 941d79bfa5 Translated using Weblate (Chinese (Traditional))
Currently translated at 19.1% (278 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2023-01-20 07:26:12 +01:00
Thomas Citharel 283581b97f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1354
2023-01-19 14:01:35 +00:00
李奕寯 483593194a Translated using Weblate (Chinese (Traditional))
Currently translated at 17.9% (260 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2023-01-19 11:34:16 +01:00
Aitozl e409d11f7b Translated using Weblate (Basque)
Currently translated at 4.2% (62 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/eu/
2023-01-19 11:34:16 +01:00
Thomas Citharel a7b9ef36ab Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1353
2023-01-19 08:45:32 +00:00
李奕寯 823bdea2ff Translated using Weblate (Chinese (Traditional))
Currently translated at 14.1% (205 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2023-01-19 03:40:10 +01:00
Aitozl 91d2fea73e Translated using Weblate (Basque)
Currently translated at 4.2% (61 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/eu/
2023-01-19 03:40:10 +01:00
Thomas Citharel a78cd16afe
Fix LDAP authentificator tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-16 12:00:06 +01:00
Thomas Citharel 7e49a80df9
Fix formatting
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2023-01-16 10:08:32 +01:00
Thomas Citharel 01bf7261cd
Merge branch 'mobilizon-fix-ldap' 2023-01-16 10:07:15 +01:00
ljf ae05832cb5
[fix] LDAP connector with erland 24.3+ 2023-01-16 10:06:53 +01:00
Thomas Citharel 402820bae0 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1350
2023-01-10 15:17:10 +00:00
Balázs Meskó 0fa25ccc5b Translated using Weblate (Hungarian)
Currently translated at 81.3% (287 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hu/
2023-01-05 19:22:28 +01:00
Balázs Meskó 5ea7f07400 Translated using Weblate (Hungarian)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2023-01-05 19:22:28 +01:00
李奕寯 b0889da38b Translated using Weblate (Chinese (Traditional))
Currently translated at 12.2% (178 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2023-01-05 14:38:08 +01:00
Tommaso Gardumi d435c35af2 Translated using Weblate (Italian)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2023-01-05 14:38:08 +01:00
Tommaso Gardumi 4593aa6a1f Translated using Weblate (Italian)
Currently translated at 99.3% (1440 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2023-01-05 14:38:07 +01:00
李奕寯 67dcd7813e Translated using Weblate (Chinese (Traditional))
Currently translated at 10.8% (157 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-29 01:46:52 +01:00
李奕寯 b9264b8da3 Translated using Weblate (Chinese (Traditional))
Currently translated at 10.3% (150 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-27 22:12:36 +01:00
李奕寯 8ec1d5d31f Added translation using Weblate (Chinese (Traditional)) 2022-12-27 07:07:54 +01:00
李奕寯 1e8b7647ad Translated using Weblate (Chinese (Traditional))
Currently translated at 4.8% (71 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-27 05:01:08 +01:00
Thomas Citharel 81e26114ed Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1349
2022-12-25 19:37:19 +00:00
Vri 1f8c16cb0b Translated using Weblate (German)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-12-24 09:41:28 +01:00
Thomas Citharel 2f368b44ca
Release 3.0.3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 18:11:49 +01:00
Thomas Citharel e9d301119b
Fix missing OpenSSL 1.1 in Docker image
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 18:10:26 +01:00
Thomas Citharel fae1153589
Release 3.0.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:26:01 +01:00
Thomas Citharel b7a532414c Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1345
2022-12-22 11:25:07 +00:00
李奕寯 fb2f01dd45 Translated using Weblate (Chinese (Traditional))
Currently translated at 4.8% (70 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-22 12:24:38 +01:00
Milo Ivir a8403afd1c Translated using Weblate (Croatian)
Currently translated at 67.7% (143 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-12-22 12:24:38 +01:00
Milo Ivir 932de7157c Translated using Weblate (Croatian)
Currently translated at 71.6% (253 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-12-22 12:24:38 +01:00
李奕寯 9ab5a64be8 Translated using Weblate (Chinese (Traditional))
Currently translated at 3.3% (49 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-22 12:24:38 +01:00
Kristoffer Grundström 0098ecb30c Translated using Weblate (Swedish)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/sv/
2022-12-22 12:24:38 +01:00
李奕寯 786245d592 Translated using Weblate (Chinese (Traditional))
Currently translated at 3.2% (47 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-22 12:24:38 +01:00
Kristoffer Grundström 9d5d3911f3 Translated using Weblate (Swedish)
Currently translated at 32.5% (115 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/sv/
2022-12-22 12:24:38 +01:00
Kristoffer Grundström 17fd0726f8 Translated using Weblate (Swedish)
Currently translated at 43.2% (627 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2022-12-22 12:24:38 +01:00
李奕寯 f6e6b8f737 Translated using Weblate (Chinese (Traditional))
Currently translated at 2.3% (34 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/zh_Hant/
2022-12-22 12:24:38 +01:00
Norwin 51ca77c785 Translated using Weblate (German)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-12-22 12:24:38 +01:00
Thebigal Wisi a00716a382 Translated using Weblate (German)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-12-22 12:24:38 +01:00
Andreas Aubele 1dc675036b Translated using Weblate (German)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-12-22 12:24:38 +01:00
Andreas Aubele d4cc31018a Translated using Weblate (German)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-12-22 12:24:38 +01:00
Andreas Aubele 991599da6d Translated using Weblate (German)
Currently translated at 99.4% (351 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-12-22 12:24:38 +01:00
Jiri Podhorecky 4e6134cb33 Translated using Weblate (Czech)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-12-22 12:24:38 +01:00
Kate ab9f6fd0f0 Translated using Weblate (German)
Currently translated at 100.0% (1450 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-12-22 12:24:38 +01:00
Vri 89e15b20c9 Translated using Weblate (German)
Currently translated at 100.0% (1450 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-12-22 12:24:38 +01:00
Thomas Citharel ce9a310d91 Merge branch 'fixes' into 'main'
Various fixes

Closes #1223 et #1214

See merge request framasoft/mobilizon!1348
2022-12-22 11:24:30 +00:00
Thomas Citharel b261756bae
Cleanup unused webpack comment
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:24:17 +01:00
Thomas Citharel 1400eadfb5
Lint fixes after 5929a85ec7
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:24:17 +01:00
Thomas Citharel 3d99a41104
Fix logging from 3rd-party auth provider
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:23:51 +01:00
Thomas Citharel 1854063f09
Fix instances filter
Closes #1214

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:04:40 +01:00
Thomas Citharel 726ed51ed1
Small typos
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:04:39 +01:00
Thomas Citharel 5cddce7b15
Add a missing icon
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:04:39 +01:00
Thomas Citharel 275261d600
Fix changing email & password
Closes #1223

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-22 12:04:39 +01:00
Thomas Citharel 16fa1acf24 Merge branch 'fixes' into 'main'
Two fixes

Closes #1239 et #1216

See merge request framasoft/mobilizon!1347
2022-12-21 16:37:45 +00:00
Thomas Citharel 5929a85ec7
Fix loading group members in organizer picker
Closes #1216

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-21 17:10:51 +01:00
Thomas Citharel c335e7069b
Consider timezone for start time also when end date is hidden
Closes #1239

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-12-21 16:34:11 +01:00
Thomas Citharel 32d3fa4dfc Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1342
2022-11-29 09:42:25 +00:00
Vri 4008ef4271 Translated using Weblate (German)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-29 09:35:02 +01:00
Vri 9c39de107a Translated using Weblate (German)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi 4d5f7c7205 Translated using Weblate (Italian)
Currently translated at 91.1% (1322 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi 1907fb49b0 Translated using Weblate (Italian)
Currently translated at 92.3% (326 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi cd1fb561a1 Translated using Weblate (Italian)
Currently translated at 88.3% (1281 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi 937abce9a9 Translated using Weblate (Italian)
Currently translated at 87.5% (309 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi 84c15a9fd1 Translated using Weblate (Italian)
Currently translated at 87.2% (308 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi a3ebdad445 Translated using Weblate (Italian)
Currently translated at 87.9% (1275 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi f1fdfea0cb Translated using Weblate (Italian)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi 59ad17bc64 Translated using Weblate (Italian)
Currently translated at 87.7% (1272 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi d872dcb639 Translated using Weblate (Italian)
Currently translated at 83.7% (1214 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Tommaso Gardumi af6b605f02 Translated using Weblate (Italian)
Currently translated at 74.4% (1079 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/it/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 2f591f043f Translated using Weblate (Czech)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky b2471d0553 Translated using Weblate (Czech)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/cs/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 7d2683d50b Translated using Weblate (Czech)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 515b26c52b Translated using Weblate (Czech)
Currently translated at 100.0% (353 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/cs/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 822f024dd8 Translated using Weblate (Czech)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-11-29 08:56:46 +01:00
Vri 01691ab360 Translated using Weblate (German)
Currently translated at 99.8% (1448 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 11aa50be27 Translated using Weblate (Czech)
Currently translated at 98.4% (1428 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-11-29 08:56:46 +01:00
Jiri Podhorecky 17a6726299 Translated using Weblate (Czech)
Currently translated at 97.2% (1410 of 1450 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-11-29 08:56:46 +01:00
Thomas Citharel bce5d5a1c8 Merge branch 'fixes' into 'main'
Various front-end fixes

See merge request framasoft/mobilizon!1344
2022-11-29 07:56:27 +00:00
Thomas Citharel 9328df2103
Fix editing group events
Closes #1222

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-29 08:28:48 +01:00
Thomas Citharel fc16014b2a
Use the correct value of current locale
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-29 08:23:02 +01:00
Thomas Citharel 6f9940a0a0
Lint fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-29 08:20:11 +01:00
Thomas Citharel bce2a4dc3c
Fix terms and privacy view
Closes #1229

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-29 08:20:01 +01:00
Thomas Citharel e93e282524
Limit the size of the IP(v6) field in the user admin view
Now it breaks only below 1280px width, instead of ~1500.

Closes #1228

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-29 08:19:21 +01:00
Thomas Citharel 8f4f303a70 Merge branch 'fix-unfollow-group' into 'main'
Fix unfollowing group

See merge request framasoft/mobilizon!1343
2022-11-25 17:38:10 +00:00
Thomas Citharel 635c35e009
Fix unfollowing group
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-25 18:12:11 +01:00
Thomas Citharel d2c78c5f17
Release 3.0.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 14:11:44 +01:00
Thomas Citharel 454a6188cc Merge branch 'fixes' into 'main'
Various fixes

Closes #1198 et #1210

See merge request framasoft/mobilizon!1341
2022-11-22 12:28:05 +00:00
Thomas Citharel 9eab9f1bbb
Fix comment display
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 13:02:12 +01:00
Thomas Citharel fde0c9b5d8
Register missing icon
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:55:09 +01:00
Thomas Citharel 4073eab201
Fix approving/rejecting group members
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:55:09 +01:00
Thomas Citharel 8e7907ec9e
Don't notify group members & followers from new draft event
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:21:42 +01:00
Thomas Citharel aeaf22a224
Set correct Content-Type on all AP endpoints
Closes #1210

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:21:42 +01:00
Thomas Citharel 2e9414767c
Increase paging timeout to 30
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:21:42 +01:00
Thomas Citharel 7f15f2bad1
Detect Intl.ListFormat availability and add fallback
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 12:21:42 +01:00
Thomas Citharel f9d21c5a38
Fix 3rd-party auth links
Closes #1198

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 09:26:39 +01:00
Thomas Citharel 6792ee3127
Fix port number type
After d8616899 and https://framagit.org/framasoft/mobilizon/-/merge_requests/1339#note_1894390

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-22 09:22:18 +01:00
Thomas Citharel d03a249d55 Merge branch 'fixes' into 'main'
Prevent AP collection page number being < 1

Closes #1184 et #1209

See merge request framasoft/mobilizon!1340
2022-11-21 19:18:38 +00:00
Thomas Citharel 9d07373134
Lint fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 17:29:50 +01:00
Thomas Citharel b5d6165ce1
Fix approving new followers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 17:29:29 +01:00
Thomas Citharel 7ebc16c5ee
Fix link to contributing page
Closes #1209

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 17:00:53 +01:00
Thomas Citharel 3e15048843
Prevent AP collection page number being < 1
Closes #1184

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 16:57:54 +01:00
Thomas Citharel 7a4ff475d5 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1338
2022-11-21 11:58:15 +00:00
Milo Ivir a16b6f68ba Translated using Weblate (Croatian)
Currently translated at 61.1% (129 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-11-21 12:35:46 +01:00
Milo Ivir df2a99f040 Translated using Weblate (Croatian)
Currently translated at 66.5% (235 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-11-21 12:35:46 +01:00
GunChleoc d129342ad9 Translated using Weblate (Gaelic)
Currently translated at 92.6% (1341 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gd/
2022-11-21 12:35:46 +01:00
אנטולי מהגבעות האדומות 02821e806d Translated using Weblate (Hebrew)
Currently translated at 26.3% (381 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/he/
2022-11-21 12:35:46 +01:00
John H a94b669849 Translated using Weblate (German)
Currently translated at 99.7% (1444 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-21 12:35:46 +01:00
Milo Ivir af10515656 Translated using Weblate (Croatian)
Currently translated at 72.9% (1057 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-11-21 12:35:46 +01:00
Balázs Meskó 51cf45de0c Translated using Weblate (Hungarian)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/hu/
2022-11-21 12:35:46 +01:00
Balázs Meskó ef8e3f07c1 Translated using Weblate (Hungarian)
Currently translated at 81.3% (287 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hu/
2022-11-21 12:35:46 +01:00
Balázs Meskó 2f189612a5 Translated using Weblate (Hungarian)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hu/
2022-11-21 12:35:46 +01:00
Balázs Meskó 06350a0311 Translated using Weblate (Hungarian)
Currently translated at 99.8% (1446 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2022-11-21 12:35:46 +01:00
John H 6c88669a7e Translated using Weblate (German)
Currently translated at 99.7% (1444 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-21 12:35:46 +01:00
Balázs Meskó 7fc57978b3 Translated using Weblate (Hungarian)
Currently translated at 87.3% (1265 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hu/
2022-11-21 12:35:46 +01:00
John H f787a600be Translated using Weblate (German)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/de/
2022-11-21 12:35:46 +01:00
John H 3a9f52eb15 Translated using Weblate (German)
Currently translated at 99.7% (1444 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-11-21 12:35:46 +01:00
Thomas Citharel 7d94a3f7fc Merge branch 'fixes' into 'main'
Various fixes

Closes #1195, #1193, #1197, #1192, #1191, #1189 et #1194

See merge request framasoft/mobilizon!1339
2022-11-21 11:35:36 +00:00
Thomas Citharel 0452b44f21
Make sure maximumAttendeeCapacity is a number, not a string
Closes #1194

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 12:07:22 +01:00
Thomas Citharel 5a30bc2f15
Fix creating release and upload artefacts in CI on final releases
Closes #1189

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 12:00:08 +01:00
Thomas Citharel 77415ed413
Fix asset links in created releases
Closes #1191

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:57:44 +01:00
Thomas Citharel 32706150e0
Fix changing event uuid didn't change event data
Closes #1192

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:53:29 +01:00
MickGe e1469a5eec
Fix: Assets in production environment
Closes #1197
2022-11-21 11:53:23 +01:00
Thomas Citharel d861689970
Allow to specify database port for Docker configuration
Closes #1193

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:05:39 +01:00
Thomas Citharel 670dd7ac21
Fix formatting of fallback locales
Closes #1195

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:04:13 +01:00
Thomas Citharel ebc5e70b1f
Use a custom erlport fork for Python 3.11 compatibility
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:03:54 +01:00
Thomas Citharel 4b264534d6
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-21 11:03:45 +01:00
Thomas Citharel b0af8e5293 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1336
2022-11-08 13:54:59 +00:00
Eivind Ødegård a5d42239dd Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/nn/
2022-11-08 14:26:31 +01:00
Eivind Ødegård f4ea798c5b Translated using Weblate (Norwegian Nynorsk)
Currently translated at 99.7% (352 of 353 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/nn/
2022-11-08 14:26:31 +01:00
Eivind Ødegård c0a31235e7 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 99.8% (1446 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-11-08 14:26:29 +01:00
Thomas Citharel 73e256ada7 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1335
2022-11-08 08:31:12 +00:00
Milo Ivir 50249ef25c Translated using Weblate (Croatian)
Currently translated at 59.7% (126 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-11-07 22:27:42 +01:00
Thomas Citharel ae18648ceb
Release 3.0.0 final
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 20:11:38 +01:00
Thomas Citharel 34a0b181f7 Merge branch 'fixes' into 'main'
Final round of fixes

Closes #1187 et #1183

See merge request framasoft/mobilizon!1334
2022-11-07 19:10:27 +00:00
Thomas Citharel 035ff134f5
Properly log if we can't notify group follower
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 19:44:16 +01:00
Thomas Citharel 16b1e0080c
Add fallback handler for can_send_activity?
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 19:37:59 +01:00
Thomas Citharel af3110955d
Handle suspending actors with special type
Closes #1183

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 19:37:59 +01:00
Thomas Citharel bb86ca5413
Handle :http_not_found as an error when deleting an object
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 19:37:59 +01:00
Thomas Citharel 7b2eb82d6f
Handle nothing found by unsplash for location
Closes #1187

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 19:37:59 +01:00
Thomas Citharel 1f23bb421e
Increase timeout needed to build page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 18:55:49 +01:00
Thomas Citharel 3305ea6667 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1333
2022-11-07 11:46:32 +00:00
Weblate a74b4aaa7a Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2022-11-07 12:23:58 +01:00
Eivind Ødegård 806f81ad91 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 97.5% (1412 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-11-07 12:23:56 +01:00
Thomas Citharel 0a2307b5a3 Merge branch 'fixes' into 'main'
Register missing BellOutline and BellOffOutline icons

See merge request framasoft/mobilizon!1332
2022-11-07 11:23:49 +00:00
Thomas Citharel 196e76c0e3
Fix profile@instance translation
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 11:29:43 +01:00
Thomas Citharel 6e1687a651
Fix order of useHead registration on JoinGroupWithAccount view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 11:29:15 +01:00
Thomas Citharel 97e41a9e47 Merge branch 'logo-adapt-color' into 'main'
Adapt white parts in Mobilizon logo to current color

See merge request framasoft/mobilizon!1331
2022-11-07 10:23:21 +00:00
Thomas Citharel 066e71c517
Don't load group status when unlogged
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 11:23:15 +01:00
Thomas Citharel 97895d515b
Register missing BellOutline and BellOffOutline icons
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 11:22:54 +01:00
Thomas Citharel 9ff54bae06
Adapt white parts in Mobilizon logo to current color
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 10:54:17 +01:00
Thomas Citharel ab96dce30f
Bump version to 3.0.0-rc.6
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 09:41:19 +01:00
Thomas Citharel d36db8e18f Merge branch 'fixes' into 'main'
Fix ecto dev warning

See merge request framasoft/mobilizon!1330
2022-11-07 08:39:39 +00:00
Thomas Citharel 8f49c66b3f
Fix upcoming event groups on homeview
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 09:12:48 +01:00
Thomas Citharel 67b63a9a6e
Fix ecto dev warning
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-07 09:02:09 +01:00
Thomas Citharel 1f66c78952 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1329
2022-11-07 07:35:32 +00:00
Eivind Ødegård 1a649a2df9 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 92.7% (1343 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-11-07 08:34:51 +01:00
Thomas Citharel 1a6967cb7d
Release 3.0.0-rc.5
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 20:23:05 +01:00
Thomas Citharel 55777033cf
Allow failures on all non amd64 release builds
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 20:21:26 +01:00
Thomas Citharel d58adb692a Merge branch 'ecto-dev-logger' into 'main'
Add Ecto.DevLogger in dev mode

See merge request framasoft/mobilizon!1328
2022-11-06 16:26:18 +00:00
Thomas Citharel e7e4ed2ac9
Add Ecto.DevLogger in dev mode
See https://github.com/fuelen/ecto_dev_logger

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 16:56:04 +01:00
Thomas Citharel 84860ca2bf
Release 3.0.0-rc.4
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 16:02:56 +01:00
Thomas Citharel 394428cda7 Merge branch 'fixes' into 'main'
Add GraphQL query name to other queries

See merge request framasoft/mobilizon!1327
2022-11-06 15:01:57 +00:00
Thomas Citharel 96ba48cdb0
Handle error when fetching object from tombstone
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 15:29:34 +01:00
Thomas Citharel 994797c475
Fix front-end analytics csp config
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 15:14:04 +01:00
Thomas Citharel f593867d8e
Add GraphQL query name to other queries
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 15:13:52 +01:00
Thomas Citharel da78410039 Merge branch 'graphql-operation-name-logs' into 'main'
Add GraphQL operation name, user ID and actor name in logs

See merge request framasoft/mobilizon!1326
2022-11-06 13:47:59 +00:00
Thomas Citharel b860dadbfb
Front-end fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 13:03:53 +01:00
Thomas Citharel e812b4291b
Add GraphQL query name where it was missing
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 13:03:53 +01:00
Thomas Citharel 30b0d3ca08
Add GraphQL operation name, user ID and actor name in logs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 13:03:53 +01:00
Thomas Citharel dffa8d4197 Merge branch 'deps' into 'main'
Upgrade deps

See merge request framasoft/mobilizon!1325
2022-11-06 10:54:41 +00:00
Thomas Citharel de8433cdbb
Add error details in error logging in Activity Update handler
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 11:33:09 +01:00
Thomas Citharel 83755c4746
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-06 11:28:54 +01:00
Thomas Citharel 40c68bde7f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1324
2022-11-06 09:04:21 +00:00
Eivind Ødegård 3b552497b4 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 90.8% (1316 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-11-05 22:38:55 +01:00
Eivind Ødegård bb9c0b4753 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/nn/
2022-11-05 19:06:05 +01:00
Eivind Ødegård 13ee4fd781 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 90.2% (1307 of 1448 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-11-05 19:06:05 +01:00
Thomas Citharel 8d3e9f3b4f Merge branch 'upgrade-docker-dind' into 'main'
Upgrade Docker dind

See merge request framasoft/mobilizon!1323
2022-11-04 19:17:05 +00:00
Thomas Citharel 44863096c1
Upgrade Docker dind
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 20:16:45 +01:00
Thomas Citharel dbb19a5e01 Merge branch 'sentry-ci' into 'main'
Send sourcemaps to our sentry instance

See merge request framasoft/mobilizon!1322
2022-11-04 18:30:50 +00:00
Thomas Citharel ef7841a041
Update language files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 18:29:59 +01:00
Thomas Citharel a2ef3901f4
Linting Text editor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 18:29:59 +01:00
Thomas Citharel b745f34356
Fix event map view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 18:29:59 +01:00
Thomas Citharel ad9d9d33bc
Send sourcemaps to our sentry instance
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 18:17:14 +01:00
Thomas Citharel 8e0f6bd173 Merge branch 'homepage-webperf' into 'main'
Fix building CSP policy

See merge request framasoft/mobilizon!1321
2022-11-04 16:18:29 +00:00
Thomas Citharel bc81b1830d
Add empty alt attribute to uploaded pictures (for now)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 16:47:24 +01:00
Thomas Citharel 5078f890ce
Add loading="lazy" to some images, except categories in viewport
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 16:47:24 +01:00
Thomas Citharel a51b36fb75
Fix building CSP policy
You can't use 'none' as a CSP Policy if there's other things among

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 16:47:24 +01:00
Thomas Citharel d8434ca3d3
Release 3.0.0-rc.3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 14:43:10 +01:00
Thomas Citharel 1fe4baa6ba Merge branch 'cleanup-navbar' into 'main'
Cleanup navbar

See merge request framasoft/mobilizon!1320
2022-11-04 13:42:02 +00:00
Thomas Citharel 7489d60f7f
Cleanup navbar
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 14:30:26 +01:00
Thomas Citharel 88256bddfe Merge branch 'add-csp-policy-for-pictures' into 'main'
Fix event integrations

See merge request framasoft/mobilizon!1319
2022-11-04 11:29:57 +00:00
Thomas Citharel e31433cf83
Allow for resource providers to register a csp policy
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 11:50:15 +01:00
Thomas Citharel c1dff8caaa
Remove unused import
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 11:29:19 +01:00
Thomas Citharel 08ce9b6f84
Prevent loading authorized groups when current actor isn't loading in OrganizerPickerWrapper
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 11:29:12 +01:00
Thomas Citharel 74639e7203
Fix event integrations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 11:28:56 +01:00
Thomas Citharel b1cc1a9155 Merge branch 'add-csp-policy-for-pictures' into 'main'
Add CSP Policy for pictures

See merge request framasoft/mobilizon!1318
2022-11-04 10:24:21 +00:00
Thomas Citharel 57fac37347
Support CSP report_uri, report_to and the Report-To and Reporting-Endpoints headers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 10:55:26 +01:00
Thomas Citharel e97206077c
Add CSP Policy for pictures
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-04 09:26:45 +01:00
Thomas Citharel f5e81fab3f Merge branch 'fixes' into 'main'
Various fixes

Closes #1180 et #1182

See merge request framasoft/mobilizon!1317
2022-11-04 07:59:01 +00:00
Thomas Citharel 6058da0d44
Propertly handle other errors when receiving a comment
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 18:11:40 +01:00
Thomas Citharel 4bb90ebb3f
Properly handle replying to an event that has been deleted
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 18:02:32 +01:00
Thomas Citharel 770a518ad1
Properly handle un-needed background jobs
Cancel them if they're not needed

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 18:00:42 +01:00
Thomas Citharel c68c0c2120
Add context to error when removing an upload file following actor suspension
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 17:56:45 +01:00
Thomas Citharel f3ac1f7ce1
Discussions views improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 17:38:20 +01:00
Thomas Citharel afd164a449
Resources view improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 17:38:20 +01:00
Thomas Citharel d75a95cccd
Lower loglevel of resource insertion error
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 16:54:04 +01:00
Thomas Citharel 7401fc8273
Truncate resource description preview after 350 characters
Closes #1182

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 16:54:04 +01:00
Thomas Citharel e03ad73c7f
Fix multiselect of resources
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 16:26:50 +01:00
Thomas Citharel 29de9b346a
Fix moving resources
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 12:10:59 +01:00
Thomas Citharel 62dd1b85b7
Don't treat notification for a deleted event as an error
Just cancel the job

Closes #1180

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 09:50:33 +01:00
Thomas Citharel 34ecb1f3e4
Correct heading levels in CHANGELOG.md
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-03 09:00:29 +01:00
Thomas Citharel 84594459be Merge branch 'release-3.0.0-rc.2' into 'main'
Release 3.0.0-rc.2

See merge request framasoft/mobilizon!1316
2022-11-03 07:55:51 +00:00
Thomas Citharel 53fdf99628
Release 3.0.0-rc.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 19:42:33 +01:00
Thomas Citharel 4d1c551148 Merge branch 'deps' into 'main'
Upgrade deps

Closes #466 et #1086

See merge request framasoft/mobilizon!1315
2022-11-02 18:42:03 +00:00
Thomas Citharel dbf27eee2b Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1312
2022-11-02 18:09:40 +00:00
Berto Te 58c13131df Translated using Weblate (Spanish)
Currently translated at 100.0% (1440 of 1440 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-11-02 18:47:52 +01:00
Berto Te 4bf29f167c Translated using Weblate (Spanish)
Currently translated at 100.0% (211 of 211 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/es/
2022-11-02 18:47:52 +01:00
Berto Te f94119b643 Translated using Weblate (Spanish)
Currently translated at 99.0% (1427 of 1440 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-11-02 18:47:52 +01:00
Thomas Citharel ce3fa41505 Merge branch 'fixes' into 'main'
Do not list drafts in upcoming / old events event if moderator

Closes #466 et #1086

See merge request framasoft/mobilizon!1314
2022-11-02 17:47:45 +00:00
Thomas Citharel c009a5cf83
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 18:32:44 +01:00
Thomas Citharel 4dede63b83
Remove unused variable
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 18:32:30 +01:00
Thomas Citharel 84009a9530
Fix current format status of text not displayed in text editor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 18:15:19 +01:00
Thomas Citharel e69e8a5044
Allow to configure editor heading levels and set level 2 as start for posts
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 18:09:26 +01:00
Thomas Citharel 3ddf360e11
Add breadcrumb trail on Post view
And lint

Closes #466

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 18:02:20 +01:00
Thomas Citharel 30eb37e31b
Post view improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:45:58 +01:00
Thomas Citharel 7ee79a00e2
Fix post sharing URL
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:45:49 +01:00
Thomas Citharel dd3e99bc5e
Fix pagination number text color in dark theme
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:45:27 +01:00
Thomas Citharel 02381f2820
Fix deleting person detached from user
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:14:26 +01:00
Thomas Citharel 4be5cc787e
Make sure group is refreshed after action
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:14:26 +01:00
Thomas Citharel 75296498c4
Do not list drafts in upcoming / old events event if moderator
Closes #1086

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 17:12:35 +01:00
Thomas Citharel 48da35ee41 Merge branch 'fix-csp' into 'main'
Add sha-256 hash for toggling dark theme code and remove inlined phoenix digest

Closes #993

See merge request framasoft/mobilizon!1313
2022-11-02 11:10:48 +00:00
Thomas Citharel dcfe87116e
Allow to view more than 10 drafts events on my events view
Closes #993

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 11:38:14 +01:00
Thomas Citharel a1726fc12e
Add sha-256 hash for toggling dark theme code and remove inlined phoenix digest
Follow-up to !1300

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-11-02 11:36:32 +01:00
Thomas Citharel ae0e3fbdd1 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1310
2022-10-31 18:26:14 +00:00
Weblate 6f9721f9bf Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2022-10-31 19:24:47 +01:00
Thomas Citharel c8d5bdd4af Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1309
2022-10-31 18:24:42 +00:00
Thomas Citharel 2464134977
Fix anonymous/remote participation button
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:54:21 +01:00
Thomas Citharel dc075ccf0d
Fix anonymous & remote participation pages
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:54:05 +01:00
Thomas Citharel 9a135bb67f
Add unique constraint on event URL
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:07:49 +01:00
Thomas Citharel 2e631d3633
Lower loglevel of error when creating a new person
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:07:28 +01:00
Thomas Citharel be33c3b213
Search improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:07:14 +01:00
Thomas Citharel 5d507ecf69
Event view improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:05:59 +01:00
Thomas Citharel 1592ae8fe9
Make text editor level start at 3, 4, 5
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 18:04:30 +01:00
Thomas Citharel 1282bbf0f4
Fix attribute on FullAddressAutoComplete
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 15:05:14 +01:00
Thomas Citharel 8ab8364100 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1308
2022-10-31 14:03:01 +00:00
Milo Ivir ada67e5f15 Translated using Weblate (Croatian)
Currently translated at 74.2% (1053 of 1419 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-10-31 15:00:57 +01:00
Thomas Citharel d4d572aead Merge branch 'fixes' into 'main'
Various fixes

Closes #1151

See merge request framasoft/mobilizon!1307
2022-10-31 14:00:42 +00:00
Thomas Citharel c4a7910791
Update extracted translations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 14:30:41 +01:00
Thomas Citharel e0127afd2b
Various front-end fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 14:30:41 +01:00
Thomas Citharel ecb862f634
Fix dashboard view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 14:30:40 +01:00
Thomas Citharel 470a3e594b
Correctly escape user-defined names in emails
Closes #1151

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 14:30:40 +01:00
Thomas Citharel 695d773d50
Various UI fixes, add placeholder to the text editor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 11:43:18 +01:00
Thomas Citharel 9ce618a267
Add an error log when we try to update the relay actor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-31 11:42:51 +01:00
Thomas Citharel 1df02512af Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1306
2022-10-31 07:51:41 +00:00
Berto Te b65feade57 Translated using Weblate (Spanish)
Currently translated at 100.0% (1419 of 1419 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-10-30 00:57:22 +02:00
Thomas Citharel 720c11c43f Merge branch 'fixes' into 'main'
Little features

Closes #1082, #1102, #1154 et #540

See merge request framasoft/mobilizon!1305
2022-10-28 19:00:49 +00:00
Thomas Citharel 2bf8148951
Fix fetching events with addresses that's not objects
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 19:13:13 +02:00
Thomas Citharel 4eb15b5ebf
Fix E2E tests for login
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 19:10:38 +02:00
Thomas Citharel bc6c0e0448
HTML syntax fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 17:41:50 +02:00
Thomas Citharel 8452b2e096
Remove unused attribute
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 17:41:50 +02:00
Thomas Citharel 579bcaba06
Allow to disable non-SSO login
With a new disable_database_login parameter under :mobilizon, :instance

Closes #1154

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 17:41:49 +02:00
Thomas Citharel fc5b6882ae
Show registration button if registration allow list is used and improve
registration page

Closes #1102

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 17:41:49 +02:00
Thomas Citharel e420713a6f
Add setting to toggle light/dark mode
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 17:41:49 +02:00
Thomas Citharel 610570c795
Prefix setInterval with window
Use the patch from https://github.com/NixOS/nixpkgs/pull/119132

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 10:40:20 +02:00
Thomas Citharel 09fce90c6a
Order categories by translated label
Closes #1082

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 10:39:42 +02:00
Thomas Citharel dfd8094017 Merge branch 'fixes' into 'main'
Add logging for when cached iCalendar feed data can't be found

Closes #1164

See merge request framasoft/mobilizon!1304
2022-10-28 08:28:34 +00:00
Thomas Citharel 8efb17d78e
Prevent loading group membership status before we get person information
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 09:58:36 +02:00
Thomas Citharel 231f99cd1e
Show a proper error message when failure to register to an event
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 09:58:36 +02:00
Thomas Citharel 0bc48560e8
Fix group order
Closes #1164

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 09:58:36 +02:00
Thomas Citharel 8761556bac
Add logging for when cached iCalendar feed data can't be found
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-28 09:58:36 +02:00
Thomas Citharel d186c116ac Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1302
2022-10-27 15:00:13 +00:00
Axel bb80b54460 Translated using Weblate (French)
Currently translated at 99.5% (209 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/fr/
2022-10-27 16:38:10 +02:00
Berto Te dc2e25deb2 Translated using Weblate (Spanish)
Currently translated at 100.0% (1410 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-10-27 16:38:10 +02:00
Weblate ad46e4dd1d Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/
2022-10-27 16:38:10 +02:00
Thomas Citharel 827a90d7fc Merge branch 'fixes' into 'main'
Various fixes

Closes #1170

See merge request framasoft/mobilizon!1303
2022-10-27 14:38:04 +00:00
Thomas Citharel 082435129e
Fix tests after CLDR upgrade
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-27 16:08:15 +02:00
Thomas Citharel 2454fe2aa4
Fix leaving a group
There's still an issue because the call is made twice, but at least it
works

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-26 18:45:47 +02:00
Thomas Citharel 688bdccc24
Fix accepting group invitations
Closes #1170

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-26 18:26:24 +02:00
Thomas Citharel e446df938f
Fix display of invitations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-26 18:19:05 +02:00
Thomas Citharel 3336af225f
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-26 10:43:44 +02:00
Thomas Citharel 3b7f0f8acf Merge branch 'search-fixes' into 'main'
Fix event card background color behind picture

Closes #1174, #1172 et #1171

See merge request framasoft/mobilizon!1301
2022-10-25 17:44:40 +00:00
Thomas Citharel 389fa843e3
Improve reports
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 19:15:02 +02:00
Thomas Citharel cce0406db5
Improve comments
Closes #1171

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 19:15:02 +02:00
Thomas Citharel e32611c968
Fix showing past events on group page
Closes #1172

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 19:04:38 +02:00
Thomas Citharel 5225431d60
Add distinct clause to search events
Closes #1174

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 19:04:37 +02:00
Thomas Citharel a1b439b724
Fix position of the « no events found » message
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 10:35:59 +02:00
Thomas Citharel a743f6a487
Fix event card background color behind picture
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-25 10:35:33 +02:00
Thomas Citharel 2e74195b0e Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1299
2022-10-24 12:50:27 +00:00
Milo Ivir 5ab2507d4a Translated using Weblate (Croatian)
Currently translated at 74.5% (1051 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-10-24 14:50:09 +02:00
Milo Ivir cec5aa8368 Translated using Weblate (Croatian)
Currently translated at 57.1% (120 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-10-24 14:50:09 +02:00
Milo Ivir cfe8aa067e Translated using Weblate (Croatian)
Currently translated at 66.1% (234 of 354 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-10-24 14:50:09 +02:00
Milo Ivir 7a39af13f8 Translated using Weblate (Croatian)
Currently translated at 74.5% (1051 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-10-24 14:50:09 +02:00
Milo Ivir 1f1b8096eb Translated using Weblate (Croatian)
Currently translated at 65.5% (232 of 354 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-10-24 14:50:09 +02:00
Milo Ivir e23cef2763 Translated using Weblate (Croatian)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/hr/
2022-10-24 14:50:09 +02:00
Thomas Citharel e2e0c42a02 Merge branch 'no-phx-manifest-inline' into 'main'
Don't inline phoenix manifest

Closes #1176

See merge request framasoft/mobilizon!1300
2022-10-24 12:50:04 +00:00
Thomas Citharel 8b53d40928
Don't inline phoenix manifest
Closes #1176

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-24 11:57:36 +02:00
Thomas Citharel c93047824c Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1298
2022-10-20 08:55:44 +00:00
Berto Te ea6477ee19 Translated using Weblate (Spanish)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/es/
2022-10-20 08:47:22 +02:00
Berto Te e2dfa29dde Translated using Weblate (Spanish)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/es/
2022-10-20 08:47:22 +02:00
Berto Te cfb6871418 Translated using Weblate (Spanish)
Currently translated at 100.0% (354 of 354 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/es/
2022-10-20 08:47:21 +02:00
Thomas Citharel f0c1444be3 Merge branch 'lowercase-users-emails-when-resetting' into 'main'
Always lowercase the emails before trying to reset password

See merge request framasoft/mobilizon!1295
2022-10-18 17:07:36 +00:00
Thomas Citharel c9fffca046
Always lowercase the emails before trying to reset password
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-18 18:37:39 +02:00
Thomas Citharel a6fa5f9402 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1297
2022-10-18 15:45:48 +00:00
Thomas Citharel 6a306e88a5 Translated using Weblate (French)
Currently translated at 100.0% (77 of 77 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/fr/
2022-10-18 17:45:27 +02:00
Thomas Citharel 25e5b2eb2d
Merge remote-tracking branch 'weblate/main' 2022-10-18 17:44:19 +02:00
Thomas Citharel 94c4a78bb4 Translated using Weblate (French (France) (fr_FR))
Currently translated at 99.8% (1408 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2022-10-18 17:36:49 +02:00
Thomas Citharel 0f14bc5d90 Merge branch 'rephrasing' into 'main'
Remove obscure reference to Douglas Adams

See merge request framasoft/mobilizon!1296
2022-10-18 15:36:43 +00:00
Thomas Citharel c89b424dbf
Remove fr_FR language (the fr language already exists)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-18 16:27:47 +02:00
Thomas Citharel 8d10363c0e
Update backend translations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-18 16:26:41 +02:00
Thomas Citharel ad0fc61994
Remove obscure reference to Douglas Adams
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-18 16:26:17 +02:00
Thomas Citharel e1e9cf4512 Translated using Weblate (French (France) (fr_FR))
Currently translated at 99.8% (1408 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2022-10-18 14:04:03 +02:00
Thomas Citharel 3822febb62 Translated using Weblate (French)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr/
2022-10-18 14:04:02 +02:00
Thomas Citharel c8493585c6 Translated using Weblate (French)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr/
2022-10-18 13:57:43 +02:00
Thomas Citharel cb083ab2f8
Bump version to 3.0.0-rc.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-18 10:21:38 +02:00
Thomas Citharel e47904d17d
Bump version to 3.0.0-beta.3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-17 09:55:19 +02:00
Thomas Citharel 727a0175c6 Merge branch 'digest-before-release' into 'main'
Run phx.digest before mix release

See merge request framasoft/mobilizon!1293
2022-10-17 07:18:18 +00:00
Thomas Citharel a2289c4d03
Run phx.digest before mix release
Closes #1167

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-17 08:37:22 +02:00
Thomas Citharel 0ccac625d4 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1292
2022-10-14 07:25:41 +00:00
Kate 03e1a0ada8 Translated using Weblate (German)
Currently translated at 100.0% (76 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/de/
2022-10-13 20:58:31 +02:00
Kate 23ace34149 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-10-13 20:58:31 +02:00
Kate 0d019d40ec Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-10-13 20:58:31 +02:00
Kate 8ae0a929c7 Translated using Weblate (German)
Currently translated at 94.5% (1333 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-10-13 20:58:31 +02:00
Thomas Citharel d8103fb1a5 Merge branch 'fix-migrations-without-starting-mbz' into 'main'
Fix: Don't start mobilizon server when running migrations

Closes #743, #1166 et #1126

See merge request framasoft/mobilizon!1291
2022-10-13 10:40:39 +00:00
Thomas Citharel 5bce26980a
Fix: Don't start mobilizon server when running migrations
Closes #1126 #1166 #743

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-13 11:59:36 +02:00
Thomas Citharel 199add5743 Merge branch 'search-fixes' into 'main'
Don't add empty search parameters to global search engine

See merge request framasoft/mobilizon!1289
2022-10-12 18:03:44 +00:00
Thomas Citharel 699465199e
Lint fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:30:34 +02:00
Thomas Citharel fb0238d1b7
Fix: Run build multiarch release on tags too
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:19:21 +02:00
Thomas Citharel e4ba0f21ee
Only show one pagination bar when searching in both events & groups
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:19:20 +02:00
Thomas Citharel fca3720bdb
Remove unused deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:19:20 +02:00
Thomas Citharel c051e26380
Fix getting categories from global search engine
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:19:20 +02:00
Thomas Citharel 76ff11ceae
Don't add empty search parameters to global search engine
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 19:19:20 +02:00
Thomas Citharel ac7b994b6f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1288
2022-10-12 15:35:45 +00:00
Jordi Brunet ae5dab8433 Translated using Weblate (Catalan)
Currently translated at 3.9% (3 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/ca/
2022-10-12 17:12:46 +02:00
Thomas Citharel b46ff4d458
Fix rules conditions for CI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 17:08:34 +02:00
Thomas Citharel 156490af62
Fix pushing to latest docker tag only if needed
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 16:57:12 +02:00
Thomas Citharel 07a1118fab
Allow arm64 release packaging to fail
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 14:51:33 +02:00
Thomas Citharel f91e728b91
Only push Docker tag to latest when tag doesn't contain alpha, beta or rc
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 14:51:18 +02:00
Thomas Citharel 91e7bd8b68
Revert rebasing Docker image build on debian
This reverts commits ad4a9d4dff, 34715d5f45, 06caab9d56, 36932f601d and 8c36173027

The segfault issues still happen on arm64 in any case

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 14:31:07 +02:00
Thomas Citharel ad4a9d4dff
Allow failure on Docker builds
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 12:10:32 +02:00
Thomas Citharel 8c36173027
Use nobody:nogroup under Debian
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 12:08:56 +02:00
Thomas Citharel 36932f601d
Use individual parallel jobs to build multiarch docker images
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 11:25:09 +02:00
Thomas Citharel 3400ee0ce0 Merge branch 'docker-debian-image' into 'main'
Rebase production Docker image on debian

See merge request framasoft/mobilizon!1287
2022-10-12 08:33:35 +00:00
Thomas Citharel 19a17494ae
Allow docker build on main branch to be triggered
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 10:27:06 +02:00
Thomas Citharel 06caab9d56
Rebase production Docker image on debian
The Alpine one can't be built against arm/arm64 anymore

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-12 10:22:53 +02:00
Thomas Citharel 34715d5f45
Remove qemu before installing it
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 21:24:48 +02:00
Thomas Citharel be2fa3a547
Bump version to 3.0.0-beta.2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 19:16:16 +02:00
Thomas Citharel 68378c1860 Merge branch 'fixes' into 'main'
Fixes

See merge request framasoft/mobilizon!1286
2022-10-11 17:15:21 +00:00
Thomas Citharel c23c2bdba6
Lint fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 18:45:33 +02:00
Thomas Citharel 74581912f3
Only preload svg shapes on homepage
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 18:45:33 +02:00
Thomas Citharel 528744d765
Improve EventView.vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 17:48:58 +02:00
Thomas Citharel 9fe816ebcf
Improve CategoriesView
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 17:48:37 +02:00
Thomas Citharel 557e12948b
Add name to GraphQL queries
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 17:48:09 +02:00
Thomas Citharel e22cb8c3bd
Improve TextEditor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 17:47:53 +02:00
Thomas Citharel ff1fbdfdba
Handle categories page empty and fix attribution section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 14:59:13 +02:00
Thomas Citharel b514d417c0
Add typespec for category_statistics
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 14:58:55 +02:00
Thomas Citharel 8eddb8b230 Merge branch 'fixes' into 'main'
Fixes

See merge request framasoft/mobilizon!1285
2022-10-11 12:35:05 +00:00
Thomas Citharel e94a537f30
Lint fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 14:04:03 +02:00
Thomas Citharel 3928c2fb2a
Update build ci
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 13:57:04 +02:00
Thomas Citharel 475820472f
Add the banner picker on event edit page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 11:14:57 +02:00
Thomas Citharel 800e136aae
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 10:39:31 +02:00
Thomas Citharel 9b3674922e
UI and accessibility fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-11 10:20:41 +02:00
Thomas Citharel 3e8d5884a2 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1284
2022-10-10 15:35:34 +00:00
Jiri Podhorecky d23b3ad5f6 Translated using Weblate (Czech)
Currently translated at 99.8% (1408 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-10-10 17:13:45 +02:00
Thomas Citharel 15766c4e16
Handle unknown icon
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-10 16:45:45 +02:00
Thomas Citharel 6f9a941b18 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1283
2022-10-08 14:32:04 +00:00
Ricardo Coelho 11a4275667 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (76 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pt_BR/
2022-10-08 12:34:43 +02:00
Ricardo Coelho e01d7814a0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 6.1% (13 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/pt_BR/
2022-10-08 12:34:43 +02:00
Thomas Citharel b769341944 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1282
2022-10-07 13:12:29 +00:00
Ricardo Coelho 6f6a379a06 Translated using Weblate (Portuguese (Brazil))
Currently translated at 47.3% (36 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/pt_BR/
2022-10-07 14:48:48 +02:00
Thomas Citharel 0d6626d55a Merge branch 'search-fixes' into 'main'
Fix global search term

See merge request framasoft/mobilizon!1281
2022-10-06 08:39:37 +00:00
Thomas Citharel 200e4d2c56 Merge branch 'handle-categories-from-global-search' into 'main'
Handle unknown categories from global search

See merge request framasoft/mobilizon!1280
2022-10-06 08:10:05 +00:00
Thomas Citharel 7ccf42e313
Fix custom icons in metadata list
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-06 09:54:05 +02:00
Thomas Citharel 2acc1c3492 Merge branch 'dynamic-reconfigure-plug' into 'main'
Reconfigure plug at runtime with env

Closes #1165

See merge request framasoft/mobilizon!1279
2022-10-06 07:53:56 +00:00
Thomas Citharel 1a31d9b54e
Fix global search term
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-06 09:53:54 +02:00
Thomas Citharel 0758995ac7
Handle unknown categories from global search
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-06 09:32:47 +02:00
Thomas Citharel c080795955
Reconfigure plug at runtime with env
Closes #1165

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-06 08:59:50 +02:00
Thomas Citharel 0265e0220e Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1278
2022-10-06 06:34:24 +00:00
Milo Ivir 04edb51a04 Translated using Weblate (Croatian)
Currently translated at 65.9% (234 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-10-06 08:03:41 +02:00
Thomas Citharel d665abcc5d Merge branch 'improve-home' into 'main'
Fix address selector

See merge request framasoft/mobilizon!1277
2022-10-05 16:47:06 +00:00
Thomas Citharel 620008ee0d
Fix group location edition
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-05 18:17:11 +02:00
Thomas Citharel fee4f9add8
Fix address selector
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-05 17:54:04 +02:00
Thomas Citharel 1a9aef00e5 Merge branch 'performance' into 'main'
Performance improvements

See merge request framasoft/mobilizon!1276
2022-10-05 12:13:09 +00:00
Thomas Citharel 456e987af8
Performance improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-05 13:18:38 +02:00
Thomas Citharel ec9342744f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1275
2022-10-04 20:41:42 +00:00
Milo Ivir 893405b219 Translated using Weblate (Croatian)
Currently translated at 74.5% (1051 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-10-04 21:30:47 +02:00
Quentin PAGÈS 10798f60c3 Translated using Weblate (Occitan)
Currently translated at 64.5% (910 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/oc/
2022-10-04 21:30:46 +02:00
Thomas Citharel a6a49c27bf Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1274
2022-10-04 12:37:53 +00:00
Berto Te d483b1824e Translated using Weblate (Spanish)
Currently translated at 100.0% (1410 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-10-04 14:15:52 +02:00
Thomas Citharel 0cbe0b8fad Merge branch 'better-suggested-events' into 'main'
better suggested events

See merge request framasoft/mobilizon!1273
2022-10-04 09:25:16 +00:00
Thomas Citharel b8942e7b4c Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1272
2022-10-03 20:31:53 +00:00
Milo Ivir 2fdff72062 Translated using Weblate (Croatian)
Currently translated at 74.5% (1051 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-10-03 22:02:44 +02:00
Thomas Citharel 5055bd4adc
Consider the events from the same organizer actor or group in first
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 19:45:29 +02:00
Thomas Citharel 1601153062
Add all proper filters for related events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 19:33:54 +02:00
Thomas Citharel f0c8fa2525
Handle events with no physical location
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 19:26:35 +02:00
Thomas Citharel 4f1465e84d
Add distinct on suggested events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 14:37:14 +02:00
Thomas Citharel ca9826e299
Improve related events
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 14:02:25 +02:00
Thomas Citharel 4a16f572d8
Fix build after !1261
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-10-03 14:01:57 +02:00
Thomas Citharel 3e8029cf38 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1271
2022-10-03 11:41:34 +00:00
Berto Te ede03b9f54 Translated using Weblate (Spanish)
Currently translated at 99.2% (1400 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-10-03 13:19:49 +02:00
Thomas Citharel fdc4c94465 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1270
2022-10-01 06:07:32 +00:00
joenepraat ea67a0b3ba Translated using Weblate (Dutch)
Currently translated at 1.3% (1 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/nl/
2022-10-01 05:39:26 +02:00
joenepraat 0663708447 Translated using Weblate (Dutch)
Currently translated at 86.6% (1222 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2022-10-01 05:39:26 +02:00
Berto Te 89e158e9f1 Translated using Weblate (Spanish)
Currently translated at 97.0% (1368 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-10-01 05:39:25 +02:00
Thomas Citharel f6b0a4a55f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1269
2022-09-30 07:32:49 +00:00
joenepraat 86ec65acbe Translated using Weblate (Dutch)
Currently translated at 82.9% (1170 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2022-09-30 08:28:59 +02:00
Berto Te 20dd02e633 Translated using Weblate (Spanish)
Currently translated at 96.5% (1361 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-09-30 08:28:58 +02:00
Thomas Citharel 50c2d62af9 Merge branch 'release-3.0.0-beta.1' into 'main'
Release 3.0.0-beta.1

See merge request framasoft/mobilizon!1268
2022-09-29 10:32:16 +00:00
Thomas Citharel 63305d39f9
Release 3.0.0-beta.1
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-29 12:02:52 +02:00
Thomas Citharel 661f7a15cf Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1267
2022-09-29 05:52:50 +00:00
joenepraat e8bdd988ed Translated using Weblate (Dutch)
Currently translated at 71.3% (1006 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2022-09-29 01:50:09 +02:00
joenepraat 8ba8961ad7 Translated using Weblate (Dutch)
Currently translated at 33.2% (118 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/nl/
2022-09-28 22:46:58 +02:00
Deleted User 77d2f86e03 Translated using Weblate (Dutch)
Currently translated at 69.0% (974 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2022-09-28 22:46:58 +02:00
joenepraat ccb3aab7d7 Translated using Weblate (Dutch)
Currently translated at 69.0% (974 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nl/
2022-09-28 22:46:57 +02:00
Thomas Citharel 393438278f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1266
2022-09-28 09:12:41 +00:00
Berto Te 763a2cce43 Translated using Weblate (Spanish)
Currently translated at 94.3% (1331 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/es/
2022-09-28 10:51:14 +02:00
Thomas Citharel 4b0375fd61 Merge branch 'upgrade-deps' into 'main'
Upgrade deps

See merge request framasoft/mobilizon!1265
2022-09-28 07:29:54 +00:00
Thomas Citharel 1975ca7739
Make sure yarn install is run for E2E tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-28 08:59:00 +02:00
Thomas Citharel 9634b07910 Merge branch 'fix-sentry' into 'main'
Fix Sentry registration

See merge request framasoft/mobilizon!1264
2022-09-27 16:57:30 +00:00
Thomas Citharel 8915a5caad
Fix Sentry registration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-27 18:19:01 +02:00
Thomas Citharel 895aad6ea7
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-27 18:14:50 +02:00
Thomas Citharel 92dcc0780d Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1263
2022-09-27 13:31:47 +00:00
Thomas Citharel fc6244bbcd Translated using Weblate (French (France) (fr_FR))
Currently translated at 99.8% (1408 of 1410 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2022-09-27 15:10:51 +02:00
Thomas Citharel 26c183e208 Translated using Weblate (French (France) (fr_FR))
Currently translated at 99.7% (1403 of 1407 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2022-09-27 14:55:39 +02:00
Thomas Citharel 0f05afc643 Merge branch 'smokefree' into 'main'
Add smoke-free as a metadata option for events

See merge request framasoft/mobilizon!1261
2022-09-27 12:55:35 +00:00
Thomas Citharel 600de5447d
Merge remote-tracking branch 'weblate/main' 2022-09-27 14:40:42 +02:00
Thomas Citharel cbce14c9d8 Merge branch 'fixes' into 'main'
Various fixes

See merge request framasoft/mobilizon!1262
2022-09-27 12:20:08 +00:00
Thomas Citharel 1087e19ee5
Enable E2E tests in CI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-27 13:43:09 +02:00
Thomas Citharel 680f812bdf
Fix tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-26 10:39:31 +02:00
Thomas Citharel 6f7d5f649b
Add participant info in event search results
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-26 10:29:58 +02:00
Thomas Citharel a37bab3b84
Fix some Dializer issue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-26 10:29:58 +02:00
Thomas Citharel 530539c631
Make sure instance list is refreshed before notifying admin from new
instance follow

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-26 10:20:51 +02:00
778a69cd 22dbfad98c add smoke-free as a metadata option for events 2022-09-21 14:24:36 +02:00
Thomas Citharel 83d518579b Merge branch 'vue3-compat' into 'main'
Vue 3 and Vite

See merge request framasoft/mobilizon!1259
2022-09-21 09:13:39 +00:00
Thomas Citharel c2c938c865
Revert "Fix path to junit.xml coverage report"
This reverts commit c35a066368.
2022-09-21 10:48:30 +02:00
Thomas Citharel 280b255529
Fix vitest junit coverage runs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 10:33:50 +02:00
Thomas Citharel c35a066368
Fix path to junit.xml coverage report
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 10:17:27 +02:00
Thomas Citharel 88b4f98c41
Make sure session cookie salt in AuthController is loaded dynamically
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 10:16:07 +02:00
Thomas Citharel 6675c62d94
Add unplug to dynamically load plugs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 10:15:47 +02:00
Thomas Citharel d2372d5700
fixup! Fix depreciated calls of fetch_env!/2 and get_env/2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 10:15:28 +02:00
Thomas Citharel 009f90e0d7
Fix typo in subtemplate
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 08:55:14 +02:00
Thomas Citharel bbbaa81a6e
Fix depreciated calls of fetch_env!/2 and get_env/2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 08:53:50 +02:00
Thomas Citharel 655ae4f9a1
Fix js unit test for report modal
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 08:35:22 +02:00
Thomas Citharel 6a9fba7db8
Fix tests for CI
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-21 08:32:42 +02:00
Thomas Citharel 151a7e54ae
Fix lint issues, update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-20 17:06:42 +02:00
Thomas Citharel 86ca52c2cb
Precompile latin to arab ICU transliterations
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-19 09:19:28 +02:00
CHALLET Olivier 35c5be3a32 Translated using Weblate (French (France) (fr_FR))
Currently translated at 60.2% (214 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr_FR/
2022-09-17 16:31:13 +02:00
Ville Ranki 8aa6dcc081 Translated using Weblate (Finnish)
Currently translated at 100.0% (76 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/fi/
2022-09-12 14:44:09 +02:00
Milo Ivir 4cd6c3142e Translated using Weblate (Croatian)
Currently translated at 64.7% (230 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-09-11 20:18:50 +02:00
CHALLET Olivier 130f27b18a Translated using Weblate (French (France) (fr_FR))
Currently translated at 55.4% (197 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr_FR/
2022-09-11 15:50:21 +02:00
CHALLET Olivier 8ccb9050f0 Translated using Weblate (French (France) (fr_FR))
Currently translated at 19.4% (69 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/fr_FR/
2022-09-11 00:03:25 +02:00
CHALLET Olivier d0d33dbc96 Added translation using Weblate (French (France) (fr_FR)) 2022-09-10 23:04:30 +02:00
Thomas Citharel d97927da13
Small a11y fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-01 10:42:05 +02:00
Thomas Citharel 93921be722
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-01 10:02:12 +02:00
Thomas Citharel eecb04516e
Add the map in search view
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-09-01 10:00:17 +02:00
Thomas Citharel b36ce27bbe
Improve some utils modules
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-29 16:52:18 +02:00
Thomas Citharel d43e7f2c34
Debug statistics modules in dev mode
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-29 16:52:00 +02:00
Thomas Citharel d12e8fe97d Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.1% (1308 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/nn/
2022-08-29 15:54:38 +02:00
Thomas Citharel eb7c6d339f
Fix version not being available for statistics modules
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:54:43 +02:00
Thomas Citharel d2b59e6444
Add typings for vite import.meta.env
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:54:24 +02:00
Thomas Citharel 07b2447a07
Add missing case for :member_approved in email member activity
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:53:52 +02:00
Thomas Citharel 0e7ff25333
Fix a preload issue with actor suspension
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:52:44 +02:00
Thomas Citharel 4db13046b7
Provide an accept CSP policy for global search pictures
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:02:06 +02:00
Thomas Citharel 8812122168
Only consider relevant events for category statistics
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:02:06 +02:00
Thomas Citharel ce38361d65
Remove duplicate key in struct
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:02:06 +02:00
Thomas Citharel 45a477ee46
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:02:06 +02:00
Thomas Citharel 48935e2168
Add global search
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-28 10:02:06 +02:00
Norwin 0041face54 Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-08-27 02:20:00 +02:00
Thebigal Wisi f36700c87a Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-08-27 02:20:00 +02:00
Valentin Bachem 551f53f849 Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-08-27 02:20:00 +02:00
Thebigal Wisi 7ef37c040c Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-27 01:35:27 +02:00
fluxx 2bf0dd482b Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-27 01:35:26 +02:00
Valentin Bachem ec812bf379 Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-27 01:35:26 +02:00
Kate d10aa4106f Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-08-26 20:25:05 +02:00
Norwin e787bf36ab Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-26 20:25:05 +02:00
Valentin Bachem f04d74295b Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-26 20:25:04 +02:00
Milo Ivir 073d99392f Translated using Weblate (Croatian)
Currently translated at 77.7% (1035 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-26 18:28:34 +02:00
Milo Ivir 61acdc6a5b Translated using Weblate (Croatian)
Currently translated at 59.1% (210 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-08-26 18:28:33 +02:00
Kate 32cc3eb738 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-08-26 18:28:33 +02:00
Kate 73e992f1b3 Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-08-26 18:28:33 +02:00
Kate 7b693dd4ae Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-08-26 18:28:33 +02:00
Milo Ivir 0c2f2df228 Translated using Weblate (Croatian)
Currently translated at 77.5% (1033 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-25 15:57:38 +02:00
Milo Ivir efe9f1df66 Translated using Weblate (Croatian)
Currently translated at 51.5% (183 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-08-25 15:57:38 +02:00
Milo Ivir b0c3e8cce6 Translated using Weblate (Croatian)
Currently translated at 77.5% (1033 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-24 23:42:50 +02:00
Milo Ivir fd1501af1c Translated using Weblate (Croatian)
Currently translated at 77.4% (1032 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-24 20:52:34 +02:00
Milo Ivir cc335560c8 Translated using Weblate (Croatian)
Currently translated at 56.1% (118 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-08-24 20:52:34 +02:00
Milo Ivir f9c44124d1 Translated using Weblate (Croatian)
Currently translated at 25.7% (54 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-08-24 13:43:39 +02:00
Thomas Citharel bfc936f57c
[JSON-LD] Only render single location when list has only one element
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-23 10:09:10 +02:00
Thomas Citharel 2eee09bf4b
Fix searchview
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-22 13:47:10 +02:00
Thomas Citharel ffac91a027
Remove some useless console.debug calls
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-22 13:46:42 +02:00
Thomas Citharel e07f88277b
Use correct IP
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-22 12:19:14 +02:00
Thomas Citharel c72f050993
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-22 12:16:47 +02:00
Thomas Citharel baac00f678
Improve search
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-22 12:12:09 +02:00
Milo Ivir b0f309d271 Translated using Weblate (Croatian)
Currently translated at 77.4% (1031 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-22 02:59:03 +02:00
Milo Ivir 7868bdb803 Translated using Weblate (Croatian)
Currently translated at 50.9% (181 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-08-22 02:59:03 +02:00
Milo Ivir df7430a19b Translated using Weblate (Croatian)
Currently translated at 76.8% (1024 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-20 21:04:19 +02:00
Milo Ivir 2503e10b7c Translated using Weblate (Croatian)
Currently translated at 1.4% (3 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/hr/
2022-08-20 21:04:18 +02:00
Milo Ivir d11cba4ad4 Translated using Weblate (Croatian)
Currently translated at 71.2% (949 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-20 04:51:25 +02:00
Thomas Citharel 444e0d6a0c
Various homeview fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-19 15:07:58 +02:00
Thomas Citharel be0b3245bf
Fix close events radius
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-19 15:07:45 +02:00
Thomas Citharel d818557469
Update deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-19 15:07:34 +02:00
Milo Ivir 4f13934d43 Translated using Weblate (Croatian)
Currently translated at 71.2% (949 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/hr/
2022-08-19 01:27:44 +02:00
Milo Ivir a8af226e1a Translated using Weblate (Croatian)
Currently translated at 47.8% (170 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-08-19 01:27:44 +02:00
Milo Ivir ff40aa5d65 Translated using Weblate (Croatian)
Currently translated at 22.8% (81 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/hr/
2022-08-18 15:12:53 +02:00
Thomas Citharel 6e7359aebf
Homepage cards improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-16 13:59:37 +02:00
Thomas Citharel 754e44f0a5
Various improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-12 16:46:44 +02:00
Thomas Citharel 4f9e0911e7
OrganizerPicker improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-12 16:46:04 +02:00
Thomas Citharel d8cf49e315
Replace $tc( with t(
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-12 16:45:11 +02:00
Thomas Citharel e893f3f089
Use <template #slotName> form instead of v-slot
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-12 16:42:40 +02:00
Thomas Citharel 9d00aff619
Convert all jpg pictures to webp
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-12 16:40:04 +02:00
Thomas Citharel 57c3df43ff
Remove SCSS variables
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-11 19:48:29 +02:00
Thomas Citharel ee20e03cc2
Migrate to Vue 3 and Vite
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-08-11 16:46:31 +02:00
Hermann San 56b3df37ab Translated using Weblate (German)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-07-09 13:17:02 +02:00
Hermann San 1694ca2dc3 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-07-09 07:15:37 +02:00
Hermann San 0f38dca6c6 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-07-08 22:40:54 +02:00
Thebigal Wisi 5bb796270a Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-07-08 22:40:54 +02:00
Thebigal Wisi 032311e1c0 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-07-08 22:40:35 +02:00
Hermann San de6958ebc8 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-07-08 22:40:35 +02:00
josé m 3d17f31cef Translated using Weblate (Galician)
Currently translated at 71.2% (253 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/gl/
2022-06-29 20:23:11 +02:00
josé m 8879a8306b Translated using Weblate (Galician)
Currently translated at 84.6% (1127 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2022-06-29 20:23:11 +02:00
Hermann San ffc052aa83 Translated using Weblate (German)
Currently translated at 98.5% (207 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/de/
2022-06-23 16:03:13 +02:00
Hermann San cddea8911a Translated using Weblate (German)
Currently translated at 99.1% (352 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-06-23 16:03:13 +02:00
Thebigal Wisi 412a3ae822 Translated using Weblate (German)
Currently translated at 99.1% (352 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-06-23 16:03:13 +02:00
Hermann San b4b97aeb30 Translated using Weblate (German)
Currently translated at 98.8% (351 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-06-23 13:08:55 +02:00
Thomas Citharel 8f4099ee33
Small fixes to Home.vue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-17 11:44:51 +02:00
Jiri Podhorecky 38a9635a7e Translated using Weblate (Czech)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-06-17 11:37:02 +02:00
J. Lavoie e24446aef1 Translated using Weblate (French (France) (fr_FR))
Currently translated at 1.3% (1 of 76 strings)

Translation: Mobilizon/Activity
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/activity/fr_FR/
2022-06-17 11:37:02 +02:00
J. Lavoie 91b801d177 Translated using Weblate (French (France) (fr_FR))
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/fr_FR/
2022-06-17 11:37:02 +02:00
J. Lavoie f70dc4e61d Added translation using Weblate (French (France) (fr_FR)) 2022-06-17 11:37:02 +02:00
Thomas Citharel 68973b91d9 Merge branch 'deps' into 'main'
Upgrade deps

See merge request framasoft/mobilizon!1257
2022-06-17 09:36:57 +00:00
Thomas Citharel 86925833ef
Install latest version of babel-jest
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-17 11:08:14 +02:00
Thomas Citharel 6aba0af3ec
Run mix format after deps update
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-17 10:48:12 +02:00
Thomas Citharel ed196d9b84
Fix new eslint reported issues
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-17 10:46:55 +02:00
Thomas Citharel 5eadbbaae9
Upgrade deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-06-17 10:46:40 +02:00
Thomas Citharel 8ae859e0c3 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1254
2022-06-11 06:07:46 +00:00
DignifiedSilence a46ce1352d Translated using Weblate (Japanese)
Currently translated at 28.7% (102 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ja/
2022-06-10 23:14:16 +02:00
DignifiedSilence 1457fd4b97 Translated using Weblate (Japanese)
Currently translated at 47.4% (632 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/ja/
2022-06-10 23:14:15 +02:00
Thomas Citharel c2f7fbc78f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1253
2022-06-07 21:16:07 +00:00
Jiri Podhorecky 5e6dc16335 Translated using Weblate (Czech)
Currently translated at 100.0% (210 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/cs/
2022-06-07 20:17:54 +02:00
Jiri Podhorecky aa107f4a89 Translated using Weblate (Czech)
Currently translated at 100.0% (355 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/cs/
2022-06-07 20:17:54 +02:00
Thomas Citharel 0a9ff32443 Merge branch 'main' into 'main'
add owncast to event meta data

See merge request framasoft/mobilizon!1252
2022-06-07 14:09:25 +00:00
allilengyi f8efcc1d63 added owncast monochrome logo 2022-06-07 15:38:23 +02:00
Thomas Citharel 337adf83b2 Merge branch 'issue-1120' into 'main'
Fixing #1120 - search by eventCategory

Closes #1120

See merge request framasoft/mobilizon!1251
2022-06-06 13:17:50 +00:00
Thomas Citharel fa7a10bd13 Merge branch 'issue-1119' into 'main'
Fix "Uncaught TypeError: localStorage is null" when localStorage is not available

Closes #1119

See merge request framasoft/mobilizon!1250
2022-06-06 12:37:27 +00:00
Thomas Citharel 212931b8a0 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1249
2022-06-06 12:14:29 +00:00
allilengyi 86fbcaff40 fixed title of owncast meta data 2022-06-02 23:14:02 +02:00
allilengyi 324cf3e5e2 add owncast to event meta data 2022-06-02 22:14:34 +02:00
paficaf430 4917185b82 Translated using Weblate (Swedish)
Currently translated at 26.1% (55 of 210 strings)

Translation: Mobilizon/Backend errors
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend-errors/sv/
2022-06-01 09:35:35 +02:00
paficaf430 d7e2e82ea6 Translated using Weblate (Swedish)
Currently translated at 31.5% (112 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/sv/
2022-06-01 09:35:34 +02:00
paficaf430 958e7d5264 Translated using Weblate (Swedish)
Currently translated at 46.4% (619 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/sv/
2022-06-01 09:35:33 +02:00
Jiri Podhorecky c01a4fdc6f Translated using Weblate (Czech)
Currently translated at 99.7% (354 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/cs/
2022-06-01 09:35:32 +02:00
Jiri Podhorecky 018f3f35d6 Translated using Weblate (Czech)
Currently translated at 99.7% (354 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/cs/
2022-05-31 23:18:48 +02:00
Lucas Cimon 18d4b73d91
Fixing #1120 - search by eventCategory 2022-05-30 12:30:38 +02:00
Lucas Cimon 494e791a99
Fix "Uncaught TypeError: localStorage is null" when localStorage is not available 2022-05-30 12:20:24 +02:00
Norwin 06bc5fc4c3 Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-05-27 22:28:10 +02:00
Thebigal Wisi 2a052fddd6 Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-05-27 22:28:10 +02:00
Thomas Frenzel 9f34d1c538 Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-05-27 22:28:10 +02:00
Thomas Citharel 4e7284b486 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1247
2022-05-23 13:32:31 +00:00
Jiri Podhorecky 4728a7358c Translated using Weblate (Czech)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/cs/
2022-05-23 15:23:35 +02:00
Thomas Citharel 44789189d7 Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1246
2022-05-19 16:40:59 +00:00
Kerstin 59147af19b Translated using Weblate (German)
Currently translated at 96.3% (342 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/de/
2022-05-19 14:37:13 +02:00
Kerstin 7a1b886f09 Translated using Weblate (German)
Currently translated at 100.0% (1332 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-05-19 14:37:13 +02:00
Thomas Citharel c6cc85e51e Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1245
2022-05-19 06:43:29 +00:00
josé m 5299e10afe Translated using Weblate (Galician)
Currently translated at 79.4% (1058 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/gl/
2022-05-18 23:53:39 +02:00
Thomas Citharel 829628b25f Merge branch 'weblate-mobilizon-frontend' into 'main'
Translations update from Weblate

See merge request framasoft/mobilizon!1244
2022-05-18 06:49:06 +00:00
DignifiedSilence 9e1c8b475e Translated using Weblate (Japanese)
Currently translated at 5.6% (20 of 355 strings)

Translation: Mobilizon/Backend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/backend/ja/
2022-05-18 02:59:41 +02:00
Thomas Frenzel cf182c2aed Translated using Weblate (German)
Currently translated at 98.2% (1309 of 1332 strings)

Translation: Mobilizon/Frontend
Translate-URL: https://weblate.framasoft.org/projects/mobilizon/frontend/de/
2022-05-18 02:59:41 +02:00
Thomas Citharel 00424d64c9
Fix tags not being escaped in CHANGELOG.md
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2022-05-16 13:23:09 +02:00
Jakobus Schürz 8cae6d30c0 add static location for img
fixes not shown mobilizon image on "sorry-page" when service not
running.
2022-01-19 21:47:34 +01:00
1347 changed files with 133344 additions and 81785 deletions

View file

@ -22,7 +22,7 @@
# In the latter case `**/*.{ex,exs}` will be used.
#
included: ["lib/", "src/", "test/"],
excluded: [~r"/_build/", ~r"/deps/", ~r"/js/"]
excluded: [~r"/_build/", ~r"/deps/", ~r"/src/"]
},
#
# If you create your own checks, you must specify the source files for
@ -33,12 +33,15 @@
# If you want to enforce a style guide and need a more traditional linting
# experience, you can change `strict` to `true` below:
#
strict: false,
strict: true,
#
# If you want to use uncolored output by default, you can change `color`
# to `false` below:
#
color: true,
plugins: [
{CredoCodeClimate, []}
],
#
# You can customize the parameters of any check by adding a second element
# to the tuple.
@ -157,6 +160,7 @@
#
{Credo.Check.Warning.LazyLogging, false},
{Credo.Check.Refactor.MapInto, false},
{Credo.Check.Warning.MissedMetadataKeyInLoggerConfig, false}
]
}
]

View file

@ -1,44 +1,46 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/elixir-phoenix-postgres
{
"name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)",
"dockerComposeFile": "docker-compose.yml",
"service": "elixir",
"workspaceFolder": "/workspace",
"name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)",
"dockerComposeFile": "docker-compose.yml",
"service": "elixir",
"workspaceFolder": "/workspace",
// Set *default* container specific settings.json values on container create.
"settings": {
"sqltools.connections": [{
"name": "Container database",
"driver": "PostgreSQL",
"previewLimit": 50,
"server": "localhost",
"port": 5432,
"database": "postgres",
"username": "postgres",
"password": "postgres"
}]
},
// Set *default* container specific settings.json values on container create.
"settings": {
"sqltools.connections": [
{
"name": "Container database",
"driver": "PostgreSQL",
"previewLimit": 50,
"server": "localhost",
"port": 5432,
"database": "postgres",
"username": "postgres",
"password": "postgres"
}
]
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"jakebecker.elixir-ls",
"mtxr.sqltools",
"mtxr.sqltools-driver-pg"
],
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"jakebecker.elixir-ls",
"mtxr.sqltools",
"mtxr.sqltools-driver-pg"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [4000, 4001, 5432],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [4000, 4001, 5432],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "mix deps.get",
// "runArgs": ["--userns=keep-id", "--privileged"],
// "containerUser": "vscode",
// "containerEnv": {
// "HOME": "/home/vscode",
// },
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "mix deps.get",
// "runArgs": ["--userns=keep-id", "--privileged"],
// "containerUser": "vscode",
// "containerEnv": {
// "HOME": "/home/vscode",
// },
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
}

View file

@ -1,6 +1,10 @@
_build
CONTRIBUTING.md
coverage
demo
deps
doc
docs
docker-compose.yml
Dockerfile
.elixir_ls
@ -15,5 +19,8 @@ Makefile
README.md
SECURITY.md
ssh_match_hostname
.js/package-lock.json
js/node_modules
package-lock.json
node_modules
playwright-report
test
tests

View file

@ -22,3 +22,6 @@ MOBILIZON_SMTP_PORT=25
MOBILIZON_SMTP_USERNAME=noreply@mobilizon.lan
MOBILIZON_SMTP_PASSWORD=password
MOBILIZON_SMTP_SSL=false
# When using docker for development, VITE_HOST must be set to 0.0.0.0
VITE_HOST=localhost

View file

@ -1,3 +1,6 @@
/* eslint-env node */
require("@rushstack/eslint-patch/modern-module-resolution");
module.exports = {
root: true,
@ -6,10 +9,11 @@ module.exports = {
},
extends: [
"plugin:vue/essential",
"eslint:recommended",
"@vue/typescript/recommended",
"plugin:vue/vue3-essential",
"@vue/eslint-config-typescript/recommended",
"plugin:prettier/recommended",
"@vue/eslint-config-prettier",
],
plugins: ["prettier"],
@ -20,12 +24,11 @@ module.exports = {
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-underscore-dangle": [
"error",
{
allow: ["__typename"],
allow: ["__typename", "__schema"],
},
],
"@typescript-eslint/no-explicit-any": "off",
@ -50,4 +53,7 @@ module.exports = {
},
ignorePatterns: ["src/typings/*.d.ts", "vue.config.js"],
globals: {
GeolocationPositionError: true,
},
};

View file

@ -1,4 +1,5 @@
[
import_deps: [:ecto, :ecto_sql, :phoenix],
plugins: [Phoenix.LiveView.HTMLFormatter],
inputs: ["{mix,.formatter}.exs", "{config,lib,test,priv}/**/*.{ex,exs,heex}"]
]

12
.gitignore vendored
View file

@ -46,6 +46,16 @@ release/
.weblate
docker/production/.env
test-junit-report.xml
js/junit.xml
junit.xml
.env
demo/
codeclimate.json
node_modules
stats.html
/coverage
/playwright-report/
.histoire
# Nix out-links
result*

View file

@ -4,15 +4,14 @@ stages:
- install
- check
- build-js
- sentry
- test
- docker
- package
- build
- upload
- deploy
variables:
MIX_ENV: "test"
YARN_CACHE_FOLDER: "js/.yarn"
# DB Variables for Postgres / Postgis
POSTGRES_DB: mobilizon_test
POSTGRES_USER: postgres
@ -31,17 +30,14 @@ variables:
EXPORT_FORMATS: "csv,ods,pdf"
APP_VERSION: "${CI_COMMIT_REF_NAME}"
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
CYPRESS_INSTALL_BINARY: 0
cache:
key: "${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
paths:
- ~/.cache/Cypress
- cache/Cypress
- deps/
- _build/
- js/node_modules
- js/.yarn
- node_modules
- .npm
# Installed dependencies are cached across the pipeline
# So there is no need to reinstall them all the time
@ -49,7 +45,7 @@ cache:
install:
stage: install
script:
- yarn --cwd "js" install --frozen-lockfile
- npm ci
- mix deps.get
- mix compile
@ -66,27 +62,30 @@ lint-elixir:
- mix credo diff --from-git-merge-base $TARGET_SHA1 --strict -a || export EXITVALUE=1
- mix sobelow --config || export EXITVALUE=1
- exit $EXITVALUE
artifacts:
reports:
codequality: codeclimate.json
lint-front:
image: node:16
image: node:20
stage: check
before_script:
- export EXITVALUE=0
- yarn --cwd "js" install --frozen-lockfile
- npm ci
script:
- yarn --cwd "js" run lint || export EXITVALUE=1
- yarn --cwd "js" run prettier -c . || export EXITVALUE=1
- npm run lint || export EXITVALUE=1
- npx prettier -c . || export EXITVALUE=1
- exit $EXITVALUE
build-frontend:
stage: build-js
image: node:16
image: node:20
before_script:
- apt update
- apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant
- apt install -y --no-install-recommends python3 build-essential webp imagemagick gifsicle jpegoptim optipng pngquant
script:
- yarn --cwd "js" install --frozen-lockfile
- yarn --cwd "js" run build
- npm install --frozen-lockfile
- npm run build
artifacts:
expire_in: 5 days
paths:
@ -94,6 +93,21 @@ build-frontend:
needs:
- lint-front
sentry-commit:
stage: sentry
image: getsentry/sentry-cli
script:
- echo "Create a new release $CI_COMMIT_TAG"
- sentry-cli releases new $CI_COMMIT_TAG
- sentry-cli releases set-commits $CI_COMMIT_TAG --auto
- sentry-cli releases files $CI_COMMIT_TAG upload-sourcemaps priv/static/assets/
- sentry-cli releases finalize $CI_COMMIT_TAG
- echo "Finalized release for $CI_COMMIT_TAG"
needs:
- build-frontend
only:
- tags@framasoft/mobilizon
deps:
stage: check
before_script:
@ -101,7 +115,7 @@ deps:
script:
- export EXITVALUE=0
- mix hex.outdated || export EXITVALUE=1
- yarn --cwd "js" outdated || export EXITVALUE=1
- npm outdated || export EXITVALUE=1
- exit $EXITVALUE
allow_failure: true
needs:
@ -110,12 +124,14 @@ deps:
exunit:
stage: test
services:
- name: postgis/postgis:14-3.2
- name: postgis/postgis:16-3.4
alias: postgres
variables:
MIX_ENV: test
before_script:
- mix deps.get && mix tz_world.update
- mix deps.get
- mix compile
- mix tz_world.update
- mix ecto.create
- mix ecto.migrate
script:
@ -127,53 +143,60 @@ exunit:
- test-junit-report.xml
expire_in: 30 days
jest:
vitest:
stage: test
needs:
- lint-front
before_script:
- yarn --cwd "js" install --frozen-lockfile
- npm install --frozen-lockfile
script:
- yarn --cwd "js" run test:unit --no-color --ci --reporters=default --reporters=jest-junit
- npm run coverage --reporter=default --reporter=junit --outputFile.junit=./junit.xml
artifacts:
when: always
paths:
- js/coverage
- coverage
reports:
junit:
- js/junit.xml
- junit.xml
expire_in: 30 days
# cypress:
# stage: test
# services:
# - name: postgis/postgis:13.3
# alias: postgres
# variables:
# MIX_ENV=e2e
# script:
# - mix ecto.create
# - mix ecto.migrate
# - mix run priv/repo/e2e.seed.exs
# - mix phx.server &
# - cd js
# - npx wait-on http://localhost:4000
# - if [ -z "$CYPRESS_KEY" ]; then npx cypress run; else npx cypress run --record --parallel --key $CYPRESS_KEY; fi
# artifacts:
# expire_in: 2 day
# paths:
# - js/tests/e2e/screenshots/**/*.png
# - js/tests/e2e/videos/**/*.mp4
e2e:
stage: test
services:
- name: postgis/postgis:16-3.4
alias: postgres
variables:
MIX_ENV: "e2e"
before_script:
- mix deps.get
- mix ecto.create
- mix ecto.migrate
- mix run priv/repo/e2e.seed.exs
- npm install && npm run build && npx playwright install
- mix phx.digest
script:
- mix phx.server &
- npx wait-on http://localhost:4000
- npx playwright test --project $BROWSER
parallel:
matrix:
- BROWSER: ["firefox", "chromium"]
artifacts:
expire_in: 2 days
paths:
- playwright-report/
- test-results/
pages:
stage: deploy
script:
- mv public public-mbz
- mkdir public
- mix deps.get
- mix docs
- mv doc public/backend
# #- yarn run --cwd "js" styleguide:build
# #- mv js/styleguide public/frontend
# #- npm run styleguide:build
# #- mv styleguide public/frontend
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
artifacts:
@ -182,22 +205,23 @@ pages:
- public
.docker: &docker
stage: docker
image: docker:20.10.12
stage: build
image: docker:24
variables:
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
DOCKER_DRIVER: overlay2
DOCKER_CLI_EXPERIMENTAL: enabled
services:
- docker:20.10.12-dind
- docker:24-dind
cache: {}
before_script:
# Install buildx
- wget https://github.com/docker/buildx/releases/download/v0.8.1/buildx-v0.8.1.linux-amd64
- wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64
- mkdir -p ~/.docker/cli-plugins/
- mv buildx-v0.8.1.linux-amd64 ~/.docker/cli-plugins/docker-buildx
- mv buildx-v0.11.2.linux-amd64 ~/.docker/cli-plugins/docker-buildx
- chmod a+x ~/.docker/cli-plugins/docker-buildx
# Create env
- docker context create tls-environment
@ -205,6 +229,8 @@ pages:
# Install qemu/binfmt
- docker pull tonistiigi/binfmt:latest
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
# Install jq
- apk --no-cache add jq
# Login to DockerHub
- mkdir -p ~/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$CI_REGISTRY_AUTH\",\"email\":\"$CI_REGISTRY_EMAIL\"}}}" > ~/.docker/config.json
@ -216,30 +242,72 @@ build-docker-main:
rules:
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"'
- if: '$CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
script:
- docker buildx build --push --platform linux/amd64 -t framasoft/mobilizon:main -f docker/production/Dockerfile .
- docker buildx build --platform linux/amd64 -t framasoft/mobilizon:main -f docker/production/Dockerfile .
build-docker-tag:
<<: *docker
rules: &tag-rules
rules: &release-tag-rules
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_TAG != null
when: on_success
timeout: 3 hours
script:
- >
docker buildx build
--push
--platform linux/amd64,linux/arm64,linux/arm
-t framasoft/mobilizon:$CI_COMMIT_TAG
-t framasoft/mobilizon:latest
--platform linux/${ARCH}
--provenance=false
--build-arg="${ERL_FLAGS}"
-t framasoft/mobilizon:${CI_COMMIT_TAG}-${ARCH}
-f docker/production/Dockerfile .
parallel:
matrix:
- ARCH: ["amd64"]
ERL_FLAGS: ["ERL_FLAGS="]
- ARCH: ["arm64"]
ERL_FLAGS: ["ERL_FLAGS=+JMsingle true"]
# Create manifest and push
docker-manifest-push:
<<: *docker
needs: ["build-docker-tag"]
rules: &release-tag-rules
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
- if: $CI_COMMIT_TAG != null
when: on_success
script:
- >
docker manifest create framasoft/mobilizon:${CI_COMMIT_TAG}
--amend framasoft/mobilizon:${CI_COMMIT_TAG}-amd64
--amend framasoft/mobilizon:${CI_COMMIT_TAG}-arm64
- docker manifest push --purge framasoft/mobilizon:${CI_COMMIT_TAG}
###
# Simply creating an alias to the tag doesn't work:
# « xxx is a manifest list »
# https://joonas.fi/2021/02/docker-multi-arch-image-tooling-buildx/
###
docker-latest:
<<: *docker
needs: ["docker-manifest-push"]
rules: &release-tag-rules
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
- if: $CI_COMMIT_TAG != null && $CI_COMMIT_TAG !~ /alpha|beta|rc/
when: on_success
script:
- echo docker manifest create framasoft/mobilizon:latest $(docker manifest inspect framasoft/mobilizon:$CI_COMMIT_TAG | jq '.manifests[] | .digest' | xargs -I {} echo framasoft/mobilizon@{})
- docker manifest create framasoft/mobilizon:latest $(docker manifest inspect framasoft/mobilizon:$CI_COMMIT_TAG | jq -r '.manifests[] | .digest' | xargs -I {} echo framasoft/mobilizon@{})
- docker manifest push --purge framasoft/mobilizon:latest
# Packaging app for amd64
package-app:
image: mobilizon/buildpack:1.13.4-erlang-24.3.3-debian-buster
stage: package
image: mobilizon/buildpack:1.15.7-erlang-26.1.2-${SYSTEM}
stage: build
variables: &release-variables
MIX_ENV: "prod"
DEBIAN_FRONTEND: noninteractive
@ -250,7 +318,7 @@ package-app:
- mix local.rebar --force
- mix deps.get --only-prod
- mix compile
- mix phx.digest.clean --all && \
- mix phx.digest.clean --all && mix phx.digest
- mix release --path release/mobilizon
- cd release/mobilizon && ln -s lib/mobilizon-*/priv priv && cd ../../
- du -sh release/
@ -263,9 +331,22 @@ package-app:
expire_in: 2 days
paths:
- ${APP_ASSET}
parallel:
matrix:
- SYSTEM:
[
"debian-bookworm",
"debian-bullseye",
"debian-buster",
"ubuntu-jammy",
"ubuntu-focal",
"ubuntu-bionic",
"fedora-38",
"fedora-39",
]
package-app-dev:
stage: package
stage: build
variables: *release-variables
script: *release-script
except:
@ -276,9 +357,9 @@ package-app-dev:
- ${APP_ASSET}
# Packaging app for multi-arch
multi-arch-release:
stage: package
image: docker:20.10.12
package-multi-arch-release:
stage: build
image: docker:24
variables:
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: tcp://docker:2376
@ -288,13 +369,13 @@ multi-arch-release:
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
OS: debian-buster
services:
- docker:20.10.12-dind
- docker:24-dind
cache: {}
before_script:
# Install buildx
- wget https://github.com/docker/buildx/releases/download/v0.8.1/buildx-v0.8.1.linux-amd64
- wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64
- mkdir -p ~/.docker/cli-plugins/
- mv buildx-v0.8.1.linux-amd64 ~/.docker/cli-plugins/docker-buildx
- mv buildx-v0.11.2.linux-amd64 ~/.docker/cli-plugins/docker-buildx
- chmod a+x ~/.docker/cli-plugins/docker-buildx
# Create env
- docker context create tls-environment
@ -303,7 +384,7 @@ multi-arch-release:
- docker pull tonistiigi/binfmt:latest
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
script:
- docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile .
- docker buildx build --platform linux/${ARCH} --output type=local,dest=releases --build-arg="ERL_FLAGS=+JMsingle true" --build-arg APP_ASSET=${APP_ASSET} -f docker/multiarch/Dockerfile .
- ls -alh releases/mobilizon/
- du -sh releases/mobilizon/${APP_ASSET}
- mv releases/mobilizon/${APP_ASSET} .
@ -313,15 +394,27 @@ multi-arch-release:
expire_in: 2 days
paths:
- ${APP_ASSET}
- erl_crash.dump # if there's a memory issue
parallel:
matrix:
- ARCH: ["arm", "arm64"]
- ARCH: ["arm64"]
## Currently not used as the hexpm base images do not have support for other architectures than amd64
# SYSTEM:
# [
# "debian-bookworm",
# "debian-bullseye",
# "ubuntu-jammy",
# "ubuntu-focal",
# "ubuntu-bionic",
# "alpine-3.17.5",
# "alpine-3.18.4",
# "fedora-38",
# "fedora-39",
# ]
rules:
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"'
- if: $CI_COMMIT_TAG
- if: '$CI_COMMIT_TAG != null || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_TRIGGERED == "true"'
timeout: 3h
allow_failure: true
# Release
release-upload:
@ -329,7 +422,9 @@ release-upload:
image: framasoft/upload-packages:latest
variables:
APP_ASSET: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${ARCH}.tar.gz"
rules: *tag-rules
rules:
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
script:
- eval `ssh-agent -s`
- ssh-add <(echo "${DEPLOYEMENT_KEY}" | base64 --decode -i)
@ -342,11 +437,14 @@ release-upload:
parallel:
matrix:
- ARCH: ["amd64", "arm", "arm64"]
allow_failure: true
release-create:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules: *tag-rules
rules:
- if: '$CI_PROJECT_NAMESPACE != "framasoft"'
when: never
variables:
APP_ASSET_AMD64: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_amd64.tar.gz"
APP_ASSET_ARM: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_arm.tar.gz"
@ -360,6 +458,6 @@ release-create:
release-cli create --name "$CI_COMMIT_TAG" \
--description "$CHANGELOG" \
--tag-name "$CI_COMMIT_TAG" \
--assets-link "{\"name\":\"${APP_ASSET_AMD64}\",\"url\":\"${ENDPOINT}/${APP_ASSET_AMD64}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM}\",\"url\":\"${ENDPOINT}/${APP_ASSET_ARM}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM64}\",\"url\":\"${ENDPOINT}/${APP_ASSET_ARM64}\"}"
--assets-link "{\"name\":\"${APP_ASSET_AMD64}\",\"url\":\"${ENDPOINT}/${CI_COMMIT_REF_NAME}/${APP_ASSET_AMD64}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM}\",\"url\":\"${ENDPOINT}/${CI_COMMIT_REF_NAME}/${APP_ASSET_ARM}\"}" \
--assets-link "{\"name\":\"${APP_ASSET_ARM64}\",\"url\":\"${ENDPOINT}/${CI_COMMIT_REF_NAME}/${APP_ASSET_ARM64}\"}"

3
.husky/pre-commit Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run pre-commit

4
.prettierignore Normal file
View file

@ -0,0 +1,4 @@
src/i18n/*.json
coverage/
**/*.md
test/fixtures

View file

@ -1,16 +1,20 @@
02CE4963DFD1B0D6D5C567357CAFFE97
155A1FB53DE39EC8EFCFD7FB94EA823D
2262742E5C8944D5BF6698EC61F5DE50
25BEE162A99754480967216281E9EF33
2A6F71CD6F1246F0B152C2376E2E398A
30552A09D485A6AA73401C1D54F63C21
52900CE4EE3598F6F178A651FB256770
6151F44368FC19F2394274F513C29151
765526195D4C6D770EAF4DC944A8CBF4
B2FF1A12F13B873507C85091688C1D6D
B9AF8A342CD7FF39E10CC10A408C28E1
C042E87389F7BDCFF4E076E95731AE69
C42BFAEF7100F57BED75998B217C857A
D11958E86F1B6D37EF656B63405CA8A4
F16F054F2628609A726B9FF2F089D484
1C29EE70E90ECED01AF28EC58D2575B5
26ED12A8E03D044BEDC08749BAA5E357
2BB1D36656B423758A470021718FCB09
31CE26BC979C57B9E3CC97B40C290CE5
3529E7A4CECC24D02678820E6F521162
3644C4E850300482AA409471EFE1EFB3
4E7C044C59E0BCB76AA826789998F624
53CBBEB6243FAF5C37249CBA17DE6F4C
5BCE3651A03711295046DE48BDFE007E
5C4CED447689F00D9D1ACEB9B895ED29
94ACF7B17C3FF42F64E57DD1DA936BD8
A32E125003F1EDFAD95C487C6A969725
ACF6272A1DBB3A2ABD96C0C120B5CA69
C46C4893B2F702ACADC4CAA5683FE370
CDF2CCE0CF10F49CDFAE22FE26208155
E720CB13C50FF3ADEE7C522531E11217
F3D5851D3FB050939841ED2F14307A27
FD1C9756370A195B74E95CE504C45E9E

View file

@ -1,2 +1,2 @@
elixir 1.13.4-otp-24
erlang 24.3.3
elixir 1.15.5-otp-26
erlang 26.0.2

View file

@ -5,6 +5,972 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 4.0.2 (2023-12-07)
### Security issues
This release fixes different security issues reported by the potsda.mn collective. Please make sure to upgrade as soon as possible.
### Fixed
- Fixes XSS issues in notifier and participant and event contacts list formatting
* fix(front-end): add more security fixes for formatted lists and notifier ([1af8e37](https://framagit.org/framasoft/mobilizon/commits/1af8e37))
## 4.0.1 (2023-12-07)
### Security issues
This release fixes different security issues reported by the potsda.mn collective. Please make sure to upgrade as soon as possible.
### Added
- Added a CLI task to test if emails configuration works properly
### Fixed
- Fixes XSS issues in groups descriptions, report contents, messages from anonymous participations and resources descriptions
- Fixes Docker configuration that prevented the image to launch
### Changed
- Added back Debian Buster builds
### Complete changelog
* build(packages): add back Debian Buster as it seems people are still using it ([795ef24](https://framagit.org/framasoft/mobilizon/commits/795ef24))
* build(packages): remove alpine packages as there's no demand for it ([0caaf2b](https://framagit.org/framasoft/mobilizon/commits/0caaf2b))
* Translated using Weblate (Croatian) ([9c88fae](https://framagit.org/framasoft/mobilizon/commits/9c88fae))
* Translated using Weblate (Croatian) ([623f4ee](https://framagit.org/framasoft/mobilizon/commits/623f4ee))
* Translated using Weblate (Croatian) ([1162dd0](https://framagit.org/framasoft/mobilizon/commits/1162dd0))
* Translated using Weblate (Galician) ([97c53bb](https://framagit.org/framasoft/mobilizon/commits/97c53bb))
* Translated using Weblate (Galician) ([e08b057](https://framagit.org/framasoft/mobilizon/commits/e08b057))
* Translated using Weblate (Galician) ([ec5e436](https://framagit.org/framasoft/mobilizon/commits/ec5e436))
* Translated using Weblate (Korean) ([1a1ad52](https://framagit.org/framasoft/mobilizon/commits/1a1ad52))
* Translated using Weblate (Korean) ([7b4c31d](https://framagit.org/framasoft/mobilizon/commits/7b4c31d))
* fix: always consider report content as text ([ffff379](https://framagit.org/framasoft/mobilizon/commits/ffff379))
* fix: sanitize descriptions from resources ([dc6647f](https://framagit.org/framasoft/mobilizon/commits/dc6647f))
* fix(config): fix setting path for Mobilizon.Service.SiteMap ([7d725bd](https://framagit.org/framasoft/mobilizon/commits/7d725bd))
* fix(docker): fix getting configuration value from env MOBILIZON_SMTP_TLS ([28063bd](https://framagit.org/framasoft/mobilizon/commits/28063bd)), closes [#1381](https://framagit.org/framasoft/mobilizon/issues/1381)
* fix(docker): fix getting default value for MOBILIZON_SMTP_SSL env ([126727b](https://framagit.org/framasoft/mobilizon/commits/126727b))
* fix(docker): use separate env for tzdata dir path ([9907f88](https://framagit.org/framasoft/mobilizon/commits/9907f88))
* fix(emails): use tls_certificate_check to add tls config for mailer ([db38550](https://framagit.org/framasoft/mobilizon/commits/db38550))
* fix(front): anonymous participant text is plain text, avoid using v-html ([2c12fbf](https://framagit.org/framasoft/mobilizon/commits/2c12fbf))
* fix(front): fix editing group ([935799f](https://framagit.org/framasoft/mobilizon/commits/935799f))
* fix(front): fix XSS because of bad operations when setting the group's summary ([ded59be](https://framagit.org/framasoft/mobilizon/commits/ded59be))
* fix(front): put correct value for CONVERSATION_LIST enum value ([94bf2e5](https://framagit.org/framasoft/mobilizon/commits/94bf2e5))
* fix(graphql): set default value for resource type parameter ([09f4132](https://framagit.org/framasoft/mobilizon/commits/09f4132))
* feat(cli): add command to test emails send correctly ([7210f86](https://framagit.org/framasoft/mobilizon/commits/7210f86))
* feat(docker): allow to configure loglevel at runtime through env variable ([4855af8](https://framagit.org/framasoft/mobilizon/commits/4855af8))
* test: add new tests for XSS in actors summary ([58e50e3](https://framagit.org/framasoft/mobilizon/commits/58e50e3))
* style: linting front-end ([41227d9](https://framagit.org/framasoft/mobilizon/commits/41227d9))
* refactor(activitypub): handle failure finding public key in actor keys ([5b337f9](https://framagit.org/framasoft/mobilizon/commits/5b337f9))
## 4.0.0 (2023-12-05)
### Breaking changes
#### Release (binary package) installations
- We now produce packages for different distributions targets (Debian Bookworm, Debian Bullseye, Ubuntu Jammy, Ubuntu Focal, Ubuntu Bionic, Fedora 38 and Fedora 39). Be sure to pick the right one for your system, as there can be issues with OpenSSL versions differing from inside the Mobilizon package and on your system.
- The `https://joinmobilizon.org/latest-package` URL now links to the latest package builded against Debian Bookworm. Make sure to follow the documentation if you're not using this.
- There's also an `arm64` package build on Debian Bullseye for now.
#### Source installations
- Elixir 15 is now required
- The content of the `js` directory is now at the root of the repository, so you don't need to `cd js` anymore
- No need for `yarn` anymore, simply use `npm` instead for `npm i` and `npm run build`
### New features
- Event organizers and groups can be contacted through private messages (including PMs from 3rd-party micro-blogging fediverse services)
- Event organizers can send private announcements to event participants (approved or not)
### Improvements
- Anonymous participation e-mails now contain links to cancel your participation
- ActivityPub improvements for compatibility with https://event-federation.eu
- ICS export fixes for descriptions and adding event status
### Changes since 4.0.0-rc.1
* refactor: to lower cyclomatic complexity ([147096c](https://framagit.org/framasoft/mobilizon/commits/147096c))
* fix(activitypub): compact ical:status in activitystream data ([5e8f9af](https://framagit.org/framasoft/mobilizon/commits/5e8f9af)), closes [#1378](https://framagit.org/framasoft/mobilizon/issues/1378)
* fix(activitypub): fix receiving comments ([f1084c1](https://framagit.org/framasoft/mobilizon/commits/f1084c1))
* fix(backend): handle ecto errors when fetching and create entities ([89d1ee4](https://framagit.org/framasoft/mobilizon/commits/89d1ee4))
* fix(front): fix tag loading ([f81472e](https://framagit.org/framasoft/mobilizon/commits/f81472e))
* fix(front): make recipient field placeholder translatable ([10ce812](https://framagit.org/framasoft/mobilizon/commits/10ce812))
* fix(front): only show participants & announcements menu items to organizers ([c4d2ec6](https://framagit.org/framasoft/mobilizon/commits/c4d2ec6))
* Translated using Weblate (Croatian) ([a26ff98](https://framagit.org/framasoft/mobilizon/commits/a26ff98))
* Translated using Weblate (Croatian) ([1683f01](https://framagit.org/framasoft/mobilizon/commits/1683f01))
* Translated using Weblate (Croatian) ([aa7f870](https://framagit.org/framasoft/mobilizon/commits/aa7f870))
* Translated using Weblate (Croatian) ([1ce34ea](https://framagit.org/framasoft/mobilizon/commits/1ce34ea))
* Translated using Weblate (Croatian) ([5e7edc0](https://framagit.org/framasoft/mobilizon/commits/5e7edc0))
* Translated using Weblate (Croatian) ([d777d88](https://framagit.org/framasoft/mobilizon/commits/d777d88))
* Translated using Weblate (Croatian) ([0118d97](https://framagit.org/framasoft/mobilizon/commits/0118d97))
* Translated using Weblate (Croatian) ([805e931](https://framagit.org/framasoft/mobilizon/commits/805e931))
## 4.0.0-rc.1 (2023-12-04)
* fix: prevent sending group physical address if it's empty and allow empty text for timezone ([32caebb](https://framagit.org/framasoft/mobilizon/commits/32caebb)), closes [#1357](https://framagit.org/framasoft/mobilizon/issues/1357)
* fix(activitypub): add missing externalParticipationUrl context ([8795576](https://framagit.org/framasoft/mobilizon/commits/8795576)), closes [#1376](https://framagit.org/framasoft/mobilizon/issues/1376)
* fix(backend): only send suspension notification emails when actor's suspended and not just deleted ([9e41bc1](https://framagit.org/framasoft/mobilizon/commits/9e41bc1))
* docs(nginx): improve nginx configuration ([6c992ca](https://framagit.org/framasoft/mobilizon/commits/6c992ca))
## 4.0.0-beta.2 (2023-12-01)
* test: fix tests using verified routes ([5fcf3d5](https://framagit.org/framasoft/mobilizon/commits/5fcf3d5))
* feat: add links to cancel anonymous participations in emails ([9e6b232](https://framagit.org/framasoft/mobilizon/commits/9e6b232))
* feat(background): add a job to refresh participant stats ([11e42d6](https://framagit.org/framasoft/mobilizon/commits/11e42d6))
* feat(front): add dedicated page and route for event announcements ([d831dff](https://framagit.org/framasoft/mobilizon/commits/d831dff))
* chore(i18n): update backend translations ([6df16ef](https://framagit.org/framasoft/mobilizon/commits/6df16ef))
* fix: fix creating participant stats ([3f2a88f](https://framagit.org/framasoft/mobilizon/commits/3f2a88f))
* refactor: use Phoenix verified routes ([b315e1d](https://framagit.org/framasoft/mobilizon/commits/b315e1d))
## 4.0.0-beta.1 (2023-11-30)
* fix: add a final fallback if we have default_language: nil in instance config ([cd53062](https://framagit.org/framasoft/mobilizon/commits/cd53062))
* fix: build pictures at correct location and fix Plug.Static ([3c288c5](https://framagit.org/framasoft/mobilizon/commits/3c288c5))
* fix: don't show passed/finished events in related events section ([69e4a5c](https://framagit.org/framasoft/mobilizon/commits/69e4a5c))
* fix: fix Dockerfile copying assets path ([16cd377](https://framagit.org/framasoft/mobilizon/commits/16cd377))
* fix: normalize suggested username ([4960387](https://framagit.org/framasoft/mobilizon/commits/4960387))
* fix: set correct watcher config for E2E tests ([f47889b](https://framagit.org/framasoft/mobilizon/commits/f47889b))
* fix: various fixes ([b635937](https://framagit.org/framasoft/mobilizon/commits/b635937))
* fix(announcements): load group announcements ([7ef85fe](https://framagit.org/framasoft/mobilizon/commits/7ef85fe))
* fix(api): allow localhost as a valid uri host for applications ([49b070d](https://framagit.org/framasoft/mobilizon/commits/49b070d))
* fix(api): fix allowing posting event private announcement ([1831495](https://framagit.org/framasoft/mobilizon/commits/1831495))
* fix(docker): add sitemap folder ([bd38449](https://framagit.org/framasoft/mobilizon/commits/bd38449))
* fix(docker): allow to configure SMTP TLS ([2ecdf05](https://framagit.org/framasoft/mobilizon/commits/2ecdf05))
* fix(docker): convert smtp tls sni to char list ([b3be7c6](https://framagit.org/framasoft/mobilizon/commits/b3be7c6))
* fix(export): fix iCalendar export description HTML conversion ([d7daafc](https://framagit.org/framasoft/mobilizon/commits/d7daafc)), closes [#888](https://framagit.org/framasoft/mobilizon/issues/888)
* fix(front): hide all categories card if we don't have even one ([5e86ef1](https://framagit.org/framasoft/mobilizon/commits/5e86ef1))
* fix(histoire): fix URL to Framapiaf avatars ([0613f7f](https://framagit.org/framasoft/mobilizon/commits/0613f7f))
* fix(i18n): fix typos in translation sources ([2ecd55d](https://framagit.org/framasoft/mobilizon/commits/2ecd55d))
* fix(i18n): update spanish translations ([cfebc35](https://framagit.org/framasoft/mobilizon/commits/cfebc35))
* add simplified Chinese mapping ([02af9a4](https://framagit.org/framasoft/mobilizon/commits/02af9a4))
* Added translation using Weblate (Korean) ([a11fab6](https://framagit.org/framasoft/mobilizon/commits/a11fab6))
* Added translation using Weblate (Korean) ([c529a83](https://framagit.org/framasoft/mobilizon/commits/c529a83))
* Added translation using Weblate (Tatar) ([cefdaf8](https://framagit.org/framasoft/mobilizon/commits/cefdaf8))
* Fix docker development: ([9705978](https://framagit.org/framasoft/mobilizon/commits/9705978))
* fix fullAddressAutocomplete component not loading results ([83da88c](https://framagit.org/framasoft/mobilizon/commits/83da88c))
* Fix typo in ctl help text ([495d163](https://framagit.org/framasoft/mobilizon/commits/495d163))
* Fix typos ([66e89b9](https://framagit.org/framasoft/mobilizon/commits/66e89b9))
* introduce VITE_HOST env var and pass it to the node watcher vite --host ([bfb7e3c](https://framagit.org/framasoft/mobilizon/commits/bfb7e3c))
* remove unnecessary function ([8a1b122](https://framagit.org/framasoft/mobilizon/commits/8a1b122))
* resolve result promise in a shorter way ([f81804d](https://framagit.org/framasoft/mobilizon/commits/f81804d))
* Translated using Weblate (Croatian) ([e510e09](https://framagit.org/framasoft/mobilizon/commits/e510e09))
* Translated using Weblate (Czech) ([d702ca2](https://framagit.org/framasoft/mobilizon/commits/d702ca2))
* Translated using Weblate (Czech) ([9224f89](https://framagit.org/framasoft/mobilizon/commits/9224f89))
* Translated using Weblate (Czech) ([c14dffb](https://framagit.org/framasoft/mobilizon/commits/c14dffb))
* Translated using Weblate (Czech) ([a7d70d5](https://framagit.org/framasoft/mobilizon/commits/a7d70d5))
* Translated using Weblate (French) ([c7ba003](https://framagit.org/framasoft/mobilizon/commits/c7ba003))
* Translated using Weblate (German) ([7732f87](https://framagit.org/framasoft/mobilizon/commits/7732f87))
* Translated using Weblate (Indonesian) ([d065193](https://framagit.org/framasoft/mobilizon/commits/d065193))
* Translated using Weblate (Italian) ([b5e9f62](https://framagit.org/framasoft/mobilizon/commits/b5e9f62))
* Translated using Weblate (Italian) ([e8e1a62](https://framagit.org/framasoft/mobilizon/commits/e8e1a62))
* Translated using Weblate (Italian) ([84fc175](https://framagit.org/framasoft/mobilizon/commits/84fc175))
* Translated using Weblate (Italian) ([5b64388](https://framagit.org/framasoft/mobilizon/commits/5b64388))
* Translated using Weblate (Italian) ([5e3dedb](https://framagit.org/framasoft/mobilizon/commits/5e3dedb))
* Translated using Weblate (Italian) ([afe4dd2](https://framagit.org/framasoft/mobilizon/commits/afe4dd2))
* Translated using Weblate (Italian) ([fa0ae83](https://framagit.org/framasoft/mobilizon/commits/fa0ae83))
* Translated using Weblate (Italian) ([181a5a7](https://framagit.org/framasoft/mobilizon/commits/181a5a7))
* Translated using Weblate (Italian) ([827caa3](https://framagit.org/framasoft/mobilizon/commits/827caa3))
* Translated using Weblate (Italian) ([d08d350](https://framagit.org/framasoft/mobilizon/commits/d08d350))
* Translated using Weblate (Italian) ([e9d38c2](https://framagit.org/framasoft/mobilizon/commits/e9d38c2))
* Translated using Weblate (Italian) ([a4578f3](https://framagit.org/framasoft/mobilizon/commits/a4578f3))
* Translated using Weblate (Polish) ([d62c31e](https://framagit.org/framasoft/mobilizon/commits/d62c31e))
* Translated using Weblate (Polish) ([a8ea217](https://framagit.org/framasoft/mobilizon/commits/a8ea217))
* Translated using Weblate (Polish) ([42537af](https://framagit.org/framasoft/mobilizon/commits/42537af))
* Translated using Weblate (Polish) ([fb0a74e](https://framagit.org/framasoft/mobilizon/commits/fb0a74e))
* Translated using Weblate (Polish) ([2458076](https://framagit.org/framasoft/mobilizon/commits/2458076))
* Translated using Weblate (Polish) ([46ffc8c](https://framagit.org/framasoft/mobilizon/commits/46ffc8c))
* Translated using Weblate (Polish) ([f0d7807](https://framagit.org/framasoft/mobilizon/commits/f0d7807))
* Translated using Weblate (Portuguese (Brazil)) ([9f78c73](https://framagit.org/framasoft/mobilizon/commits/9f78c73))
* Translated using Weblate (Portuguese (Brazil)) ([802ab78](https://framagit.org/framasoft/mobilizon/commits/802ab78))
* Translated using Weblate (Spanish) ([ee5ee8d](https://framagit.org/framasoft/mobilizon/commits/ee5ee8d))
* Translated using Weblate (Spanish) ([66c49e4](https://framagit.org/framasoft/mobilizon/commits/66c49e4))
* Translated using Weblate (Tatar) ([ba5f8f8](https://framagit.org/framasoft/mobilizon/commits/ba5f8f8))
* Update translation files ([9aa9cd2](https://framagit.org/framasoft/mobilizon/commits/9aa9cd2))
* WIP ([b5672ce](https://framagit.org/framasoft/mobilizon/commits/b5672ce))
* build: downgrade Sentry since it doesn't want to compile ([b2bacbf](https://framagit.org/framasoft/mobilizon/commits/b2bacbf))
* build: only run ecto create & migrate & tz_world update on prepare_test task, not main test one ([8d11073](https://framagit.org/framasoft/mobilizon/commits/8d11073))
* build: replace @pluralsh/socket with @framasoft/socket ([435bd9d](https://framagit.org/framasoft/mobilizon/commits/435bd9d))
* build: replace @vueuse/head with @unhead/vue ([5602164](https://framagit.org/framasoft/mobilizon/commits/5602164))
* build: switch from yarn to npm to manage js dependencies and move js contents to root ([2e72f6f](https://framagit.org/framasoft/mobilizon/commits/2e72f6f))
* build(deps): replace absinthe socket library with fork ([ec397aa](https://framagit.org/framasoft/mobilizon/commits/ec397aa))
* build(docker): optimize image size ([f34099d](https://framagit.org/framasoft/mobilizon/commits/f34099d)), closes [#1012](https://framagit.org/framasoft/mobilizon/issues/1012)
* ci: bump node version in CI ([3205512](https://framagit.org/framasoft/mobilizon/commits/3205512))
* ci: fix handling pages deploy with existing public folder ([1228ec1](https://framagit.org/framasoft/mobilizon/commits/1228ec1))
* ci: install python3 instead of python ([5d65981](https://framagit.org/framasoft/mobilizon/commits/5d65981))
* ci: Release on multiple distributions & fix Docker multiple-step build ([262d1fc](https://framagit.org/framasoft/mobilizon/commits/262d1fc))
* test: fix ActivityPub headers test ([f248660](https://framagit.org/framasoft/mobilizon/commits/f248660))
* test: fix front-end tests ([105d3b5](https://framagit.org/framasoft/mobilizon/commits/105d3b5))
* test: fix histoire configuration ([bfbc299](https://framagit.org/framasoft/mobilizon/commits/bfbc299))
* test: fix tests ([c731f0f](https://framagit.org/framasoft/mobilizon/commits/c731f0f))
* test: fix unit backend tests ([e051df1](https://framagit.org/framasoft/mobilizon/commits/e051df1))
* chore: fix prettier configuration and run it ([c255cea](https://framagit.org/framasoft/mobilizon/commits/c255cea))
* chore: update Sobelow security ignores ([1d0398d](https://framagit.org/framasoft/mobilizon/commits/1d0398d))
* chore: upgrade deps ([99c80c6](https://framagit.org/framasoft/mobilizon/commits/99c80c6))
* chore(deps): update geo_postgis to 3.5.0 for Elixir 1.15 compat ([3936eb4](https://framagit.org/framasoft/mobilizon/commits/3936eb4))
* chore(deps): upgrade dependencies ([3d9beaa](https://framagit.org/framasoft/mobilizon/commits/3d9beaa))
* chore(i18n): add missing translation key ([6ecfa48](https://framagit.org/framasoft/mobilizon/commits/6ecfa48))
* chore(i18n): update gettext dependency and regenerate translation files ([d7ad934](https://framagit.org/framasoft/mobilizon/commits/d7ad934))
* chore(i18n): update translation templates ([70e9ce0](https://framagit.org/framasoft/mobilizon/commits/70e9ce0))
* refactor: use dedicated email for event announcements ([b97f1c9](https://framagit.org/framasoft/mobilizon/commits/b97f1c9))
* docs(dev.md): keep some info about structure ([d130b15](https://framagit.org/framasoft/mobilizon/commits/d130b15))
* feat(export): add event status in iCalendar exports ([7a1bfca](https://framagit.org/framasoft/mobilizon/commits/7a1bfca))
* feat(federation): expose public activities as announcements in relay outbx & rfrsh profile aftr fllw ([85e4715](https://framagit.org/framasoft/mobilizon/commits/85e4715))
## 3.2.0 (2023-09-07)
### Features
* **cli:** allow the mobilizon.users.delete command to delete multiple users by email domain or ip ([bc50ab6](https://framagit.org/framasoft/mobilizon/commit/bc50ab66f3a44df220a7daa3cb1d917bd02487ba))
* **export:** add date of participant creation in participant exports ([fef60ed](https://framagit.org/framasoft/mobilizon/commit/fef60ed0f92fc4e09ee261ff03f1139aff2449c3)), closes [#1343](https://framagit.org/framasoft/mobilizon/issues/1343)
* **notifications:** add missing notifications when an user registers to an event ([da532c7](https://framagit.org/framasoft/mobilizon/commit/da532c7059bea5fcd47e2f42210e8ba842a11d63)), closes [#1344](https://framagit.org/framasoft/mobilizon/issues/1344)
* **reports:** allow reports to hold multiple events ([f2ac3e2](https://framagit.org/framasoft/mobilizon/commit/f2ac3e2e5d28f4257a5e2d4870d339fecf3a5f1b))
* **reports:** allow to suspend a profile or a user account directly from the report view ([69588db](https://framagit.org/framasoft/mobilizon/commit/69588dbf4ce2f80cc5829a841135042fa73eb4fe))
* **reports:** improve reportview and allow removing content + resolve report automatically ([b105c50](https://framagit.org/framasoft/mobilizon/commit/b105c508c03ce3cb96dd8342f96d3291aa197e22))
* **reports:** show suspended status next to reported profile ([b9a165a](https://framagit.org/framasoft/mobilizon/commit/b9a165a7fc565dc583cca81dd9c54570f73b4ca3))
* Add option to link an external registration provider for events ([2de6937](https://framagit.org/framasoft/mobilizon/commit/2de6937407743100daba1d397db4da32d4cb606b))
* **back:** add admin setting to disable external event feature ([f6611e8](https://framagit.org/framasoft/mobilizon/commit/f6611e8eb5a7e12dc0dc0c216b598e04144e07c6))
* improve group creation view [3f601748](https://framagit.org/framasoft/mobilizon/-/commit/3f60174877bbe05773b1d1b2ceb91749adec7ed7)
* **auth:** pre-initialize registration fields with information from 3rd-party provider ([7e49345](https://framagit.org/framasoft/mobilizon/commit/7e4934513a0ca4a5f95e8c8e4a600459911899d5)), closes [#1105](https://framagit.org/framasoft/mobilizon/issues/1105)
### Bug Fixes
* add inets and ssl to extra_applications in test env ([af46bea](https://framagit.org/framasoft/mobilizon/commit/af46bea7f730f4479bb31518a9fa53de7302049a))
* **apps:** add missing app scopes ([7e98097](https://framagit.org/framasoft/mobilizon/commit/7e98097c710663609274200564fca9eff1ea4d20))
* **apps:** make sure we can set status for an application token ([1a6095d](https://framagit.org/framasoft/mobilizon/commit/1a6095d27aeb440379d27c3894c302f831214822))
* **backend:** fix config cache not being used everytime ([ed3cd58](https://framagit.org/framasoft/mobilizon/commit/ed3cd5858cd27a90d4724a95ee660bbc08e92e80))
* **backend:** handle email not being sent when resending registration instructions ([b2492a3](https://framagit.org/framasoft/mobilizon/commit/b2492a387086528598da36f11e53569c5bdb164c))
* create event time/date allignment ([3de90a3](https://framagit.org/framasoft/mobilizon/commit/3de90a3c73414105becdcb24899016178b1c6f02))
* **docker:** fix Qemu segfaulting on arm64 ([8e3f90f](https://framagit.org/framasoft/mobilizon/commit/8e3f90f7135e2a8a8ac46464420c9d57b2e02534)), closes [#1241](https://framagit.org/framasoft/mobilizon/issues/1241) [#1249](https://framagit.org/framasoft/mobilizon/issues/1249)
* **federation:** fix getting pictures from Gruppe actors ([7c5f8b2](https://framagit.org/framasoft/mobilizon/commit/7c5f8b24311253ef89c7e47cd7ce22ebe6cf2ec9))
* fix Elixir 1.15 depreciations ([da70427](https://framagit.org/framasoft/mobilizon/commit/da70427e3292be8943167bbad73d5a782a98c6b5))
* fix some typescript issues with pwa ([e351d3c](https://framagit.org/framasoft/mobilizon/commit/e351d3cb2f8183bb4335b3b21e154f46d9237a76))
* **front:** avoid crashing if we don't have configuration data in time when in guard ([7916261](https://framagit.org/framasoft/mobilizon/commit/7916261c5c8c680d064fba106619d733575bc39c))
* **front:** fix alignment of some input elements on event edition form ([50695fc](https://framagit.org/framasoft/mobilizon/commit/50695fcfd5e0dc6fd55185f4399d45ed1852f880))
* **front:** fix changing language not being saved to the user's settings ([010a5e4](https://framagit.org/framasoft/mobilizon/commit/010a5e426def0a0b7f2658234f3c9d6eec46a68e))
* **front:** fix comment not showing up when replying in a discussion ([cc8f02d](https://framagit.org/framasoft/mobilizon/commit/cc8f02d0a6354c49437e7ff1780912a71bed03f4))
* **front:** fix confirm anonymous participation ([f99267c](https://framagit.org/framasoft/mobilizon/commit/f99267c6115601fce6eadd6ee54893fde0d6fd84))
* **front:** fix discussion edition panel always showing up ([fee0e38](https://framagit.org/framasoft/mobilizon/commit/fee0e388af798f14d4da8cbd9f037137f6be9f85))
* **front:** fix display of participants list ([c6b83c4](https://framagit.org/framasoft/mobilizon/commit/c6b83c42d6fbb2e6a93175479ef1620913c6532f))
* **front:** fix map ([8f84ba1](https://framagit.org/framasoft/mobilizon/commit/8f84ba1d08ce8d2d266010ee3166106eed66116d)), closes [#1314](https://framagit.org/framasoft/mobilizon/issues/1314)
* **front:** fix missing type causing eslint error ([c76dba3](https://framagit.org/framasoft/mobilizon/commit/c76dba3dbfe4fb0ab9ed24f71a6f64681c643fca))
* **front:** fix selecting all participants in participant view ([beef3ff](https://framagit.org/framasoft/mobilizon/commit/beef3ff16d12f5d5710e302b739dd724ad4b0cb5))
* **front:** fix showing error message when app to approve doesn't exist ([12cbff1](https://framagit.org/framasoft/mobilizon/commit/12cbff154ae5cdd72a1a7e882cb99e943010222b))
* **front:** fix some alignment of some UI elements in mobile event view ([8c313b5](https://framagit.org/framasoft/mobilizon/commit/8c313b53977493792c113b5191443515f8aeae78))
* **front:** properly handle error when approving app ([086d208](https://framagit.org/framasoft/mobilizon/commit/086d208ee50ae1f9ecb30196e758fdc7687714ae))
* **front:** properly handle post not found ([8db31c9](https://framagit.org/framasoft/mobilizon/commit/8db31c99df668389db4c6651fa71a8c1420484cf))
* **front:** reduce horizontal padding on main element ([f3c218f](https://framagit.org/framasoft/mobilizon/commit/f3c218f841292a28ec6d1284a205e2c7fd7d8f6e))
* **lint:** fix lint after upgrades ([60aceb4](https://framagit.org/framasoft/mobilizon/commit/60aceb442ae49458e31a1f38d277eca7af248a36))
* **mail:** fix sending mail on OTP26 ([f54fff5](https://framagit.org/framasoft/mobilizon/commit/f54fff56fc5c94408b1fd16b1eb9dd0f91bc2dfd)), closes [#1341](https://framagit.org/framasoft/mobilizon/issues/1341)
* **push:** fix push subscriptions registration ([fdf87ea](https://framagit.org/framasoft/mobilizon/commit/fdf87ea991b1d406b28dbd0c8807908939070c8b))
* **pwa:** improvements to the PWA configuration ([04c5ac1](https://framagit.org/framasoft/mobilizon/commit/04c5ac11636a4ffb5d3ac0c510b028edfb7fc057))
* **reports:** make front-end handle nullified reported_id and reported_id ([afd2ffe](https://framagit.org/framasoft/mobilizon/commit/afd2ffe72294baedc9dd15dc89d57301831545cc))
* **reports:** remove on delete cascade for reports ([4f530ca](https://framagit.org/framasoft/mobilizon/commit/4f530cabcf1bcadc09399a728975d329f3c9fdbf))
* **front:** fix behavior of local toggle for profiles & groups view depending on domain value ([84f62cd](https://framagit.org/framasoft/mobilizon/commit/84f62cd043d5cf5d186fea6f24a1a9dff5fc64ce))
* **i18n:** add missing translations ([af670f3](https://framagit.org/framasoft/mobilizon/commit/af670f39478b11465205fbea9b9268bab401bbb6))
* **back:** allow any other type of actor to be suspended ([92b222b](https://framagit.org/framasoft/mobilizon/commit/92b222b091cf6248969b0206e7c052b725a1286b))
* **back:** only try to insert activities for groups ([cfc9843](https://framagit.org/framasoft/mobilizon/commit/cfc984345e90b2960077956858606395f37ef9b9))
* **front:** don't return promise if result is not finished loading for tags ([8c14ba4](https://framagit.org/framasoft/mobilizon/commit/8c14ba441c6f0fadb3c59f80ff4e3abb2e625752))
* **front:** fix getting result from interactable object in InteractView ([31b2d06](https://framagit.org/framasoft/mobilizon/commit/31b2d065a904453580731133cd3dfd545a5816fa))
* **docker:** make Docker entrypoint port configurable via $MOBILIZON_DATABASE_PORT ([13099e0](https://framagit.org/framasoft/mobilizon/commit/13099e0f118b727a1472282c6419ef9b1842c191))
* **front:** fix fetching and rendering profile mentions and fetching tags ([895378a](https://framagit.org/framasoft/mobilizon/commit/895378a96bf8a6c7662ed02509c37b8d8a95db0b))
* **sitemap:** save generated sitemaps in configurable directory ([f28109a](https://framagit.org/framasoft/mobilizon/commit/f28109ad50d85143e38c8e9f5d09c28f80566462)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
* **auth:** small front fixes in 3rd-party auth provider callback ([bde7206](https://framagit.org/framasoft/mobilizon/commit/bde7206a1ca44fdf96d817921bb1efc497dcae40))
* **config:** rollback Mailer tls setting to :never by default ([3d63c12](https://framagit.org/framasoft/mobilizon/commit/3d63c12e88ca31f582489f126d1ef5677af79721))
* **docker:** fix entrypoint PostgreSQL extensions creations not using MOBILIZON_DATABASE_PORT ([9b49918](https://framagit.org/framasoft/mobilizon/commit/9b4991844ecaf7c1f1287ae62d1dfd463c2ea26b)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321) [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
* **front:** fixes in EditIdentity view ([7e13e2b](https://framagit.org/framasoft/mobilizon/commit/7e13e2baa7690d5dfc4a8b12097a4ed85ea825d7))
## 3.2.0-beta.5 (2023-09-06)
### Bug Fixes
* **docker:** make Docker entrypoint port configurable via $MOBILIZON_DATABASE_PORT ([13099e0](https://framagit.org/framasoft/mobilizon/commit/13099e0f118b727a1472282c6419ef9b1842c191))
* **front:** fix fetching and rendering profile mentions and fetching tags ([895378a](https://framagit.org/framasoft/mobilizon/commit/895378a96bf8a6c7662ed02509c37b8d8a95db0b))
* **sitemap:** save generated sitemaps in configurable directory ([f28109a](https://framagit.org/framasoft/mobilizon/commit/f28109ad50d85143e38c8e9f5d09c28f80566462)), closes [#1321](https://framagit.org/framasoft/mobilizon/issues/1321)
## 3.2.0-beta.4 (2023-09-05)
### Bug Fixes
* **back:** allow any other type of actor to be suspended ([92b222b](https://framagit.org/framasoft/mobilizon/commit/92b222b091cf6248969b0206e7c052b725a1286b))
* **back:** only try to insert activities for groups ([cfc9843](https://framagit.org/framasoft/mobilizon/commit/cfc984345e90b2960077956858606395f37ef9b9))
* **front:** don't return promise if result is not finished loading for tags ([8c14ba4](https://framagit.org/framasoft/mobilizon/commit/8c14ba441c6f0fadb3c59f80ff4e3abb2e625752))
* **front:** fix getting result from interactable object in InteractView ([31b2d06](https://framagit.org/framasoft/mobilizon/commit/31b2d065a904453580731133cd3dfd545a5816fa))
## 3.2.0-beta.3 (2023-09-04)
### Bug Fixes
* **i18n:** add missing translations ([af670f3](https://framagit.org/framasoft/mobilizon/commit/af670f39478b11465205fbea9b9268bab401bbb6))
### Features
* Add option to link an external registration provider for events ([2de6937](https://framagit.org/framasoft/mobilizon/commit/2de6937407743100daba1d397db4da32d4cb606b))
* **back:** add admin setting to disable external event feature ([f6611e8](https://framagit.org/framasoft/mobilizon/commit/f6611e8eb5a7e12dc0dc0c216b598e04144e07c6))
* improve group creation view [3f601748](https://framagit.org/framasoft/mobilizon/-/commit/3f60174877bbe05773b1d1b2ceb91749adec7ed7)
## 3.2.0-beta.2 (2023-09-01)
Fixes a CI issue that prevented 3.2.0-beta.2 being released.
### Bug Fixes
* **front:** fix behavior of local toggle for profiles & groups view depending on domain value ([84f62cd](https://framagit.org/framasoft/mobilizon/commit/84f62cd043d5cf5d186fea6f24a1a9dff5fc64ce))
## 3.2.0-beta.1 (2023-09-01)
### Features
* **cli:** allow the mobilizon.users.delete command to delete multiple users by email domain or ip ([bc50ab6](https://framagit.org/framasoft/mobilizon/commit/bc50ab66f3a44df220a7daa3cb1d917bd02487ba))
* **export:** add date of participant creation in participant exports ([fef60ed](https://framagit.org/framasoft/mobilizon/commit/fef60ed0f92fc4e09ee261ff03f1139aff2449c3)), closes [#1343](https://framagit.org/framasoft/mobilizon/issues/1343)
* **notifications:** add missing notifications when an user registers to an event ([da532c7](https://framagit.org/framasoft/mobilizon/commit/da532c7059bea5fcd47e2f42210e8ba842a11d63)), closes [#1344](https://framagit.org/framasoft/mobilizon/issues/1344)
* **reports:** allow reports to hold multiple events ([f2ac3e2](https://framagit.org/framasoft/mobilizon/commit/f2ac3e2e5d28f4257a5e2d4870d339fecf3a5f1b))
* **reports:** allow to suspend a profile or a user account directly from the report view ([69588db](https://framagit.org/framasoft/mobilizon/commit/69588dbf4ce2f80cc5829a841135042fa73eb4fe))
* **reports:** improve reportview and allow removing content + resolve report automatically ([b105c50](https://framagit.org/framasoft/mobilizon/commit/b105c508c03ce3cb96dd8342f96d3291aa197e22))
* **reports:** show suspended status next to reported profile ([b9a165a](https://framagit.org/framasoft/mobilizon/commit/b9a165a7fc565dc583cca81dd9c54570f73b4ca3))
### Bug Fixes
* add inets and ssl to extra_applications in test env ([af46bea](https://framagit.org/framasoft/mobilizon/commit/af46bea7f730f4479bb31518a9fa53de7302049a))
* **apps:** add missing app scopes ([7e98097](https://framagit.org/framasoft/mobilizon/commit/7e98097c710663609274200564fca9eff1ea4d20))
* **apps:** make sure we can set status for an application token ([1a6095d](https://framagit.org/framasoft/mobilizon/commit/1a6095d27aeb440379d27c3894c302f831214822))
* **backend:** fix config cache not being used everytime ([ed3cd58](https://framagit.org/framasoft/mobilizon/commit/ed3cd5858cd27a90d4724a95ee660bbc08e92e80))
* **backend:** handle email not being sent when resending registration instructions ([b2492a3](https://framagit.org/framasoft/mobilizon/commit/b2492a387086528598da36f11e53569c5bdb164c))
* create event time/date allignment ([3de90a3](https://framagit.org/framasoft/mobilizon/commit/3de90a3c73414105becdcb24899016178b1c6f02))
* **docker:** fix Qemu segfaulting on arm64 ([8e3f90f](https://framagit.org/framasoft/mobilizon/commit/8e3f90f7135e2a8a8ac46464420c9d57b2e02534)), closes [#1241](https://framagit.org/framasoft/mobilizon/issues/1241) [#1249](https://framagit.org/framasoft/mobilizon/issues/1249)
* **federation:** fix getting pictures from Gruppe actors ([7c5f8b2](https://framagit.org/framasoft/mobilizon/commit/7c5f8b24311253ef89c7e47cd7ce22ebe6cf2ec9))
* fix Elixir 1.15 depreciations ([da70427](https://framagit.org/framasoft/mobilizon/commit/da70427e3292be8943167bbad73d5a782a98c6b5))
* fix some typescript issues with pwa ([e351d3c](https://framagit.org/framasoft/mobilizon/commit/e351d3cb2f8183bb4335b3b21e154f46d9237a76))
* **front:** avoid crashing if we don't have configuration data in time when in guard ([7916261](https://framagit.org/framasoft/mobilizon/commit/7916261c5c8c680d064fba106619d733575bc39c))
* **front:** fix alignment of some input elements on event edition form ([50695fc](https://framagit.org/framasoft/mobilizon/commit/50695fcfd5e0dc6fd55185f4399d45ed1852f880))
* **front:** fix changing language not being saved to the user's settings ([010a5e4](https://framagit.org/framasoft/mobilizon/commit/010a5e426def0a0b7f2658234f3c9d6eec46a68e))
* **front:** fix comment not showing up when replying in a discussion ([cc8f02d](https://framagit.org/framasoft/mobilizon/commit/cc8f02d0a6354c49437e7ff1780912a71bed03f4))
* **front:** fix confirm anonymous participation ([f99267c](https://framagit.org/framasoft/mobilizon/commit/f99267c6115601fce6eadd6ee54893fde0d6fd84))
* **front:** fix discussion edition panel always showing up ([fee0e38](https://framagit.org/framasoft/mobilizon/commit/fee0e388af798f14d4da8cbd9f037137f6be9f85))
* **front:** fix display of participants list ([c6b83c4](https://framagit.org/framasoft/mobilizon/commit/c6b83c42d6fbb2e6a93175479ef1620913c6532f))
* **front:** fix map ([8f84ba1](https://framagit.org/framasoft/mobilizon/commit/8f84ba1d08ce8d2d266010ee3166106eed66116d)), closes [#1314](https://framagit.org/framasoft/mobilizon/issues/1314)
* **front:** fix missing type causing eslint error ([c76dba3](https://framagit.org/framasoft/mobilizon/commit/c76dba3dbfe4fb0ab9ed24f71a6f64681c643fca))
* **front:** fix selecting all participants in participant view ([beef3ff](https://framagit.org/framasoft/mobilizon/commit/beef3ff16d12f5d5710e302b739dd724ad4b0cb5))
* **front:** fix showing error message when app to approve doesn't exist ([12cbff1](https://framagit.org/framasoft/mobilizon/commit/12cbff154ae5cdd72a1a7e882cb99e943010222b))
* **front:** fix some alignment of some UI elements in mobile event view ([8c313b5](https://framagit.org/framasoft/mobilizon/commit/8c313b53977493792c113b5191443515f8aeae78))
* **front:** properly handle error when approving app ([086d208](https://framagit.org/framasoft/mobilizon/commit/086d208ee50ae1f9ecb30196e758fdc7687714ae))
* **front:** properly handle post not found ([8db31c9](https://framagit.org/framasoft/mobilizon/commit/8db31c99df668389db4c6651fa71a8c1420484cf))
* **front:** reduce horizontal padding on main element ([f3c218f](https://framagit.org/framasoft/mobilizon/commit/f3c218f841292a28ec6d1284a205e2c7fd7d8f6e))
* **lint:** fix lint after upgrades ([60aceb4](https://framagit.org/framasoft/mobilizon/commit/60aceb442ae49458e31a1f38d277eca7af248a36))
* **mail:** fix sending mail on OTP26 ([f54fff5](https://framagit.org/framasoft/mobilizon/commit/f54fff56fc5c94408b1fd16b1eb9dd0f91bc2dfd)), closes [#1341](https://framagit.org/framasoft/mobilizon/issues/1341)
* **push:** fix push subscriptions registration ([fdf87ea](https://framagit.org/framasoft/mobilizon/commit/fdf87ea991b1d406b28dbd0c8807908939070c8b))
* **pwa:** improvements to the PWA configuration ([04c5ac1](https://framagit.org/framasoft/mobilizon/commit/04c5ac11636a4ffb5d3ac0c510b028edfb7fc057))
* **reports:** make front-end handle nullified reported_id and reported_id ([afd2ffe](https://framagit.org/framasoft/mobilizon/commit/afd2ffe72294baedc9dd15dc89d57301831545cc))
* **reports:** remove on delete cascade for reports ([4f530ca](https://framagit.org/framasoft/mobilizon/commit/4f530cabcf1bcadc09399a728975d329f3c9fdbf))
## 3.1.3 (2023-06-21)
### Bug Fixes
* **groups:** fix unauthenticated access to groups because of missing read:group:members permission ([3714925](https://framagit.org/framasoft/mobilizon/commit/3714925896ad0415496352b9901ebec199afa0f2)), closes [#1311](https://framagit.org/framasoft/mobilizon/issues/1311)
## 3.1.2 (2023-06-21)
### Bug Fixes
* **activity settings:** fix saving activity settings ([6c1e1e9](https://framagit.org/framasoft/mobilizon/commit/6c1e1e98d81c7469f41beed17cfa1d4b718b5d13)), closes [#1251](https://framagit.org/framasoft/mobilizon/issues/1251)
* **apps:** fix pruning old application device activations ([dd00620](https://framagit.org/framasoft/mobilizon/commit/dd00620b9a54b2b1356855d280e03c82befe15e4))
* **backend:** filter out nil tags before starting looking for existing ones ([f04d2b9](https://framagit.org/framasoft/mobilizon/commit/f04d2b9225b80333f03a3cc9366df4a05af88a73))
* **deps:** fix compatibility with elixir-plug/mime 2.0.5 ([d63999c](https://framagit.org/framasoft/mobilizon/commit/d63999c081bcbb5923af17b71edbfd13a3720d7d))
* **discussions:** handle changeset errors when updating discussion ([ca06ec3](https://framagit.org/framasoft/mobilizon/commit/ca06ec397fbd6848e340dfae12c635736069a9f3))
* **exports:** properly handle export format not being handled ([a76b1ca](https://framagit.org/framasoft/mobilizon/commit/a76b1ca66d776fbe4566d7f23b38b087ae32530b))
* **federation:** allow federated usernames with capitals ([d502164](https://framagit.org/framasoft/mobilizon/commit/d5021647d753e6457e459b1f992da60876292428))
* **federation:** handle fetch_actor with a map ([552ab4c](https://framagit.org/framasoft/mobilizon/commit/552ab4c80b2f99095028ab3685c71ff9efdb94eb))
* **federation:** handle string values for tags when constructing mentions ([2729d5e](https://framagit.org/framasoft/mobilizon/commit/2729d5ed7acef7c20a4388f019152e80a9db163c))
* **federation:** ignore mentions from everything that's not a AP Person ([56f341e](https://framagit.org/framasoft/mobilizon/commit/56f341e960b7ae0a5fe78d7174f0e05d14add3f2))
* **federation:** only refresh instances once a day ([6745590](https://framagit.org/framasoft/mobilizon/commit/6745590e54dce236dc7a2319f9c49c4aa6858306))
* **federation:** prevent fetching own relay actor ([b981f91](https://framagit.org/framasoft/mobilizon/commit/b981f91cf748079847ae7a71b68f98b6914c951f))
* **federation:** restrict fetch_group first arg to binaries ([e8d34b4](https://framagit.org/framasoft/mobilizon/commit/e8d34b4ea9f06d16a5982da8e5ff5140852c985d))
* **federation:** rotate relay keys on startup if missing private keys ([5381eaa](https://framagit.org/framasoft/mobilizon/commit/5381eaae22248cdc6585d19c10be7fe2b7f5709f))
* **front:** add missing title to Participants View page ([a5a86a5](https://framagit.org/framasoft/mobilizon/commit/a5a86a5e1be08cf9123ee7ad0979974bc2be1cb4))
* **front:** fix displaying user activity settings checkboxes ([8e21c30](https://framagit.org/framasoft/mobilizon/commit/8e21c30f92f47dcb742d8f7df2aed59191158d80)), closes [#1251](https://framagit.org/framasoft/mobilizon/issues/1251)
* **front:** fix wrong key name for dialog.confirm() option ([c8f49e1](https://framagit.org/framasoft/mobilizon/commit/c8f49e1837d719cd737c3e1ae976f14b20345e2b))
* **front:** fix wrong value for timezone when it has no prefix ([2dd0e13](https://framagit.org/framasoft/mobilizon/commit/2dd0e13eba8bb5c04af45bae0de059deb93c2efa)), closes [#1275](https://framagit.org/framasoft/mobilizon/issues/1275)
* **group:** fix getting group members count ([f749518](https://framagit.org/framasoft/mobilizon/commit/f749518bf7a29a86da559bfe6aba6d7485e7cfeb)), closes [#1303](https://framagit.org/framasoft/mobilizon/issues/1303)
* **participant exports:** fix participants by returning the export type as well as the file path ([49b04c9](https://framagit.org/framasoft/mobilizon/commit/49b04c9b19517daa0a07656779d53001b39ab803))
* **participant:** handle re-confirming participation ([5cc5c99](https://framagit.org/framasoft/mobilizon/commit/5cc5c9943cbc9a53246dda98958e99d004f0dfa9))
### Features
* **graphql:** validate timezone id as a GraphQL Scalar ([845bb6a](https://framagit.org/framasoft/mobilizon/commit/845bb6ac90081ef8cb4cff8d6ec3d11bfc19857c)), closes [#1299](https://framagit.org/framasoft/mobilizon/issues/1299)
## 3.1.1 (2023-06-02)
### Features
* **anti-spam:** allow to only scan for spam in profiles or events ([c971287](https://framagit.org/framasoft/mobilizon/-/commit/c971287624913c8555fe288af0df1175701e6209))
### Bug Fixes
* **front:** fix group settings getting unresponsive because of reactive bug ([f1e119c](https://framagit.org/framasoft/mobilizon/-/commit/f1e119cb7ad580dfab73de3083f20a7303822888)), closes [#1298](https://framagit.org/framasoft/mobilizon/-/issues/1298)
* **search:** fix global search sorting ([39e24c3](https://framagit.org/framasoft/mobilizon/-/commit/39e24c328a21f7058e4d2526e13eae85e39bae86)), closes [#1297](https://framagit.org/framasoft/mobilizon/-/issues/1297)
## 3.1.0 (2023-05-31)
### Features
* **API:** Allow to create apps, with permissions and both Authorization Code Flow and Device Flow
* **addresses:** Allow to enter manual addresses ([85d643d](https://framagit.org/framasoft/mobilizon/-/commit/85d643d0ecd5e7504f32953b9ed1509697b915e2))
* **docker:** Specify the folder where tzdata downloads data so that it can be used in a volume ([4bb0625](https://framagit.org/framasoft/mobilizon/-/commit/4bb062528f12be530a3754ca23c1bc6dbc862e5a)), closes [#1280](https://framagit.org/framasoft/mobilizon/-/issues/1280)
* **spam:** Introduce checking new accounts, events & comments for spam with the help of Akismet ([317a343](https://framagit.org/framasoft/mobilizon/-/commit/317a3434b221a1a91b66d8443984269404863a8e))
* **rate-limiting:** Introduce rate-limiting on some endpoints ([c07ba3a5](https://framagit.org/framasoft/mobilizon/-/commit/c07ba3a5d19c419ef8aaf3ea9ca6e7f48e4f4487))
* **front:** improve padding on event tags ([7fa452d](https://framagit.org/framasoft/mobilizon/-/commit/7fa452d9e3f9bb2443e571c9a32eaed51e32480a))
* **front:** make admin profile view linkable directly with parameters ([08ce7e2](https://framagit.org/framasoft/mobilizon/-/commit/08ce7e26b73045279261ab87a14cb4f3dab5df1e))
* **front:** make profile members link to profile on group admin view and the reverse ([96129d2](https://framagit.org/framasoft/mobilizon/-/commit/96129d2339133027220d3b5fcb1c52f84bcc5cbb))
* **front:** make profiles and group admin views default to local ([3e0324d](https://framagit.org/framasoft/mobilizon/-/commit/3e0324d36ec5a8aa388e6b5d598a6f9a0c596797))
* **front:** redirect user to homepage on disconnect when currently on private page ([d5a6df9](https://framagit.org/framasoft/mobilizon/-/commit/d5a6df9940fb458c5dbaee149015c02ebc370c6b)), closes [#1278](https://framagit.org/framasoft/mobilizon/-/issues/1278)
* **front:** show skeleton content on event view until the event is loaded ([dc3b93f](https://framagit.org/framasoft/mobilizon/-/commit/dc3b93ffb5a4b072aec792533fd6e4b58ed7a893))
* **i18n:** activate croatian language ([94182ae](https://framagit.org/framasoft/mobilizon/-/commit/94182aed2d8a22d00534f6376dfda2658bc8ba7e))
* **i18n:** activate japanese language ([6bd8034](https://framagit.org/framasoft/mobilizon/-/commit/6bd8034fe816a432c3547de6d1ad8a18e73dc314)), closes [#1293](https://framagit.org/framasoft/mobilizon/-/issues/1293)
* **post:** show post visibily in PostListItem component ([ec7ca4d](https://framagit.org/framasoft/mobilizon/-/commit/ec7ca4ddf18a38cf6f51d38b540eecc9858f3c98))
### Bug Fixes
* **global-search:** Add option values in debug log before calling global search service ([8141bb0](https://framagit.org/framasoft/mobilizon/-/commit/8141bb0acbc4eb02a917c5bc18712d0d954c4ee5))
* **apps:** Fix cleaning application data background job ([aa20f69](https://framagit.org/framasoft/mobilizon/-/commit/aa20f6991127ddee546fc0b867298c1342dbcb4d))
* **apps:** Show message when the user doesn't have approved apps yet ([e0ee9c1](https://framagit.org/framasoft/mobilizon/-/commit/e0ee9c143b0335753db5dfae19e324781d55bd4e))
* **auth:** Handle logging-in with disabled auth provider ([a22a5e3](https://framagit.org/framasoft/mobilizon/-/commit/a22a5e3cb924869e32cb9ed71dab3e03d91c018f))
* **backend:** Fix Mobilizon.Events.list_participations_for_user_query/1 ([bcf6fd8](https://framagit.org/framasoft/mobilizon/-/commit/bcf6fd893c762c12b63d7e02da43cd5c05db509b))
* **backend:** Handle CLDR data having no standard property for a language ([dbe2da7](https://framagit.org/framasoft/mobilizon/-/commit/dbe2da79c3aa1543b87dce61b5fd90195fb53afe))
* **backend:** Ignore group mentions for now ([b5f106b](https://framagit.org/framasoft/mobilizon/-/commit/b5f106b0a81fefba3203f8ec5855e834a2078222))
* **back:** Improve error message when requesting reset passwords and new instructions ([1c1d0d4](https://framagit.org/framasoft/mobilizon/-/commit/1c1d0d47d70cf19abe5be42e7ec3a73656a8172b))
* **back:** Replace NaiveDateTime uses with DateTime for consistency ([8ea00e7](https://framagit.org/framasoft/mobilizon/-/commit/8ea00e7c1827ce3056ae51968a62fb3dc03ac6eb))
* **back:** Various small fixes in backend ([2a57340](https://framagit.org/framasoft/mobilizon/-/commit/2a57340a82e414e69924ad89e8db9fc326742cc7))
* bind pagination current prop ([4bcf572](https://framagit.org/framasoft/mobilizon/-/commit/4bcf572c54d904587d0409e2eb68b4ca6cf48fec))
* **federation:** Account suspension should use actor in question as author and not relay actor ([79b48da](https://framagit.org/framasoft/mobilizon/-/commit/79b48da22209a8b2f1b234b8b8e121543a39b22b))
* **feeds:** Only provide future events in ICS/Atom feeds ([f3a4431](https://framagit.org/framasoft/mobilizon/-/commit/f3a443138a0e1e6cf34fc593f5c174d56c21e904)), closes [#1246](https://framagit.org/framasoft/mobilizon/-/issues/1246)
* Fix type of variable in navbar ([50ab531](https://framagit.org/framasoft/mobilizon/-/commit/50ab531156214f883cb03f785ccf65e3f19ef50e))
* **follow-instances:** Show correct error message when trying to follow already following actor ([d969c66](https://framagit.org/framasoft/mobilizon/-/commit/d969c6648f15e1ed280169a4c55d612bb002f03f))
* **front:** Fix about sections titles ([487f406](https://framagit.org/framasoft/mobilizon/-/commit/487f4069b14fde6304c9a42cec5b1c1af79814c5))
* **front:** Fix autocomplete attribute in o-inputitems after Oruga new version BC ([d2ba732](https://framagit.org/framasoft/mobilizon/-/commit/d2ba732b8b51986b739f6fbe3d74fa68e4b74ba0))
* **front:** Fix behaviour when deleting an event from event list ([cfd10ea](https://framagit.org/framasoft/mobilizon/-/commit/cfd10ea96078f03ad3b4f5682e37078ffae16ee4))
* **front:** Fix event list month order ([63c9ed6](https://framagit.org/framasoft/mobilizon/-/commit/63c9ed62de94d6d150798c949bad3d8a2dd4db23)), closes [#1244](https://framagit.org/framasoft/mobilizon/-/issues/1244)
* **front:** Fix instances list pagination ([8543204](https://framagit.org/framasoft/mobilizon/-/commit/8543204bd95de886d8d35bd491f23ecbc0a6ef8d)), closes [#1277](https://framagit.org/framasoft/mobilizon/-/issues/1277)
* **front:** Fix pagination display on dark mode ([4375438](https://framagit.org/framasoft/mobilizon/-/commit/4375438dc9fd2f1c5c9d7ed6670dde04f2da520f))
* **front:** Fix style of My Events participations ([35b07dc](https://framagit.org/framasoft/mobilizon/-/commit/35b07dceaa41c74c28ea49655b755e341f56df32))
* **front:** Focus report comment input in report modal ([2c28312](https://framagit.org/framasoft/mobilizon/-/commit/2c28312fc957901b86c2f3d1db8fc3376f505d37)), closes [#1236](https://framagit.org/framasoft/mobilizon/-/issues/1236)
* **front:** Handle "Failed to fetch dynamically imported module" errors by refreshing the page ([3d21a06](https://framagit.org/framasoft/mobilizon/-/commit/3d21a067897e4aa24f6404686ca6896044584796))
* **front:** Improve Delete account modal UI ([c420bbc](https://framagit.org/framasoft/mobilizon/-/commit/c420bbccc9bd1c348e41904e826dc49c71d7eeb4))
* **front:** Improve resend inscription instructions view and show error when appropriate ([5563052](https://framagit.org/framasoft/mobilizon/-/commit/55630527957d4f6a2e1e6845e64a92bc4794efc8))
* **front:** No cache-only for config ([8dcb76c](https://framagit.org/framasoft/mobilizon/-/commit/8dcb76c30d4fa835837fd3b3833f83682fbae615))
* **front:** Small UI fixes on identity pickers ([6faafd6](https://framagit.org/framasoft/mobilizon/-/commit/6faafd639303e4b57ed81db2ffb5db4ad598b904))
* **i18n:** Update translations ([3b7dbcd](https://framagit.org/framasoft/mobilizon/-/commit/3b7dbcd71f0d19d5e723a03c56ca0b1abbd16f5d))
* **map:** Fix style of the map marker ([c7b90cd](https://framagit.org/framasoft/mobilizon/-/commit/c7b90cd60a14abea7aebab7e1d87f37a44371f7c))
* **map:** Only show map details when needed ([23b5e59](https://framagit.org/framasoft/mobilizon/-/commit/23b5e5930cb9bdb57b1d7fa3ec899d7e4d3571be))
* **map:** Only show marker if we have it's position ([f0cc5ff](https://framagit.org/framasoft/mobilizon/-/commit/f0cc5ffb8feb2f4d70416792a8ab2f4f44bfba85))
* **password-reset:** Lower time before being available to reset password or resend instructions ([73eb460](https://framagit.org/framasoft/mobilizon/-/commit/73eb4603b185c341b63481ed934f66e19aa0784f))
* **search:** Fix event search order ([a4e7ee3](https://framagit.org/framasoft/mobilizon/-/commit/a4e7ee37bedc63b2193a401c801b3b1298f566d2))
* **typespec:** Fix missing return type in typespec ([2043c98](https://framagit.org/framasoft/mobilizon/-/commit/2043c98717e8621b3953d347be0b4a35f494af98))
* Change the way preferredUsername is synced ([a73e5a08](https://framagit.org/framasoft/mobilizon/-/commit/a73e5a085ef48a88dbb8f9c407df0430ca89fe1f))
* datetimepicker: change colors for day & time selectors on dark mode ([b18e8fd3](https://framagit.org/framasoft/mobilizon/-/commit/b18e8fd37c76190ca7f6db82e408cdb005d1810a))
* Save IP and login date from directly registered accounts ([1db5c4ae](https://framagit.org/framasoft/mobilizon/-/commit/1db5c4ae2d49d5adbda2c0825ee0320322b525d6))
* Make sure every cache is properly cleared when managing an event ([f531c39b](https://framagit.org/framasoft/mobilizon/-/commit/f531c39b7e8829a5e3ff68f624b04e12266f2148))
* Add page title for Categories view ([0775814e](https://framagit.org/framasoft/mobilizon/-/commit/0775814e19e6f6ddde564f7a29ae80fab2175d3f))
* Fix notifications settings not working ([31fd99bd](https://framagit.org/framasoft/mobilizon/-/commit/31fd99bd3760872e452351b33765d25b2b9720f2))
* **discussionlistitem:** remove unecessary parameter in vue router target ([779812c](https://framagit.org/framasoft/mobilizon/-/commit/779812c746cf722dd86bcc0ad3bc58e558c13223))
* **emails:** make sure group notification emails are only sent once per email ([927e95f](https://framagit.org/framasoft/mobilizon/-/commit/927e95f387653c7d620e9051c30843ba49c2d65c))
* **frontend:** event edition UI improvements ([0e14a36](https://framagit.org/framasoft/mobilizon/-/commit/0e14a36c6d30ebe386b2136d29539f3b3e914efc))
* **frontend:** only show map on event edition when we have an address or we want to put in details ([02867e6](https://framagit.org/framasoft/mobilizon/-/commit/02867e6e1482ac8770f94fd2bd00174bb31fbdc7))
* **front:** fix showing current group avatar & banners ([20b4aaa](https://framagit.org/framasoft/mobilizon/-/commit/20b4aaabc97080e85cb68fd03393379c7ef82d95))
* **front:** fix showing current identity avatar & banners ([d0f4721](https://framagit.org/framasoft/mobilizon/-/commit/d0f4721925d0c50340d6db8a4e9f4d3e4ca01457))
* **front:** improve UI of the glossary page ([d47b69d](https://framagit.org/framasoft/mobilizon/-/commit/d47b69d6caa7c4405ab2e573ba407f9b2450c3bb))
* **front:** increase padding next to arrow down in `<select>` elements ([94f186c](https://framagit.org/framasoft/mobilizon/-/commit/94f186ce5080316cd633e0344651b0050c2f14d4))
* **front:** remove cache-only for ABOUT GraphQL details on homepage ([6858bcb](https://framagit.org/framasoft/mobilizon/-/commit/6858bcbbda6d8527bd15b9138e7bb30c5ead72d7))
* **front:** remove leftover console.logs ([6da0dba](https://framagit.org/framasoft/mobilizon/-/commit/6da0dba0fd6d071ce5978802104538d0c2ef7dae))
* **front:** reset page number to 1 when search criteria changes ([d73bafe](https://framagit.org/framasoft/mobilizon/-/commit/d73bafec97cd7d8eda887d21870427262befab0f)), closes [#1272](https://framagit.org/framasoft/mobilizon/-/issues/1272)
* **front:** various UI improvements for group page ([b097567](https://framagit.org/framasoft/mobilizon/-/commit/b0975672c1c06ace364cf47bfcfa39db9c3b712b))
* **graphql:** fix calling GET_GROUP ([2933ee0](https://framagit.org/framasoft/mobilizon/-/commit/2933ee06791a24dbf8c8b2a2eabc67f71e56f361))
* **group:** rephrase "Public Page" to "Announcements", as all posts are not necessary public ([b0a564f](https://framagit.org/framasoft/mobilizon/-/commit/b0a564f64f72f40b6bb9560f9bc0fbea5d099fd7)), closes [#900](https://framagit.org/framasoft/mobilizon/-/issues/900)
* **i18n:** fix Swedish translations error that prevented Participate button from showing up ([643a5b5](https://framagit.org/framasoft/mobilizon/-/commit/643a5b5921f91fed6a9f674c0ab3a36bf2d05835)), closes [#1281](https://framagit.org/framasoft/mobilizon/-/issues/1281)
* **rich media:** fix error handling when resource preview URL leads to empty parsed data ([850b4e2](https://framagit.org/framasoft/mobilizon/-/commit/850b4e2a735e335c4737caa8b60e190613e778ef)), closes [#1279](https://framagit.org/framasoft/mobilizon/-/issues/1279)
* **sharepostmodal:** only show the share warning message if the post is accessible by link ([8e626dc](https://framagit.org/framasoft/mobilizon/-/commit/8e626dce7807640a89770e50ca2621d34d6a5d97))
* **apps:** fix device flow authorization process ([9a457fb](https://framagit.org/framasoft/mobilizon/-/commit/9a457fb011b77b27dc465f1bc7327a08f554ccfb))
* **apps:** fix typo in redirect_uri parameter ([5664625](https://framagit.org/framasoft/mobilizon/-/commit/5664625c1c57ccba947400475414c1301d4bf955))
* **apps:** show scope from device activation in authorize device view ([c9d2074](https://framagit.org/framasoft/mobilizon/-/commit/c9d20748a4dd3e0687515f4776335d0ec9bdfcdc))
* **front:** fix homepage event and groups cards snapping ([8809db5](https://framagit.org/framasoft/mobilizon/-/commit/8809db582ccf45fcd477f46dcf70e106720626a8))
* **front:** fix selecting addresses in autocomplete ([e0488dd](https://framagit.org/framasoft/mobilizon/-/commit/e0488dd87ffc0184162a2ff67a13717e6263d56d))
* include user role in moderator role ([c4d6019](https://framagit.org/framasoft/mobilizon/-/commit/c4d60194a6900a3f9430355c5fbb346d910e4df6))
## 3.1.0-rc.2 (2023-05-30)
### Bug Fixes
* **apps:** fix device flow authorization process ([9a457fb](https://framagit.org/framasoft/mobilizon/-/commit/9a457fb011b77b27dc465f1bc7327a08f554ccfb))
* **apps:** fix typo in redirect_uri parameter ([5664625](https://framagit.org/framasoft/mobilizon/-/commit/5664625c1c57ccba947400475414c1301d4bf955))
* **apps:** show scope from device activation in authorize device view ([c9d2074](https://framagit.org/framasoft/mobilizon/-/commit/c9d20748a4dd3e0687515f4776335d0ec9bdfcdc))
* **front:** fix homepage event and groups cards snapping ([8809db5](https://framagit.org/framasoft/mobilizon/-/commit/8809db582ccf45fcd477f46dcf70e106720626a8))
* **front:** fix selecting addresses in autocomplete ([e0488dd](https://framagit.org/framasoft/mobilizon/-/commit/e0488dd87ffc0184162a2ff67a13717e6263d56d))
## 3.1.0-rc.1 (2023-05-30)
### Bug Fixes
* **discussionlistitem:** remove unecessary parameter in vue router target ([779812c](https://framagit.org/framasoft/mobilizon/-/commit/779812c746cf722dd86bcc0ad3bc58e558c13223))
* **emails:** make sure group notification emails are only sent once per email ([927e95f](https://framagit.org/framasoft/mobilizon/-/commit/927e95f387653c7d620e9051c30843ba49c2d65c))
* **frontend:** event edition UI improvements ([0e14a36](https://framagit.org/framasoft/mobilizon/-/commit/0e14a36c6d30ebe386b2136d29539f3b3e914efc))
* **frontend:** only show map on event edition when we have an address or we want to put in details ([02867e6](https://framagit.org/framasoft/mobilizon/-/commit/02867e6e1482ac8770f94fd2bd00174bb31fbdc7))
* **front:** fix showing current group avatar & banners ([20b4aaa](https://framagit.org/framasoft/mobilizon/-/commit/20b4aaabc97080e85cb68fd03393379c7ef82d95))
* **front:** fix showing current identity avatar & banners ([d0f4721](https://framagit.org/framasoft/mobilizon/-/commit/d0f4721925d0c50340d6db8a4e9f4d3e4ca01457))
* **front:** improve UI of the glossary page ([d47b69d](https://framagit.org/framasoft/mobilizon/-/commit/d47b69d6caa7c4405ab2e573ba407f9b2450c3bb))
* **front:** increase padding next to arrow down in `<select>` elements ([94f186c](https://framagit.org/framasoft/mobilizon/-/commit/94f186ce5080316cd633e0344651b0050c2f14d4))
* **front:** remove cache-only for ABOUT GraphQL details on homepage ([6858bcb](https://framagit.org/framasoft/mobilizon/-/commit/6858bcbbda6d8527bd15b9138e7bb30c5ead72d7))
* **front:** remove leftover console.logs ([6da0dba](https://framagit.org/framasoft/mobilizon/-/commit/6da0dba0fd6d071ce5978802104538d0c2ef7dae))
* **front:** reset page number to 1 when search criteria changes ([d73bafe](https://framagit.org/framasoft/mobilizon/-/commit/d73bafec97cd7d8eda887d21870427262befab0f)), closes [#1272](https://framagit.org/framasoft/mobilizon/-/issues/1272)
* **front:** various UI improvements for group page ([b097567](https://framagit.org/framasoft/mobilizon/-/commit/b0975672c1c06ace364cf47bfcfa39db9c3b712b))
* **graphql:** fix calling GET_GROUP ([2933ee0](https://framagit.org/framasoft/mobilizon/-/commit/2933ee06791a24dbf8c8b2a2eabc67f71e56f361))
* **group:** rephrase "Public Page" to "Announcements", as all posts are not necessary public ([b0a564f](https://framagit.org/framasoft/mobilizon/-/commit/b0a564f64f72f40b6bb9560f9bc0fbea5d099fd7)), closes [#900](https://framagit.org/framasoft/mobilizon/-/issues/900)
* **i18n:** fix Swedish translations error that prevented Participate button from showing up ([643a5b5](https://framagit.org/framasoft/mobilizon/-/commit/643a5b5921f91fed6a9f674c0ab3a36bf2d05835)), closes [#1281](https://framagit.org/framasoft/mobilizon/-/issues/1281)
* **rich media:** fix error handling when resource preview URL leads to empty parsed data ([850b4e2](https://framagit.org/framasoft/mobilizon/-/commit/850b4e2a735e335c4737caa8b60e190613e778ef)), closes [#1279](https://framagit.org/framasoft/mobilizon/-/issues/1279)
* **sharepostmodal:** only show the share warning message if the post is accessible by link ([8e626dc](https://framagit.org/framasoft/mobilizon/-/commit/8e626dce7807640a89770e50ca2621d34d6a5d97))
### Features
* **front:** improve padding on event tags ([7fa452d](https://framagit.org/framasoft/mobilizon/-/commit/7fa452d9e3f9bb2443e571c9a32eaed51e32480a))
* **front:** make admin profile view linkable directly with parameters ([08ce7e2](https://framagit.org/framasoft/mobilizon/-/commit/08ce7e26b73045279261ab87a14cb4f3dab5df1e))
* **front:** make profile members link to profile on group admin view and the reverse ([96129d2](https://framagit.org/framasoft/mobilizon/-/commit/96129d2339133027220d3b5fcb1c52f84bcc5cbb))
* **front:** make profiles and group admin views default to local ([3e0324d](https://framagit.org/framasoft/mobilizon/-/commit/3e0324d36ec5a8aa388e6b5d598a6f9a0c596797))
* **front:** redirect user to homepage on disconnect when currently on private page ([d5a6df9](https://framagit.org/framasoft/mobilizon/-/commit/d5a6df9940fb458c5dbaee149015c02ebc370c6b)), closes [#1278](https://framagit.org/framasoft/mobilizon/-/issues/1278)
* **front:** show skeleton content on event view until the event is loaded ([dc3b93f](https://framagit.org/framasoft/mobilizon/-/commit/dc3b93ffb5a4b072aec792533fd6e4b58ed7a893))
* **i18n:** activate croatian language ([94182ae](https://framagit.org/framasoft/mobilizon/-/commit/94182aed2d8a22d00534f6376dfda2658bc8ba7e))
* **i18n:** activate japanese language ([6bd8034](https://framagit.org/framasoft/mobilizon/-/commit/6bd8034fe816a432c3547de6d1ad8a18e73dc314)), closes [#1293](https://framagit.org/framasoft/mobilizon/-/issues/1293)
* **post:** show post visibily in PostListItem component ([ec7ca4d](https://framagit.org/framasoft/mobilizon/-/commit/ec7ca4ddf18a38cf6f51d38b540eecc9858f3c98))
## 3.1.0-beta.2 (2023-05-23)
### Bug Fixes
* include user role in moderator role ([c4d6019](https://framagit.org/framasoft/mobilizon/-/commit/c4d60194a6900a3f9430355c5fbb346d910e4df6))
## 3.1.0-beta.1 (2023-05-17)
### Features
* **API:** Allow to create apps, with permissions and both Authorization Code Flow and Device Flow
* **addresses:** Allow to enter manual addresses ([85d643d](https://framagit.org/framasoft/mobilizon/-/commit/85d643d0ecd5e7504f32953b9ed1509697b915e2))
* **docker:** Specify the folder where tzdata downloads data so that it can be used in a volume ([4bb0625](https://framagit.org/framasoft/mobilizon/-/commit/4bb062528f12be530a3754ca23c1bc6dbc862e5a)), closes [#1280](https://framagit.org/framasoft/mobilizon/-/issues/1280)
* **spam:** Introduce checking new accounts, events & comments for spam with the help of Akismet ([317a343](https://framagit.org/framasoft/mobilizon/-/commit/317a3434b221a1a91b66d8443984269404863a8e))
* **rate-limiting:** Introduce rate-limiting on some endpoints ([c07ba3a5](https://framagit.org/framasoft/mobilizon/-/commit/c07ba3a5d19c419ef8aaf3ea9ca6e7f48e4f4487))
### Bug Fixes
* **global-search:** Add option values in debug log before calling global search service ([8141bb0](https://framagit.org/framasoft/mobilizon/-/commit/8141bb0acbc4eb02a917c5bc18712d0d954c4ee5))
* **apps:** Fix cleaning application data background job ([aa20f69](https://framagit.org/framasoft/mobilizon/-/commit/aa20f6991127ddee546fc0b867298c1342dbcb4d))
* **apps:** Show message when the user doesn't have approved apps yet ([e0ee9c1](https://framagit.org/framasoft/mobilizon/-/commit/e0ee9c143b0335753db5dfae19e324781d55bd4e))
* **auth:** Handle logging-in with disabled auth provider ([a22a5e3](https://framagit.org/framasoft/mobilizon/-/commit/a22a5e3cb924869e32cb9ed71dab3e03d91c018f))
* **backend:** Fix Mobilizon.Events.list_participations_for_user_query/1 ([bcf6fd8](https://framagit.org/framasoft/mobilizon/-/commit/bcf6fd893c762c12b63d7e02da43cd5c05db509b))
* **backend:** Handle CLDR data having no standard property for a language ([dbe2da7](https://framagit.org/framasoft/mobilizon/-/commit/dbe2da79c3aa1543b87dce61b5fd90195fb53afe))
* **backend:** Ignore group mentions for now ([b5f106b](https://framagit.org/framasoft/mobilizon/-/commit/b5f106b0a81fefba3203f8ec5855e834a2078222))
* **back:** Improve error message when requesting reset passwords and new instructions ([1c1d0d4](https://framagit.org/framasoft/mobilizon/-/commit/1c1d0d47d70cf19abe5be42e7ec3a73656a8172b))
* **back:** Replace NaiveDateTime uses with DateTime for consistency ([8ea00e7](https://framagit.org/framasoft/mobilizon/-/commit/8ea00e7c1827ce3056ae51968a62fb3dc03ac6eb))
* **back:** Various small fixes in backend ([2a57340](https://framagit.org/framasoft/mobilizon/-/commit/2a57340a82e414e69924ad89e8db9fc326742cc7))
* bind pagination current prop ([4bcf572](https://framagit.org/framasoft/mobilizon/-/commit/4bcf572c54d904587d0409e2eb68b4ca6cf48fec))
* **federation:** Account suspension should use actor in question as author and not relay actor ([79b48da](https://framagit.org/framasoft/mobilizon/-/commit/79b48da22209a8b2f1b234b8b8e121543a39b22b))
* **feeds:** Only provide future events in ICS/Atom feeds ([f3a4431](https://framagit.org/framasoft/mobilizon/-/commit/f3a443138a0e1e6cf34fc593f5c174d56c21e904)), closes [#1246](https://framagit.org/framasoft/mobilizon/-/issues/1246)
* Fix type of variable in navbar ([50ab531](https://framagit.org/framasoft/mobilizon/-/commit/50ab531156214f883cb03f785ccf65e3f19ef50e))
* **follow-instances:** Show correct error message when trying to follow already following actor ([d969c66](https://framagit.org/framasoft/mobilizon/-/commit/d969c6648f15e1ed280169a4c55d612bb002f03f))
* **front:** Fix about sections titles ([487f406](https://framagit.org/framasoft/mobilizon/-/commit/487f4069b14fde6304c9a42cec5b1c1af79814c5))
* **front:** Fix autocomplete attribute in o-inputitems after Oruga new version BC ([d2ba732](https://framagit.org/framasoft/mobilizon/-/commit/d2ba732b8b51986b739f6fbe3d74fa68e4b74ba0))
* **front:** Fix behaviour when deleting an event from event list ([cfd10ea](https://framagit.org/framasoft/mobilizon/-/commit/cfd10ea96078f03ad3b4f5682e37078ffae16ee4))
* **front:** Fix event list month order ([63c9ed6](https://framagit.org/framasoft/mobilizon/-/commit/63c9ed62de94d6d150798c949bad3d8a2dd4db23)), closes [#1244](https://framagit.org/framasoft/mobilizon/-/issues/1244)
* **front:** Fix instances list pagination ([8543204](https://framagit.org/framasoft/mobilizon/-/commit/8543204bd95de886d8d35bd491f23ecbc0a6ef8d)), closes [#1277](https://framagit.org/framasoft/mobilizon/-/issues/1277)
* **front:** Fix pagination display on dark mode ([4375438](https://framagit.org/framasoft/mobilizon/-/commit/4375438dc9fd2f1c5c9d7ed6670dde04f2da520f))
* **front:** Fix style of My Events participations ([35b07dc](https://framagit.org/framasoft/mobilizon/-/commit/35b07dceaa41c74c28ea49655b755e341f56df32))
* **front:** Focus report comment input in report modal ([2c28312](https://framagit.org/framasoft/mobilizon/-/commit/2c28312fc957901b86c2f3d1db8fc3376f505d37)), closes [#1236](https://framagit.org/framasoft/mobilizon/-/issues/1236)
* **front:** Handle "Failed to fetch dynamically imported module" errors by refreshing the page ([3d21a06](https://framagit.org/framasoft/mobilizon/-/commit/3d21a067897e4aa24f6404686ca6896044584796))
* **front:** Improve Delete account modal UI ([c420bbc](https://framagit.org/framasoft/mobilizon/-/commit/c420bbccc9bd1c348e41904e826dc49c71d7eeb4))
* **front:** Improve resend inscription instructions view and show error when appropriate ([5563052](https://framagit.org/framasoft/mobilizon/-/commit/55630527957d4f6a2e1e6845e64a92bc4794efc8))
* **front:** No cache-only for config ([8dcb76c](https://framagit.org/framasoft/mobilizon/-/commit/8dcb76c30d4fa835837fd3b3833f83682fbae615))
* **front:** Small UI fixes on identity pickers ([6faafd6](https://framagit.org/framasoft/mobilizon/-/commit/6faafd639303e4b57ed81db2ffb5db4ad598b904))
* **i18n:** Update translations ([3b7dbcd](https://framagit.org/framasoft/mobilizon/-/commit/3b7dbcd71f0d19d5e723a03c56ca0b1abbd16f5d))
* **map:** Fix style of the map marker ([c7b90cd](https://framagit.org/framasoft/mobilizon/-/commit/c7b90cd60a14abea7aebab7e1d87f37a44371f7c))
* **map:** Only show map details when needed ([23b5e59](https://framagit.org/framasoft/mobilizon/-/commit/23b5e5930cb9bdb57b1d7fa3ec899d7e4d3571be))
* **map:** Only show marker if we have it's position ([f0cc5ff](https://framagit.org/framasoft/mobilizon/-/commit/f0cc5ffb8feb2f4d70416792a8ab2f4f44bfba85))
* **password-reset:** Lower time before being available to reset password or resend instructions ([73eb460](https://framagit.org/framasoft/mobilizon/-/commit/73eb4603b185c341b63481ed934f66e19aa0784f))
* **search:** Fix event search order ([a4e7ee3](https://framagit.org/framasoft/mobilizon/-/commit/a4e7ee37bedc63b2193a401c801b3b1298f566d2))
* **typespec:** Fix missing return type in typespec ([2043c98](https://framagit.org/framasoft/mobilizon/-/commit/2043c98717e8621b3953d347be0b4a35f494af98))
* Change the way preferredUsername is synced ([a73e5a08](https://framagit.org/framasoft/mobilizon/-/commit/a73e5a085ef48a88dbb8f9c407df0430ca89fe1f))
* datetimepicker: change colors for day & time selectors on dark mode ([b18e8fd3](https://framagit.org/framasoft/mobilizon/-/commit/b18e8fd37c76190ca7f6db82e408cdb005d1810a))
* Save IP and login date from directly registered accounts ([1db5c4ae](https://framagit.org/framasoft/mobilizon/-/commit/1db5c4ae2d49d5adbda2c0825ee0320322b525d6))
* Make sure every cache is properly cleared when managing an event ([f531c39b](https://framagit.org/framasoft/mobilizon/-/commit/f531c39b7e8829a5e3ff68f624b04e12266f2148))
* Add page title for Categories view ([0775814e](https://framagit.org/framasoft/mobilizon/-/commit/0775814e19e6f6ddde564f7a29ae80fab2175d3f))
* Fix notifications settings not working ([31fd99bd](https://framagit.org/framasoft/mobilizon/-/commit/31fd99bd3760872e452351b33765d25b2b9720f2))
## 3.0.3 - 2022-12-22
### Fixed
- Add missing OpenSSL 1.1 in Docker image
## 3.0.2 - 2022-12-22
### Fixed
- Fix unfollowing group
- Limit the size of the IP(v6) field in the user admin view
- Fix terms and privacy view
- Use the correct value of current locale
- Fix editing group events as a group moderator
- Consider timezone for start time also when end date is hidden
- Fix loading group members in organizer picker
- Fix changing email & password
- Add missing icon
- Fix instances filter
- Fix logging from 3rd-party auth provider
## 3.0.1 - 2022-11-22
### Fixed
- Compatibility with Python 3.11 for exports that reply on Python code.
- Formatting of fallback locales
- Allow to specify database port for Docker configuration
- Assets in production environment
- Changing event uuid didn't change event data
- Make sure maximumAttendeeCapacity is a number, not a string
- Prevent AP collection page number being < 1
- Fix approving/rejecting group members and followers
- Fix 3rd-party auth links
- Test Intl.ListFormat availability and add fallback
- Set correct Content-Type on all AP endpoints
- Don't notify group members & followers from new draft event
- Register missing ExitToApp icon
- Fix comment display
## 3.0.0 - 2022-11-08
### Added
- Add global search support, allowing to use https://search.joinmobilizon.org as a centralized event and group database
- Add ability to filter search by categories and language
- Add ability to explore search results on a map view
- Add dark theme support and setting to toggle light/dark mode
- Add categories view
- Allow to disable non-SSO login
- Support CSP report_uri, report_to and the Report-To and Reporting-Endpoints headers
- Support for Elixir 1.14 and Erlang OTP 25.
### Changed
- Homepage has been redesigned
- Search view has been redesigned
- Internal illustration pictures are now only served using WebP.
- Improved the pertinence of related events
- Light front-end performance improvements
- Various UI and A11Y fixes on the event page
- Handle categories page being empty
- UI improvements of comments
- UI improvements of reports
- Various UI improvement in event and group view
- Add breadcrumb trail on Post view
- Always lowercase the emails before trying to reset password
- Make text editor heading level start at h3, h4, h5
- Remove obscure reference to Douglas Adams
- Don't inline phoenix manifest
- Show a proper error message when failure to register to an event
- Order categories by translated label
- Show registration button also if registration allow list is used
- Add logging for when cached iCalendar feed data can't be found
- Add an error log when we try to update the relay actor
- Lower loglevel of error when creating a new person
- Add unique constraint on event URL
- Allow to view more than 10 drafts events on my events view
- Add CSP Policy for pictures
- Don't treat notification for a deleted event as an error
- Truncate resource description preview after 350 characters
- Lower loglevel of resource insertion error
- Resources and discussions views improvements
- Add context to error when removing an upload file following actor suspension
- Allow for resource providers to register a csp policy
- Add loading="lazy" to some images, except categories in viewport
- Add GraphQL operation name, user ID and actor name in logs
- Add empty alt attribute to uploaded pictures (for now)
- Allow release build failures in CI for all non-amd64 architectures
- Increase timeout needed to build page
- Handle nothing found by unsplash for location
### Fixed
- Fixed deleting actor when participations association is not preloaded
- Fixed rendering JSON-LD for an event with a single address (no online location)
- Address selector
- Group location edition
- Reconfigure plug at runtime with env
- Fix global search term
- Fix custom icons in metadata list
- Handle unknown icon
- Only preload svg pictures on homepage
- Don't add empty search parameters to global search engine
- Fix getting categories from global search engine
- Remove unused deps
- Only show one pagination bar when searching in both events & groups
- Run build multiarch release on tags too
- Don't start mobilizon server when running migrations
- Run phx.digest before mix release
- Fix event card background color behind picture
- Fix position of the « no events found » message
- Add distinct clause to search events
- Fix showing past events on group page
- Fix display of group invitations
- Fix leaving a group
- Fix group events order
- Prevent loading group membership status before we get person information
- Prefix setInterval with window
- Fix fetching events with addresses that's not objects
- Fix dashboard view
- Fix anonymous & remote participation pages
- Fix anonymous/remote participation button
- Do not list drafts in upcoming / old events event if instance moderator
- Make sure group is refreshed after action
- Fix deleting person detached from user
- Fix pagination number text color in dark theme
- Fix post sharing URL
- Fix current format status of text not displayed in text editor
- Fix moving resources
- Fix multiselect of resources
- Properly handle un-needed background jobs
- Properly handle replying to an event that has been deleted
- Propertly handle other errors when receiving a comment
- Fix event integrations
- Prevent loading authorized groups when current actor isn't loading in OrganizerPickerWrapper
- Fix building CSP policy
- Fix event map view
- Various front-end fixes
- Handle error when fetching object from tombstone
- Fixed upcoming event groups display on homepage view
- Fixed Ecto Dev warning on compilation
- Adapt white parts in Mobilizon logo to current color
- Register missing BellOutline and BellOffOutline icons
- Don't load group status when unlogged
- Fix order of useHead registration on JoinGroupWithAccount view
- Fix profile@instance translation
- Handle :http_not_found as an error when deleting an object
- Handle suspending actors with special type
- Add fallback handler for can_send_activity?
- Properly log if we can't notify group follower
### Security
- Correctly escape user-defined names in emails
### Internal
- Build on Elixir 1.14.1 and Erlang OTP 25.
- Migrate from Vue 2 and Vue Class Component to Vue 3 and the Composition API
- Migrate from Bulma and Buefy to TailwindCSS and Oruga
### Tests
#### Unit Tests
- Rewrote tests using Vitest
#### E2E Tests
- Renabled E2E tests
- Rewrote tests from Cypress to Playwright
## 3.0.0-rc.6 - 2022-11-07
### Fixed
- Fixed upcoming event groups display on homepage view
- Fixed Ecto Dev warning on compilation
## 3.0.0-rc.5 - 2022-11-06
### Changed
- Allow release build failures in CI for all non-amd64 architectures
## 3.0.0-rc.4 - 2022-11-06
### Changed
- Add loading="lazy" to some images, except categories in viewport
- Add GraphQL operation name, user ID and actor name in logs
- Add empty alt attribute to uploaded pictures (for now)
### Fixed
- Fix building CSP policy
- Fix event map view
- Various front-end fixes
- Handle error when fetching object from tombstone
## 3.0.0-rc.3 - 2022-11-04
### Added
- Support CSP report_uri, report_to and the Report-To and Reporting-Endpoints headers
### Changed
- Add CSP Policy for pictures
- Don't treat notification for a deleted event as an error
- Truncate resource description preview after 350 characters
- Lower loglevel of resource insertion error
- Resources and discussions views improvements
- Add context to error when removing an upload file following actor suspension
- Allow for resource providers to register a csp policy
### Fixed
- Fix moving resources
- Fix multiselect of resources
- Properly handle un-needed background jobs
- Properly handle replying to an event that has been deleted
- Propertly handle other errors when receiving a comment
- Fix event integrations
- Prevent loading authorized groups when current actor isn't loading in OrganizerPickerWrapper
## 3.0.0-rc.2 - 2022-11-02
### Added
- Add setting to toggle light/dark mode
- Allow to disable non-SSO login
### Changed
- UI improvements of comments
- UI improvements of reports
- Various UI improvement in event and group view
- Add breadcrumb trail on Post view
- Always lowercase the emails before trying to reset password
- Make text editor heading level start at h3, h4, h5
- Remove obscure reference to Douglas Adams
- Don't inline phoenix manifest
- Show a proper error message when failure to register to an event
- Order categories by translated label
- Show registration button also if registration allow list is used
- Add logging for when cached iCalendar feed data can't be found
- Add an error log when we try to update the relay actor
- Lower loglevel of error when creating a new person
- Add unique constraint on event URL
- Allow to view more than 10 drafts events on my events view
### Fixed
- Fix event card background color behind picture
- Fix position of the « no events found » message
- Add distinct clause to search events
- Fix showing past events on group page
- Fix display of group invitations
- Fix leaving a group
- Fix group events order
- Prevent loading group membership status before we get person information
- Prefix setInterval with window
- Fix fetching events with addresses that's not objects
- Fix dashboard view
- Fix anonymous & remote participation pages
- Fix anonymous/remote participation button
- Do not list drafts in upcoming / old events event if instance moderator
- Make sure group is refreshed after action
- Fix deleting person detached from user
- Fix pagination number text color in dark theme
- Fix post sharing URL
- Fix current format status of text not displayed in text editor
### Security
- Correctly escape user-defined names in emails
## 3.0.0-rc.1 - 2022-10-18
No changes since beta.3
## 3.0.0-beta.3 - 2022-10-17
### Fixed
- Don't add empty search parameters to global search engine
- Fix getting categories from global search engine
- Remove unused deps
- Only show one pagination bar when searching in both events & groups
- Run build multiarch release on tags too
- Don't start mobilizon server when running migrations
- Run phx.digest before mix release
## 3.0.0-beta.2 - 2022-10-11
### Changed
- Improved the pertinence of related events
- Light front-end performance improvements
- Various UI and A11Y fixes on the event page
- Handle categories page being empty
### Fixed
- Address selector
- Group location edition
- Reconfigure plug at runtime with env
- Fix global search term
- Fix custom icons in metadata list
- Handle unknown icon
- Only preload svg pictures on homepage
## 3.0.0-beta.1 - 2022-09-27
### Added
- Add global search support, allowing to use https://search.joinmobilizon.org as a centralized event and group database
- Add ability to filter search by categories and language
- Add ability to explore search results on a map view
- Add dark theme support
- Add categories view
- Support for Elixir 1.14 and Erlang OTP 25.
### Changed
- Homepage has been redesigned
- Search view has been redesigned
- Internal illustration pictures are now only served using WebP.
### Fixed
- Fixed deleting actor when participations association is not preloaded
- Fixed rendering JSON-LD for an event with a single address (no online location)
### Internal
- Build on Elixir 1.14 and Erlang OTP 25.
- Migrate from Vue 2 and Vue Class Component to Vue 3 and the Composition API
- Migrate from Bulma and Buefy to TailwindCSS and Oruga
### Tests
#### Unit Tests
- Rewrote tests using Vitest
#### E2E Tests
- Renabled E2E tests
- Rewrote tests from Cypress to Playwright
## 2.1.0 - 2022-05-16
### Added
@ -19,7 +985,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Changed mailer library from Bamboo to Swoosh, should fix emails being considered spam. **Some configuration changes are required, see below.**
- Changed mailer library from Bamboo to Swoosh, should fix emails being considered spam. **Some configuration changes are required, see [UPGRADE.md](https://framagit.org/framasoft/mobilizon/-/blob/main/UPGRADE.md).**
- Expose some fields to ActivityStreams event representation: `isOnline`, `remainingAttendeeCapacity` and `participantCount`
- Expose a new field to ActivityStreams group representation: `memberCount`
- Improve group creation errors feedback
@ -41,7 +1007,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Update schema.graphql file
- Add "Accept-Language" header to sentry request metadata
- Hide address blocks when address has no real data
- Remove obsolete attribute type="text/css" from <style> tags
- Remove obsolete attribute `type="text/css"` from `<style>` tags
- Improve actor cards integration
- Use upstream dependencies for Ueberauth providers
- Include ongoing events in search
@ -81,7 +1047,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix text overflow on group card description
- Exclude tags with more than 40 characters from being extracted
- Avoid duplicate tags with different casing
- Fix invalid HTML (<div> inside <label>)
- Fix invalid HTML (`<div>` inside `<label>`)
- Fix latest group not refreshing in admin section
- Add missing "relay@" part of federated address to follow
- Fix Ueberauth use of CSRF with session

View file

@ -1,9 +1,10 @@
FROM elixir:1.13.4-alpine
FROM elixir:1.15-alpine
RUN apk add --no-cache inotify-tools postgresql-client yarn file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3
RUN apk add --no-cache inotify-tools postgresql-client file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3 npm
RUN mix local.hex --force && mix local.rebar --force
WORKDIR /app
EXPOSE 4000
EXPOSE 5173

View file

@ -4,24 +4,25 @@ init:
setup: stop
@bash docker/message.sh "Compiling everything"
docker-compose run --rm api bash -c 'mix deps.get; yarn --cwd "js"; yarn --cwd "js" build:pictures; mix ecto.create; mix ecto.migrate'
docker compose run --rm api bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate'
migrate:
docker-compose run --rm api mix ecto.migrate
docker compose run --rm api mix ecto.migrate
logs:
docker-compose logs -f
docker compose logs -f
start: stop
@bash docker/message.sh "Starting Mobilizon with Docker"
docker-compose up -d api
docker compose up -d api
@bash docker/message.sh "Docker server started"
stop:
@bash docker/message.sh "Stopping Mobilizon"
docker-compose down
docker compose down
@bash docker/message.sh "Mobilizon is stopped"
test: stop
@bash docker/message.sh "Running tests"
docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix test $(only)
docker compose -f docker compose.yml -f docker compose.test.yml run api mix prepare_test
docker compose -f docker compose.yml -f docker compose.test.yml run api mix test $(only)
@bash docker/message.sh "Done running tests"
format:
docker-compose run --rm api bash -c "mix format && mix credo --strict"
docker compose run --rm api bash -c "mix format && mix credo --strict"
@bash docker/message.sh "Code is now ready to commit :)"
target: init

View file

@ -1,3 +1,5 @@
*You can learn about [what we plan to do with this fork](https://framacolibri.org/t/using-mobilizon-for-regional-leftist-subculture-calendar-platforms/18772) in this post in the Mobilizon forum.*
<h1 align="center">
<a href="https://joinmobilizon.org">
<img src="https://lutim.cpy.re/qVYC86G9.png" alt="Mobilizon">
@ -16,6 +18,20 @@ Mobilizon is your federated organization and mobilization platform. Gather peopl
</a>
</p>
## Notes about this fork
The currently deployed `main` branch can be tested at [https://rotes.potsda.mn/](https://rotes.potsda.mn/).
### Building with Nix
For building this locally, you can use Nix (with Flakes enabled):
```
$ nix build git+ssh://git@git.potsda.mn/potsda.mn/mobilizon.git?ref=main#mobilizon
```
The built package is then located in `result/`.
## Introduction
Mobilizon is a tool designed to create platforms for managing communities and events. Its purpose is to help as many people as possible to free themselves from Facebook groups and events, from Meetup, etc.
@ -41,7 +57,7 @@ There's no lock-in, you can interact with the event without registration.
## Contributing
We appreciate any contribution to Mobilizon. Check our [CONTRIBUTING](CONTRIBUTING.md) file for more information.
We appreciate any contribution to Mobilizon. Check [our contributing page](https://docs.joinmobilizon.org/contribute/) for more information.
## Links
@ -50,6 +66,7 @@ We appreciate any contribution to Mobilizon. Check our [CONTRIBUTING](CONTRIBUTI
* 🔢 Pick an instance [https://mobilizon.org](https://mobilizon.org)
* 💻 Source: [https://framagit.org/framasoft/mobilizon](https://framagit.org/framasoft/mobilizon)
* 📜 Documentation [https://docs.joinmobilizon.org](https://docs.joinmobilizon.org)
* A summarized description of structure of sources is done in [`docs/dev.md`](./docs/dev.md)
### Discuss
* 💬 Element/Matrix: [https://matrix.to/#/#Mobilizon:matrix.org](https://matrix.to/#/#Mobilizon:matrix.org)

View file

@ -7,6 +7,6 @@ module.exports = {
localSchemaFile: "./schema.graphql",
},
// Files processed by the extension
includes: ["js/src/**/*.vue", "js/src/**/*.js"],
includes: ["src/**/*.vue", "src/**/*.js"],
},
};

View file

@ -19,6 +19,7 @@ config :mobilizon, :instance,
registrations_open: false,
registration_email_allowlist: [],
registration_email_denylist: [],
disable_database_login: false,
languages: [],
default_language: "en",
demo: false,
@ -40,7 +41,10 @@ config :mobilizon, :instance,
email_reply_to: "noreply@localhost"
config :mobilizon, :groups, enabled: true
config :mobilizon, :events, creation: true
config :mobilizon, :events,
creation: true,
external: true
config :mobilizon, :restrictions, only_admin_can_create_groups: false
config :mobilizon, :restrictions, only_groups_can_create_events: false
@ -54,7 +58,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
secret_key_base: "1yOazsoE0Wqu4kXk3uC5gu3jDbShOimTCzyFL3OjCdBmOXMyHX87Qmf3+Tu9s0iM",
render_errors: [view: Mobilizon.Web.ErrorView, accepts: ~w(html json)],
pubsub_server: Mobilizon.PubSub,
cache_static_manifest: "priv/static/manifest.json",
cache_static_manifest: "priv/static/cache_manifest.json",
has_reverse_proxy: true
config :mime, :types, %{
@ -64,6 +68,10 @@ config :mime, :types, %{
"application/xrd+xml" => ["xrd-xml"]
}
config :mime, :extensions, %{
"activity-json" => "application/activity+json"
}
# Upload configuration
config :mobilizon, Mobilizon.Web.Upload,
uploader: Mobilizon.Web.Upload.Uploader.Local,
@ -108,30 +116,33 @@ config :mobilizon, :media_proxy,
config :mobilizon, Mobilizon.Web.Email.Mailer,
adapter: Swoosh.Adapters.SMTP,
relay: "localhost",
# usually 25, 465 or 587
port: 25,
username: "",
password: "",
# can be `:always` or `:never`
auth: :if_available,
# can be `true`
ssl: false,
# ssl: false,
# can be `:always` or `:never`
tls: :if_available,
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
tls: :never,
retries: 1,
# can be `true`
no_mx_lookups: false
config :vite_phx,
release_app: :mobilizon,
# to tell prod and dev env appart
environment: config_env(),
# this manifest is different from the Phoenix "cache_manifest.json"!
# optional
vite_manifest: "priv/static/manifest.json",
# optional
dev_server_address: "http://localhost:5173"
# Configures Elixir's Logger
config :logger, :console,
backends: [:console],
format: "$time $metadata[$level] $message\n",
metadata: [:request_id]
config :logger, Sentry.LoggerBackend,
level: :warn,
capture_log_messages: true
metadata: [:request_id, :graphql_operation_name, :user_id, :actor_name, :trace]
config :mobilizon, Mobilizon.Web.Auth.Guardian,
issuer: "mobilizon",
@ -141,13 +152,12 @@ config :mobilizon, Mobilizon.Web.Auth.Guardian,
}
config :guardian, Guardian.DB,
adapter: Guardian.DB.EctoAdapter,
repo: Mobilizon.Storage.Repo,
# default
schema_name: "guardian_tokens",
# store all token types if not set
token_types: ["refresh"],
# default: 60 minutes
sweep_interval: 60
token_types: ["refresh"]
config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase
@ -300,16 +310,24 @@ config :mobilizon, Oban,
crontab: [
{"@hourly", Mobilizon.Service.Workers.BuildSiteMap, queue: :background},
{"17 4 * * *", Mobilizon.Service.Workers.RefreshGroups, queue: :background},
{"36 * * * *", Mobilizon.Service.Workers.RefreshInstances, queue: :background},
{"36 3 * * *", Mobilizon.Service.Workers.RefreshInstances, queue: :background},
{"@hourly", Mobilizon.Service.Workers.CleanOrphanMediaWorker, queue: :background},
{"@hourly", Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker, queue: :background},
{"@hourly", Mobilizon.Service.Workers.ExportCleanerWorker, queue: :background},
{"@hourly", Mobilizon.Service.Workers.SendActivityRecapWorker, queue: :notifications},
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background}
{"@daily", Mobilizon.Service.Workers.CleanOldActivityWorker, queue: :background},
{"@daily", Mobilizon.Service.Workers.RefreshParticipantStats, queue: :background},
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
queue: :background, args: %{type: :application_token}},
{"@hourly", Mobilizon.Service.Workers.CleanApplicationData,
queue: :background, args: %{type: :application_device_activation}}
]},
{Oban.Plugins.Pruner, max_age: 300}
]
config :hammer,
backend: {Hammer.Backend.ETS, [expiry_ms: 60_000 * 60 * 4, cleanup_interval_ms: 60_000 * 10]}
config :mobilizon, :rich_media,
parsers: [
Mobilizon.Service.RichMedia.Parsers.OEmbed,
@ -347,6 +365,27 @@ config :mobilizon, :exports,
config :mobilizon, :analytics, providers: []
config :mobilizon, Mobilizon.Service.Pictures, service: Mobilizon.Service.Pictures.Unsplash
config :mobilizon, Mobilizon.Service.Pictures.Unsplash,
app_name: "Mobilizon",
access_key: nil
config :mobilizon, :search, global: [is_default_search: false, is_enabled: true]
config :mobilizon, Mobilizon.Service.GlobalSearch,
service: Mobilizon.Service.GlobalSearch.SearchMobilizon
config :mobilizon, Mobilizon.Service.GlobalSearch.SearchMobilizon,
endpoint: "https://search.joinmobilizon.org",
csp_policy: [
img_src: ["search.joinmobilizon.org"]
]
config :mobilizon, Mobilizon.Service.AntiSpam, service: Mobilizon.Service.AntiSpam.Akismet
config :mobilizon, Mobilizon.Service.SiteMap, path: "/var/lib/mobilizon/sitemap"
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{config_env()}.exs"

View file

@ -15,14 +15,9 @@ config :mobilizon, Mobilizon.Web.Endpoint,
check_origin: false,
watchers: [
node: [
"node_modules/webpack/bin/webpack.js",
"--mode",
"development",
"--watch",
"--watch-options-stdin",
"--config",
"node_modules/@vue/cli-service/webpack.config.js",
cd: Path.expand("../js", __DIR__)
"node_modules/.bin/vite",
"--host",
System.get_env("VITE_HOST", "localhost")
]
]
@ -54,7 +49,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
]
# Do not include metadata nor timestamps in development logs
config :logger, :console, format: "[$level] $message\n", level: :debug
config :logger, :console, format: "$metadata[$level] $message\n", level: :debug
config :mobilizon, Mobilizon.Service.Geospatial, service: Mobilizon.Service.Geospatial.Nominatim
@ -77,7 +72,9 @@ config :mobilizon, Mobilizon.Storage.Repo,
hostname: System.get_env("MOBILIZON_DATABASE_HOST", "localhost"),
port: System.get_env("MOBILIZON_DATABASE_PORT", "5432"),
pool_size: 10,
show_sensitive_data_on_connection_error: true
show_sensitive_data_on_connection_error: true,
# Logging is handled by Ecto.DevLogger
log: false
config :mobilizon, :instance,
name: System.get_env("MOBILIZON_INSTANCE_NAME", "Mobilizon"),
@ -96,9 +93,14 @@ config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "uploads"
config :mobilizon, :exports, path: "uploads/exports"
config :mobilizon, Mobilizon.Service.SiteMap,
path: System.get_env("MOBILIZON_SITEMAP_PATH", "priv/static")
config :tz_world, data_dir: "_build/dev/lib/tz_world/priv"
config :mobilizon, :anonymous,
reports: [
allowed: true
]
config :unplug, :init_mode, :runtime

View file

@ -2,6 +2,28 @@
import Config
{:ok, _} = Application.ensure_all_started(:tls_certificate_check)
loglevels = [
:emergency,
:alert,
:critical,
:error,
:warning,
:notice,
:info,
:debug
]
loglevel_env = System.get_env("MOBILIZON_LOGLEVEL", "error")
loglevel =
if loglevel_env in Enum.map(loglevels, &to_string/1) do
String.to_existing_atom(loglevel_env)
else
:error
end
listen_ip = System.get_env("MOBILIZON_INSTANCE_LISTEN_IP", "0.0.0.0")
listen_ip =
@ -39,17 +61,21 @@ config :mobilizon, Mobilizon.Storage.Repo,
password: System.get_env("MOBILIZON_DATABASE_PASSWORD", "password"),
database: System.get_env("MOBILIZON_DATABASE_DBNAME", "mobilizon"),
hostname: System.get_env("MOBILIZON_DATABASE_HOST", "postgres"),
port: 5432,
port: System.get_env("MOBILIZON_DATABASE_PORT", "5432"),
ssl: System.get_env("MOBILIZON_DATABASE_SSL", "false") == "true",
pool_size: 10
config :logger, level: loglevel
config :mobilizon, Mobilizon.Web.Email.Mailer,
adapter: Swoosh.Adapters.SMTP,
relay: System.get_env("MOBILIZON_SMTP_SERVER", "localhost"),
port: System.get_env("MOBILIZON_SMTP_PORT", "25"),
username: System.get_env("MOBILIZON_SMTP_USERNAME", nil),
password: System.get_env("MOBILIZON_SMTP_PASSWORD", nil),
tls: :if_available,
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
tls: System.get_env("MOBILIZON_SMTP_TLS", "if_available"),
tls_options:
:tls_certificate_check.options(System.get_env("MOBILIZON_SMTP_SERVER", "localhost")),
ssl: System.get_env("MOBILIZON_SMTP_SSL", "false"),
retries: 1,
no_mx_lookups: false,
@ -77,3 +103,10 @@ config :mobilizon, :exports,
config :tz_world,
data_dir: System.get_env("MOBILIZON_TIMEZONES_DIR", "/var/lib/mobilizon/timezones")
config :tzdata, :data_dir, System.get_env("MOBILIZON_TZDATA_DIR", "/var/lib/mobilizon/tzdata")
config :web_push_encryption, :vapid_details,
subject: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_SUBJECT", nil),
public_key: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_PUBLIC_KEY", nil),
private_key: System.get_env("MOBILIZON_WEB_PUSH_ENCRYPTION_PRIVATE_KEY", nil)

View file

@ -16,22 +16,44 @@ config :mobilizon, Mobilizon.Web.Endpoint,
check_origin: false,
# Somehow this can't be merged properly with the dev config so we got this…
watchers: [
yarn: [cd: Path.expand("../js", __DIR__)]
node: [
"node_modules/.bin/vite"
]
]
require Logger
config :vite_phx,
release_app: :mobilizon,
# Hard code :prod as an environment as :e2e will not be recongnized
environment: :prod,
vite_manifest: "priv/static/manifest.json",
phx_manifest: "priv/static/cache_manifest.json",
dev_server_address: "http://localhost:5173"
cond do
System.get_env("INSTANCE_CONFIG") &&
File.exists?("./config/#{System.get_env("INSTANCE_CONFIG")}") ->
import_config System.get_env("INSTANCE_CONFIG")
config :mobilizon, :instance,
name: "E2E Testing instance",
description: "E2E is safety",
hostname: "mobilizon1.com",
registrations_open: true,
registration_email_denylist: ["gmail.com", "deny@tcit.fr"],
demo: false,
default_language: "en",
allow_relay: true,
federating: true,
email_from: "mobilizon@mobilizon1.com",
email_reply_to: nil,
enable_instance_feeds: true,
koena_connect_link: true,
extra_categories: [
%{
id: :something_else,
label: "Quelque chose d'autre"
}
]
System.get_env("DOCKER", "false") == "false" && File.exists?("./config/e2e.secret.exs") ->
import_config "e2e.secret.exs"
System.get_env("DOCKER", "false") == "true" ->
Logger.info("Using environment configuration for Docker")
true ->
Logger.error("No configuration file found")
end
config :mobilizon, Mobilizon.Storage.Repo,
adapter: Ecto.Adapters.Postgres,
username: System.get_env("MOBILIZON_DATABASE_USERNAME", "mobilizon_e2e"),
password: System.get_env("MOBILIZON_DATABASE_PASSWORD", "mobilizon_e2e"),
database: System.get_env("MOBILIZON_DATABASE_DBNAME", "mobilizon_e2e"),
hostname: System.get_env("MOBILIZON_DATABASE_HOST", "localhost"),
port: System.get_env("MOBILIZON_DATABASE_PORT") || "5432"

View file

@ -30,6 +30,7 @@ config :mobilizon, :cldr,
"fr",
"gd",
"gl",
"hr",
"hu",
"id",
"it",

View file

@ -54,6 +54,11 @@ config :mobilizon, :ldap,
bind_uid: System.get_env("LDAP_BIND_UID"),
bind_password: System.get_env("LDAP_BIND_PASSWORD")
# Faster runs in test environment
config :argon2_elixir,
t_cost: 1,
m_cost: 8
config :mobilizon, Mobilizon.Web.Email.Mailer, adapter: Swoosh.Adapters.Test
config :mobilizon, Mobilizon.Web.Upload, filters: [], link_name: false
@ -62,6 +67,9 @@ config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "test/uploads"
config :mobilizon, :exports, path: "test/uploads/exports"
config :mobilizon, Mobilizon.Service.SiteMap,
path: System.get_env("MOBILIZON_SITEMAP_PATH", "test/sitemap")
config :tz_world, data_dir: "_build/test/lib/tz_world/priv"
config :tesla, Mobilizon.Service.HTTP.ActivityPub,
@ -78,7 +86,7 @@ config :tesla, Mobilizon.Service.HTTP.HostMetaClient,
config :mobilizon, Mobilizon.Service.Geospatial, service: Mobilizon.Service.Geospatial.Mock
config :mobilizon, Oban, queues: false, plugins: false
config :mobilizon, Oban, testing: :manual
config :mobilizon, Mobilizon.Web.Auth.Guardian, secret_key: "some secret"
@ -88,6 +96,10 @@ config :mobilizon, Mobilizon.Web.Gettext, allowed_locales: ["fr", "en", "es", "r
config :junit_formatter, report_dir: "."
config :mobilizon, :http_security, report_uri: "https://endpoint.com"
config :mobilizon, Mobilizon.Service.AntiSpam, service: Mobilizon.Service.AntiSpam.Mock
if System.get_env("DOCKER", "false") == "false" && File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs"
end

139
default.nix Normal file
View file

@ -0,0 +1,139 @@
{ lib
, beamPackages
, fetchFromGitHub
, git
, cmake
, nixosTests
, src
, src-config
, mobilizon-js
}:
let
inherit (beamPackages) mixRelease buildMix;
in
mixRelease rec {
pname = "mobilizon";
version = "4.0.2";
inherit src;
# See https://github.com/whitfin/cachex/issues/205
# This circumvents a startup error for now
stripDebug = false;
nativeBuildInputs = [ git cmake ];
mixNixDeps = import ./mix.nix {
inherit beamPackages lib;
overrides = (final: prev:
(lib.mapAttrs
(_: value: value.override {
appConfigPath = src-config;
})
prev) // {
fast_html = prev.fast_html.override {
nativeBuildInputs = [ cmake ];
};
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
# We have to use the GitHub sources, as it otherwise tries to download
# the locales at build time.
src = fetchFromGitHub {
owner = "elixir-cldr";
repo = "cldr";
rev = "v${old.version}";
sha256 = assert old.version == "2.37.5";
"sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
};
postInstall = ''
cp $src/priv/cldr/locales/* $out/lib/erlang/lib/ex_cldr-${old.version}/priv/cldr/locales/
'';
});
# Upstream issue: https://github.com/bryanjos/geo_postgis/pull/87
geo_postgis = prev.geo_postgis.overrideAttrs (old: {
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.ecto ];
});
# The remainder are Git dependencies (and their deps) that are not supported by mix2nix currently.
web_push_encryption = buildMix rec {
name = "web_push_encryption";
version = "0.3.1";
src = fetchFromGitHub {
owner = "danhper";
repo = "elixir-web-push-encryption";
rev = "70f00d06cbd88c9ac382e0ad2539e54448e9d8da";
sha256 = "sha256-b4ZMrt/8n2sPUFtCDRTwXS1qWm5VlYdbx8qC0R0boOA=";
};
beamDeps = with final; [ httpoison jose ];
};
icalendar = buildMix rec {
name = "icalendar";
version = "unstable-2022-04-10";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "1033d922c82a7223db0ec138e2316557b70ff49f";
sha256 = "sha256-N3bJZznNazLewHS4c2B7LP1lgxd1wev+EWVlQ7rOwfU=";
};
beamDeps = with final; [ mix_test_watch ex_doc timex ];
};
rajska = buildMix rec {
name = "rajska";
version = "1.3.3";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "0c036448e261e8be6a512581c592fadf48982d84";
sha256 = "sha256-4pfply1vTAIT2Xvm3kONmrCK05xKfXFvcb8EKoSCXBE=";
};
beamDeps = with final; [ ex_doc credo absinthe excoveralls hammer mock ];
};
exkismet = buildMix rec {
name = "exkismet";
version = "0.0.3";
src = fetchFromGitHub {
owner = "tcitworld";
repo = name;
rev = "8b5485fde00fafbde20f315bec387a77f7358334";
sha256 = "sha256-ttgCWoBKU7VTjZJBhZNtqVF4kN7psBr/qOeR65MbTqw=";
};
beamDeps = with final; [ httpoison ex_doc credo doctor dialyxir ];
};
});
};
preConfigure = ''
export LANG=C.UTF-8 # fix elixir locale warning
'';
# Install the compiled js part
preBuild =
''
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
chmod 770 -R ./priv
'';
postBuild = ''
mix phx.digest --no-deps-check
'';
# Just a hack to reduce path size by 60MB
postInstall =
let
inherit (mixNixDeps) ex_cldr;
in
''
rm -r $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales
ln -s ${ex_cldr.src}/priv/cldr/locales $out/lib/ex_cldr-${ex_cldr.version}/priv/cldr/locales
'';
passthru.elixirPackage = beamPackages.elixir;
meta = with lib; {
description = "Mobilizon is an online tool to help manage your events, your profiles and your groups";
homepage = "https://joinmobilizon.org/";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ minijackson erictapen ];
};
}

View file

@ -11,7 +11,7 @@ services:
MIX_ENV: "test"
MOBILIZON_DATABASE_DBNAME: mobilizon_test
MOBILIZON_INSTANCE_HOST: mobilizon.test
command: "mix test"
command: "mix prepare_test && mix test"
volumes:
pgdata:
.:

View file

@ -19,6 +19,7 @@ services:
- ".:/app"
ports:
- 4000:4000
- 5173:5173
depends_on:
- postgres
environment:
@ -35,6 +36,7 @@ services:
MOBILIZON_DATABASE_DBNAME: ${POSTGRES_DB}
MOBILIZON_DATABASE_HOST: postgres
MOBILIZON_DATABASE_PORT: ${POSTGRES_PORT}
VITE_HOST: ${VITE_HOST:-localhost}
command: sh -c "mix phx.server"
volumes:
pgdata:

View file

@ -1,21 +1,27 @@
FROM elixir as build
ARG IMAGE="elixir:1.15"
FROM ${IMAGE} as build
SHELL ["/bin/bash", "-c"]
ENV MIX_ENV prod
# ENV LANG en_US.UTF-8
ARG APP_ASSET
# Fix qemu segfault on arm64
# See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340
ARG ERL_FLAGS=""
ENV ERL_FLAGS=$ERL_FLAGS
# Set the right versions
ENV ELIXIR_VERSION latest
ENV ERLANG_VERSION latest
ENV NODE_VERSION 16
ENV NODE_VERSION 20
# Install system dependencies
RUN apt-get update -yq && apt-get install -yq build-essential cmake postgresql-client git curl gnupg unzip exiftool webp imagemagick gifsicle
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# # Install Node & yarn
# # Install Node
# RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq
# RUN npm install -g yarn
# Install build tools
RUN source /root/.bashrc && \
@ -27,14 +33,15 @@ COPY ./ /mobilizon
WORKDIR /mobilizon
# # Build front-end
# RUN yarn --cwd "js" install --frozen-lockfile
# RUN yarn --cwd "js" run build
# RUN npm install
# RUN npm run build
# Elixir release
RUN source /root/.bashrc && \
mix deps.get --only prod && \
mix compile && \
mix phx.digest.clean --all && \
mix phx.digest && \
mix release --path release/mobilizon && \
cd release/mobilizon && \
ln -s lib/mobilizon-*/priv priv && \

View file

@ -1,18 +1,20 @@
# First build the application assets
FROM node:16-alpine as assets
FROM node:20-alpine as assets
RUN apk add --no-cache python3 build-base libwebp-tools bash imagemagick ncurses
WORKDIR /build
COPY js .
ENV CYPRESS_INSTALL_BINARY 0
COPY . .
# Network timeout because it's slow when cross-compiling
RUN yarn install --network-timeout 100000 \
&& yarn run build
RUN npm install && npm run build
# Then, build the application binary
FROM elixir:1.13-alpine AS builder
FROM elixir:1.15-alpine AS builder
# Fix qemu segfault on arm64
# See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340
ARG ERL_FLAGS=""
ENV ERL_FLAGS=$ERL_FLAGS
RUN apk add --no-cache build-base git cmake
@ -28,10 +30,9 @@ COPY config/config.exs config/prod.exs ./config/
COPY config/docker.exs ./config/runtime.exs
COPY rel ./rel
COPY support ./support
COPY --from=assets ./priv/static ./priv/static
COPY --from=assets /build/priv/static ./priv/static
RUN mix phx.digest.clean --all \
&& mix release
RUN mix phx.digest.clean --all && mix phx.digest && mix release
# Finally setup the app
FROM alpine
@ -50,16 +51,23 @@ LABEL org.opencontainers.image.title="mobilizon" \
org.opencontainers.image.created=$BUILD_DATE
RUN apk add --no-cache curl openssl ca-certificates ncurses-libs file postgresql-client libgcc libstdc++ imagemagick python3 py3-pip py3-pillow py3-cffi py3-brotli gcc g++ musl-dev python3-dev pango libxslt-dev ttf-cantarell
RUN pip install weasyprint pyexcel-ods3
RUN pip --no-cache-dir install --break-system-packages weasyprint pyexcel-ods3
# Create every data directory
RUN mkdir -p /var/lib/mobilizon/uploads && chown nobody:nobody /var/lib/mobilizon/uploads
RUN mkdir -p /var/lib/mobilizon/timezones && chown nobody:nobody /var/lib/mobilizon/timezones
RUN mkdir -p /var/lib/mobilizon/tzdata && chown nobody:nobody /var/lib/mobilizon/tzdata
RUN mkdir -p /var/lib/mobilizon/sitemap && chown nobody:nobody /var/lib/mobilizon/sitemap
RUN mkdir -p /var/lib/mobilizon/uploads/exports/{csv,pdf,ods} && chown -R nobody:nobody /var/lib/mobilizon/uploads/exports
RUN mkdir -p /var/lib/mobilizon/timezones
RUN curl -L 'https://packages.joinmobilizon.org/tz_world/timezones-geodata.dets' -o /var/lib/mobilizon/timezones/timezones-geodata.dets
RUN chown nobody:nobody /var/lib/mobilizon/timezones
# Create configuration directory
RUN mkdir -p /etc/mobilizon && chown nobody:nobody /etc/mobilizon
USER nobody
# Get timezone geodata
RUN curl -L 'https://packages.joinmobilizon.org/tz_world/timezones-geodata.dets' -o /var/lib/mobilizon/timezones/timezones-geodata.dets
EXPOSE 4000
ENV MOBILIZON_DOCKER=true

View file

@ -3,12 +3,12 @@
set -e
echo "-- Waiting for database..."
while ! pg_isready -U ${MOBILIZON_DATABASE_USERNAME} -d postgres://${MOBILIZON_DATABASE_HOST}:5432/${MOBILIZON_DATABASE_DBNAME} -t 1; do
while ! pg_isready -U ${MOBILIZON_DATABASE_USERNAME} -d postgres://${MOBILIZON_DATABASE_HOST}:${MOBILIZON_DATABASE_PORT:-5432}/${MOBILIZON_DATABASE_DBNAME} -t 1; do
sleep 1s
done
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -c 'CREATE EXTENSION IF NOT EXISTS unaccent;'
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -p ${MOBILIZON_DATABASE_PORT:-5432} -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -U $MOBILIZON_DATABASE_USERNAME -d $MOBILIZON_DATABASE_DBNAME -h $MOBILIZON_DATABASE_HOST -p ${MOBILIZON_DATABASE_PORT:-5432} -c 'CREATE EXTENSION IF NOT EXISTS unaccent;'
echo "-- Running migrations..."
/bin/mobilizon_ctl migrate

View file

@ -1,11 +1,11 @@
FROM elixir:latest
LABEL maintainer="Thomas Citharel <tcit@tcit.fr>"
LABEL maintainer="Thomas Citharel <thomas.citharel@framasoft.org>"
ENV REFRESHED_AT=2022-04-06
RUN apt-get update -yq && apt-get install -yq build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq
RUN npm install -g yarn wait-on
ENV REFRESHED_AT=2023-11-20
RUN apt-get update -yq && apt-get install -yq ca-certificates build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools
RUN mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && apt-get update && apt-get install nodejs -yq
RUN npm install -g wait-on
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mix local.hex --force && mix local.rebar --force
RUN pip3 install -Iv weasyprint pyexcel_ods3
RUN pip3 --no-cache-dir install -Iv weasyprint pyexcel_ods3
RUN curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s && mkdir -p /usr/share/GeoIP && mv GeoLite2-City.mmdb /usr/share/GeoIP/

30
docs/dev.md Normal file
View file

@ -0,0 +1,30 @@
# Documentation for developpers
_This file is a summary of the documentation for developpers. As explained in [CONTRIBUTING.md](../CONTRIBUTING.md), the main documentation is available at <https://docs.joinmobilizon.org/contribute/>_
## Technologies
Mobilizon is an app that uses:
* [Elixir](https://elixir-lang.org/) for backend,
* [VueJS](https://vuejs.org/) for front-end
* [GraphQL](https://graphql.org/) as it's API layer
[GraphQL](https://graphql.org/) is managed using:
* [Absinthe](https://absinthe-graphql.org/) on the backend
* [VueApollo](https://apollo.vuejs.org/) on the front-end.
[UI](https://en.wikipedia.org/wiki/User_interface) is handled with [Tailwind](https://tailwindcss.com/) and [Oruga](https://oruga.io/).
## Structure of sources
* `config` backend compile-time and runtime configuration
* `docker` 🐳
* `src` Front-end
* `lib/federation` Handling all the federation stuff (sending and receving activities, converting activities, signatures, helpers…)
* `lib/graphql/schema` The schema declarations for the GraphQL API
* `lib/graphql/resolvers` The logic behind the GraphQL API
* `lib/mix/tasks` CLI
* `lib/mobilizon` model structures, database queries
* `lib/service` various services
* `lib/web` controllers, middlewares, auth-related stuff
* `test` tests

12
env.d.ts vendored Normal file
View file

@ -0,0 +1,12 @@
/// <reference types="histoire/vue" />
/// <reference types="vite/client" />
interface ImportMetaEnv {
readonly VITE_SERVER_URL: string;
readonly VITE_HISTOIRE_ENV: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

View file

@ -1,12 +1,66 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"napalm": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1703102458,
"narHash": "sha256-3pOV731qi34Q2G8e2SqjUXqnftuFrbcq+NdagEZXISo=",
"owner": "nix-community",
"repo": "napalm",
"rev": "edcb26c266ca37c9521f6a97f33234633cbec186",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "napalm",
"type": "github"
}
},
"nix-filter": {
"locked": {
"lastModified": 1705332318,
"narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nix-filter",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1691368598,
"narHash": "sha256-ia7li22keBBbj02tEdqjVeLtc7ZlSBuhUk+7XTUFr14=",
"lastModified": 1706550542,
"narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5a8e9243812ba528000995b294292d3b5e120947",
"rev": "97b17f32362e475016f942bbdfda4a4a72a8a652",
"type": "github"
},
"original": {
@ -18,8 +72,25 @@
},
"root": {
"inputs": {
"napalm": "napalm",
"nix-filter": "nix-filter",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",

260
flake.nix
View file

@ -1,27 +1,241 @@
{
description = "A very basic flake";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs }: {
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
devShells.x86_64-linux.default = let
pkgs = import nixpkgs { system = "x86_64-linux"; };
in pkgs.mkShell {
buildInputs = with pkgs; [
elixir
cmake
imagemagick
(yarn.override {
nodejs = nodejs-18_x;
})
nodejs-18_x
];
};
description = "Mobilizon fork for potsda.mn";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nix-filter.url = "github:numtide/nix-filter";
napalm.url = "github:nix-community/napalm";
napalm.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, nix-filter, napalm }:
let
forAllSystems = f: nixpkgs.lib.genAttrs
[ "x86_64-linux" "aarch64-linux" ]
(system: f system);
nixpkgsFor = forAllSystems (
system:
import nixpkgs { inherit system; }
);
filter = nix-filter.lib;
in
{
packages = forAllSystems (system:
let
pkgs = nixpkgsFor.${system};
# Directories that are neither needed for building the frontend nor the backend.
# For better build caching.
unrelatedDirs = [
"flake.lock"
(filter.matchExt "nix")
"docs"
"docker"
"docker-compose.test.yml"
"docker-compose.yml"
"generate-test-data"
];
in
{
mobilizon = pkgs.callPackage ./. {
src = filter {
root = ./.;
exclude = [
"src"
(filter.matchExt "js")
(filter.matchExt "ts")
(filter.matchExt "json")
"tests"
"scripts"
"public"
] ++ unrelatedDirs;
};
src-config = ./config;
mobilizon-js = self.packages."${system}".mobilizon-frontend;
};
mobilizon-frontend =
let
nodejs = pkgs.nodejs-18_x;
in
napalm.legacyPackages."${system}".buildPackage
(filter {
root = ./.;
exclude = [
"lib"
"config"
"test"
"rel"
"support"
] ++ unrelatedDirs;
})
{
inherit nodejs;
nativeBuildInputs = [ pkgs.imagemagick ];
npmCommands = [ "npm install" "npm run build" ];
};
default = self.packages."${system}".mobilizon;
# Update local Mobilizon definition
update =
pkgs.writeShellScriptBin "update" ''
set -eou pipefail
${pkgs.mix2nix}/bin/mix2nix ./mix.lock > mix.nix
'';
});
devShells = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in {
default =
pkgs.mkShell {
buildInputs = with pkgs; [
elixir
mix2nix
cmake
imagemagick
nodejs-18_x
];
};
});
overlays.default = final: prev: {
inherit (self.packages."${prev.system}") mobilizon;
};
checks = forAllSystems (system: {
inherit (self.packages.${system}) mobilizon update;
nixosTest =
let
pkgsMobilizon = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
};
certs = import "${nixpkgs}/nixos/tests/common/acme/server/snakeoil-certs.nix";
test = import ./nixos-test.nix { inherit certs; };
in
pkgsMobilizon.nixosTest test;
});
lib = {
# Patch the logos in the source tree of a mobilizon-frontend package before building.
# Can be used to construct the argument for .overrideAttrs on mobilizon-frontend.
mobilizonLogosOverride = icons:
let
inherit (icons) logo favicon;
in
old: {
postPatch = ''
cp '${logo}' src/assets/logo.svg
magick convert \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/favicon-16x16.png
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
public/img/icons/favicon-32x32.png
magick convert \
-resize x16 \
-gravity center \
-crop 16x16+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-16x16.ico
magick convert \
-resize x32 \
-gravity center \
-crop 32x32+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-32x32.ico
magick convert \
-resize x48 \
-gravity center \
-crop 48x48+0+0 \
-flatten \
-colors 256 \
'${favicon}' \
favicon-48x48.ico
magick convert \
favicon-16x16.ico \
favicon-32x32.ico \
favicon-48x48.ico \
public/favicon.ico
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
cp '${favicon}' public/img/icons/favicon.svg
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
magick convert \
'${favicon}' \
-gravity center \
-extent 630x350 \
public/img/mobilizon_default_card.png
magick convert \
-background '#e08c96' \
'${logo}' \
-resize 366x108 \
public/img/mobilizon_logo.png
'' + nixpkgs.lib.concatMapStrings
({ resize, filename }: ''
magick convert \
-resize x${resize} \
'${favicon}' \
public/img/icons/${filename}
'')
[
{ resize = "180"; filename = "apple-touch-icon.png"; }
{ resize = "180"; filename = "apple-touch-icon-180x180.png"; }
{ resize = "152"; filename = "apple-touch-icon-152x152.png"; }
{ resize = "120"; filename = "apple-touch-icon-120x120.png"; }
{ resize = "76"; filename = "apple-touch-icon-76x76.png"; }
{ resize = "60"; filename = "apple-touch-icon-60x60.png"; }
{ resize = "192"; filename = "android-chrome-192x192.png"; }
{ resize = "512"; filename = "android-chrome-512x512.png"; }
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
{ resize = "128"; filename = "badge-128x128.png"; }
{ resize = "144"; filename = "icon-144x144.png"; }
{ resize = "168"; filename = "icon-168x168.png"; }
{ resize = "256"; filename = "icon-256x256.png"; }
{ resize = "48"; filename = "icon-48x48.png"; }
{ resize = "72"; filename = "icon-72x72.png"; }
{ resize = "96"; filename = "icon-96x96.png"; }
{ resize = "144"; filename = "msapplication-icon-144x144.png"; }
{ resize = "150"; filename = "mstile-150x150.png"; }
{ resize = "192"; filename = "android-chrome-192x192.png"; }
{ resize = "512"; filename = "android-chrome-512x512.png"; }
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
];
};
};
};
}

View file

@ -1,5 +1,5 @@
const fetch = require("node-fetch");
const fs = require("fs");
import fetch from "node-fetch";
import fs from "fs";
fetch(`http://localhost:4000/api`, {
method: "POST",

52
histoire.config.ts Normal file
View file

@ -0,0 +1,52 @@
/// <reference types="@histoire/plugin-vue/components" />
import { defineConfig } from "histoire";
import { HstVue } from "@histoire/plugin-vue";
import path from "path";
export default defineConfig({
plugins: [HstVue()],
setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"),
viteNodeInlineDeps: [/date-fns/],
// viteIgnorePlugins: ['vite-plugin-pwa', 'vite-plugin-pwa:build', 'vite-plugin-pwa:info'],
tree: {
groups: [
{
title: "Actors",
include: (file) => /^src\/components\/Account/.test(file.path),
},
{
title: "Address",
include: (file) => /^src\/components\/Address/.test(file.path),
},
{
title: "Comments",
include: (file) => /^src\/components\/Comment/.test(file.path),
},
{
title: "Discussion",
include: (file) => /^src\/components\/Discussion/.test(file.path),
},
{
title: "Events",
include: (file) => /^src\/components\/Event/.test(file.path),
},
{
title: "Groups",
include: (file) => /^src\/components\/Group/.test(file.path),
},
{
title: "Home",
include: (file) => /^src\/components\/Home/.test(file.path),
},
{
title: "Posts",
include: (file) => /^src\/components\/Post/.test(file.path),
},
{
title: "Others",
include: () => true,
},
],
},
});

25
js/.gitignore vendored
View file

@ -1,25 +0,0 @@
.DS_Store
node_modules
/dist
/tests/e2e/videos/
/tests/e2e/screenshots/
/coverage
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View file

@ -1,2 +0,0 @@
src/i18n/*.json
coverage/

View file

@ -1,41 +0,0 @@
# mobilizon
## Project setup
```
yarn install
```
### Compiles and hot-reloads for development
```
yarn serve
```
### Compiles and minifies for production
```
yarn build
```
### Run your unit tests
```
yarn test:unit
```
### Run your end-to-end tests
```
yarn test:e2e
```
### Lints and fixes files
```
yarn lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

View file

@ -1,3 +0,0 @@
module.exports = {
presets: ["@vue/cli-plugin-babel/preset"],
};

View file

@ -1,7 +0,0 @@
{
"pluginsFile": "tests/e2e/plugins/index.js",
"projectId": "86dpkx",
"baseUrl": "http://localhost:4000",
"viewportWidth": 1920,
"viewportHeight": 1080
}

View file

@ -1,20 +0,0 @@
module.exports = {
preset: "@vue/cli-plugin-unit-jest/presets/typescript-and-babel",
collectCoverage: true,
collectCoverageFrom: [
"**/*.{vue,ts}",
"!**/node_modules/**",
"!get_union_json.ts",
],
coverageReporters: ["html", "text", "text-summary"],
reporters: ["default", "jest-junit"],
// The following should fix the issue with svgs and ?inline loader (see Logo.vue), but doesn't work
//
// transform: {
// "^.+\\.svg$": "<rootDir>/tests/unit/svgTransform.js",
// },
// moduleNameMapper: {
// "^@/(.*svg)(\\?inline)$": "<rootDir>/src/$1",
// "^@/(.*)$": "<rootDir>/src/$1",
// },
};

View file

@ -1,129 +0,0 @@
{
"name": "mobilizon",
"version": "2.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "yarn run build:assets && yarn run build:pictures",
"test:unit": "LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 TZ=UTC vue-cli-service test:unit",
"test:e2e": "vue-cli-service test:e2e",
"lint": "vue-cli-service lint",
"build:assets": "vue-cli-service build --report",
"build:pictures": "bash ./scripts/build/pictures.sh"
},
"dependencies": {
"@absinthe/socket": "^0.2.1",
"@absinthe/socket-apollo-link": "^0.2.1",
"@apollo/client": "^3.3.16",
"@mdi/font": "^6.1.95",
"@sentry/tracing": "^6.16.1",
"@sentry/vue": "^6.16.1",
"@tailwindcss/line-clamp": "^0.4.0",
"@tiptap/core": "^2.0.0-beta.41",
"@tiptap/extension-blockquote": "^2.0.0-beta.25",
"@tiptap/extension-bold": "^2.0.0-beta.24",
"@tiptap/extension-bubble-menu": "^2.0.0-beta.9",
"@tiptap/extension-bullet-list": "^2.0.0-beta.23",
"@tiptap/extension-document": "^2.0.0-beta.15",
"@tiptap/extension-dropcursor": "^2.0.0-beta.25",
"@tiptap/extension-gapcursor": "^2.0.0-beta.33",
"@tiptap/extension-heading": "^2.0.0-beta.23",
"@tiptap/extension-history": "^2.0.0-beta.21",
"@tiptap/extension-image": "^2.0.0-beta.6",
"@tiptap/extension-italic": "^2.0.0-beta.24",
"@tiptap/extension-link": "^2.0.0-beta.8",
"@tiptap/extension-list-item": "^2.0.0-beta.19",
"@tiptap/extension-mention": "^2.0.0-beta.42",
"@tiptap/extension-ordered-list": "^2.0.0-beta.24",
"@tiptap/extension-paragraph": "^2.0.0-beta.22",
"@tiptap/extension-strike": "^2.0.0-beta.26",
"@tiptap/extension-text": "^2.0.0-beta.15",
"@tiptap/extension-underline": "^2.0.0-beta.7",
"@tiptap/vue-2": "^2.0.0-beta.21",
"@vue-a11y/announcer": "^2.1.0",
"@vue-a11y/skip-to": "^2.1.2",
"@vue/apollo-option": "4.0.0-alpha.11",
"apollo-absinthe-upload-link": "^1.5.0",
"autoprefixer": "^10",
"blurhash": "^1.1.3",
"buefy": "^0.9.0",
"bulma-divider": "^0.2.0",
"core-js": "^3.6.4",
"date-fns": "^2.16.0",
"date-fns-tz": "^1.1.6",
"graphql": "^16.0.0",
"graphql-tag": "^2.10.3",
"intersection-observer": "^0.12.0",
"jwt-decode": "^3.1.2",
"leaflet": "^1.4.0",
"leaflet.locatecontrol": "^0.76.0",
"lodash": "^4.17.11",
"ngeohash": "^0.6.3",
"p-debounce": "^4.0.0",
"phoenix": "^1.6",
"postcss": "^8",
"register-service-worker": "^1.7.2",
"sanitize-html": "^2.5.3",
"tailwindcss": "^3",
"tippy.js": "^6.2.3",
"unfetch": "^4.2.0",
"v-tooltip": "^2.1.3",
"vue": "^2.6.11",
"vue-class-component": "^7.2.3",
"vue-i18n": "^8.14.0",
"vue-matomo": "^4.1.0",
"vue-meta": "^2.3.1",
"vue-plausible": "^1.3.1",
"vue-property-decorator": "^9.0.0",
"vue-router": "^3.1.6",
"vue-scrollto": "^2.17.1",
"vue2-leaflet": "^2.0.3",
"vuedraggable": "^2.24.3"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.0",
"@types/jest": "^27.0.2",
"@types/leaflet": "^1.5.2",
"@types/leaflet.locatecontrol": "^0.74",
"@types/lodash": "^4.14.141",
"@types/ngeohash": "^0.6.2",
"@types/phoenix": "^1.5.2",
"@types/prosemirror-inputrules": "^1.0.2",
"@types/prosemirror-model": "^1.7.2",
"@types/prosemirror-state": "^1.2.4",
"@types/prosemirror-view": "^1.11.4",
"@types/sanitize-html": "^2.5.0",
"@typescript-eslint/eslint-plugin": "^5.3.0",
"@typescript-eslint/parser": "^5.3.0",
"@vue/cli-plugin-babel": "~5.0.4",
"@vue/cli-plugin-eslint": "~5.0.4",
"@vue/cli-plugin-pwa": "~5.0.4",
"@vue/cli-plugin-router": "~5.0.4",
"@vue/cli-plugin-typescript": "~5.0.4",
"@vue/cli-plugin-unit-jest": "~5.0.4",
"@vue/cli-service": "~5.0.4",
"@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^1.1.0",
"@vue/vue2-jest": "^27.0.0-alpha.3",
"@vue/vue3-jest": "^27.0.0-alpha.1",
"eslint": "^8.2.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.0.3",
"flush-promises": "^1.0.2",
"jest": "^27.1.0",
"jest-junit": "^13.0.0",
"mock-apollo-client": "^1.1.0",
"prettier": "^2.2.1",
"prettier-eslint": "^14.0.0",
"sass": "^1.34.1",
"sass-loader": "^12.0.0",
"ts-jest": "27",
"typescript": "~4.5.5",
"vue-cli-plugin-tailwind": "~3.0.0",
"vue-i18n-extract": "^2.0.4",
"vue-template-compiler": "^2.6.11",
"webpack-cli": "^4.7.0"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

View file

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<meta name="server-injected-data" />
</head>
<body>
<noscript>
<strong
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
properly without JavaScript enabled. Please enable it to
continue.</strong
>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View file

@ -1,278 +0,0 @@
<template>
<div id="mobilizon">
<VueAnnouncer />
<VueSkipTo to="#main" :label="$t('Skip to main content')" />
<NavBar />
<div v-if="config && config.demoMode">
<b-message
class="container"
type="is-danger"
:title="$t('Warning').toLocaleUpperCase()"
closable
:aria-close-label="$t('Close')"
>
<p>
{{ $t("This is a demonstration site to test Mobilizon.") }}
<b>{{ $t("Please do not use it in any real way.") }}</b>
{{
$t(
"This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone)."
)
}}
</p>
</b-message>
</div>
<error v-if="error" :error="error" />
<main id="main" v-else>
<transition name="fade" mode="out-in">
<router-view ref="routerView" />
</transition>
</main>
<mobilizon-footer />
</div>
</template>
<script lang="ts">
import { Component, Ref, Vue, Watch } from "vue-property-decorator";
import NavBar from "./components/NavBar.vue";
import {
AUTH_ACCESS_TOKEN,
AUTH_USER_EMAIL,
AUTH_USER_ID,
AUTH_USER_ROLE,
} from "./constants";
import {
CURRENT_USER_CLIENT,
UPDATE_CURRENT_USER_CLIENT,
} from "./graphql/user";
import Footer from "./components/Footer.vue";
import Logo from "./components/Logo.vue";
import { initializeCurrentActor } from "./utils/auth";
import { CONFIG } from "./graphql/config";
import { IConfig } from "./types/config.model";
import { ICurrentUser } from "./types/current-user.model";
import jwt_decode, { JwtPayload } from "jwt-decode";
import { refreshAccessToken } from "./apollo/utils";
import { Route } from "vue-router";
@Component({
apollo: {
currentUser: CURRENT_USER_CLIENT,
config: CONFIG,
},
components: {
Logo,
NavBar,
error: () =>
import(/* webpackChunkName: "editor" */ "./components/Error.vue"),
"mobilizon-footer": Footer,
},
metaInfo() {
return {
titleTemplate: "%s | cottbus.vonunten.org",
};
},
})
export default class App extends Vue {
config!: IConfig;
currentUser!: ICurrentUser;
error: Error | null = null;
online = true;
interval: number | undefined = undefined;
@Ref("routerView") routerView!: Vue;
async created(): Promise<void> {
if (await this.initializeCurrentUser()) {
await initializeCurrentActor(this.$apollo.provider.defaultClient);
}
}
errorCaptured(error: Error): void {
this.error = error;
}
private async initializeCurrentUser() {
const userId = localStorage.getItem(AUTH_USER_ID);
const userEmail = localStorage.getItem(AUTH_USER_EMAIL);
const accessToken = localStorage.getItem(AUTH_ACCESS_TOKEN);
const role = localStorage.getItem(AUTH_USER_ROLE);
if (userId && userEmail && accessToken && role) {
return this.$apollo.mutate({
mutation: UPDATE_CURRENT_USER_CLIENT,
variables: {
id: userId,
email: userEmail,
isLoggedIn: true,
role,
},
});
}
return false;
}
mounted(): void {
this.online = window.navigator.onLine;
window.addEventListener("offline", () => {
this.online = false;
this.showOfflineNetworkWarning();
console.debug("offline");
});
window.addEventListener("online", () => {
this.online = true;
console.debug("online");
});
document.addEventListener("refreshApp", (event: Event) => {
this.$buefy.snackbar.open({
queue: false,
indefinite: true,
type: "is-secondary",
actionText: this.$t("Update app") as string,
cancelText: this.$t("Ignore") as string,
message: this.$t("A new version is available.") as string,
onAction: async () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const detail = event.detail;
const registration = detail as ServiceWorkerRegistration;
try {
await this.refreshApp(registration);
window.location.reload();
} catch (err) {
console.error(err);
this.$notifier.error(
this.$t(
"An error has occured while refreshing the page."
) as string
);
}
},
});
});
this.interval = setInterval(async () => {
const accessToken = localStorage.getItem(AUTH_ACCESS_TOKEN);
if (accessToken) {
const token = jwt_decode<JwtPayload>(accessToken);
if (
token?.exp !== undefined &&
new Date(token.exp * 1000 - 60000) < new Date()
) {
refreshAccessToken(this.$apollo.getClient());
}
}
}, 60000);
}
private async refreshApp(
registration: ServiceWorkerRegistration
): Promise<any> {
const worker = registration.waiting;
if (!worker) {
return Promise.resolve();
}
console.debug("Doing worker.skipWaiting().");
return new Promise((resolve, reject) => {
const channel = new MessageChannel();
channel.port1.onmessage = (event) => {
console.debug("Done worker.skipWaiting().");
if (event.data.error) {
reject(event.data);
} else {
resolve(event.data);
}
};
console.debug("calling skip waiting");
worker?.postMessage({ type: "skip-waiting" }, [channel.port2]);
});
}
showOfflineNetworkWarning(): void {
this.$notifier.error(this.$t("You are offline") as string);
}
unmounted(): void {
clearInterval(this.interval);
this.interval = undefined;
}
@Watch("config")
async initializeStatistics(config: IConfig) {
if (config) {
const { statistics } = (await import("./services/statistics")) as {
statistics: (config: IConfig, environment: Record<string, any>) => void;
};
statistics(config, { router: this.$router, version: config.version });
}
}
@Watch("$route", { immediate: true })
updateAnnouncement(route: Route): void {
const pageTitle = this.extractPageTitleFromRoute(route);
if (pageTitle) {
this.$announcer.polite(
this.$t("Navigated to {pageTitle}", {
pageTitle,
}) as string
);
}
// Set the focus to the router view
// https://marcus.io/blog/accessible-routing-vuejs
setTimeout(() => {
const focusTarget = (
this.routerView?.$refs?.componentFocusTarget !== undefined
? this.routerView?.$refs?.componentFocusTarget
: this.routerView?.$el
) as HTMLElement;
if (focusTarget && focusTarget instanceof Element) {
// Make focustarget programmatically focussable
focusTarget.setAttribute("tabindex", "-1");
// Focus element
focusTarget.focus();
// Remove tabindex from focustarget.
// Reason: https://axesslab.com/skip-links/#update-3-a-comment-from-gov-uk
focusTarget.removeAttribute("tabindex");
}
}, 0);
}
extractPageTitleFromRoute(route: Route): string {
if (route.meta?.announcer?.message) {
return route.meta?.announcer?.message();
}
return document.title;
}
}
</script>
<style lang="scss">
@import "variables";
/* Icons */
$mdi-font-path: "~@mdi/font/fonts";
@import "~@mdi/font/scss/materialdesignicons";
@import "common";
#mobilizon {
min-height: 100vh;
display: flex;
flex-direction: column;
main {
flex-grow: 1;
}
}
.vue-skip-to {
z-index: 40;
}
</style>

View file

@ -1,5 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

View file

@ -1,188 +0,0 @@
@use "@/styles/_mixins" as *;
@import "variables.scss";
@import "~bulma";
@import "~bulma-divider";
@import "~buefy/src/scss/buefy";
@import "styles/vue-announcer.scss";
@import "styles/vue-skip-to.scss";
a.out,
.content a,
.ProseMirror a {
text-decoration: underline;
text-decoration-color: #ed8d07;
text-decoration-thickness: 2px;
}
.section {
padding: 1rem 1% 4rem;
}
$color-black: #000;
.mention {
background: rgba($color-black, 0.1);
font-size: 0.9rem;
font-weight: bold;
border-radius: 5px;
padding: 0.2rem;
white-space: nowrap;
@include margin-right(0.2rem);
}
.mention-suggestion {
color: rgba($color-black, 0.6);
}
.mention .mention {
background: initial;
@include margin-right(0);
}
.select select {
border-color: $borders;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
body {
background: $body-background-color;
font-family: BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, "Segoe UI",
"Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
overflow-x: hidden;
}
#mobilizon > .container > .message {
margin: 1rem auto auto;
.message-header {
button.delete {
background: #4a4a4a;
}
}
}
.module-description {
margin-bottom: 2rem;
color: $violet-1;
}
$list-background-color: $scheme-main !default;
$list-shadow: 0 2px 3px rgba($scheme-invert, 0.1),
0 0 0 1px rgba($scheme-invert, 0.1) !default;
$list-radius: $radius !default;
$list-item-border: 1px solid $border !default;
$list-item-color: $text !default;
$list-item-active-background-color: $link !default;
$list-item-active-color: $link-invert !default;
$list-item-hover-background-color: $background !default;
.list-item {
display: block;
padding: 0.5em 1em;
&:not(a) {
color: $list-item-color;
}
&:first-child {
border-top-left-radius: $list-radius;
border-top-right-radius: $list-radius;
}
&:last-child {
border-bottom-left-radius: $list-radius;
border-bottom-right-radius: $list-radius;
}
&:not(:last-child) {
border-bottom: $list-item-border;
}
&.is-active {
background-color: $list-item-active-background-color;
color: $list-item-active-color;
}
}
a.list-item {
background-color: $list-item-hover-background-color;
cursor: pointer;
}
.setting-title {
margin-top: 2rem;
margin-bottom: 1rem;
h2 {
display: inline;
background: $secondary;
padding: 2px 7.5px;
text-transform: uppercase;
font-size: 1.25rem;
}
}
@mixin focus() {
&:focus {
border: 2px solid black;
border-radius: 5px;
}
}
ul.menu-list > li,
p {
@include focus;
}
.navbar-item {
@include focus;
}
.navbar-dropdown span.navbar-item:hover {
background-color: whitesmoke;
color: #0a0a0a;
}
/**
* Bulma/Buefy fixes
*/
.icon {
vertical-align: middle;
}
.tags .tag:not(:last-child) {
margin-right: unset;
@include margin-right(0.5rem);
}
.button .icon {
&:first-child:not(:last-child) {
@include margin-left(calc(-0.5em - 1px));
@include margin-right(0.25em);
}
&:last-child:not(:first-child) {
@include margin-right(calc(-0.5em - 1px));
@include margin-left(0.25em);
}
}
.buttons .button:not(:last-child):not(.is-fullwidth) {
margin-right: unset;
@include margin-right(0.5rem);
}
.breadcrumb li:first-child a {
padding-left: unset;
@include padding-left(0);
@include padding-right(0.75em);
}
.media-left {
@include margin-left(1rem);
}
a.dropdown-item {
@include padding-right(3rem);
}

View file

@ -1,52 +0,0 @@
<template>
<p>
<a dir="auto" :title="contact" v-if="configLink" :href="configLink.uri">{{
configLink.text
}}</a>
<span dir="auto" v-else-if="contact">{{ contact }}</span>
<span v-else>{{ $t("contact uninformed") }}</span>
</p>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
@Component
export default class InstanceContactLink extends Vue {
@Prop({ required: true, type: String }) contact!: string;
get configLink(): { uri: string; text: string } | null {
if (!this.contact) return null;
if (this.isContactEmail) {
return {
uri: `mailto:${this.contact}`,
text: this.contact,
};
}
if (this.isContactURL) {
return {
uri: this.contact,
text:
InstanceContactLink.urlToHostname(this.contact) ||
(this.$t("Contact") as string),
};
}
return null;
}
get isContactEmail(): boolean {
return this.contact.includes("@");
}
get isContactURL(): boolean {
return this.contact.match(/^https?:\/\//g) !== null;
}
static urlToHostname(url: string): string | null {
try {
return new URL(url).hostname;
} catch (e) {
return null;
}
}
}
</script>

View file

@ -1,54 +0,0 @@
<template>
<div class="inline-flex items-start">
<div class="flex-none mr-2">
<figure class="image is-48x48" v-if="actor.avatar">
<img class="is-rounded" :src="actor.avatar.url" alt="" />
</figure>
<b-icon v-else size="is-large" icon="account-circle" />
</div>
<div class="flex-auto">
<p class="text-base line-clamp-3 md:line-clamp-2 max-w-xl">
{{ displayName(actor) }}
</p>
<p class="text-sm text-gray-500 truncate">
@{{ usernameWithDomain(actor) }}
</p>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
import { displayName, IActor, usernameWithDomain } from "../../types/actor";
@Component
export default class ActorInline extends Vue {
@Prop({ required: true, type: Object }) actor!: IActor;
usernameWithDomain = usernameWithDomain;
displayName = displayName;
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
div.actor-inline {
align-items: flex-start;
display: inline-flex;
text-align: inherit;
align-items: top;
div.actor-avatar {
flex-basis: auto;
flex-grow: 0;
flex-shrink: 0;
@include margin-right(0.5rem);
}
div.actor-name {
flex-basis: auto;
flex-grow: 1;
flex-shrink: 1;
text-align: inherit;
}
}
</style>

View file

@ -1,90 +0,0 @@
<template>
<section>
<h1 class="title">
{{ $t("My identities") }}
</h1>
<ul class="identities">
<li v-for="identity in identities" :key="identity.id">
<router-link
:to="{
name: 'UpdateIdentity',
params: { identityName: identity.preferredUsername },
}"
class="media identity"
v-bind:class="{ 'is-current-identity': isCurrentIdentity(identity) }"
>
<div class="media-left">
<figure class="image is-48x48" v-if="identity.avatar">
<img class="is-rounded" :src="identity.avatar.url" />
</figure>
</div>
<div class="media-content">
{{ identity.displayName() }}
</div>
</router-link>
</li>
</ul>
<router-link
:to="{ name: 'CreateIdentity' }"
class="button create-identity is-primary"
>
{{ $t("Create a new identity") }}
</router-link>
</section>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import { IDENTITIES } from "../../graphql/actor";
import { IPerson, Person } from "../../types/actor";
@Component({
apollo: {
identities: {
query: IDENTITIES,
update(result) {
return result.identities.map((i: IPerson) => new Person(i));
},
},
},
})
export default class Identities extends Vue {
@Prop({ type: String }) currentIdentityName!: string;
identities: Person[] = [];
errors: string[] = [];
isCurrentIdentity(identity: IPerson): boolean {
return identity.preferredUsername === this.currentIdentityName;
}
}
</script>
<style lang="scss" scoped>
.identities {
border-right: 1px solid grey;
padding: 15px 0;
}
.media.identity {
align-items: center;
font-size: 1.3rem;
padding-bottom: 0;
margin-bottom: 15px;
color: #000;
&.is-current-identity {
background-color: rgba(0, 0, 0, 0.1);
}
}
.title {
margin-bottom: 30px;
}
</style>

View file

@ -1,44 +0,0 @@
<template>
<v-popover
offset="16"
trigger="hover"
class="popover"
:class="{ inline, clickable: actor && actor.type === ActorType.GROUP }"
>
<slot></slot>
<template slot="popover">
<actor-card :full="true" :actor="actor" :popover="true" />
</template>
</v-popover>
</template>
<script lang="ts">
import { ActorType } from "@/types/enums";
import { Component, Vue, Prop } from "vue-property-decorator";
import { IActor } from "../../types/actor";
import ActorCard from "./ActorCard.vue";
@Component({
components: {
ActorCard,
},
})
export default class PopoverActorCard extends Vue {
@Prop({ required: true, type: Object }) actor!: IActor;
@Prop({ required: false, type: Boolean, default: false }) inline!: boolean;
ActorType = ActorType;
}
</script>
<style lang="scss" scoped>
.inline {
display: inline;
}
.popover {
cursor: default;
}
.clickable {
cursor: pointer;
}
</style>

View file

@ -1,71 +0,0 @@
<template>
<div class="section container">
<div class="setting-title">
<h2>{{ $t("Profiles and federation") }}</h2>
</div>
<div>
<p class="content">
{{
$t(
"Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want."
)
}}
</p>
<hr role="presentation" />
<p class="content">
<span>
{{
$t(
"Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere."
)
}}
</span>
<span
v-if="config"
v-html="
$t(
'This instance, <b>{instanceName} ({domain})</b>, hosts your profile, so remember its name.',
{
domain,
instanceName: config.name,
}
)
"
/>
</p>
<hr role="presentation" />
<p class="content">
{{
$t(
"If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:"
)
}}
</p>
<div class="has-text-centered">
<code>{{ `${currentActor.preferredUsername}@${domain}` }}</code>
</div>
</div>
</div>
</template>
<script lang="ts">
import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor";
import { CONFIG } from "@/graphql/config";
import { IPerson } from "@/types/actor";
import { IConfig } from "@/types/config.model";
import { Component, Vue } from "vue-property-decorator";
@Component({
apollo: {
config: CONFIG,
currentActor: CURRENT_ACTOR_CLIENT,
},
})
export default class ProfileOnboarding extends Vue {
config!: IConfig;
currentActor!: IPerson;
domain = window.location.hostname;
}
</script>

View file

@ -1,119 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="'chat'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="discussion"
:to="{
name: RouteName.DISCUSSION,
params: { slug: subjectParams.discussion_slug },
}"
>{{ subjectParams.discussion_title }}</router-link
>
<b v-else slot="discussion">{{ subjectParams.discussion_title }}</b>
<router-link
v-if="activity.object && subjectParams.old_discussion_title"
slot="old_discussion"
:to="{
name: RouteName.DISCUSSION,
params: { slug: subjectParams.discussion_slug },
}"
>{{ subjectParams.old_discussion_title }}</router-link
>
<b
v-else-if="subjectParams.old_discussion_title"
slot="old_discussion"
>{{ subjectParams.old_discussion_title }}</b
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityDiscussionSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class DiscussionActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityDiscussionSubject = ActivityDiscussionSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityDiscussionSubject.DISCUSSION_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the discussion {discussion}.";
}
return "{profile} created the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
if (this.isAuthorCurrentActor) {
return "You replied to the discussion {discussion}.";
}
return "{profile} replied to the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
if (this.isAuthorCurrentActor) {
return "You renamed the discussion from {old_discussion} to {discussion}.";
}
return "{profile} renamed the discussion from {old_discussion} to {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
if (this.isAuthorCurrentActor) {
return "You archived the discussion {discussion}.";
}
return "{profile} archived the discussion {discussion}.";
case ActivityDiscussionSubject.DISCUSSION_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the discussion {discussion}.";
}
return "{profile} deleted the discussion {discussion}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityDiscussionSubject.DISCUSSION_CREATED:
case ActivityDiscussionSubject.DISCUSSION_REPLIED:
return "is-success";
case ActivityDiscussionSubject.DISCUSSION_RENAMED:
case ActivityDiscussionSubject.DISCUSSION_ARCHIVED:
return "is-grey";
case ActivityDiscussionSubject.DISCUSSION_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,108 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="'calendar'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
slot="event"
v-if="activity.object"
:to="{
name: RouteName.EVENT,
params: { uuid: subjectParams.event_uuid },
}"
>{{ subjectParams.event_title }}</router-link
>
<b v-else slot="event">{{ subjectParams.event_title }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import {
ActivityEventCommentSubject,
ActivityEventSubject,
} from "@/types/enums";
import { mixins } from "vue-class-component";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
@Component({
components: {
PopoverActorCard,
},
})
export default class EventActivityItem extends mixins(ActivityMixin) {
ActivityEventSubject = ActivityEventSubject;
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityEventSubject.EVENT_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the event {event}.";
}
return "The event {event} was created by {profile}.";
case ActivityEventSubject.EVENT_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the event {event}.";
}
return "The event {event} was updated by {profile}.";
case ActivityEventSubject.EVENT_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the event {event}.";
}
return "The event {event} was deleted by {profile}.";
case ActivityEventCommentSubject.COMMENT_POSTED:
if (this.subjectParams.comment_reply_to) {
if (this.isAuthorCurrentActor) {
return "You replied to a comment on the event {event}.";
}
return "{profile} replied to a comment on the event {event}.";
}
if (this.isAuthorCurrentActor) {
return "You posted a comment on the event {event}.";
}
return "{profile} posted a comment on the event {event}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityEventSubject.EVENT_CREATED:
case ActivityEventCommentSubject.COMMENT_POSTED:
return "is-success";
case ActivityEventSubject.EVENT_UPDATED:
return "is-grey";
case ActivityEventSubject.EVENT_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,190 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="'cog'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="group"
:to="{
name: RouteName.GROUP,
params: {
preferredUsername: subjectParams.group_federated_username,
},
}"
>{{ subjectParams.group_name }}</router-link
>
<b v-else slot="post">{{ subjectParams.group_name }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<i18n
:path="detail"
v-for="detail in details"
:key="detail"
tag="p"
class="has-text-grey-dark"
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
>
<router-link
v-if="activity.object"
slot="group"
:to="{
name: RouteName.GROUP,
params: { preferredUsername: usernameWithDomain(activity.object) },
}"
>{{ subjectParams.group_name }}</router-link
>
<b v-else slot="post">{{ subjectParams.group_name }}</b>
<b v-if="subjectParams.old_group_name" slot="old_group_name">{{
subjectParams.old_group_name
}}</b>
</i18n>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityGroupSubject, GroupVisibility, Openness } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class GroupActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityGroupSubject = ActivityGroupSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityGroupSubject.GROUP_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the group {group}.";
}
return "{profile} created the group {group}.";
case ActivityGroupSubject.GROUP_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the group {group}.";
}
return "{profile} updated the group {group}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityGroupSubject.GROUP_CREATED:
return "is-success";
case ActivityGroupSubject.GROUP_UPDATED:
return "is-grey";
default:
return undefined;
}
}
get details(): string[] {
let details = [];
const changes = this.subjectParams.group_changes.split(",");
if (changes.includes("name") && this.subjectParams.old_group_name) {
details.push("{old_group_name} was renamed to {group}.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("visibility") && this.activity.object.visibility) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
switch (this.activity.object.visibility) {
case GroupVisibility.PRIVATE:
details.push("Visibility was set to private.");
break;
case GroupVisibility.PUBLIC:
details.push("Visibility was set to public.");
break;
default:
details.push("Visibility was set to an unknown value.");
break;
}
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("openness") && this.activity.object.openness) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
switch (this.activity.object.openness) {
case Openness.INVITE_ONLY:
details.push("The group can now only be joined with an invite.");
break;
case Openness.MODERATED:
details.push(
"The group can now be joined by anyone, but new members need to be approved by an administrator."
);
break;
case Openness.OPEN:
details.push("The group can now be joined by anyone.");
break;
default:
details.push("Unknown value for the openness setting.");
break;
}
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("address") && this.activity.object.physicalAddress) {
details.push("The group's physical address was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("avatar") && this.activity.object.avatar) {
details.push("The group's avatar was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("banner") && this.activity.object.banner) {
details.push("The group's banner was changed.");
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (changes.includes("summary") && this.activity.object.summary) {
details.push("The group's short description was changed.");
}
return details;
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,237 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="icon" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<popover-actor-card
v-if="activity.object"
:actor="activity.object.actor"
:inline="true"
slot="member"
>
<b> {{ displayName(activity.object.actor) }}</b></popover-actor-card
>
<b slot="member" v-else>{{
subjectParams.member_actor_federated_username
}}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b> {{ displayName(activity.author) }}</b></popover-actor-card
></i18n
>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { displayName } from "@/types/actor";
import { ActivityMemberSubject, MemberRole } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
export const MEMBER_ROLE_VALUE: Record<string, number> = {
[MemberRole.MEMBER]: 20,
[MemberRole.MODERATOR]: 50,
[MemberRole.ADMINISTRATOR]: 90,
[MemberRole.CREATOR]: 100,
};
@Component({
components: {
PopoverActorCard,
},
})
export default class MemberActivityItem extends mixins(ActivityMixin) {
displayName = displayName;
RouteName = RouteName;
ActivityMemberSubject = ActivityMemberSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_REQUEST:
if (this.isAuthorCurrentActor) {
return "You requested to join the group.";
}
return "{member} requested to join the group.";
case ActivityMemberSubject.MEMBER_INVITED:
if (this.isAuthorCurrentActor) {
return "You invited {member}.";
}
return "{member} was invited by {profile}.";
case ActivityMemberSubject.MEMBER_ADDED:
if (this.isAuthorCurrentActor) {
return "You added the member {member}.";
}
return "{profile} added the member {member}.";
case ActivityMemberSubject.MEMBER_APPROVED:
if (this.isAuthorCurrentActor) {
return "You approved {member}'s membership.";
}
if (this.isObjectMemberCurrentActor) {
return "Your membership was approved by {profile}.";
}
return "{profile} approved {member}'s membership.";
case ActivityMemberSubject.MEMBER_JOINED:
return "{member} joined the group.";
case ActivityMemberSubject.MEMBER_UPDATED:
if (this.subjectParams.member_role && this.subjectParams.old_role) {
return this.roleUpdate;
}
if (this.isAuthorCurrentActor) {
return "You updated the member {member}.";
}
return "{profile} updated the member {member}.";
case ActivityMemberSubject.MEMBER_REMOVED:
if (this.subjectParams.member_role === MemberRole.NOT_APPROVED) {
if (this.isAuthorCurrentActor) {
return "You rejected {member}'s membership request.";
}
return "{profile} rejected {member}'s membership request.";
}
if (this.isAuthorCurrentActor) {
return "You excluded member {member}.";
}
return "{profile} excluded member {member}.";
case ActivityMemberSubject.MEMBER_QUIT:
return "{profile} quit the group.";
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
return "{member} rejected the invitation to join the group.";
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
if (this.isAuthorCurrentActor) {
return "You accepted the invitation to join the group.";
}
return "{member} accepted the invitation to join the group.";
default:
return undefined;
}
}
get icon(): string {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_REQUEST:
case ActivityMemberSubject.MEMBER_ADDED:
case ActivityMemberSubject.MEMBER_INVITED:
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
return "account-multiple-plus";
case ActivityMemberSubject.MEMBER_REMOVED:
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
case ActivityMemberSubject.MEMBER_QUIT:
return "account-multiple-minus";
case ActivityMemberSubject.MEMBER_UPDATED:
default:
return "account-multiple";
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityMemberSubject.MEMBER_ADDED:
case ActivityMemberSubject.MEMBER_INVITED:
case ActivityMemberSubject.MEMBER_JOINED:
case ActivityMemberSubject.MEMBER_APPROVED:
case ActivityMemberSubject.MEMBER_ACCEPTED_INVITATION:
return "is-success";
case ActivityMemberSubject.MEMBER_REQUEST:
case ActivityMemberSubject.MEMBER_UPDATED:
return "is-grey";
case ActivityMemberSubject.MEMBER_REMOVED:
case ActivityMemberSubject.MEMBER_REJECTED_INVITATION:
case ActivityMemberSubject.MEMBER_QUIT:
return "is-danger";
default:
return undefined;
}
}
get roleUpdate(): string | undefined {
if (
Object.keys(MEMBER_ROLE_VALUE).includes(this.subjectParams.member_role) &&
Object.keys(MEMBER_ROLE_VALUE).includes(this.subjectParams.old_role)
) {
if (
MEMBER_ROLE_VALUE[this.subjectParams.member_role] >
MEMBER_ROLE_VALUE[this.subjectParams.old_role]
) {
switch (this.subjectParams.member_role) {
case MemberRole.MODERATOR:
if (this.isAuthorCurrentActor) {
return "You promoted {member} to moderator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to moderator by {profile}.";
}
return "{profile} promoted {member} to moderator.";
case MemberRole.ADMINISTRATOR:
if (this.isAuthorCurrentActor) {
return "You promoted {member} to administrator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to administrator by {profile}.";
}
return "{profile} promoted {member} to administrator.";
default:
if (this.isAuthorCurrentActor) {
return "You promoted the member {member} to an unknown role.";
}
if (this.isObjectMemberCurrentActor) {
return "You were promoted to an unknown role by {profile}.";
}
return "{profile} promoted {member} to an unknown role.";
}
} else {
switch (this.subjectParams.member_role) {
case MemberRole.MODERATOR:
if (this.isAuthorCurrentActor) {
return "You demoted {member} to moderator.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to moderator by {profile}.";
}
return "{profile} demoted {member} to moderator.";
case MemberRole.MEMBER:
if (this.isAuthorCurrentActor) {
return "You demoted {member} to simple member.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to simple member by {profile}.";
}
return "{profile} demoted {member} to simple member.";
default:
if (this.isAuthorCurrentActor) {
return "You demoted the member {member} to an unknown role.";
}
if (this.isObjectMemberCurrentActor) {
return "You were demoted to an unknown role by {profile}.";
}
return "{profile} demoted {member} to an unknown role.";
}
}
} else {
if (this.isAuthorCurrentActor) {
return "You updated the member {member}.";
}
return "{profile} updated the member {member}";
}
}
get isObjectMemberCurrentActor(): boolean {
return (
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
this.activity?.object?.actor?.id === this.currentActor?.id &&
this.currentActor?.id !== undefined
);
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,93 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="'bullhorn'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link
v-if="activity.object"
slot="post"
:to="{
name: RouteName.POST,
params: { slug: subjectParams.post_slug },
}"
>{{ subjectParams.post_title }}</router-link
>
<b v-else slot="post">{{ subjectParams.post_title }}</b>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityPostSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
@Component({
components: {
PopoverActorCard,
},
})
export default class PostActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
ActivityPostSubject = ActivityPostSubject;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityPostSubject.POST_CREATED:
if (this.isAuthorCurrentActor) {
return "You created the post {post}.";
}
return "The post {post} was created by {profile}.";
case ActivityPostSubject.POST_UPDATED:
if (this.isAuthorCurrentActor) {
return "You updated the post {post}.";
}
return "The post {post} was updated by {profile}.";
case ActivityPostSubject.POST_DELETED:
if (this.isAuthorCurrentActor) {
return "You deleted the post {post}.";
}
return "The post {post} was deleted by {profile}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityPostSubject.POST_CREATED:
return "is-success";
case ActivityPostSubject.POST_UPDATED:
return "is-grey";
case ActivityPostSubject.POST_DELETED:
return "is-danger";
default:
return undefined;
}
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,190 +0,0 @@
<template>
<div class="activity-item">
<b-icon :icon="'link'" :type="iconColor" />
<div class="subject">
<i18n :path="translation" tag="p">
<router-link v-if="activity.object" slot="resource" :to="path">{{
subjectParams.resource_title
}}</router-link>
<b v-else slot="resource">{{ subjectParams.resource_title }}</b>
<router-link v-if="activity.object" slot="new_path" :to="path">{{
parentDirectory
}}</router-link>
<b v-else slot="new_path">{{ parentDirectory }}</b>
<router-link
v-if="activity.object && subjectParams.old_resource_title"
slot="old_resource_title"
:to="path"
>{{ subjectParams.old_resource_title }}</router-link
>
<b
v-else-if="subjectParams.old_resource_title"
slot="old_resource_title"
>{{ subjectParams.old_resource_title }}</b
>
<popover-actor-card
:actor="activity.author"
:inline="true"
slot="profile"
>
<b>
{{
$t("@{username}", {
username: usernameWithDomain(activity.author),
})
}}</b
></popover-actor-card
></i18n
>
<small class="has-text-grey-dark activity-date">{{
activity.insertedAt | formatTimeString
}}</small>
</div>
</div>
</template>
<script lang="ts">
import { usernameWithDomain } from "@/types/actor";
import { ActivityResourceSubject } from "@/types/enums";
import { Component } from "vue-property-decorator";
import RouteName from "../../router/name";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
import ActivityMixin from "../../mixins/activity";
import { mixins } from "vue-class-component";
import { Location } from "vue-router";
@Component({
components: {
PopoverActorCard,
},
})
export default class ResourceActivityItem extends mixins(ActivityMixin) {
usernameWithDomain = usernameWithDomain;
RouteName = RouteName;
get translation(): string | undefined {
switch (this.activity.subject) {
case ActivityResourceSubject.RESOURCE_CREATED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You created the folder {resource}.";
}
return "{profile} created the folder {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You created the resource {resource}.";
}
return "{profile} created the resource {resource}.";
case ActivityResourceSubject.RESOURCE_MOVED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.parentDirectory === null) {
if (this.isAuthorCurrentActor) {
return "You moved the folder {resource} to the root folder.";
}
return "{profile} moved the folder {resource} to the root folder.";
}
if (this.isAuthorCurrentActor) {
return "You moved the folder {resource} into {new_path}.";
}
return "{profile} moved the folder {resource} into {new_path}.";
}
if (this.parentDirectory === null) {
if (this.isAuthorCurrentActor) {
return "You moved the resource {resource} to the root folder.";
}
return "{profile} moved the resource {resource} to the root folder.";
}
if (this.isAuthorCurrentActor) {
return "You moved the resource {resource} into {new_path}.";
}
return "{profile} moved the resource {resource} into {new_path}.";
case ActivityResourceSubject.RESOURCE_UPDATED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You renamed the folder from {old_resource_title} to {resource}.";
}
return "{profile} renamed the folder from {old_resource_title} to {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You renamed the resource from {old_resource_title} to {resource}.";
}
return "{profile} renamed the resource from {old_resource_title} to {resource}.";
case ActivityResourceSubject.RESOURCE_DELETED:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if (this.activity?.object?.type === "folder") {
if (this.isAuthorCurrentActor) {
return "You deleted the folder {resource}.";
}
return "{profile} deleted the folder {resource}.";
}
if (this.isAuthorCurrentActor) {
return "You deleted the resource {resource}.";
}
return "{profile} deleted the resource {resource}.";
default:
return undefined;
}
}
get iconColor(): string | undefined {
switch (this.activity.subject) {
case ActivityResourceSubject.RESOURCE_CREATED:
return "is-success";
case ActivityResourceSubject.RESOURCE_MOVED:
case ActivityResourceSubject.RESOURCE_UPDATED:
return "is-grey";
case ActivityResourceSubject.RESOURCE_DELETED:
return "is-danger";
default:
return undefined;
}
}
get path(): Location {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
let path = this.parentPath(this.activity?.object?.path);
if (path === "") {
return {
name: RouteName.RESOURCE_FOLDER_ROOT,
params: {
preferredUsername: usernameWithDomain(this.activity.group),
},
};
}
return {
name: RouteName.RESOURCE_FOLDER,
params: {
path,
preferredUsername: usernameWithDomain(this.activity.group),
},
};
}
get parentDirectory(): string | undefined | null {
if (this.subjectParams.resource_path) {
const parentPath = this.parentPath(this.subjectParams.resource_path);
const directory = parentPath.split("/");
const res = directory.pop();
res === "" ? null : res;
}
return null;
}
parentPath(parent: string): string {
let path = parent.split("/");
path.pop();
return path.join("/").replace(/^\//, "");
}
}
</script>
<style lang="scss" scoped>
@import "./activity.scss";
</style>

View file

@ -1,125 +0,0 @@
<template>
<address dir="auto">
<b-icon
v-if="showIcon"
:icon="address.poiInfos.poiIcon.icon"
size="is-medium"
class="icon"
/>
<p>
<span
class="addressDescription"
:title="address.poiInfos.name"
v-if="address.poiInfos.name"
>
{{ address.poiInfos.name }}
</span>
<br v-if="address.poiInfos.name" />
<span class="has-text-grey-dark">
{{ address.poiInfos.alternativeName }}
</span>
<br />
<small
v-if="
userTimezoneDifferent &&
longShortTimezoneNamesDifferent &&
timezoneLongNameValid
"
class="has-text-grey-dark"
>
🌐
{{
$t("{timezoneLongName} ({timezoneShortName})", {
timezoneLongName,
timezoneShortName,
})
}}
</small>
<small v-else-if="userTimezoneDifferent" class="has-text-grey-dark">
🌐 {{ timezoneShortName }}
</small>
</p>
</address>
</template>
<script lang="ts">
import { IAddress } from "@/types/address.model";
import { PropType } from "vue";
import { Component, Prop, Vue } from "vue-property-decorator";
@Component
export default class AddressInfo extends Vue {
@Prop({ required: true, type: Object as PropType<IAddress> })
address!: IAddress;
@Prop({ required: false, default: false, type: Boolean }) showIcon!: boolean;
@Prop({ required: false, default: false, type: Boolean })
showTimezone!: boolean;
@Prop({ required: false, type: String }) userTimezone!: string;
get userTimezoneDifferent(): boolean {
return (
this.userTimezone != undefined &&
this.address.timezone != undefined &&
this.userTimezone !== this.address.timezone
);
}
get longShortTimezoneNamesDifferent(): boolean {
return (
this.timezoneLongName != undefined &&
this.timezoneShortName != undefined &&
this.timezoneLongName !== this.timezoneShortName
);
}
get timezoneLongName(): string | undefined {
return this.timezoneName("long");
}
get timezoneShortName(): string | undefined {
return this.timezoneName("short");
}
get timezoneLongNameValid(): boolean {
return (
this.timezoneLongName != undefined && !this.timezoneLongName.match(/UTC/)
);
}
private timezoneName(format: "long" | "short"): string | undefined {
return this.extractTimezone(
new Intl.DateTimeFormat(undefined, {
timeZoneName: format,
timeZone: this.address.timezone,
}).formatToParts()
);
}
private extractTimezone(
parts: Intl.DateTimeFormatPart[]
): string | undefined {
return parts.find((part) => part.type === "timeZoneName")?.value;
}
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
address {
font-style: normal;
display: flex;
justify-content: flex-start;
span.addressDescription {
text-overflow: ellipsis;
white-space: nowrap;
flex: 1 0 auto;
min-width: 100%;
max-width: 4rem;
overflow: hidden;
}
span.icon {
@include padding-right(1rem);
}
}
</style>

View file

@ -1,36 +0,0 @@
<template>
<div
class="truncate"
:title="
isDescriptionDifferentFromLocality
? `${physicalAddress.description}, ${physicalAddress.locality}`
: physicalAddress.description
"
>
<b-icon icon="map-marker" />
<span v-if="physicalAddress.locality">
{{ physicalAddress.locality }}
</span>
<span v-else>
{{ physicalAddress.description }}
</span>
</div>
</template>
<script lang="ts">
import { IAddress } from "@/types/address.model";
import { PropType } from "vue";
import { Prop, Vue, Component } from "vue-property-decorator";
@Component
export default class InlineAddress extends Vue {
@Prop({ required: true, type: Object as PropType<IAddress> })
physicalAddress!: IAddress;
get isDescriptionDifferentFromLocality(): boolean {
return (
this.physicalAddress?.description !== this.physicalAddress?.locality &&
this.physicalAddress?.description !== undefined
);
}
}
</script>

View file

@ -1,538 +0,0 @@
<template>
<li
:class="{
reply: comment.inReplyToComment,
announcement: comment.isAnnouncement,
selected: commentSelected,
}"
class="comment-element"
>
<article class="media" :id="commentId" dir="auto">
<popover-actor-card
:actor="comment.actor"
:inline="true"
v-if="comment.actor"
>
<figure
class="image is-32x32 media-left"
v-if="!comment.deletedAt && comment.actor.avatar"
>
<img class="is-rounded" :src="comment.actor.avatar.url" alt="" />
</figure>
<b-icon class="media-left" v-else icon="account-circle" />
</popover-actor-card>
<div v-else class="media-left">
<figure
class="image is-32x32"
v-if="!comment.deletedAt && comment.actor.avatar"
>
<img class="is-rounded" :src="comment.actor.avatar.url" alt="" />
</figure>
<b-icon v-else icon="account-circle" />
</div>
<div class="media-content">
<div class="content">
<span class="first-line" v-if="!comment.deletedAt" dir="auto">
<strong :class="{ organizer: commentFromOrganizer }">{{
comment.actor.name
}}</strong>
<small dir="ltr">@{{ usernameWithDomain(comment.actor) }}</small>
</span>
<a v-else class="comment-link" :href="commentURL">
<span>{{ $t("[deleted]") }}</span>
</a>
<a class="comment-link" :href="commentURL">
<small>{{
formatDistanceToNow(new Date(comment.updatedAt), {
locale: $dateFnsLocale,
addSuffix: true,
})
}}</small>
</a>
<span class="icons" v-if="!comment.deletedAt">
<button
v-if="comment.actor.id === currentActor.id"
@click="deleteComment"
>
<b-icon icon="delete" size="is-small" aria-hidden="true" />
<span class="visually-hidden">{{ $t("Delete") }}</span>
</button>
<button @click="reportModal()">
<b-icon icon="alert" size="is-small" />
<span class="visually-hidden">{{ $t("Report") }}</span>
</button>
</span>
<br />
<div
v-if="!comment.deletedAt"
v-html="comment.text"
dir="auto"
:lang="comment.language"
/>
<div v-else>{{ $t("[This comment has been deleted]") }}</div>
<div class="load-replies" v-if="comment.totalReplies">
<p v-if="!showReplies" @click="fetchReplies">
<b-icon icon="chevron-down" class="reply-btn" />
<span class="reply-btn">{{
$tc("View a reply", comment.totalReplies, {
totalReplies: comment.totalReplies,
})
}}</span>
</p>
<p
v-else-if="comment.totalReplies && showReplies"
@click="showReplies = false"
>
<b-icon icon="chevron-up" class="reply-btn" />
<span class="reply-btn">{{ $t("Hide replies") }}</span>
</p>
</div>
</div>
<nav
class="reply-action level is-mobile"
v-if="
currentActor.id &&
event.options.commentModeration !== CommentModeration.CLOSED &&
!comment.deletedAt
"
>
<div class="level-left">
<span
style="cursor: pointer"
class="level-item reply-btn"
@click="createReplyToComment()"
>
<span class="icon is-small">
<b-icon icon="reply" />
</span>
<span>{{ $t("Reply") }}</span>
</span>
</div>
</nav>
</div>
</article>
<form
class="reply"
@submit.prevent="replyToComment"
v-if="currentActor.id"
v-show="replyTo"
>
<article class="media reply">
<figure class="media-left" v-if="currentActor.avatar">
<p class="image is-48x48">
<img :src="currentActor.avatar.url" alt="" />
</p>
</figure>
<b-icon
class="media-left"
v-else
size="is-large"
icon="account-circle"
/>
<div class="media-content">
<div class="content">
<span class="first-line">
<strong>{{ currentActor.name }}</strong>
<small dir="ltr">@{{ currentActor.preferredUsername }}</small>
</span>
<br />
<span class="editor-line">
<editor
class="editor"
ref="commentEditor"
v-model="newComment.text"
mode="comment"
:aria-label="$t('Comment body')"
/>
<b-button
:disabled="newComment.text.trim().length === 0"
native-type="submit"
type="is-primary"
>{{ $t("Post a reply") }}</b-button
>
</span>
</div>
</div>
</article>
</form>
<div class="replies">
<div class="left">
<div class="vertical-border" @click="showReplies = false" />
</div>
<transition-group
name="comment-replies"
v-if="showReplies"
class="comment-replies"
tag="ul"
>
<comment
class="reply"
v-for="reply in comment.replies"
:key="reply.id"
:comment="reply"
:event="event"
@create-comment="$emit('create-comment', $event)"
@delete-comment="$emit('delete-comment', $event)"
/>
</transition-group>
</div>
</li>
</template>
<script lang="ts">
import { Component, Prop, Vue, Ref } from "vue-property-decorator";
import EditorComponent from "@/components/Editor.vue";
import { SnackbarProgrammatic as Snackbar } from "buefy";
import { formatDistanceToNow } from "date-fns";
import { CommentModeration } from "@/types/enums";
import { CommentModel, IComment } from "../../types/comment.model";
import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor";
import { IPerson, usernameWithDomain } from "../../types/actor";
import { IEvent } from "../../types/event.model";
import ReportModal from "../Report/ReportModal.vue";
import { IReport } from "../../types/report.model";
import { CREATE_REPORT } from "../../graphql/report";
import PopoverActorCard from "../Account/PopoverActorCard.vue";
@Component({
apollo: {
currentActor: {
query: CURRENT_ACTOR_CLIENT,
},
},
components: {
editor: () =>
import(/* webpackChunkName: "editor" */ "@/components/Editor.vue"),
comment: () => import(/* webpackChunkName: "comment" */ "./Comment.vue"),
PopoverActorCard,
},
})
export default class Comment extends Vue {
@Prop({ required: true, type: Object }) comment!: IComment;
@Prop({ required: true, type: Object }) event!: IEvent;
// Hack because Vue only exports it's own interface.
// See https://github.com/kaorun343/vue-property-decorator/issues/257
@Ref() readonly commentEditor!: EditorComponent & {
replyToComment: (comment: IComment) => void;
focus: () => void;
};
currentActor!: IPerson;
newComment: IComment = new CommentModel();
replyTo = false;
showReplies = false;
CommentModeration = CommentModeration;
usernameWithDomain = usernameWithDomain;
formatDistanceToNow = formatDistanceToNow;
async mounted(): Promise<void> {
const { hash } = this.$route;
if (hash.includes(`#comment-${this.comment.uuid}`)) {
this.fetchReplies();
}
}
async createReplyToComment(): Promise<void> {
if (this.replyTo) {
this.replyTo = false;
this.newComment = new CommentModel();
return;
}
this.replyTo = true;
if (this.comment.actor) {
this.commentEditor.replyToComment(this.comment.actor);
await this.$nextTick; // wait for the mention to be injected
this.commentEditor.focus();
}
}
replyToComment(): void {
this.newComment.inReplyToComment = this.comment;
this.newComment.originComment = this.comment.originComment || this.comment;
this.newComment.actor = this.currentActor;
this.$emit("create-comment", this.newComment);
this.newComment = new CommentModel();
this.replyTo = false;
this.showReplies = true;
}
deleteComment(): void {
this.$emit("delete-comment", this.comment);
this.showReplies = false;
}
fetchReplies(): void {
this.showReplies = true;
}
get commentSelected(): boolean {
return `#${this.commentId}` === this.$route.hash;
}
get commentFromOrganizer(): boolean {
const organizerId =
this.event?.organizerActor?.id || this.event?.attributedTo?.id;
return organizerId !== undefined && this.comment?.actor?.id === organizerId;
}
get commentId(): string {
if (this.comment.originComment)
return `comment-${this.comment.originComment.uuid}-${this.comment.uuid}`;
return `comment-${this.comment.uuid}`;
}
get commentURL(): string {
if (!this.comment.local && this.comment.url) return this.comment.url;
return `#${this.commentId}`;
}
reportModal(): void {
if (!this.comment.actor) return;
this.$buefy.modal.open({
parent: this,
component: ReportModal,
props: {
title: this.$t("Report this comment"),
comment: this.comment,
onConfirm: this.reportComment,
outsideDomain: this.comment.actor.domain,
},
// https://github.com/buefy/buefy/pull/3589
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
closeButtonAriaLabel: this.$t("Close"),
});
}
async reportComment(content: string, forward: boolean): Promise<void> {
try {
if (!this.comment.actor) return;
await this.$apollo.mutate<IReport>({
mutation: CREATE_REPORT,
variables: {
eventId: this.event.id,
reportedId: this.comment.actor.id,
commentsIds: [this.comment.id],
content,
forward,
},
});
this.$buefy.notification.open({
message: this.$t("Comment from @{username} reported", {
username: this.comment.actor.preferredUsername,
}) as string,
type: "is-success",
position: "is-bottom-right",
duration: 5000,
});
} catch (e: any) {
if (e.message) {
Snackbar.open({
message: e.message,
type: "is-danger",
position: "is-bottom",
});
}
}
}
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
form.reply {
padding-bottom: 1rem;
}
.first-line {
margin-bottom: 3px;
* {
padding: 0 5px 0 0;
}
strong.organizer {
background: $background-color;
border-radius: 12px;
color: white;
padding: 0 6px;
}
& > small {
@include margin-left(0.3rem);
}
}
.editor-line {
display: flex;
max-width: calc(80rem - 64px);
.editor {
flex: 1;
@include padding-right(10px);
margin-bottom: 0;
}
}
a.comment-link {
text-decoration: none;
@include margin-left(5px);
color: $text;
&:hover {
text-decoration: underline;
}
small {
&:hover {
color: hsl(0, 0%, 21%);
}
}
}
.comment-element {
padding: 0.25rem;
border-radius: 5px;
&.announcement {
background: $purple-2;
small {
color: hsl(0, 0%, 21%);
}
}
&.selected {
background-color: $violet-1;
color: $white;
.reply-btn,
small,
span,
strong,
.icons button {
color: $white;
}
a.comment-link:hover {
text-decoration: underline;
text-decoration-color: $white;
small {
color: $purple-3;
}
}
}
.media-left {
@include margin-right(5px);
}
}
.root-comment .replies {
display: flex;
.left {
display: flex;
flex-direction: column;
align-items: center;
@include margin-right(10px);
.vertical-border {
width: 3px;
height: 100%;
background-color: rgba(0, 0, 0, 0.05);
margin: 10px calc(1rem + 1px);
cursor: pointer;
&:hover {
background-color: rgba(0, 0, 0, 0.1);
}
}
}
}
.media .media-content {
overflow-x: initial;
.content {
text-align: start;
.editor-line {
display: flex;
align-items: center;
}
}
.icons {
display: none;
}
}
.media:hover .media-content .icons {
display: inline;
button {
cursor: pointer;
border: none;
background: none;
}
}
.load-replies {
cursor: pointer;
& > p > span {
font-weight: bold;
color: $violet-2;
}
}
.level-item.reply-btn {
font-weight: bold;
color: $violet-2;
}
article {
border-radius: 4px;
margin-bottom: 5px;
}
.comment-replies {
flex-grow: 1;
}
.comment-replies-enter-active,
.comment-replies-leave-active,
.comment-replies-move {
transition: 500ms cubic-bezier(0.59, 0.12, 0.34, 0.95);
transition-property: opacity, transform;
}
.comment-replies-enter {
opacity: 0;
transform: translateX(50px) scaleY(0.5);
}
.comment-replies-enter-to {
opacity: 1;
transform: translateX(0) scaleY(1);
}
.comment-replies-leave-active {
position: absolute;
}
.comment-replies-leave-to {
opacity: 0;
transform: scaleY(0);
transform-origin: center top;
}
.reply-action .icon {
@include padding-right(0.4rem);
}
.visually-hidden {
display: none;
}
</style>

View file

@ -1,457 +0,0 @@
<template>
<div>
<form
class="new-comment"
v-if="isAbleToComment"
@submit.prevent="createCommentForEvent(newComment)"
@keyup.ctrl.enter="createCommentForEvent(newComment)"
>
<b-notification
v-if="isEventOrganiser && !areCommentsClosed"
:closable="false"
>{{ $t("Comments are closed for everybody else.") }}</b-notification
>
<article class="media">
<figure class="media-left" v-if="newComment.actor">
<identity-picker-wrapper :inline="false" v-model="newComment.actor" />
</figure>
<div class="media-content">
<div class="field">
<div class="field">
<p class="control">
<editor
ref="commenteditor"
mode="comment"
v-model="newComment.text"
:aria-label="$t('Comment body')"
/>
</p>
<p class="help is-danger" v-if="emptyCommentError">
{{ $t("Comment text can't be empty") }}
</p>
</div>
<div class="field notify-participants" v-if="isEventOrganiser">
<b-switch
aria-labelledby="notify-participants-toggle"
v-model="newComment.isAnnouncement"
>{{ $t("Notify participants") }}</b-switch
>
</div>
</div>
</div>
<div class="send-comment">
<b-button
native-type="submit"
type="is-primary"
class="comment-button-submit"
icon-left="send"
>{{ $t("Send") }}</b-button
>
</div>
</article>
</form>
<b-notification v-else-if="isConnected" :closable="false">{{
$t("The organiser has chosen to close comments.")
}}</b-notification>
<p
v-if="$apollo.queries.comments.loading"
class="loading has-text-centered"
>
{{ $t("Loading comments…") }}
</p>
<transition-group tag="div" name="comment-empty-list" v-else>
<transition-group
key="list"
name="comment-list"
v-if="filteredOrderedComments.length"
class="comment-list"
tag="ul"
>
<comment
class="root-comment"
:comment="comment"
:event="event"
v-for="comment in filteredOrderedComments"
:key="comment.id"
@create-comment="createCommentForEvent"
@delete-comment="deleteComment"
/>
</transition-group>
<empty-content v-else icon="comment" key="no-comments" :inline="true">
<span>{{ $t("No comments yet") }}</span>
</empty-content>
</transition-group>
</div>
</template>
<script lang="ts">
import { Prop, Vue, Component, Watch } from "vue-property-decorator";
import Comment from "@/components/Comment/Comment.vue";
import IdentityPickerWrapper from "@/views/Account/IdentityPickerWrapper.vue";
import { CommentModeration } from "@/types/enums";
import { CommentModel, IComment } from "../../types/comment.model";
import {
CREATE_COMMENT_FROM_EVENT,
DELETE_COMMENT,
COMMENTS_THREADS_WITH_REPLIES,
} from "../../graphql/comment";
import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor";
import { IPerson } from "../../types/actor";
import { IEvent } from "../../types/event.model";
import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core";
import EmptyContent from "@/components/Utils/EmptyContent.vue";
@Component({
apollo: {
currentActor: CURRENT_ACTOR_CLIENT,
comments: {
query: COMMENTS_THREADS_WITH_REPLIES,
variables() {
return {
eventUUID: this.event.uuid,
};
},
update: (data) => data.event.comments,
skip() {
return !this.event.uuid;
},
},
},
components: {
Comment,
IdentityPickerWrapper,
EmptyContent,
editor: () =>
import(/* webpackChunkName: "editor" */ "@/components/Editor.vue"),
},
})
export default class CommentTree extends Vue {
@Prop({ required: false, type: Object }) event!: IEvent;
newComment: IComment = new CommentModel();
currentActor!: IPerson;
comments: IComment[] = [];
CommentModeration = CommentModeration;
emptyCommentError = false;
@Watch("currentActor")
watchCurrentActor(currentActor: IPerson): void {
this.newComment.actor = currentActor;
}
@Watch("newComment", { deep: true })
resetEmptyCommentError(newComment: IComment): void {
if (this.emptyCommentError) {
this.emptyCommentError = ["", "<p></p>"].includes(newComment.text);
}
}
async createCommentForEvent(comment: IComment): Promise<void> {
this.emptyCommentError = ["", "<p></p>"].includes(comment.text);
if (this.emptyCommentError) return;
try {
if (!comment.actor) return;
await this.$apollo.mutate({
mutation: CREATE_COMMENT_FROM_EVENT,
variables: {
eventId: this.event.id,
text: comment.text,
inReplyToCommentId: comment.inReplyToComment
? comment.inReplyToComment.id
: null,
isAnnouncement: comment.isAnnouncement,
},
update: (store: ApolloCache<InMemoryCache>, { data }: FetchResult) => {
if (data == null) return;
// comments are attached to the event, so we can pass it to replies later
const newComment = { ...data.createComment, event: this.event };
// we load all existing threads
const commentThreadsData = store.readQuery<{ event: IEvent }>({
query: COMMENTS_THREADS_WITH_REPLIES,
variables: {
eventUUID: this.event.uuid,
},
});
if (!commentThreadsData) return;
const { event } = commentThreadsData;
const oldComments = [...event.comments];
// if it's no a root comment, we first need to find
// existing replies and add the new reply to it
if (comment.originComment !== undefined) {
const { originComment } = comment;
const parentCommentIndex = oldComments.findIndex(
(oldComment) => oldComment.id === originComment.id
);
const parentComment = oldComments[parentCommentIndex];
// replace the root comment with has the updated list of replies in the thread list
oldComments.splice(parentCommentIndex, 1, {
...parentComment,
replies: [...parentComment.replies, newComment],
});
} else {
// otherwise it's simply a new thread and we add it to the list
oldComments.push(newComment);
}
// finally we save the thread list
store.writeQuery({
query: COMMENTS_THREADS_WITH_REPLIES,
data: {
event: {
...event,
comments: oldComments,
},
},
variables: {
eventUUID: this.event.uuid,
},
});
},
});
// and reset the new comment field
this.newComment = new CommentModel();
} catch (errors: any) {
console.error(errors);
if (errors.graphQLErrors && errors.graphQLErrors.length > 0) {
const error = errors.graphQLErrors[0];
if (error.field !== "text" && error.message[0] !== "can't be blank") {
this.$notifier.error(error.message);
}
}
}
}
async deleteComment(comment: IComment): Promise<void> {
try {
await this.$apollo.mutate({
mutation: DELETE_COMMENT,
variables: {
commentId: comment.id,
},
update: (store: ApolloCache<InMemoryCache>, { data }: FetchResult) => {
if (data == null) return;
const deletedCommentId = data.deleteComment.id;
const commentsData = store.readQuery<{ event: IEvent }>({
query: COMMENTS_THREADS_WITH_REPLIES,
variables: {
eventUUID: this.event.uuid,
},
});
if (!commentsData) return;
const { event } = commentsData;
let updatedComments: IComment[] = [...event.comments];
if (comment.originComment) {
// we have deleted a reply to a thread
const { originComment } = comment;
const parentCommentIndex = updatedComments.findIndex(
(oldComment) => oldComment.id === originComment.id
);
const parentComment = updatedComments[parentCommentIndex];
const updatedReplies = parentComment.replies.map((reply) => {
if (reply.id === deletedCommentId) {
return {
...reply,
deletedAt: new Date().toString(),
};
}
return reply;
});
updatedComments.splice(parentCommentIndex, 1, {
...parentComment,
replies: updatedReplies,
totalReplies: parentComment.totalReplies - 1,
});
console.log("updatedComments", updatedComments);
} else {
// we have deleted a thread itself
updatedComments = updatedComments.map((reply) => {
if (reply.id === deletedCommentId) {
return {
...reply,
deletedAt: new Date().toString(),
};
}
return reply;
});
}
store.writeQuery({
query: COMMENTS_THREADS_WITH_REPLIES,
variables: {
eventUUID: this.event.uuid,
},
data: {
event: {
...event,
comments: updatedComments,
},
},
});
},
});
// this.comments = this.comments.filter(commentItem => commentItem.id !== comment.id);
} catch (error: any) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
}
}
}
get orderedComments(): IComment[] {
return this.comments
.filter((comment) => comment.inReplyToComment == null)
.sort((a, b) => {
if (a.isAnnouncement !== b.isAnnouncement) {
return (
(b.isAnnouncement === true ? 1 : 0) -
(a.isAnnouncement === true ? 1 : 0)
);
}
if (a.publishedAt && b.publishedAt) {
return (
new Date(b.publishedAt).getTime() -
new Date(a.publishedAt).getTime()
);
} else if (a.updatedAt && b.updatedAt) {
return (
new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime()
);
}
return 0;
});
}
get filteredOrderedComments(): IComment[] {
return this.orderedComments.filter(
(comment) => !comment.deletedAt || comment.totalReplies > 0
);
}
get isEventOrganiser(): boolean {
const organizerId =
this.event?.organizerActor?.id || this.event?.attributedTo?.id;
return organizerId !== undefined && this.currentActor?.id === organizerId;
}
get areCommentsClosed(): boolean {
return (
this.currentActor.id !== undefined &&
this.event.options.commentModeration !== CommentModeration.CLOSED
);
}
get isAbleToComment(): boolean {
if (this.isConnected) {
return this.areCommentsClosed || this.isEventOrganiser;
}
return false;
}
get isConnected(): boolean {
return this.currentActor?.id != undefined;
}
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
@import "~bulma/sass/utilities/mixins.sass";
form.new-comment {
padding-bottom: 1rem;
.media {
flex-wrap: wrap;
justify-content: center;
.media-left {
@include mobile {
@include margin-right(0.5rem);
@include margin-left(0.5rem);
}
}
.media-content {
display: flex;
align-items: center;
align-content: center;
width: min-content;
.field {
flex: 1;
@include padding-right(10px);
margin-bottom: 0;
&.notify-participants {
margin-top: 0.5rem;
}
}
}
}
}
.no-comments {
display: flex;
flex-direction: column;
span {
text-align: center;
margin-bottom: 10px;
}
img {
max-width: 250px;
align-self: center;
}
}
ul.comment-list li {
margin-bottom: 16px;
}
.comment-list-enter-active,
.comment-list-leave-active,
.comment-list-move {
transition: 500ms cubic-bezier(0.59, 0.12, 0.34, 0.95);
transition-property: opacity, transform;
}
.comment-list-enter {
opacity: 0;
transform: translateX(50px) scaleY(0.5);
}
.comment-list-enter-to {
opacity: 1;
transform: translateX(0) scaleY(1);
}
.comment-list-leave-active,
.comment-empty-list-active {
position: absolute;
}
.comment-list-leave-to,
.comment-empty-list-leave-to {
opacity: 0;
transform: scaleY(0);
transform-origin: center top;
}
/*.comment-empty-list-enter-active {*/
/* transition: opacity .5s;*/
/*}*/
/*.comment-empty-list-enter {*/
/* opacity: 0;*/
/*}*/
</style>

View file

@ -1,258 +0,0 @@
<template>
<article class="comment">
<div class="avatar">
<figure
class="image is-48x48"
v-if="comment.actor && comment.actor.avatar"
>
<img class="is-rounded" :src="comment.actor.avatar.url" alt="" />
</figure>
<b-icon v-else size="is-large" icon="account-circle" />
</div>
<div class="body">
<div class="meta" dir="auto">
<span
class="first-line name"
v-if="comment.actor && !comment.deletedAt"
>
<strong>{{ comment.actor.name }}</strong>
<small>@{{ usernameWithDomain(comment.actor) }}</small>
</span>
<span v-else class="name comment-link has-text-grey">
{{ $t("[deleted]") }}
</span>
<span
class="icons"
v-if="
comment.actor &&
!comment.deletedAt &&
comment.actor.id === currentActor.id
"
>
<b-dropdown aria-role="list">
<b-icon slot="trigger" role="button" icon="dots-horizontal" />
<b-dropdown-item
v-if="comment.actor.id === currentActor.id"
@click="toggleEditMode"
aria-role="menuitem"
>
<b-icon icon="pencil"></b-icon>
{{ $t("Edit") }}
</b-dropdown-item>
<b-dropdown-item
v-if="comment.actor.id === currentActor.id"
@click="$emit('delete-comment', comment)"
aria-role="menuitem"
>
<b-icon icon="delete"></b-icon>
{{ $t("Delete") }}
</b-dropdown-item>
<!-- <b-dropdown-item aria-role="listitem" @click="isReportModalActive = true">
<b-icon icon="flag" />
{{ $t("Report") }}
</b-dropdown-item> -->
</b-dropdown>
</span>
<div class="post-infos">
<span :title="comment.insertedAt | formatDateTimeString">
{{
formatDistanceToNow(new Date(comment.updatedAt), {
locale: $dateFnsLocale,
}) || $t("Right now")
}}</span
>
</div>
</div>
<div
v-if="!editMode && !comment.deletedAt"
class="text-wrapper"
dir="auto"
>
<div class="description-content" v-html="comment.text"></div>
<p
v-if="
comment.insertedAt &&
comment.updatedAt &&
new Date(comment.insertedAt).getTime() !==
new Date(comment.updatedAt).getTime()
"
:title="comment.updatedAt | formatDateTimeString"
>
{{
$t("Edited {ago}", {
ago: formatDistanceToNow(new Date(comment.updatedAt), {
locale: $dateFnsLocale,
}),
})
}}
</p>
</div>
<div class="comment-deleted" v-else-if="!editMode">
{{ $t("[This comment has been deleted by it's author]") }}
</div>
<form v-else class="edition" @submit.prevent="updateComment">
<editor v-model="updatedComment" :aria-label="$t('Comment body')" />
<div class="buttons">
<b-button
native-type="submit"
:disabled="['<p></p>', '', comment.text].includes(updatedComment)"
type="is-primary"
>{{ $t("Update") }}</b-button
>
<b-button native-type="button" @click="toggleEditMode">{{
$t("Cancel")
}}</b-button>
</div>
</form>
</div>
</article>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import { formatDistanceToNow } from "date-fns";
import { IComment } from "../../types/comment.model";
import { usernameWithDomain, IPerson } from "../../types/actor";
import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor";
@Component({
apollo: {
currentActor: CURRENT_ACTOR_CLIENT,
},
components: {
editor: () =>
import(/* webpackChunkName: "editor" */ "@/components/Editor.vue"),
},
})
export default class DiscussionComment extends Vue {
@Prop({ required: true, type: Object }) comment!: IComment;
editMode = false;
updatedComment = "";
currentActor!: IPerson;
usernameWithDomain = usernameWithDomain;
formatDistanceToNow = formatDistanceToNow;
// isReportModalActive: boolean = false;
toggleEditMode(): void {
this.updatedComment = this.comment.text;
this.editMode = !this.editMode;
}
updateComment(): void {
this.$emit("update-comment", {
...this.comment,
text: this.updatedComment,
});
this.toggleEditMode();
}
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
article.comment {
display: flex;
border-top: 1px solid #e9e9e9;
div.body {
flex: 2;
margin-bottom: 2rem;
padding-top: 1rem;
.meta {
display: flex;
align-items: center;
padding: 0 1rem 0.3em;
.name {
@include margin-right(auto);
flex: 1 1 auto;
overflow: hidden;
strong {
display: block;
line-height: 1rem;
}
color: #3c376e;
}
.icons {
display: inline;
cursor: pointer;
}
}
.text-wrapper,
.comment-deleted {
padding: 0 1rem;
& > p {
font-size: 0.85rem;
font-style: italic;
}
div.description-content {
padding-bottom: 0.3rem;
::v-deep h1 {
font-size: 2rem;
}
::v-deep h2 {
font-size: 1.5rem;
}
::v-deep h3 {
font-size: 1.25rem;
}
::v-deep ul {
list-style-type: disc;
}
::v-deep li {
margin: 10px auto 10px 2rem;
}
::v-deep blockquote {
border-left: 0.2em solid #333;
display: block;
@include padding-left(1em);
}
::v-deep p {
margin: 10px auto;
a {
display: inline-block;
padding: 0.3rem;
background: $secondary;
color: #111;
&:empty {
display: none;
}
}
}
}
}
}
div.avatar {
padding-top: 1rem;
flex: 0;
}
.edition {
.button {
margin-top: 0.75rem;
}
}
}
</style>

View file

@ -1,126 +0,0 @@
<template>
<router-link
class="discussion-minimalist-card-wrapper"
dir="auto"
:to="{
name: RouteName.DISCUSSION,
params: { slug: discussion.slug, id: discussion.id },
}"
>
<div class="media-left">
<figure
class="image is-32x32"
v-if="
discussion.lastComment.actor && discussion.lastComment.actor.avatar
"
>
<img
class="is-rounded"
:src="discussion.lastComment.actor.avatar.url"
alt
/>
</figure>
<b-icon v-else size="is-medium" icon="account-circle" />
</div>
<div class="title-info-wrapper">
<div class="title-and-date">
<p class="discussion-minimalist-title">{{ discussion.title }}</p>
<span
class="has-text-grey-dark"
:title="actualDate | formatDateTimeString"
>
{{
formatDistanceToNowStrict(new Date(actualDate), {
locale: $dateFnsLocale,
}) || $t("Right now")
}}</span
>
</div>
<div
class="ellipsis has-text-grey-dark"
dir="auto"
v-if="!discussion.lastComment.deletedAt"
>
{{ htmlTextEllipsis }}
</div>
<div v-else class="has-text-grey-dark">
{{ $t("[This comment has been deleted]") }}
</div>
</div>
</router-link>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import { formatDistanceToNowStrict } from "date-fns";
import { IDiscussion } from "../../types/discussions";
import RouteName from "../../router/name";
@Component
export default class DiscussionListItem extends Vue {
@Prop({ required: true, type: Object }) discussion!: IDiscussion;
RouteName = RouteName;
formatDistanceToNowStrict = formatDistanceToNowStrict;
get htmlTextEllipsis(): string {
const element = document.createElement("div");
if (this.discussion.lastComment && this.discussion.lastComment.text) {
element.innerHTML = this.discussion.lastComment.text
.replace(/<br\s*\/?>/gi, " ")
.replace(/<p>/gi, " ");
}
return element.innerText;
}
get actualDate(): string | Date | undefined {
if (
this.discussion.updatedAt === this.discussion.insertedAt &&
this.discussion.lastComment
) {
return this.discussion.lastComment.publishedAt;
}
return this.discussion.updatedAt;
}
}
</script>
<style lang="scss" scoped>
@use "@/styles/_mixins" as *;
.discussion-minimalist-card-wrapper {
text-decoration: none;
display: flex;
width: 100%;
color: initial;
border-bottom: 1px solid #e9e9e9;
align-items: center;
.calendar-icon {
@include margin-right(1rem);
}
.title-info-wrapper {
flex: 2;
.title-and-date {
display: flex;
align-items: center;
.discussion-minimalist-title {
color: #3c376e;
font-family: Roboto, Helvetica, Arial, serif;
font-size: 19px;
font-weight: 600;
flex: 1;
}
}
div.ellipsis {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
font-size: 15px;
}
}
}
</style>

View file

@ -1,593 +0,0 @@
<template>
<div v-if="editor">
<div
class="editor"
:class="{ short_mode: isShortMode, comment_mode: isCommentMode }"
id="tiptab-editor"
:data-actor-id="currentActor && currentActor.id"
>
<div
class="menubar bar-is-hidden"
v-if="isDescriptionMode"
:editor="editor"
>
<button
class="menubar__button"
:class="{ 'is-active': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()"
type="button"
:title="$t('Bold')"
>
<b-icon icon="format-bold" />
</button>
<button
class="menubar__button"
:class="{ 'is-active': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()"
type="button"
:title="$t('Italic')"
>
<b-icon icon="format-italic" />
</button>
<button
class="menubar__button"
:class="{ 'is-active': editor.isActive('underline') }"
@click="editor.chain().focus().toggleUnderline().run()"
type="button"
:title="$t('Underline')"
>
<b-icon icon="format-underline" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
:class="{ 'is-active': editor.isActive('heading', { level: 1 }) }"
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
type="button"
:title="$t('Heading Level 1')"
>
<b-icon icon="format-header-1" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
:class="{ 'is-active': editor.isActive('heading', { level: 2 }) }"
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
type="button"
:title="$t('Heading Level 2')"
>
<b-icon icon="format-header-2" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
:class="{ 'is-active': editor.isActive('heading', { level: 3 }) }"
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
type="button"
:title="$t('Heading Level 3')"
>
<b-icon icon="format-header-3" />
</button>
<button
class="menubar__button"
@click="showLinkMenu()"
:class="{ 'is-active': editor.isActive('link') }"
type="button"
:title="$t('Add link')"
>
<b-icon icon="link" />
</button>
<button
v-if="editor.isActive('link')"
class="menubar__button"
@click="editor.chain().focus().unsetLink().run()"
type="button"
:title="$t('Remove link')"
>
<b-icon icon="link-off" />
</button>
<button
class="menubar__button"
v-if="!isBasicMode"
@click="showImagePrompt()"
type="button"
:title="$t('Add picture')"
>
<b-icon icon="image" />
</button>
<button
class="menubar__button"
v-if="!isBasicMode"
:class="{ 'is-active': editor.isActive('bulletList') }"
@click="editor.chain().focus().toggleBulletList().run()"
type="button"
:title="$t('Bullet list')"
>
<b-icon icon="format-list-bulleted" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
:class="{ 'is-active': editor.isActive('orderedList') }"
@click="editor.chain().focus().toggleOrderedList().run()"
type="button"
:title="$t('Ordered list')"
>
<b-icon icon="format-list-numbered" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
:class="{ 'is-active': editor.isActive('blockquote') }"
@click="editor.chain().focus().toggleBlockquote().run()"
type="button"
:title="$t('Quote')"
>
<b-icon icon="format-quote-close" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
@click="editor.chain().focus().undo().run()"
type="button"
:title="$t('Undo')"
>
<b-icon icon="undo" />
</button>
<button
v-if="!isBasicMode"
class="menubar__button"
@click="editor.chain().focus().redo().run()"
type="button"
:title="$t('Redo')"
>
<b-icon icon="redo" />
</button>
</div>
<bubble-menu
v-if="editor && isCommentMode"
class="bubble-menu"
:editor="editor"
:tippy-options="{ duration: 100 }"
>
<button
class="menububble__button"
:class="{ 'is-active': editor.isActive('bold') }"
@click="editor.chain().focus().toggleBold().run()"
type="button"
:title="$t('Bold')"
>
<b-icon icon="format-bold" />
<span class="visually-hidden">{{ $t("Bold") }}</span>
</button>
<button
class="menububble__button"
:class="{ 'is-active': editor.isActive('italic') }"
@click="editor.chain().focus().toggleItalic().run()"
type="button"
:title="$t('Italic')"
>
<b-icon icon="format-italic" />
<span class="visually-hidden">{{ $t("Italic") }}</span>
</button>
</bubble-menu>
<editor-content class="editor__content" :editor="editor" />
</div>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { Editor, EditorContent, BubbleMenu } from "@tiptap/vue-2";
import Blockquote from "@tiptap/extension-blockquote";
import BulletList from "@tiptap/extension-bullet-list";
import Heading from "@tiptap/extension-heading";
import Document from "@tiptap/extension-document";
import Paragraph from "@tiptap/extension-paragraph";
import Bold from "@tiptap/extension-bold";
import Italic from "@tiptap/extension-italic";
import Strike from "@tiptap/extension-strike";
import Text from "@tiptap/extension-text";
import Dropcursor from "@tiptap/extension-dropcursor";
import Gapcursor from "@tiptap/extension-gapcursor";
import History from "@tiptap/extension-history";
import { IActor, IPerson, usernameWithDomain } from "../types/actor";
import CustomImage from "./Editor/Image";
import { UPLOAD_MEDIA } from "../graphql/upload";
import { listenFileUpload } from "../utils/upload";
import { CURRENT_ACTOR_CLIENT } from "../graphql/actor";
import Mention from "@tiptap/extension-mention";
import MentionOptions from "./Editor/Mention";
import OrderedList from "@tiptap/extension-ordered-list";
import ListItem from "@tiptap/extension-list-item";
import Underline from "@tiptap/extension-underline";
import Link from "@tiptap/extension-link";
import { AutoDir } from "./Editor/Autodir";
import sanitizeHtml from "sanitize-html";
@Component({
components: { EditorContent, BubbleMenu },
apollo: {
currentActor: {
query: CURRENT_ACTOR_CLIENT,
},
},
})
export default class EditorComponent extends Vue {
@Prop({ required: true }) value!: string;
@Prop({ required: false, default: "description" }) mode!: string;
@Prop({ required: false, default: 100_000_000 }) maxSize!: number;
@Prop({ required: false }) ariaLabel!: string;
currentActor!: IPerson;
editor: Editor | null = null;
get isDescriptionMode(): boolean {
return this.mode === "description" || this.isBasicMode;
}
get isCommentMode(): boolean {
return this.mode === "comment";
}
get isShortMode(): boolean {
return this.isBasicMode;
}
get isBasicMode(): boolean {
return this.mode === "basic";
}
// eslint-disable-next-line
insertMention(obj: { range: any; attrs: any }) {
console.log("initialize Mention");
}
observer!: MutationObserver | null;
mounted(): void {
this.editor = new Editor({
editorProps: {
attributes: {
"aria-multiline": this.isShortMode.toString(),
"aria-label": this.ariaLabel,
role: "textbox",
},
transformPastedHTML: this.transformPastedHTML,
},
extensions: [
Blockquote,
BulletList,
Heading,
Document,
Paragraph,
Text,
OrderedList,
ListItem,
Mention.configure(MentionOptions),
CustomImage,
AutoDir,
Underline,
Bold,
Italic,
Strike,
Dropcursor,
Gapcursor,
History,
Link.configure({
HTMLAttributes: { target: "_blank", rel: "noopener noreferrer ugc" },
}),
],
injectCSS: false,
content: this.value,
onUpdate: () => {
this.$emit("input", this.editor?.getHTML());
},
});
}
transformPastedHTML(html: string): string {
// When using comment mode, limit to acceptable tags
if (this.isCommentMode) {
return sanitizeHtml(html, {
allowedTags: ["b", "i", "em", "strong", "a"],
allowedAttributes: {
a: ["href", "rel", "target"],
},
});
}
return html;
}
@Watch("value")
onValueChanged(val: string): void {
if (!this.editor) return;
if (val !== this.editor.getHTML()) {
this.editor.commands.setContent(val, false);
}
}
/**
* Show a popup to get the link from the URL
*/
showLinkMenu(): void {
this.$buefy.dialog.prompt({
message: this.$t("Enter the link URL") as string,
inputAttrs: {
type: "url",
},
trapFocus: true,
onConfirm: (value) => {
if (!this.editor) return undefined;
this.editor.chain().focus().setLink({ href: value }).run();
},
});
}
/**
* Show a file prompt, upload picture and insert it into editor
*/
async showImagePrompt(): Promise<void> {
const image = await listenFileUpload();
try {
const { data } = await this.$apollo.mutate({
mutation: UPLOAD_MEDIA,
variables: {
file: image,
name: image.name,
},
});
if (data.uploadMedia && data.uploadMedia.url && this.editor) {
this.editor
.chain()
.focus()
.setImage({
src: data.uploadMedia.url,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
"data-media-id": data.uploadMedia.id,
})
.run();
}
} catch (error: any) {
console.error(error);
if (error.graphQLErrors && error.graphQLErrors.length > 0) {
this.$notifier.error(error.graphQLErrors[0].message);
}
}
}
/**
* We use this to programatically insert an actor mention when creating a reply to comment
*/
replyToComment(actor: IActor): void {
if (!this.editor) return;
this.editor
.chain()
.focus()
.insertContent({
type: "mention",
attrs: {
id: usernameWithDomain(actor),
},
})
.insertContent(" ")
.run();
}
focus(): void {
this.editor?.chain().focus("end");
}
beforeDestroy(): void {
this.editor?.destroy();
}
}
</script>
<style lang="scss">
@use "@/styles/_mixins" as *;
@import "./Editor/style.scss";
$color-black: #000;
$color-white: #eee;
.menubar {
margin-bottom: 1rem;
transition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;
&__button {
font-weight: bold;
display: inline-flex;
background: transparent;
border: 0;
color: $color-black;
padding: 0.2rem 0.5rem;
@include margin-right(0.2rem);
border-radius: 3px;
cursor: pointer;
&:hover {
background-color: rgba($color-black, 0.05);
}
&.is-active {
background-color: rgba($color-black, 0.1);
}
}
}
.editor {
position: relative;
p.is-empty:first-child::before {
content: attr(data-empty-text);
float: left;
color: #aaa;
pointer-events: none;
height: 0;
font-style: italic;
}
.editor__content div.ProseMirror {
min-height: 10rem;
}
&.short_mode {
div.ProseMirror {
min-height: 5rem;
}
}
&.comment_mode {
div.ProseMirror {
min-height: 2rem;
}
}
&__content {
div.ProseMirror {
min-height: 2.5rem;
box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
background-color: white;
border-radius: 4px;
color: #363636;
border: 1px solid #dbdbdb;
padding: 12px 6px;
&:focus {
border-color: $background-color;
outline: none;
}
}
h1 {
font-size: 2em;
}
h2 {
font-size: 1.5em;
}
h3 {
font-size: 1.25em;
}
ul,
ol {
@include padding-left(1rem);
}
ul {
list-style-type: disc;
}
li > p,
li > ol,
li > ul {
margin: 0;
}
blockquote {
border-left: 3px solid rgba($color-black, 0.1);
color: rgba($color-black, 0.8);
@include padding-left(0.8rem);
font-style: italic;
p {
margin: 0;
}
}
img {
max-width: 100%;
border-radius: 3px;
}
}
}
.bubble-menu {
display: flex;
background-color: #0d0d0d;
padding: 0.2rem;
border-radius: 0.5rem;
button {
border: none;
background: none;
color: #fff;
font-size: 0.85rem;
font-weight: 500;
padding: 0 0.2rem;
opacity: 0.6;
cursor: pointer;
&:hover,
&.is-active {
opacity: 1;
}
}
}
.suggestion-list {
padding: 0.2rem;
border: 2px solid rgba($color-black, 0.1);
font-size: 0.8rem;
font-weight: bold;
&__no-results {
padding: 0.2rem 0.5rem;
}
&__item {
border-radius: 5px;
padding: 0.2rem 0.5rem;
margin-bottom: 0.2rem;
cursor: pointer;
&:last-child {
margin-bottom: 0;
}
&.is-selected,
&:hover {
background-color: rgba($color-white, 0.2);
}
&.is-empty {
opacity: 0.5;
}
}
.media + .media {
margin-top: 0;
padding-top: 0;
}
}
.tippy-box[data-theme~="dark"] {
background-color: $color-black;
padding: 0;
font-size: 1rem;
text-align: inherit;
color: $color-white;
border-radius: 5px;
}
.visually-hidden {
display: none;
}
</style>

Some files were not shown because too many files have changed in this diff Show more