diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex index 5370154..5380d0f 100644 --- a/lib/mv_web/live/member_live/form.ex +++ b/lib/mv_web/live/member_live/form.ex @@ -5,80 +5,212 @@ defmodule MvWeb.MemberLive.Form do ## Features - Create new members with personal information - Edit existing member details - - Manage custom properties (dynamic fields) + - Grouped sections for better organization + - Tab navigation (Payments tab disabled, coming soon) + - Manage custom properties (dynamic fields, displayed sorted by name) - Real-time validation with visual feedback - - Link/unlink user accounts - ## Form Fields - **Required:** - - first_name, last_name, email - - **Optional:** - - phone_number, address fields (city, street, house_number, postal_code) - - join_date, exit_date - - paid status - - notes - - ## Custom Field Values - Members can have dynamic custom field values defined by CustomFields. - The form dynamically renders inputs based on available CustomFields. + ## Form Sections + - Personal Data: Name, address, contact information, membership dates, notes + - Custom Fields: Dynamic fields in uniform grid layout (displayed sorted by name) + - Payment Data: Mockup section (not editable) ## Events - `validate` - Real-time form validation - `save` - Submit form (create or update member) - - Custom field value management events for adding/removing custom fields """ use MvWeb, :live_view @impl true def render(assigns) do + # Sort custom fields by name for display only + sorted_custom_fields = Enum.sort_by(assigns.custom_fields, & &1.name) + assigns = assign(assigns, :sorted_custom_fields, sorted_custom_fields) + ~H""" - <.header> - {@page_title} - <:subtitle> - {gettext("Fields marked with an asterisk (*) cannot be empty.")} - - - <.form for={@form} id="member-form" phx-change="validate" phx-submit="save"> - <.input field={@form[:first_name]} label={gettext("First Name")} required /> - <.input field={@form[:last_name]} label={gettext("Last Name")} required /> - <.input field={@form[:email]} label={gettext("Email")} required type="email" /> - <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" /> - <.input field={@form[:phone_number]} label={gettext("Phone Number")} /> - <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" /> - <.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" /> - <.input field={@form[:notes]} label={gettext("Notes")} /> - <.input field={@form[:city]} label={gettext("City")} /> - <.input field={@form[:street]} label={gettext("Street")} /> - <.input field={@form[:house_number]} label={gettext("House Number")} /> - <.input field={@form[:postal_code]} label={gettext("Postal Code")} /> + <%!-- Header with Back button, Name display, and Save button --%> +
+ <.button navigate={return_path(@return_to, @member)} type="button"> + <.icon name="hero-arrow-left" class="size-4" /> + {gettext("Back")} + -

{gettext("Custom Field Values")}

- <.inputs_for :let={f_custom_field_value} field={@form[:custom_field_values]}> - <% type = - Enum.find(@custom_fields, &(&1.id == f_custom_field_value[:custom_field_id].value)) %> - <.inputs_for :let={value_form} field={f_custom_field_value[:value]}> - <% input_type = - cond do - type && type.value_type == :boolean -> "checkbox" - type && type.value_type == :date -> :date - true -> :text - end %> - <.input field={value_form[:value]} label={type && type.name} type={input_type} /> - - - +

+ <%= if @member do %> + {@member.first_name} {@member.last_name} + <% else %> + {gettext("New Member")} + <% end %> +

- <.button phx-disable-with={gettext("Saving...")} variant="primary"> - {gettext("Save Member")} - - <.button navigate={return_path(@return_to, @member)}>{gettext("Cancel")} + <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit"> + {gettext("Save")} + +
+ + <%!-- Tab Navigation --%> +
+ + +
+ + <%!-- Personal Data and Custom Fields Row --%> +
+ <%!-- Personal Data Section --%> +
+ <.form_section title={gettext("Personal Data")}> +
+ <%!-- Name Row --%> +
+
+ <.input field={@form[:first_name]} label={gettext("First Name")} required /> +
+
+ <.input field={@form[:last_name]} label={gettext("Last Name")} required /> +
+
+ + <%!-- Address Row --%> +
+
+ <.input field={@form[:street]} label={gettext("Street")} /> +
+
+ <.input field={@form[:house_number]} label={gettext("Nr.")} /> +
+
+ <.input field={@form[:postal_code]} label={gettext("Postal Code")} /> +
+
+ <.input field={@form[:city]} label={gettext("City")} /> +
+
+ + <%!-- Email --%> +
+ <.input field={@form[:email]} label={gettext("Email")} required type="email" /> +
+ + <%!-- Phone --%> +
+ <.input field={@form[:phone_number]} label={gettext("Phone")} type="tel" /> +
+ + <%!-- Membership Dates Row --%> +
+
+ <.input field={@form[:join_date]} label={gettext("Join Date")} type="date" /> +
+
+ <.input field={@form[:exit_date]} label={gettext("Exit Date")} type="date" /> +
+
+ + <%!-- Notes --%> +
+ <.input field={@form[:notes]} label={gettext("Notes")} type="textarea" /> +
+
+ +
+ + <%!-- Custom Fields Section --%> + <%= if Enum.any?(@custom_fields) do %> +
+ <.form_section title={gettext("Custom Fields")}> +
+ <%!-- Render in sorted order by finding the form for each sorted custom field --%> + <%= for cf <- @sorted_custom_fields do %> + <.inputs_for :let={f_cfv} field={@form[:custom_field_values]}> + <%= if f_cfv[:custom_field_id].value == cf.id do %> +
+ <.inputs_for :let={value_form} field={f_cfv[:value]}> + <.input + field={value_form[:value]} + label={cf.name} + type={custom_field_input_type(cf.value_type)} + /> + + +
+ <% end %> + + <% end %> +
+ +
+ <% end %> +
+ + <%!-- Payment Data Section (Mockup) --%> +
+ <.form_section title={gettext("Payment Data")}> + + +
+
+ + +
+
+ +
+ + +
+
+
+ <.input field={@form[:paid]} label={gettext("Paid")} type="checkbox" /> +
+
+ +
+ + <%!-- Bottom Action Buttons --%> +
+ <.button navigate={return_path(@return_to, @member)} type="button"> + {gettext("Cancel")} + + <.button phx-disable-with={gettext("Saving...")} variant="primary" type="submit"> + {gettext("Save Member")} + +
""" @@ -106,8 +238,8 @@ defmodule MvWeb.MemberLive.Form do id -> Ash.get!(Mv.Membership.Member, id) end - action = if is_nil(member), do: "New", else: "Edit" - page_title = action <> " " <> "Member" + page_title = + if is_nil(member), do: gettext("Create Member"), else: gettext("Edit Member") {:ok, socket @@ -213,5 +345,37 @@ defmodule MvWeb.MemberLive.Form do end defp return_path("index", _member), do: ~p"/members" + defp return_path("show", nil), do: ~p"/members" defp return_path("show", member), do: ~p"/members/#{member.id}" + + # ----------------------------------------------------------------- + # Helper Components + # ----------------------------------------------------------------- + + # Renders a form section box with border and title. + attr :title, :string, required: true + slot :inner_block, required: true + + defp form_section(assigns) do + ~H""" +
+

{@title}

+
+ {render_slot(@inner_block)} +
+
+ """ + end + + # ----------------------------------------------------------------- + # Helper Functions for Custom Fields + # ----------------------------------------------------------------- + + # Returns input type for custom field based on value type + defp custom_field_input_type(:string), do: "text" + defp custom_field_input_type(:integer), do: "number" + defp custom_field_input_type(:boolean), do: "checkbox" + defp custom_field_input_type(:date), do: "date" + defp custom_field_input_type(:email), do: "email" + defp custom_field_input_type(_), do: "text" end diff --git a/lib/mv_web/live/member_live/show.ex b/lib/mv_web/live/member_live/show.ex index 7601f46..d84fca4 100644 --- a/lib/mv_web/live/member_live/show.ex +++ b/lib/mv_web/live/member_live/show.ex @@ -3,19 +3,16 @@ defmodule MvWeb.MemberLive.Show do LiveView for displaying a single member's details. ## Features - - Display all member information (personal, contact, address) - - Show linked user account (if exists) - - Display custom field values + - Display all member information in grouped sections + - Tab navigation for future features (Payments) + - Show custom field values with type-based formatting - Navigate to edit form - Return to member list - ## Displayed Information - - Basic: name, email, dates (join, exit) - - Contact: phone number - - Address: street, house number, postal code, city - - Status: paid flag - - Relationships: linked user account - - Custom: dynamic custom field values from CustomFields + ## Sections + - Personal Data: Name, address, contact information, membership dates, notes + - Custom Fields: Dynamic fields in uniform grid layout (sorted by name) + - Payment Data: Mockup section with placeholder data ## Navigation - Back to member list @@ -23,69 +20,155 @@ defmodule MvWeb.MemberLive.Show do """ use MvWeb, :live_view import Ash.Query - alias MvWeb.Helpers.DateFormatter @impl true def render(assigns) do ~H""" - <.header> - {@member.first_name} {@member.last_name} - <:subtitle>{gettext("This is a member record from your database.")} + <%!-- Header with Back button, Name, and Edit button --%> +
+ <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}> + <.icon name="hero-arrow-left" class="size-4" /> + {gettext("Back")} + - <:actions> - <.button navigate={~p"/members"} aria-label={gettext("Back to members list")}> - <.icon name="hero-arrow-left" /> - {gettext("Back to members list")} - - <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}> - <.icon name="hero-pencil-square" /> {gettext("Edit Member")} - - - +

+ {@member.first_name} {@member.last_name} +

- <.list> - <:item title={gettext("Id")}>{@member.id} - <:item title={gettext("First Name")}>{@member.first_name} - <:item title={gettext("Last Name")}>{@member.last_name} - <:item title={gettext("Email")}>{@member.email} - <:item title={gettext("Paid")}> - {if @member.paid, do: gettext("Yes"), else: gettext("No")} - - <:item title={gettext("Phone Number")}>{@member.phone_number} - <:item title={gettext("Join Date")}>{DateFormatter.format_date(@member.join_date)} - <:item title={gettext("Exit Date")}>{DateFormatter.format_date(@member.exit_date)} - <:item title={gettext("Notes")}>{@member.notes} - <:item title={gettext("City")}>{@member.city} - <:item title={gettext("Street")}>{@member.street} - <:item title={gettext("House Number")}>{@member.house_number} - <:item title={gettext("Postal Code")}>{@member.postal_code} - <:item title={gettext("Linked User")}> - <%= if @member.user do %> - <.link - navigate={~p"/users/#{@member.user}"} - class="text-blue-600 hover:text-blue-800 underline" - > - <.icon name="hero-user" class="h-4 w-4 inline mr-1" /> - {@member.user.email} - - <% else %> - {gettext("No user linked")} - <% end %> - - + <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}> + {gettext("Edit Member")} + +
-

{gettext("Custom Field Values")}

- <.generic_list items={ - Enum.map(@member.custom_field_values, fn cfv -> - { - # name - cfv.custom_field && cfv.custom_field.name, - # value - format_custom_field_value(cfv) - } - end) - } /> + <%!-- Tab Navigation --%> +
+ + +
+ + <%!-- Personal Data and Custom Fields Row --%> +
+ <%!-- Personal Data Section --%> +
+ <.section_box title={gettext("Personal Data")}> +
+ <%!-- Name Row --%> +
+ <.data_field label={gettext("First Name")} value={@member.first_name} class="w-48" /> + <.data_field label={gettext("Last Name")} value={@member.last_name} class="w-48" /> +
+ + <%!-- Address --%> +
+ <.data_field label={gettext("Address")} value={format_address(@member)} /> +
+ + <%!-- Email --%> +
+ <.data_field label={gettext("Email")}> + + {@member.email} + + +
+ + <%!-- Phone --%> +
+ <.data_field label={gettext("Phone")} value={@member.phone_number} /> +
+ + <%!-- Membership Dates Row --%> +
+ <.data_field + label={gettext("Join Date")} + value={format_date(@member.join_date)} + class="w-28" + /> + <.data_field + label={gettext("Exit Date")} + value={format_date(@member.exit_date)} + class="w-28" + /> +
+ + <%!-- Linked User --%> +
+ <.data_field label={gettext("Linked User")}> + <%= if @member.user do %> + <.link + navigate={~p"/users/#{@member.user}"} + class="text-blue-700 hover:text-blue-800 underline inline-flex items-center gap-1" + > + <.icon name="hero-user" class="size-4" /> + {@member.user.email} + + <% else %> + {gettext("No user linked")} + <% end %> + +
+ + <%!-- Notes --%> + <%= if @member.notes && String.trim(@member.notes) != "" do %> +
+ <.data_field label={gettext("Notes")}> +

{@member.notes}

+ +
+ <% end %> +
+ +
+ + <%!-- Custom Fields Section --%> + <%= if Enum.any?(@member.custom_field_values) do %> +
+ <.section_box title={gettext("Custom Fields")}> +
+ <%= for cfv <- sort_custom_field_values(@member.custom_field_values) do %> + <% custom_field = cfv.custom_field %> + <% value_type = custom_field && custom_field.value_type %> + <.data_field label={custom_field && custom_field.name}> + {format_custom_field_value(cfv.value, value_type)} + + <% end %> +
+ +
+ <% end %> +
+ + <%!-- Payment Data Section (Mockup) --%> +
+ <.section_box title={gettext("Payment Data")}> + + +
+ <.data_field label={gettext("Contribution")} value="72 €" class="w-24" /> + <.data_field label={gettext("Payment Cycle")} value={gettext("monthly")} class="w-28" /> + <.data_field label={gettext("Paid")} class="w-24"> + <%= if @member.paid do %> + {gettext("Paid")} + <% else %> + {gettext("Pending")} + <% end %> + +
+ +
""" end @@ -113,16 +196,119 @@ defmodule MvWeb.MemberLive.Show do defp page_title(:show), do: gettext("Show Member") defp page_title(:edit), do: gettext("Edit Member") - defp format_custom_field_value(cfv) do - value = - case cfv.value do - %{value: v} -> v - v -> v - end + # ----------------------------------------------------------------- + # Helper Components + # ----------------------------------------------------------------- - case value do - %Date{} = date -> DateFormatter.format_date(date) - other -> other + # Renders a section box with border and title. + attr :title, :string, required: true + slot :inner_block, required: true + + defp section_box(assigns) do + ~H""" +
+

{@title}

+
+ {render_slot(@inner_block)} +
+
+ """ + end + + # Renders a labeled data field. + attr :label, :string, required: true + attr :value, :string, default: nil + attr :class, :string, default: "" + slot :inner_block + + defp data_field(assigns) do + ~H""" +
+
{@label}
+
+ <%= if @inner_block != [] do %> + {render_slot(@inner_block)} + <% else %> + {display_value(@value)} + <% end %> +
+
+ """ + end + + # ----------------------------------------------------------------- + # Helper Functions + # ----------------------------------------------------------------- + + defp display_value(nil), do: "" + defp display_value(""), do: "" + defp display_value(value), do: value + + defp format_address(member) do + street_part = + [member.street, member.house_number] + |> Enum.filter(&(&1 && &1 != "")) + |> Enum.join(" ") + + city_part = + [member.postal_code, member.city] + |> Enum.filter(&(&1 && &1 != "")) + |> Enum.join(" ") + + [street_part, city_part] + |> Enum.filter(&(&1 != "")) + |> Enum.join(", ") + |> case do + "" -> nil + address -> address end end + + defp format_date(nil), do: nil + + defp format_date(%Date{} = date) do + Calendar.strftime(date, "%d.%m.%Y") + end + + defp format_date(date), do: to_string(date) + + # Sorts custom field values by custom field name + defp sort_custom_field_values(custom_field_values) do + Enum.sort_by(custom_field_values, fn cfv -> + (cfv.custom_field && cfv.custom_field.name) || "" + end) + end + + # Formats custom field value based on type + defp format_custom_field_value(%Ash.Union{value: value, type: type}, _expected_type) do + format_custom_field_value(value, type) + end + + defp format_custom_field_value(nil, _type), do: "—" + + defp format_custom_field_value(value, :boolean) when is_boolean(value) do + if value, do: gettext("Yes"), else: gettext("No") + end + + defp format_custom_field_value(%Date{} = date, :date) do + Calendar.strftime(date, "%d.%m.%Y") + end + + defp format_custom_field_value(value, :email) when is_binary(value) do + assigns = %{email: value} + + ~H""" + {@email} + """ + end + + defp format_custom_field_value(value, :integer) when is_integer(value) do + Integer.to_string(value) + end + + defp format_custom_field_value(value, _type) when is_binary(value) do + if String.trim(value) == "", do: "—", else: value + end + + defp format_custom_field_value(value, _type), do: to_string(value) end diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 607ad9e..ac40975 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -28,9 +28,8 @@ msgstr "Bist du sicher?" msgid "Attempting to reconnect" msgstr "Verbindung wird wiederhergestellt" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "Stadt" @@ -48,18 +47,19 @@ msgstr "Löschen" #: lib/mv_web/live/user_live/index.html.heex:65 #, elixir-autogen, elixir-format msgid "Edit" -msgstr "Bearbeiten" +msgstr "Bearbeite" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/form.ex:242 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "Mitglied bearbeiten" #: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/show.ex:49 @@ -67,25 +67,26 @@ msgstr "Mitglied bearbeiten" msgid "Email" msgstr "E-Mail" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "Vorname" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "Beitrittsdatum" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "Nachname" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" @@ -112,22 +113,20 @@ msgstr "Keine Internetverbindung gefunden" msgid "close" msgstr "schließen" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "Austrittsdatum" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "Hausnummer" #: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "Notizen" @@ -136,28 +135,26 @@ msgstr "Notizen" #: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/contribution_period_live/show.ex:186 #: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "Bezahlt" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "Telefonnummer" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "Postleitzahl" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "Mitglied speichern" @@ -165,58 +162,48 @@ msgstr "Mitglied speichern" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 #: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Speichern..." -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "Straße" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "ID" - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "Nein" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "Mitglied anzeigen" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "Dies ist ein Mitglied aus deiner Datenbank." - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "Ja" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "erstellt" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "aktualisiert" @@ -226,7 +213,7 @@ msgstr "aktualisiert" msgid "Incorrect email or password" msgstr "Falsche E-Mail oder Passwort" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "Mitglied %{action} erfolgreich" @@ -259,7 +246,7 @@ msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/form.ex:208 #: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" @@ -503,7 +490,7 @@ msgstr "Benutzer*in wird ohne Passwort erstellt. Aktivieren Sie 'Passwort setzen msgid "Linked Member" msgstr "Verknüpftes Mitglied" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "Verknüpfte*r Benutzer*in" @@ -514,13 +501,12 @@ msgstr "Verknüpfte*r Benutzer*in" msgid "No member linked" msgstr "Kein Mitglied verknüpft" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "Keine*r Benutzer*in verknüpft" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "Zurück zur Mitgliederliste" @@ -601,12 +587,6 @@ msgstr "Diese E-Mail-Adresse ist bereits mit einem anderen OIDC-Konto verknüpft msgid "Choose a custom field" msgstr "Wähle ein Benutzerdefiniertes Feld" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "Benutzerdefinierte Feldwerte" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -643,6 +623,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "Verwende dieses Formular, um Benutzerdefinierte Felder in deiner Datenbank zu verwalten." #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format msgid "Custom Fields" msgstr "Benutzerdefinierte Felder" @@ -813,11 +795,6 @@ msgstr "Im E-Mail-Programm öffnen" msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "Felder, die mit einem Sternchen (*) markiert sind, dürfen nicht leer bleiben." - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -848,411 +825,507 @@ msgstr "Nicht bezahlt" msgid "Payment filter" msgstr "Zahlungsfilter" +#: lib/mv_web/live/member_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Address" +msgstr "Adresse" + +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 +#, elixir-autogen, elixir-format +msgid "Back" +msgstr "Zurück" + +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 +#, elixir-autogen, elixir-format +msgid "Coming soon" +msgstr "Demnächst verfügbar" + +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Contact Data" +msgstr "Kontaktdaten" + +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 +#, elixir-autogen, elixir-format +msgid "Contribution" +msgstr "Beitrag" + +#: lib/mv_web/live/member_live/form.ex:94 +#, elixir-autogen, elixir-format +msgid "Nr." +msgstr "Nr." + +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format +msgid "Payment Cycle" +msgstr "Zahlungszyklus" + +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 +#, elixir-autogen, elixir-format +msgid "Payment Data" +msgstr "Beitragsdaten" + +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 +#, elixir-autogen, elixir-format +msgid "Payments" +msgstr "Zahlungen" + +#: lib/mv_web/live/member_live/show.ex:166 +#, elixir-autogen, elixir-format +msgid "Pending" +msgstr "Ausstehend" + +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 +#, elixir-autogen, elixir-format +msgid "Personal Data" +msgstr "Persönliche Daten" + +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 +#, elixir-autogen, elixir-format +msgid "Phone" +msgstr "Telefon" + +#: lib/mv_web/live/member_live/form.ex:49 +#, elixir-autogen, elixir-format +msgid "Save" +msgstr "Speichern" + +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 +#, elixir-autogen, elixir-format +msgid "This data is for demonstration purposes only (mockup)." +msgstr "Diese Daten dienen nur zu Demonstrationszwecken (Mockup)." + +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format +msgid "monthly" +msgstr "monatlich" + +#: lib/mv_web/live/member_live/form.ex:194 +#, elixir-autogen, elixir-format +msgid "yearly" +msgstr "jährlich" + +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "Mitglied erstellen" + #: lib/mv_web/live/contribution_period_live/show.ex:107 #, elixir-autogen, elixir-format msgid "%{count} period selected" msgid_plural "%{count} periods selected" -msgstr[0] "%{count} Beiträge ausgewählt" -msgstr[1] "%{count} Beiträge ausgewählt" +msgstr[0] "" +msgstr[1] "" #: lib/mv_web/live/contribution_type_live/index.ex:113 #, elixir-autogen, elixir-format msgid "About Contribution Types" -msgstr "Über Beitragsarten" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:138 #: lib/mv_web/live/contribution_type_live/index.ex:53 #, elixir-autogen, elixir-format msgid "Amount" -msgstr "Betrag" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:48 #, elixir-autogen, elixir-format msgid "Back to Settings" -msgstr "Zurück zu Einstellungen" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:124 #, elixir-autogen, elixir-format msgid "Can be changed at any time. Amount changes affect future periods only." -msgstr "Kann jederzeit geändert werden. Betragsänderungen wirken sich nur auf zukünftige Beiträge aus." +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:77 #, elixir-autogen, elixir-format msgid "Cannot delete - members assigned" -msgstr "Löschen nicht möglich - Mitglieder zugewiesen" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:83 #, elixir-autogen, elixir-format msgid "Change Contribution Type" -msgstr "Beitragsart ändern" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:42 #, elixir-autogen, elixir-format msgid "Configure global settings for membership contributions." -msgstr "Globale Einstellungen für Mitgliedsbeiträge konfigurieren." +msgstr "" #: lib/mv_web/components/layouts/navbar.ex:34 #: lib/mv_web/live/contribution_settings_live.ex:27 #: lib/mv_web/live/contribution_settings_live.ex:40 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Settings" -msgstr "Beitragseinstellungen" +msgstr "Beitrag" #: lib/mv_web/live/contribution_period_live/show.ex:62 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Start" -msgstr "Beitragsbeginn" +msgstr "Beitrag" #: lib/mv_web/components/layouts/navbar.ex:32 #: lib/mv_web/live/contribution_type_live/index.ex:25 #: lib/mv_web/live/contribution_type_live/index.ex:36 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Types" -msgstr "Beitragsarten" +msgstr "Beitrag" #: lib/mv_web/live/contribution_settings_live.ex:224 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution start" -msgstr "Beitragsbeginn" +msgstr "Beitrag" #: lib/mv_web/live/contribution_period_live/show.ex:41 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution type" -msgstr "Beitragsart" +msgstr "Beitrag" #: lib/mv_web/live/contribution_type_live/index.ex:117 #, elixir-autogen, elixir-format msgid "Contribution types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." -msgstr "Beitragsarten definieren verschiedene Mitgliedsbeitragsstrukturen. Jede Art hat ein festes Intervall (monatlich, quartalsweise, halbjährlich, jährlich), das nach der Erstellung nicht mehr geändert werden kann." +msgstr "" #: lib/mv_web/components/layouts/navbar.ex:30 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contributions" -msgstr "Beiträge" +msgstr "Beitrag" #: lib/mv_web/live/contribution_period_live/show.ex:39 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contributions for %{name}" -msgstr "Beiträge für %{name}" +msgstr "Beitrag" #: lib/mv_web/live/contribution_period_live/show.ex:159 #, elixir-autogen, elixir-format msgid "Current" -msgstr "Aktuell" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:60 #, elixir-autogen, elixir-format msgid "Default Contribution Type" -msgstr "Standard-Beitragsart" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:133 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Deletion" -msgstr "Löschung" +msgstr "Löschen" #: lib/mv_web/live/contribution_settings_live.ex:173 #, elixir-autogen, elixir-format msgid "Example: Member Contribution View" -msgstr "Beispiel: Mitglieder-Beitragsansicht" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:113 #, elixir-autogen, elixir-format msgid "Examples" -msgstr "Beispiele" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:262 #: lib/mv_web/live/contribution_type_live/index.ex:172 #, elixir-autogen, elixir-format msgid "Family" -msgstr "Familie" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:128 #, elixir-autogen, elixir-format msgid "Fixed after creation. Members can only switch between types with the same interval." -msgstr "Nach der Erstellung unveränderlich. Mitglieder können nur zwischen Arten mit demselben Intervall wechseln." +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:228 #, elixir-autogen, elixir-format msgid "Generated periods" -msgstr "Generierte Beiträge" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:52 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Global Settings" -msgstr "Globale Einstellungen" +msgstr "Vereinsdaten" #: lib/mv_web/live/contribution_period_live/show.ex:343 #: lib/mv_web/live/contribution_settings_live.ex:275 #: lib/mv_web/live/contribution_type_live/index.ex:203 #, elixir-autogen, elixir-format msgid "Half-yearly" -msgstr "Halbjährlich" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:181 #, elixir-autogen, elixir-format msgid "Half-yearly contribution for supporting members" -msgstr "Halbjährlicher Beitrag für Fördermitglieder" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:87 #: lib/mv_web/live/contribution_type_live/index.ex:188 #, elixir-autogen, elixir-format msgid "Honorary" -msgstr "Ehrenmitglied" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:85 #, elixir-autogen, elixir-format msgid "Include joining period" -msgstr "Zahlt ab Zeitpunkt des Eintritts" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:137 #: lib/mv_web/live/contribution_type_live/index.ex:57 #: lib/mv_web/live/contribution_type_live/index.ex:127 #, elixir-autogen, elixir-format msgid "Interval" -msgstr "Intervall" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:220 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Joining date" -msgstr "Eintrittsdatum" +msgstr "Beitrittsdatum" #: lib/mv_web/live/contribution_period_live/show.ex:331 #, elixir-autogen, elixir-format msgid "Joining year - reduced to 0" -msgstr "Eintrittsjahr - auf 0 reduziert" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:38 #, elixir-autogen, elixir-format msgid "Manage contribution types for membership fees." -msgstr "Beitragsarten für Mitgliedsbeiträge verwalten." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:116 #, elixir-autogen, elixir-format msgid "Mark as Paid" -msgstr "Als bezahlt markieren" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:120 #, elixir-autogen, elixir-format msgid "Mark as Suspended" -msgstr "Als ausgesetzt markieren" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Mark as Unpaid" -msgstr "Als unbezahlt markieren" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:26 #, elixir-autogen, elixir-format msgid "Member Contributions" -msgstr "Mitgliedsbeiträge" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:122 #, elixir-autogen, elixir-format msgid "Member pays for the year they joined" -msgstr "Mitglied zahlt für das Eintrittsjahr" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:155 #, elixir-autogen, elixir-format msgid "Member pays from the joining month" -msgstr "Mitglied zahlt ab dem Eintrittsmonat" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:144 #, elixir-autogen, elixir-format msgid "Member pays from the next full quarter" -msgstr "Mitglied zahlt ab dem nächsten vollen Quartal" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:133 #, elixir-autogen, elixir-format msgid "Member pays from the next full year" -msgstr "Mitglied zahlt ab dem nächsten vollen Jahr" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:43 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Member since" -msgstr "Mitglied seit" +msgstr "Mitglieder" #: lib/mv_web/live/contribution_period_live/show.ex:92 #, elixir-autogen, elixir-format msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." -msgstr "Mitglieder können nur zwischen Beitragsarten mit demselben Zahlungsintervall wechseln (z.B. jährlich zu jährlich). Dies verhindert komplexe Periodenüberschneidungen." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:341 #: lib/mv_web/live/contribution_settings_live.ex:273 #: lib/mv_web/live/contribution_type_live/index.ex:201 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Monthly" -msgstr "Monatlich" +msgstr "monatlich" #: lib/mv_web/live/contribution_settings_live.ex:150 #, elixir-autogen, elixir-format msgid "Monthly Interval - Joining Period Included" -msgstr "Monatliches Intervall - Eintrittsperiode eingeschlossen" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:165 #, elixir-autogen, elixir-format msgid "Monthly fee for students and trainees" -msgstr "Monatlicher Beitrag für Studierende und Auszubildende" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:123 #, elixir-autogen, elixir-format msgid "Name & Amount" -msgstr "Name & Betrag" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:42 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "New Contribution Type" -msgstr "Neue Beitragsart" +msgstr "Beitrag" #: lib/mv_web/live/contribution_type_live/index.ex:189 #, elixir-autogen, elixir-format msgid "No fee for honorary members" -msgstr "Kein Beitrag für Ehrenmitglieder" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:134 #, elixir-autogen, elixir-format msgid "Only possible if no members are assigned to this type." -msgstr "Nur möglich, wenn keine Mitglieder dieser Art zugewiesen sind." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:70 #, elixir-autogen, elixir-format msgid "Open Contributions" -msgstr "Offene Beiträge" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:301 #, elixir-autogen, elixir-format msgid "Paid via bank transfer" -msgstr "Per Überweisung bezahlt" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:225 #: lib/mv_web/live/contribution_settings_live.ex:197 #: lib/mv_web/live/contribution_type_live/index.ex:97 #, elixir-autogen, elixir-format msgid "Preview Mockup" -msgstr "Vorschau" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:342 #: lib/mv_web/live/contribution_settings_live.ex:274 #: lib/mv_web/live/contribution_type_live/index.ex:202 #, elixir-autogen, elixir-format msgid "Quarterly" -msgstr "Quartalsweise" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:139 #, elixir-autogen, elixir-format msgid "Quarterly Interval - Joining Period Excluded" -msgstr "Quartalsintervall - Eintrittsperiode ausgeschlossen" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:173 #, elixir-autogen, elixir-format msgid "Quarterly fee for family memberships" -msgstr "Quartalsbeitrag für Familienmitgliedschaften" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:86 #: lib/mv_web/live/contribution_settings_live.ex:250 #: lib/mv_web/live/contribution_type_live/index.ex:156 #, elixir-autogen, elixir-format msgid "Reduced" -msgstr "Ermäßigt" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:157 #, elixir-autogen, elixir-format msgid "Reduced fee for unemployed, pensioners, or low income" -msgstr "Ermäßigter Beitrag für Arbeitslose, Rentner*innen oder Geringverdienende" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:275 #: lib/mv_web/live/contribution_settings_live.ex:244 #: lib/mv_web/live/contribution_type_live/index.ex:148 #, elixir-autogen, elixir-format msgid "Regular" -msgstr "Regulär" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:204 #, elixir-autogen, elixir-format msgid "Reopen" -msgstr "Wieder öffnen" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:176 #, elixir-autogen, elixir-format msgid "See how the contribution periods will be displayed for an individual member. This example shows Maria Weber with multiple contribution periods." -msgstr "Sehen Sie, wie die Beitragsperioden für ein einzelnes Mitglied angezeigt werden. Dieses Beispiel zeigt Maria Weber mit mehreren Beitragsperioden." +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:149 #, elixir-autogen, elixir-format msgid "Standard membership fee for regular members" -msgstr "Standard-Mitgliedsbeitrag für reguläre Mitglieder" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:139 #, elixir-autogen, elixir-format msgid "Status" -msgstr "Status" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:256 #: lib/mv_web/live/contribution_type_live/index.ex:164 #, elixir-autogen, elixir-format msgid "Student" -msgstr "Student*in" +msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:180 #, elixir-autogen, elixir-format msgid "Supporting Member" -msgstr "Fördermitglied" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:195 #, elixir-autogen, elixir-format msgid "Suspend" -msgstr "Aussetzen" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:259 #, elixir-autogen, elixir-format msgid "Suspended" -msgstr "Ausgesetzt" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:69 #, elixir-autogen, elixir-format msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." -msgstr "Diese Beitragsart wird automatisch allen neuen Mitgliedern zugewiesen. Kann pro Mitglied individuell geändert werden." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:227 #: lib/mv_web/live/contribution_settings_live.ex:199 #: lib/mv_web/live/contribution_type_live/index.ex:99 #, elixir-autogen, elixir-format msgid "This page is not functional and only displays the planned features." -msgstr "Diese Seite ist nicht funktional und zeigt nur die geplanten Funktionen." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:136 #, elixir-autogen, elixir-format msgid "Time Period" -msgstr "Zeitraum" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:66 #, elixir-autogen, elixir-format msgid "Total Contributions" -msgstr "Beiträge gesamt" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:250 #, elixir-autogen, elixir-format msgid "Unpaid" -msgstr "Unbezahlt" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:183 #, elixir-autogen, elixir-format msgid "View Example Member" -msgstr "Beispielmitglied ansehen" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:90 #, elixir-autogen, elixir-format msgid "When active: Members pay from the period of their joining." -msgstr "Wenn aktiv: Mitglieder zahlen ab der Periode ihres Eintritts." +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:93 #, elixir-autogen, elixir-format msgid "When inactive: Members pay from the next full period after joining." -msgstr "Wenn inaktiv: Mitglieder zahlen ab der nächsten vollen Periode nach dem Eintritt." +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Why are not all contribution types shown?" -msgstr "Warum werden nicht alle Beitragsarten angezeigt?" +msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:85 #: lib/mv_web/live/contribution_period_live/show.ex:86 @@ -1260,31 +1333,30 @@ msgstr "Warum werden nicht alle Beitragsarten angezeigt?" #: lib/mv_web/live/contribution_period_live/show.ex:344 #: lib/mv_web/live/contribution_settings_live.ex:276 #: lib/mv_web/live/contribution_type_live/index.ex:204 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Yearly" -msgstr "Jährlich" +msgstr "jährlich" #: lib/mv_web/live/contribution_settings_live.ex:128 #, elixir-autogen, elixir-format msgid "Yearly Interval - Joining Period Excluded" -msgstr "Jährliches Intervall - Eintrittsperiode ausgeschlossen" +msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:117 #, elixir-autogen, elixir-format msgid "Yearly Interval - Joining Period Included" -msgstr "Jährliches Intervall - Eintrittsperiode eingeschlossen" - -#~ #: lib/mv_web/live/member_live/form.ex:48 -#~ #: lib/mv_web/live/member_live/show.ex:51 -#~ #, elixir-autogen, elixir-format -#~ msgid "Birth Date" -#~ msgstr "Geburtsdatum" +msgstr "" #~ #: lib/mv_web/live/user_live/show.ex:49 #~ #, elixir-autogen, elixir-format #~ msgid "ID" #~ msgstr "ID" +#~ #: lib/mv_web/live/member_live/show.ex:47 +#~ #, elixir-autogen, elixir-format +#~ msgid "Id" +#~ msgstr "ID" + #~ #: lib/mv_web/live/user_live/show.ex:51 #~ #, elixir-autogen, elixir-format #~ msgid "Not set" @@ -1295,3 +1367,8 @@ msgstr "Jährliches Intervall - Eintrittsperiode eingeschlossen" #~ #, elixir-autogen, elixir-format #~ msgid "OIDC ID" #~ msgstr "OIDC ID" + +#~ #: lib/mv_web/live/member_live/show.ex:33 +#~ #, elixir-autogen, elixir-format +#~ msgid "This is a member record from your database." +#~ msgstr "Dies ist ein Mitglied aus deiner Datenbank." diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index b66c5ed..731f1be 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -29,9 +29,8 @@ msgstr "" msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "" @@ -51,16 +50,17 @@ msgstr "" msgid "Edit" msgstr "" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/form.ex:242 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/show.ex:49 @@ -68,25 +68,26 @@ msgstr "" msgid "Email" msgstr "" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" @@ -113,22 +114,20 @@ msgstr "" msgid "close" msgstr "" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" @@ -137,28 +136,26 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/contribution_period_live/show.ex:186 #: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format msgid "Save Member" msgstr "" @@ -166,58 +163,48 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 #: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format msgid "Show Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -227,7 +214,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -260,7 +247,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/form.ex:208 #: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" @@ -504,7 +491,7 @@ msgstr "" msgid "Linked Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "" @@ -515,13 +502,12 @@ msgstr "" msgid "No member linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "" @@ -602,12 +588,6 @@ msgstr "" msgid "Choose a custom field" msgstr "" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -644,6 +624,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "" #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format msgid "Custom Fields" msgstr "" @@ -814,11 +796,6 @@ msgstr "" msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "" - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -849,6 +826,102 @@ msgstr "" msgid "Payment filter" msgstr "" +#: lib/mv_web/live/member_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Address" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 +#, elixir-autogen, elixir-format +msgid "Back" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 +#, elixir-autogen, elixir-format +msgid "Coming soon" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Contact Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 +#, elixir-autogen, elixir-format +msgid "Contribution" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:94 +#, elixir-autogen, elixir-format +msgid "Nr." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format +msgid "Payment Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 +#, elixir-autogen, elixir-format +msgid "Payment Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 +#, elixir-autogen, elixir-format +msgid "Payments" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex:166 +#, elixir-autogen, elixir-format +msgid "Pending" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 +#, elixir-autogen, elixir-format +msgid "Personal Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 +#, elixir-autogen, elixir-format +msgid "Phone" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:49 +#, elixir-autogen, elixir-format +msgid "Save" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 +#, elixir-autogen, elixir-format +msgid "This data is for demonstration purposes only (mockup)." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format +msgid "monthly" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:194 +#, elixir-autogen, elixir-format +msgid "yearly" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "" + #: lib/mv_web/live/contribution_period_live/show.ex:107 #, elixir-autogen, elixir-format msgid "%{count} period selected" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index ceee74a..3c9be04 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -29,9 +29,8 @@ msgstr "" msgid "Attempting to reconnect" msgstr "" -#: lib/mv_web/live/member_live/form.ex:53 +#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/index.html.heex:184 -#: lib/mv_web/live/member_live/show.ex:59 #, elixir-autogen, elixir-format msgid "City" msgstr "" @@ -51,16 +50,17 @@ msgstr "" msgid "Edit" msgstr "" -#: lib/mv_web/live/member_live/show.ex:42 -#: lib/mv_web/live/member_live/show.ex:114 +#: lib/mv_web/live/member_live/form.ex:242 +#: lib/mv_web/live/member_live/show.ex:40 +#: lib/mv_web/live/member_live/show.ex:197 #, elixir-autogen, elixir-format msgid "Edit Member" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:58 -#: lib/mv_web/live/member_live/form.ex:47 +#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/index.html.heex:112 -#: lib/mv_web/live/member_live/show.ex:51 +#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/show.ex:49 @@ -68,25 +68,26 @@ msgstr "" msgid "Email" msgstr "" -#: lib/mv_web/live/member_live/form.ex:45 -#: lib/mv_web/live/member_live/show.ex:49 +#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/show.ex:64 #, elixir-autogen, elixir-format msgid "First Name" msgstr "" -#: lib/mv_web/live/member_live/form.ex:50 +#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/index.html.heex:220 -#: lib/mv_web/live/member_live/show.ex:56 +#: lib/mv_web/live/member_live/show.ex:93 #, elixir-autogen, elixir-format msgid "Join Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:46 -#: lib/mv_web/live/member_live/show.ex:50 +#: lib/mv_web/live/member_live/form.ex:84 +#: lib/mv_web/live/member_live/show.ex:65 #, elixir-autogen, elixir-format msgid "Last Name" msgstr "" +#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/index.html.heex:29 #, elixir-autogen, elixir-format msgid "New Member" @@ -113,22 +114,20 @@ msgstr "" msgid "close" msgstr "" -#: lib/mv_web/live/member_live/form.ex:51 -#: lib/mv_web/live/member_live/show.ex:57 +#: lib/mv_web/live/member_live/form.ex:120 +#: lib/mv_web/live/member_live/show.ex:98 #, elixir-autogen, elixir-format msgid "Exit Date" msgstr "" -#: lib/mv_web/live/member_live/form.ex:55 #: lib/mv_web/live/member_live/index.html.heex:148 -#: lib/mv_web/live/member_live/show.ex:61 #, elixir-autogen, elixir-format msgid "House Number" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:140 -#: lib/mv_web/live/member_live/form.ex:52 -#: lib/mv_web/live/member_live/show.ex:58 +#: lib/mv_web/live/member_live/form.ex:126 +#: lib/mv_web/live/member_live/show.ex:124 #, elixir-autogen, elixir-format msgid "Notes" msgstr "" @@ -137,28 +136,26 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/contribution_period_live/show.ex:186 #: lib/mv_web/live/contribution_period_live/show.ex:241 -#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/index.html.heex:229 -#: lib/mv_web/live/member_live/show.ex:52 +#: lib/mv_web/live/member_live/show.ex:162 +#: lib/mv_web/live/member_live/show.ex:164 #, elixir-autogen, elixir-format msgid "Paid" msgstr "" -#: lib/mv_web/live/member_live/form.ex:49 #: lib/mv_web/live/member_live/index.html.heex:202 -#: lib/mv_web/live/member_live/show.ex:55 #, elixir-autogen, elixir-format msgid "Phone Number" msgstr "" -#: lib/mv_web/live/member_live/form.ex:56 +#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/index.html.heex:166 -#: lib/mv_web/live/member_live/show.ex:62 #, elixir-autogen, elixir-format msgid "Postal Code" msgstr "" -#: lib/mv_web/live/member_live/form.ex:79 +#: lib/mv_web/live/member_live/form.ex:211 #, elixir-autogen, elixir-format, fuzzy msgid "Save Member" msgstr "" @@ -166,58 +163,48 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:66 #: lib/mv_web/live/custom_field_value_live/form.ex:74 #: lib/mv_web/live/global_settings_live.ex:55 -#: lib/mv_web/live/member_live/form.ex:78 +#: lib/mv_web/live/member_live/form.ex:48 +#: lib/mv_web/live/member_live/form.ex:210 #: lib/mv_web/live/user_live/form.ex:249 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" -#: lib/mv_web/live/member_live/form.ex:54 +#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/index.html.heex:130 -#: lib/mv_web/live/member_live/show.ex:60 #, elixir-autogen, elixir-format msgid "Street" msgstr "" -#: lib/mv_web/live/member_live/show.ex:48 -#, elixir-autogen, elixir-format -msgid "Id" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:62 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "No" msgstr "" -#: lib/mv_web/live/member_live/show.ex:113 +#: lib/mv_web/live/member_live/show.ex:196 #, elixir-autogen, elixir-format, fuzzy msgid "Show Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:34 -#, elixir-autogen, elixir-format -msgid "This is a member record from your database." -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index/formatter.ex:61 -#: lib/mv_web/live/member_live/show.ex:53 +#: lib/mv_web/live/member_live/show.ex:290 #, elixir-autogen, elixir-format msgid "Yes" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:110 #: lib/mv_web/live/custom_field_value_live/form.ex:233 -#: lib/mv_web/live/member_live/form.ex:137 +#: lib/mv_web/live/member_live/form.ex:269 #, elixir-autogen, elixir-format msgid "create" msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:111 #: lib/mv_web/live/custom_field_value_live/form.ex:234 -#: lib/mv_web/live/member_live/form.ex:138 +#: lib/mv_web/live/member_live/form.ex:270 #, elixir-autogen, elixir-format msgid "update" msgstr "" @@ -227,7 +214,7 @@ msgstr "" msgid "Incorrect email or password" msgstr "" -#: lib/mv_web/live/member_live/form.ex:144 +#: lib/mv_web/live/member_live/form.ex:276 #, elixir-autogen, elixir-format msgid "Member %{action} successfully" msgstr "" @@ -260,7 +247,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form.ex:69 #: lib/mv_web/live/custom_field_live/index.ex:120 #: lib/mv_web/live/custom_field_value_live/form.ex:77 -#: lib/mv_web/live/member_live/form.ex:81 +#: lib/mv_web/live/member_live/form.ex:208 #: lib/mv_web/live/user_live/form.ex:252 #, elixir-autogen, elixir-format msgid "Cancel" @@ -504,7 +491,7 @@ msgstr "User will be created without a password. Check 'Set Password' to add one msgid "Linked Member" msgstr "" -#: lib/mv_web/live/member_live/show.ex:63 +#: lib/mv_web/live/member_live/show.ex:106 #, elixir-autogen, elixir-format msgid "Linked User" msgstr "" @@ -515,13 +502,12 @@ msgstr "" msgid "No member linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:73 +#: lib/mv_web/live/member_live/show.ex:116 #, elixir-autogen, elixir-format msgid "No user linked" msgstr "" -#: lib/mv_web/live/member_live/show.ex:37 -#: lib/mv_web/live/member_live/show.ex:39 +#: lib/mv_web/live/member_live/show.ex:30 #, elixir-autogen, elixir-format msgid "Back to members list" msgstr "" @@ -602,12 +588,6 @@ msgstr "" msgid "Choose a custom field" msgstr "" -#: lib/mv_web/live/member_live/form.ex:58 -#: lib/mv_web/live/member_live/show.ex:78 -#, elixir-autogen, elixir-format -msgid "Custom Field Values" -msgstr "" - #: lib/mv_web/live/custom_field_value_live/form.ex:51 #, elixir-autogen, elixir-format msgid "Custom field" @@ -644,6 +624,8 @@ msgid "Use this form to manage custom_field records in your database." msgstr "" #: lib/mv_web/components/layouts/navbar.ex:26 +#: lib/mv_web/live/member_live/form.ex:135 +#: lib/mv_web/live/member_live/show.ex:136 #, elixir-autogen, elixir-format, fuzzy msgid "Custom Fields" msgstr "" @@ -814,11 +796,6 @@ msgstr "" msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgstr "" -#: lib/mv_web/live/member_live/form.ex:40 -#, elixir-autogen, elixir-format -msgid "Fields marked with an asterisk (*) cannot be empty." -msgstr "" - #: lib/mv_web/components/core_components.ex:206 #: lib/mv_web/components/core_components.ex:223 #: lib/mv_web/components/core_components.ex:250 @@ -849,6 +826,102 @@ msgstr "" msgid "Payment filter" msgstr "" +#: lib/mv_web/live/member_live/show.ex:70 +#, elixir-autogen, elixir-format +msgid "Address" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:37 +#: lib/mv_web/live/member_live/show.ex:32 +#, elixir-autogen, elixir-format +msgid "Back" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:65 +#: lib/mv_web/live/member_live/show.ex:50 +#, elixir-autogen, elixir-format +msgid "Coming soon" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:57 +#: lib/mv_web/live/member_live/show.ex:48 +#, elixir-autogen, elixir-format +msgid "Contact Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:175 +#: lib/mv_web/live/member_live/show.ex:160 +#, elixir-autogen, elixir-format +msgid "Contribution" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:94 +#, elixir-autogen, elixir-format +msgid "Nr." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:186 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format, fuzzy +msgid "Payment Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:166 +#: lib/mv_web/live/member_live/show.ex:153 +#, elixir-autogen, elixir-format +msgid "Payment Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:68 +#: lib/mv_web/live/member_live/show.ex:52 +#, elixir-autogen, elixir-format +msgid "Payments" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex:166 +#, elixir-autogen, elixir-format, fuzzy +msgid "Pending" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:76 +#: lib/mv_web/live/member_live/show.ex:60 +#, elixir-autogen, elixir-format +msgid "Personal Data" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:111 +#: lib/mv_web/live/member_live/show.ex:87 +#, elixir-autogen, elixir-format, fuzzy +msgid "Phone" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:49 +#, elixir-autogen, elixir-format, fuzzy +msgid "Save" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:169 +#: lib/mv_web/live/member_live/show.ex:156 +#, elixir-autogen, elixir-format +msgid "This data is for demonstration purposes only (mockup)." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:190 +#: lib/mv_web/live/member_live/show.ex:161 +#, elixir-autogen, elixir-format +msgid "monthly" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:194 +#, elixir-autogen, elixir-format +msgid "yearly" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex:242 +#, elixir-autogen, elixir-format +msgid "Create Member" +msgstr "" + #: lib/mv_web/live/contribution_period_live/show.ex:107 #, elixir-autogen, elixir-format msgid "%{count} period selected" @@ -895,29 +968,29 @@ msgstr "" #: lib/mv_web/components/layouts/navbar.ex:34 #: lib/mv_web/live/contribution_settings_live.ex:27 #: lib/mv_web/live/contribution_settings_live.ex:40 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Settings" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:62 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Start" msgstr "" #: lib/mv_web/components/layouts/navbar.ex:32 #: lib/mv_web/live/contribution_type_live/index.ex:25 #: lib/mv_web/live/contribution_type_live/index.ex:36 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution Types" msgstr "" #: lib/mv_web/live/contribution_settings_live.ex:224 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution start" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:41 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contribution type" msgstr "" @@ -927,12 +1000,12 @@ msgid "Contribution types define different membership fee structures. Each type msgstr "" #: lib/mv_web/components/layouts/navbar.ex:30 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contributions" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:39 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Contributions for %{name}" msgstr "" @@ -1080,7 +1153,7 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:341 #: lib/mv_web/live/contribution_settings_live.ex:273 #: lib/mv_web/live/contribution_type_live/index.ex:201 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Monthly" msgstr "" @@ -1100,7 +1173,7 @@ msgid "Name & Amount" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex:42 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "New Contribution Type" msgstr "" @@ -1261,7 +1334,7 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex:344 #: lib/mv_web/live/contribution_settings_live.ex:276 #: lib/mv_web/live/contribution_type_live/index.ex:204 -#, elixir-autogen, elixir-format +#, elixir-autogen, elixir-format, fuzzy msgid "Yearly" msgstr "" @@ -1275,17 +1348,16 @@ msgstr "" msgid "Yearly Interval - Joining Period Included" msgstr "" -#~ #: lib/mv_web/live/member_live/form.ex:48 -#~ #: lib/mv_web/live/member_live/show.ex:51 -#~ #, elixir-autogen, elixir-format -#~ msgid "Birth Date" -#~ msgstr "" - #~ #: lib/mv_web/live/user_live/show.ex:49 #~ #, elixir-autogen, elixir-format #~ msgid "ID" #~ msgstr "" +#~ #: lib/mv_web/live/member_live/show.ex:47 +#~ #, elixir-autogen, elixir-format +#~ msgid "Id" +#~ msgstr "" + #~ #: lib/mv_web/live/user_live/show.ex:51 #~ #, elixir-autogen, elixir-format, fuzzy #~ msgid "Not set" @@ -1297,8 +1369,7 @@ msgstr "" #~ msgid "OIDC ID" #~ msgstr "" -#~ #: lib/mv_web/live/contribution_period_live/show.ex:273 -#~ #: lib/mv_web/live/contribution_settings_live.ex:248 +#~ #: lib/mv_web/live/member_live/show.ex:33 #~ #, elixir-autogen, elixir-format -#~ msgid "Related Pages" +#~ msgid "This is a member record from your database." #~ msgstr ""