{campaign.name}
+ + + {STATUS_LABELS[campaign.status].de} + +{campaign.subject}
++ {#if polling} + Live-Update … + {:else} + Letzte Aktualisierung: {new Date(liveStats.lastSyncedAt).toLocaleTimeString()} + {/if} +
+ {/if} + + {#if pollError} +diff --git a/apps/mana/apps/web/src/lib/modules/broadcast/ListView.svelte b/apps/mana/apps/web/src/lib/modules/broadcast/ListView.svelte index de511cc61..d8989260d 100644 --- a/apps/mana/apps/web/src/lib/modules/broadcast/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/broadcast/ListView.svelte @@ -12,12 +12,10 @@ const campaigns = $derived(campaigns$.value ?? []); function openCampaign(id: string, status: string) { - // Drafts go straight to edit; sent/scheduled to a detail view - // (detail lands in M7; until then, edit is the entry for drafts - // and we bounce sent ones back to the list — see canEdit guard - // in the edit route). + // Drafts open in the compose flow for editing; everything else + // opens the read-only DetailView with stats. if (status === 'draft') goto(`/broadcasts/${id}/edit`); - else goto(`/broadcasts/${id}/edit`); + else goto(`/broadcasts/${id}`); } function onNewCampaign() { diff --git a/apps/mana/apps/web/src/lib/modules/broadcast/components/SettingsForm.svelte b/apps/mana/apps/web/src/lib/modules/broadcast/components/SettingsForm.svelte new file mode 100644 index 000000000..915bfee27 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/broadcast/components/SettingsForm.svelte @@ -0,0 +1,239 @@ + + + +{#if !settings} +
Lade Einstellungen …
+{:else} + +{/if} + + diff --git a/apps/mana/apps/web/src/lib/modules/broadcast/views/DetailView.svelte b/apps/mana/apps/web/src/lib/modules/broadcast/views/DetailView.svelte new file mode 100644 index 000000000..64b9d0c47 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/broadcast/views/DetailView.svelte @@ -0,0 +1,353 @@ + + + +{campaign.subject}
++ {#if polling} + Live-Update … + {:else} + Letzte Aktualisierung: {new Date(liveStats.lastSyncedAt).toLocaleTimeString()} + {/if} +
+ {/if} + + {#if pollError} +Kampagne nicht gefunden.
+ Zurück zur Übersicht +Sender-Defaults, Impressum und Footer für alle neuen Kampagnen.
+