From ce542eae3eacd51398a312bab339e22ef5879025 Mon Sep 17 00:00:00 2001 From: carla Date: Tue, 17 Feb 2026 18:26:32 +0100 Subject: [PATCH 1/2] fix: missing actor on tturning back from edit --- lib/mv_web/live/custom_field_live/index_component.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/mv_web/live/custom_field_live/index_component.ex b/lib/mv_web/live/custom_field_live/index_component.ex index 5cf0f6b..a670a3e 100644 --- a/lib/mv_web/live/custom_field_live/index_component.ex +++ b/lib/mv_web/live/custom_field_live/index_component.ex @@ -219,6 +219,9 @@ defmodule MvWeb.CustomFieldLive.IndexComponent do send(self(), {:editing_section_changed, nil}) end + # Get actor from assigns or fall back to socket assigns + actor = Map.get(assigns, :actor, socket.assigns[:actor]) + {:ok, socket |> assign(assigns) @@ -228,7 +231,7 @@ defmodule MvWeb.CustomFieldLive.IndexComponent do |> assign_new(:show_delete_modal, fn -> false end) |> assign_new(:custom_field_to_delete, fn -> nil end) |> assign_new(:slug_confirmation, fn -> "" end) - |> stream(:custom_fields, stream_custom_fields(assigns[:actor], self()), reset: true)} + |> stream(:custom_fields, stream_custom_fields(actor, self()), reset: true)} end @impl true From b18f895939e1cc68718b2842b19b41110ae2946a Mon Sep 17 00:00:00 2001 From: carla Date: Tue, 17 Feb 2026 18:56:56 +0100 Subject: [PATCH 2/2] chore: rename ImportExport module to Import --- lib/mv/membership/import/import_runner.ex | 2 +- lib/mv_web/components/layouts/sidebar.ex | 2 +- .../{import_export_live.ex => import_live.ex} | 27 +---- .../components.ex | 4 +- lib/mv_web/router.ex | 4 +- priv/gettext/de/LC_MESSAGES/default.po | 98 +++++++++---------- priv/gettext/default.pot | 83 +++++++--------- priv/gettext/en/LC_MESSAGES/default.po | 98 +++++++++---------- .../live/global_settings_live_config_test.exs | 2 +- ...ort_live_test.exs => import_live_test.exs} | 38 ++++--- 10 files changed, 161 insertions(+), 197 deletions(-) rename lib/mv_web/live/{import_export_live.ex => import_live.ex} (94%) rename lib/mv_web/live/{import_export_live => import_live}/components.ex (98%) rename test/mv_web/live/{import_export_live_test.exs => import_live_test.exs} (87%) diff --git a/lib/mv/membership/import/import_runner.ex b/lib/mv/membership/import/import_runner.ex index 5ff846b..eccd75f 100644 --- a/lib/mv/membership/import/import_runner.ex +++ b/lib/mv/membership/import/import_runner.ex @@ -1,7 +1,7 @@ defmodule Mv.Membership.Import.ImportRunner do @moduledoc """ Orchestrates CSV member import: file reading, progress tracking, chunk processing, - and error formatting. Used by `MvWeb.ImportExportLive` to keep LiveView thin. + and error formatting. Used by `MvWeb.ImportLive` to keep LiveView thin. This module does not depend on Phoenix or LiveView. It provides pure functions for progress/merge and side-effectful helpers (read_file_entry, process_chunk) that diff --git a/lib/mv_web/components/layouts/sidebar.ex b/lib/mv_web/components/layouts/sidebar.ex index 1896f24..8ed7f03 100644 --- a/lib/mv_web/components/layouts/sidebar.ex +++ b/lib/mv_web/components/layouts/sidebar.ex @@ -118,7 +118,7 @@ defmodule MvWeb.Layouts.Sidebar do /> <% end %> <%= if can_access_page?(@current_user, PagePaths.settings()) do %> - <.menu_subitem href={~p"/admin/import-export"} label={gettext("Import/Export")} /> + <.menu_subitem href={~p"/admin/import"} label={gettext("Import")} /> <.menu_subitem href={~p"/settings"} label={gettext("Settings")} /> <% end %> diff --git a/lib/mv_web/live/import_export_live.ex b/lib/mv_web/live/import_live.ex similarity index 94% rename from lib/mv_web/live/import_export_live.ex rename to lib/mv_web/live/import_live.ex index fe5484c..e97ecd7 100644 --- a/lib/mv_web/live/import_export_live.ex +++ b/lib/mv_web/live/import_live.ex @@ -1,6 +1,6 @@ -defmodule MvWeb.ImportExportLive do +defmodule MvWeb.ImportLive do @moduledoc """ - LiveView for importing and exporting members via CSV. + LiveView for importing members via CSV. ## Features - CSV member import (admin only) @@ -38,7 +38,7 @@ defmodule MvWeb.ImportExportLive do alias Mv.Membership.Import.ImportRunner alias Mv.Membership.Import.MemberCSV alias MvWeb.Authorization - alias MvWeb.ImportExportLive.Components + alias MvWeb.ImportLive.Components on_mount {MvWeb.LiveHelpers, :ensure_user_role_loaded} @@ -65,7 +65,7 @@ defmodule MvWeb.ImportExportLive do socket = socket - |> assign(:page_title, gettext("Import/Export")) + |> assign(:page_title, gettext("Import")) |> assign(:club_name, club_name) |> assign(:import_state, nil) |> assign(:import_progress, nil) @@ -90,13 +90,6 @@ defmodule MvWeb.ImportExportLive do def render(assigns) do ~H""" - <.header> - {gettext("Import/Export")} - <:subtitle> - {gettext("Import members from CSV files or export member data.")} - - - <%= if Authorization.can?(@current_user, :create, Mv.Membership.Member) do %> <%!-- CSV Import Section --%> <.form_section title={gettext("Import Members (CSV)")}> @@ -107,18 +100,6 @@ defmodule MvWeb.ImportExportLive do <% end %> - - <%!-- Export Section (Placeholder) --%> - <.form_section title={gettext("Export Members (CSV)")}> -
- <.icon name="hero-information-circle" class="size-5" aria-hidden="true" /> -
-

- {gettext("Export functionality will be available in a future release.")} -

-
-
- <% else %>