Compare commits

...

37 commits

Author SHA1 Message Date
summersamara 44f32494b8 call refreshApp() and reload the page on refreshApp event without displaying popup message 2023-04-05 00:42:28 +02:00
summersamara 6b2d6783bc add EVENT_PAGE_LIMIT as a property to class Home 2023-04-05 00:42:28 +02:00
778a69cd e8909780eb reduce EVENT_PAGE_LIMIT from 99 to 42 2023-04-05 00:42:28 +02:00
jona 2509e224b9 simplified base structure:
now 99 events
2023-04-05 00:42:28 +02:00
jona 7f3e47c9dc simplified base structure:
startpage shows up to 161 events sorted by date,
"explore" and "view everything" renamed to "filter" --- finally working !!!
2023-04-05 00:42:28 +02:00
778a69cd 828a8b66f7 Revert "increase amount of displayed events on start page"
This reverts commit e84ed5fb7a480fe4ac13a8617542199ad7040154.
2023-04-05 00:42:28 +02:00
778a69cd 8288c235d0 Revert "Added option to change sorting on homepage to upcoming"
This reverts commit fa6d875bb47e9e21fd82c3eed7d0a7303e32ddfb.
2023-04-05 00:42:28 +02:00
778a69cd e3b349b117 Revert "Small changes to get it actually working"
This reverts commit 47a6d0e2f27bb42ec09702397bf6094b113b3c91.
2023-04-05 00:42:28 +02:00
778a69cd a4ba88d3e2 Revert "Reformatted ex files"
This reverts commit 8e4f698532889323c8b649fe421f413ac3dc3a75.
2023-04-05 00:42:28 +02:00
778a69cd 4a04548c1c Revert "Extracting sorting modes into its own model"
This reverts commit 839f9fd3f23027bfc00551f22ab0e52c5b63087f.
2023-04-05 00:42:28 +02:00
778a69cd c806a7b3c7 Revert "Changed interface to consts"
This reverts commit e40558ce7895d29bf831df68520ea0e95fd8667c.
2023-04-05 00:42:28 +02:00
778a69cd 1019a46d16 Revert "fixup a detail for upstream PR https://framagit.org/framasoft/mobilizon/-/merge_requests/1236"
This reverts commit e34f9d1796d07f228da60ee770f795ce42c3423e.
2023-04-05 00:42:28 +02:00
778a69cd e19a511d5b Revert "make i18n work for upstream PR https://framagit.org/framasoft/mobilizon/-/merge_requests/1236"
This reverts commit fc2c2db21c9b6e00c2142552f10d7cd2de27fd1d.
2023-04-05 00:42:28 +02:00
summersamara 595a3dca8b add elixir version 1.13.4 to Dockerfile for dev 2023-04-05 00:41:47 +02:00
778a69cd 70c38863a9 use yarn with an older nodejs version in devShell 2023-04-05 00:41:47 +02:00
778a69cd 2f7b1898de use nixpkgs from september 2022 for nix devShell 2023-04-05 00:41:47 +02:00
778a69cd 60fa49a7b1 init nix flake 2023-04-03 13:56:49 +02:00
778a69cd aaee131f1d show events until their end time, unless they have no end time 2023-04-03 13:56:49 +02:00
778a69cd 13306dc1bc increase amount of displayed events on start page 2023-04-03 13:56:49 +02:00
778a69cd 8289eea9c8 fix wrong link in instance follow request email
this is upstreamable
2023-04-03 13:56:49 +02:00
778a69cd f1304b7df8 make i18n work for upstream PR https://framagit.org/framasoft/mobilizon/-/merge_requests/1236 2023-04-03 13:56:49 +02:00
778a69cd ce6ffc4e66 fixup a detail for upstream PR https://framagit.org/framasoft/mobilizon/-/merge_requests/1236 2023-04-03 13:56:49 +02:00
Luca Eichler 19561da63d Changed interface to consts
(cherry picked from commit 238f4f28a31944f98feddedf5fa24714c4328ebc)

upstream PR is https://framagit.org/framasoft/mobilizon/-/merge_requests/1236
2023-04-03 13:56:49 +02:00
Gitea 03b2e1f634 Extracting sorting modes into its own model
(cherry picked from commit da2ae333c9310645f2e8a08532ba032c00ed25c2)

upstream PR is https://framagit.org/framasoft/mobilizon/-/merge_requests/1236
2023-04-03 13:56:49 +02:00
Gitea 8e5093ab41 Reformatted ex files
(cherry picked from commit 8bc216e559975b4111f7f62a9410387578e00811)

upstream PR is https://framagit.org/framasoft/mobilizon/-/merge_requests/1236
2023-04-03 13:56:49 +02:00
Gitea 750072b3b1 Small changes to get it actually working
(cherry picked from commit d16e9f5235652e1121ea5d1d3cde742290ee83f7)

upstream PR is https://framagit.org/framasoft/mobilizon/-/merge_requests/1236
2023-04-03 13:56:49 +02:00
Gitea 3aa10b77b3 Added option to change sorting on homepage to upcoming
(cherry picked from commit f09ede2b820dbce04c036abf582260eafba02795)

upstream PR is https://framagit.org/framasoft/mobilizon/-/merge_requests/1236
2023-04-03 13:56:49 +02:00
778a69cd a2d12990a4 add Mobilizon version to instance config 2023-04-03 13:56:49 +02:00
778a69cd 45f030f227 remove long description on start page for users, that are not logged in 2023-04-03 13:56:49 +02:00
778a69cd f7749a1e2b Revert "default anonymous participation in events to true"
This reverts commit 3a1b7a4660b4fd9488e7d06e677027ae41e0c10c.
2023-04-03 13:56:49 +02:00
778a69cd 3bf5e7a95f default anonymous participation in events to true 2023-04-03 13:56:49 +02:00
778a69cd dbd91b1a21 Use our own categories for event creation 2023-04-03 13:56:49 +02:00
778a69cd d1228ca43f add smoke-free as a metadata option for events
This is upstreamable!
2023-04-03 13:56:49 +02:00
778a69cd 62afefa47e remove pictures for error and 404 site 2023-04-03 13:56:49 +02:00
778a69cd e1c75ceecd removed images in "Meine Veranstaltungen" and "Meine Gruppen" 2023-04-03 13:56:49 +02:00
778a69cd 0f6296d164 remove homepage picture from / 2023-04-03 13:56:49 +02:00
778a69cd 158d36d6ec remove picture and logo in footer 2022-05-18 16:25:01 +02:00
21 changed files with 266 additions and 276 deletions

View file

@ -1,4 +1,4 @@
FROM elixir:alpine
FROM elixir:1.13.4-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

27
flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1662116689,
"narHash": "sha256-UB5H2/AjhY5OgooCXeLxYpW9w/wYIwOWRDu+VdPo858=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "da141d2fef4636aca767188e7a9f6e89e65264ce",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "da141d2fef4636aca767188e7a9f6e89e65264ce",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

26
flake.nix Normal file
View file

@ -0,0 +1,26 @@
{
description = "A very basic flake";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/da141d2fef4636aca767188e7a9f6e89e65264ce";
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 = pkgs.nodejs-16_x;
})
];
};
};
}

View file

@ -129,14 +129,7 @@ export default class App extends Vue {
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 () => {
const refreshAppEvent = async () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const detail = event.detail;
@ -146,14 +139,10 @@ export default class App extends Vue {
window.location.reload();
} catch (err) {
console.error(err);
this.$notifier.error(
this.$t(
"An error has occured while refreshing the page."
) as string
);
}
},
});
};
refreshAppEvent();
});
this.interval = setInterval(async () => {

View file

@ -2,29 +2,6 @@
<div class="container section" id="error-wrapper">
<div class="column">
<section>
<div class="picture-wrapper">
<picture>
<source
srcset="
/img/pics/error-480w.webp 1x,
/img/pics/error-1024w.webp 2x
"
type="image/webp"
/>
<source
srcset="/img/pics/error-480w.jpg 1x, /img/pics/error-1024w.jpg 2x"
type="image/jpeg"
/>
<img
:src="`/img/pics/error-480w.jpg`"
alt=""
width="480"
height="312"
loading="lazy"
/>
</picture>
</div>
<b-message type="is-danger" class="is-size-5">
<h1>
{{

View file

@ -1,22 +1,5 @@
<template>
<footer class="footer" ref="footer">
<picture>
<source
:srcset="`/img/pics/footer_${random}-1024w.webp 1x, /img/pics/footer_${random}-1920w.webp 2x`"
type="image/webp"
/>
<source
:srcset="`/img/pics/footer_${random}-1024w.jpg 1x, /img/pics/footer_${random}-1920w.jpg 2x`"
type="image/jpeg"
/>
<img
:src="`/img/pics/footer_${random}-1024w.jpg`"
alt=""
width="5234"
height="2189"
loading="lazy"
/>
</picture>
<ul>
<li>
<b-select

View file

@ -16,7 +16,7 @@
</template>
<template slot="start">
<b-navbar-item tag="router-link" :to="{ name: RouteName.SEARCH }">{{
$t("Explore")
$t("Filter")
}}</b-navbar-item>
<b-navbar-item
v-if="currentActor.id && currentUser.isLoggedIn"

View file

@ -388,6 +388,9 @@
"From the {startDate} to the {endDate}": "Vom {startDate} bis zum {endDate}",
"From yourself": "Von Ihnen selbst",
"Fully accessible with a wheelchair": "Komplett barrierefrei für Rollstühle",
"Smoke free": "Rauchfrei",
"Whether smoking is prohibited during the event": "Während der Veranstaltung wird nicht geraucht",
"Smoking allowed": "Rauchen gestattet",
"Gather ⋅ Organize ⋅ Mobilize": "Treffen ⋅ Organisieren ⋅ Mobilisieren",
"General": "Allgemein",
"General information": "Allgemeine Informationen",

View file

@ -1066,6 +1066,9 @@
"Not accessible with a wheelchair": "Not accessible with a wheelchair",
"Partially accessible with a wheelchair": "Partially accessible with a wheelchair",
"Fully accessible with a wheelchair": "Fully accessible with a wheelchair",
"Smoke free": "Smoke free",
"Whether smoking is prohibited during the event": "Whether smoking is prohibited during the event",
"Smoking allowed": "Smoking allowed",
"YouTube replay": "YouTube replay",
"The URL where the event live can be watched again after it has ended": "The URL where the event live can be watched again after it has ended",
"Twitch replay": "Twitch replay",

View file

@ -58,6 +58,22 @@ export const eventMetaDataList: IEventMetadataDescription[] = [
},
category: EventMetadataCategories.ACCESSIBILITY,
},
{
icon: "smoking-off",
key: "mz:accessibility:smokeFree",
label: i18n.t("Smoke free") as string,
description: i18n.t(
"Whether smoking is prohibited during the event"
) as string,
value: "false",
type: EventMetadataType.BOOLEAN,
keyType: EventMetadataKeyType.PLAIN,
choices: {
true: i18n.t("Smoke free") as string,
false: i18n.t("Smoking allowed") as string,
},
category: EventMetadataCategories.ACCESSIBILITY,
},
{
icon: "youtube",
key: "mz:replay:youtube:url",

View file

@ -134,7 +134,6 @@
!$apollo.loading
"
>
<div class="img-container" :class="{ webp: supportsWebPFormat }" />
<div class="content has-text-centered">
<p>
{{

View file

@ -46,7 +46,6 @@
>
<div class="columns is-vertical is-centered">
<div class="column is-three-quarters">
<div class="img-container" :class="{ webp: supportsWebPFormat }" />
<div class="content has-text-centered">
<p>
{{ $t("You are not part of any group.") }}

View file

@ -11,14 +11,6 @@
<h1 class="title">
{{ config.slogan || $t("Gather ⋅ Organize ⋅ Mobilize") }}
</h1>
<p
v-html="
$t('Join <b>{instance}</b>, a Mobilizon instance', {
instance: config.name,
})
"
/>
<p class="instance-description">{{ config.description }}</p>
<!-- We don't invite to find other instances yet -->
<!-- <p v-if="!config.registrationsOpen">
{{ $t("This instance isn't opened to registrations, but you can register on other instances.") }}
@ -51,18 +43,26 @@
>
<section class="events-recent">
<h2 class="title">
{{ $t("Last published events") }}
{{ $t("Upcoming events") }}
</h2>
<p>
<i18n tag="span" path="On {instance} and other federated instances">
<b slot="instance">{{ config.name }}</b>
</i18n>
</p>
<div v-if="this.events.total > 0">
<multi-card :events="events.elements.slice(0, 6)" />
<div v-if="events.elements.length > 0">
<multi-card class="my-4" :events="events.elements" />
<div class="pagination" v-if="events.total > EVENT_PAGE_LIMIT">
<b-pagination
:total="events.total"
v-model="featuredEventPage"
:per-page="EVENT_PAGE_LIMIT"
>
</b-pagination>
</div>
<span class="view-all">
<router-link :to="{ name: RouteName.SEARCH }"
>{{ $t("View everything") }} >></router-link
>{{ $t("Filter") }} >></router-link
>
</span>
</div>
@ -72,61 +72,6 @@
</section>
</div>
<div id="picture" v-if="config && (!currentUser.id || !currentActor.id)">
<div class="picture-container">
<picture>
<source
media="(max-width: 799px)"
srcset="/img/pics/homepage-480w.webp"
type="image/webp"
/>
<source
media="(max-width: 799px)"
srcset="/img/pics/homepage-480w.jpg"
type="image/jpeg"
/>
<source
media="(max-width: 1024px)"
srcset="/img/pics/homepage-1024w.webp"
type="image/webp"
/>
<source
media="(max-width: 1024px)"
srcset="/img/pics/homepage-1024w.jpg"
type="image/jpeg"
/>
<source
media="(max-width: 1920px)"
srcset="/img/pics/homepage-1920w.webp"
type="image/webp"
/>
<source
media="(max-width: 1920px)"
srcset="/img/pics/homepage-1920w.jpg"
type="image/jpeg"
/>
<source
media="(min-width: 1921px)"
srcset="/img/pics/homepage.webp"
type="image/webp"
/>
<source
media="(min-width: 1921px)"
srcset="/img/pics/homepage.jpg"
type="image/jpeg"
/>
<img
src="/img/pics/homepage-1024w.jpg"
width="3840"
height="2719"
alt=""
loading="lazy"
/>
</picture>
</div>
<div class="container section">
<div class="columns">
<div class="column">
@ -289,7 +234,7 @@
/>
<section class="events-recent">
<h2 class="title">
{{ $t("Last published events") }}
{{ $t("Upcoming events") }}
</h2>
<p>
<i18n tag="span" path="On {instance} and other federated instances">
@ -298,10 +243,10 @@
</p>
<div v-if="events.total > 0">
<multi-card :events="events.elements.slice(0, 8)" />
<multi-card :events="events.elements" />
<span class="view-all">
<router-link :to="{ name: RouteName.SEARCH }"
>{{ $t("View everything") }} >></router-link
>{{ $t("Filter") }} >></router-link
>
</span>
</div>
@ -345,13 +290,16 @@ import { IConfig } from "../types/config.model";
import { IFollowedGroupEvent } from "../types/followedGroupEvent.model";
import Subtitle from "../components/Utils/Subtitle.vue";
const EVENT_PAGE_LIMIT = 42;
@Component({
apollo: {
events: {
query: FETCH_EVENTS,
variables: {
orderBy: EventSortField.INSERTED_AT,
direction: SortDirection.DESC,
orderBy: EventSortField.BEGINS_ON,
direction: SortDirection.ASC,
limit: EVENT_PAGE_LIMIT,
},
},
currentActor: {
@ -446,6 +394,8 @@ export default class Home extends Vue {
total: 0,
};
EVENT_PAGE_LIMIT = EVENT_PAGE_LIMIT;
// get displayed_name() {
// return this.loggedPerson && this.loggedPerson.name === null
// ? this.loggedPerson.preferredUsername
@ -728,9 +678,6 @@ section.hero {
.container.section {
background: $white;
@include tablet {
margin-top: -4rem;
}
z-index: 10;
.title {

View file

@ -2,24 +2,6 @@
<section class="section container has-text-centered not-found">
<div class="columns is-vertical is-centered">
<div class="column is-half">
<picture>
<source
srcset="/img/pics/error-480w.webp 1x, /img/pics/error-1024w.webp 2x"
type="image/webp"
/>
<source
srcset="/img/pics/error-480w.jpg 1x, /img/pics/error-1024w.jpg 2x"
type="image/jpeg"
/>
<img
:src="`/img/pics/error-480w.jpg`"
alt=""
width="2616"
height="1698"
loading="lazy"
/>
</picture>
<h1 class="title">
{{ $t("The page you're looking for doesn't exist.") }}
</h1>

View file

@ -1,6 +1,6 @@
<template>
<div class="section container">
<h1 class="title">{{ $t("Explore") }}</h1>
<!-- <h1 class="title">{{ $t("Explore") }}</h1> -->
<section v-if="tag">
<i18n path="Events tagged with {tag}">
<b-tag slot="tag" type="is-light">{{ $t("#{tag}", { tag }) }}</b-tag>
@ -125,7 +125,7 @@
v-if="!canSearchEvents && !canSearchGroups"
>
<b-loading :active.sync="$apollo.loading"></b-loading>
<h2 class="title">{{ $t("Featured events") }}</h2>
<!-- <h2 class="title">{{ $t("Featured events") }}</h2> -->
<div v-if="events.elements.length > 0">
<multi-card class="my-4" :events="events.elements" />
<div class="pagination" v-if="events.total > EVENT_PAGE_LIMIT">
@ -255,9 +255,9 @@ interface ISearchTimeOption {
end?: Date | null;
}
const EVENT_PAGE_LIMIT = 12;
const EVENT_PAGE_LIMIT = 42;
const GROUP_PAGE_LIMIT = 12;
const GROUP_PAGE_LIMIT = 42;
const DEFAULT_RADIUS = 25; // value to set if radius is null but location set

View file

@ -19,6 +19,7 @@ defmodule Mobilizon.Config do
registration_email_denylist: list(String.t()),
demo: boolean(),
repository: String.t(),
version: String.t(),
email_from: String.t(),
email_reply_to: String.t(),
federating: boolean(),
@ -102,9 +103,7 @@ defmodule Mobilizon.Config do
end
@spec instance_version :: String.t()
def instance_version do
GitStatus.commit()
end
def instance_version, do: instance_config()[:version]
@spec instance_hostname :: String.t()
def instance_hostname, do: instance_config()[:hostname]

View file

@ -12,126 +12,82 @@ defmodule Mobilizon.Events.Categories do
defp build_in_categories do
[
%{
id: :arts,
label: gettext("Arts")
id: :ausflug,
label: gettext("Ausflug")
},
%{
id: :book_clubs,
label: gettext("Book clubs")
id: :ausstellung,
label: gettext("Ausstellung")
},
%{
id: :business,
label: gettext("Business")
id: :demonstration,
label: gettext("Demonstration")
},
%{
id: :causes,
label: gettext("Causes")
id: :einweihung,
label: gettext("Einweihung")
},
%{
id: :comedy,
label: gettext("Comedy")
id: :filmvorfuehrung,
label: gettext("Filmvorführung")
},
%{
id: :crafts,
label: gettext("Crafts")
id: :fussball,
label: gettext("Fußball")
},
%{
id: :food_drink,
label: gettext("Food & Drink")
id: :gedenken,
label: gettext("Gedenken")
},
%{
id: :health,
label: gettext("Health")
id: :infostand,
label: gettext("Infostand")
},
%{
id: :music,
label: gettext("Music")
id: :kuenstlerisches,
label: gettext("Künstlerisches")
},
%{
id: :auto_boat_air,
label: gettext("Auto, boat and air")
id: :kneipe,
label: gettext("Kneipe")
},
%{
id: :community,
label: gettext("Community")
id: :konzert,
label: gettext("Konzert")
},
%{
id: :family_education,
label: gettext("Family & Education")
id: :kuefa,
label: gettext("Fa")
},
%{
id: :fashion_beauty,
label: gettext("Fashion & Beauty")
},
%{
id: :film_media,
label: gettext("Film & Media")
},
%{
id: :games,
label: gettext("Games")
},
%{
id: :language_culture,
label: gettext("Language & Culture")
},
%{
id: :learning,
label: gettext("Learning")
},
%{
id: :lgbtq,
label: gettext("LGBTQ")
},
%{
id: :movements_politics,
label: gettext("Movements and politics")
},
%{
id: :networking,
label: gettext("Networking")
id: :lesung,
label: gettext("Lesung")
},
%{
id: :party,
label: gettext("Party")
},
%{
id: :performing_visual_arts,
label: gettext("Performing & Visual Arts")
id: :sport,
label: gettext("Sport")
},
%{
id: :pets,
label: gettext("Pets")
id: :theater,
label: gettext("Theater")
},
%{
id: :photography,
label: gettext("Photography")
id: :verhandlung,
label: gettext("Verhandlung")
},
%{
id: :outdoors_adventure,
label: gettext("Outdoors & Adventure")
},
%{
id: :spirituality_religion_beliefs,
label: gettext("Spirituality, Religion & Beliefs")
},
%{
id: :science_tech,
label: gettext("Science & Tech")
},
%{
id: :sports,
label: gettext("Sports")
},
%{
id: :theatre,
label: gettext("Theatre")
id: :workshop,
label: gettext("Workshop")
},
# Legacy default value
%{
id: :meeting,
label: gettext("Meeting")
}
label: gettext("Infoveranstaltung")
},
]
end

View file

@ -1663,7 +1663,7 @@ defmodule Mobilizon.Events do
@spec filter_future_events(Ecto.Queryable.t(), boolean) :: Ecto.Query.t()
defp filter_future_events(query, true) do
from(q in query,
where: q.begins_on > ^DateTime.utc_now()
where: coalesce(q.ends_on, q.begins_on) > ^DateTime.utc_now()
)
end

View file

@ -7,4 +7,4 @@
<%= if @follower.type == :Application do %><%= gettext "Note: %{name} following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too.", name: Mobilizon.Actors.Actor.display_name_and_username(@follower) %><% end %>
<%= if @follower.type == :Application do %><%= gettext "To accept this invitation, head over to the instance's admin settings." %><% else %><%= gettext "To accept this invitation, head over to the profile's admin page." %><% end %>
<%= if @follower.type == :Application do %><%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/relays/followers" %><% else %><%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/profiles/#{@follower.id}" %><% end %>
<%= if @follower.type == :Application do %><%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/instances/%{name}" %><% else %><%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/profiles/#{@follower.id}" %><% end %>

View file

@ -2368,11 +2368,6 @@ msgstr "Networking"
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:96
msgid "Party"
msgstr "Party"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:100
msgid "Performing & Visual Arts"
@ -2398,16 +2393,63 @@ msgstr "Wissenschaft & Technologie"
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:124
msgid "Sports"
msgid "Ausflug"
msgstr "Ausflug"
msgid "Ausstellung"
msgstr "Ausstellung"
msgid "Demonstration"
msgstr "Demonstration"
msgid "Einweihung"
msgstr "Einweihung"
msgid "Filmvorführung"
msgstr "Filmvorführung"
msgid "Fußball"
msgstr "Fußball"
msgid "Gedenken"
msgstr "Gedenken"
msgid "Infostand"
msgstr "Infostand"
msgid "Infoveranstaltung"
msgstr "Infoveranstaltung"
msgid "Künstlerisches"
msgstr "Künstlerisches"
msgid "Kneipe"
msgstr "Kneipe"
msgid "Konzert"
msgstr "Konzert"
msgid "KüFa"
msgstr "KüFa"
msgid "Lesung"
msgstr "Lesung"
msgid "Party"
msgstr "Party"
msgid "Sport"
msgstr "Sport"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:128
msgid "Theatre"
msgid "Theater"
msgstr "Theater"
msgid "Verhandlung"
msgstr "Verhandlung"
msgid "Workshop"
msgstr "Workshop"
#, elixir-autogen, elixir-format
#: lib/web/templates/email/participation/event_card.text.eex:9
msgid "Read more: %{url}"

View file

@ -1990,11 +1990,6 @@ msgstr ""
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:96
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:100
msgid "Performing & Visual Arts"
@ -2020,15 +2015,62 @@ msgstr ""
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:124
msgid "Sports"
msgstr ""
msgid "Ausflug"
msgstr "Excursion"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:128
msgid "Theatre"
msgstr ""
msgid "Ausstellung"
msgstr "Exhibition"
msgid "Demonstration"
msgstr "Demonstration"
msgid "Einweihung"
msgstr "Inauguration"
msgid "Filmvorführung"
msgstr "Film screening"
msgid "Fußball"
msgstr "Football"
msgid "Gedenken"
msgstr "Remembrance"
msgid "Infostand"
msgstr "Infostand"
msgid "Infoveranstaltung"
msgstr "Info event"
msgid "Künstlerisches"
msgstr "Art related"
msgid "Kneipe"
msgstr "Bar"
msgid "Konzert"
msgstr "Concert"
msgid "KüFa"
msgstr "Kitchen for all"
msgid "Lesung"
msgstr "Reading"
msgid "Party"
msgstr "Party"
msgid "Sport"
msgstr "Sport"
msgid "Theater"
msgstr "Theater"
msgid "Verhandlung"
msgstr "Trial"
msgid "Workshop"
msgstr "Workshop"
#, elixir-autogen, elixir-format, fuzzy
#: lib/web/templates/email/participation/event_card.text.eex:9