Key: mehrpersonen-mitgliedschaft · Enthalten im Abo: Basis · Seit: v0.14.93 (Canvas seit v0.16.64–77)
Eine Mitgliedschaft kann mehrere echte Personen enthalten — z. B. Eltern + Kinder bei Familien-Mitgliedschaften. Das Addon liefert dafür den Verdrahtungs-Canvas: einen visuellen Editor, der Mitglieder-Spalten auf Personen verteilt.
Kein Sidebar-Eintrag — das Addon schaltet Funktionalität frei statt einen Menüpunkt zu zeigen. Gating: erst aktivierbar, wenn ≥1 Mitglied erfasst ist. Die Canvas-Views prüfen das Addon hart (eine der wenigen Ausnahmen vom „kein View-Gate"-Grundsatz).
Der Import legt im Single-Person-Mode nur den Hauptkontakt als Person an. Vereins-Excels enthalten aber oft Spalten wie „Vorname Partner", „Kind 1", „Handy Mutter". Dieses Addon extrahiert daraus echte Personen-Datensätze und verknüpft sie mit der Mitgliedschaft.
- Addon-Store: nach der Aktivierung landet man direkt im Canvas; die aktive Kachel hat den Button „Zuordnung öffnen".
- Übersicht: der Hinweis „Erst eine Person pro Mitgliedschaft" erscheint, solange das Addon aktiv ist, aber keine Mitgliedschaft mehr als den Hauptkontakt hat — CTA „Personen-Zuordnung öffnen".
- Direkt:
/clucore/mitglieder/zuordnung/?view=canvas (Canvas) bzw. ?view=list (Simpel-Modus).
- Links: die Mitglieder-/Import-Spalten als Karten, je mit 5 Beispielwerten aus echten Daten und einem 1:1-Badge bei Single-Feldern (Vorname, E-Mail — nur ein Ziel möglich).
- Rechts: Personen-Karten — Slot 0 = Hauptkontakt, dann Person 2, 3, …; es steht immer eine leere Karte bereit (max. 10 Personen). Der Karten-Titel ist die Beziehungs-Rolle.
- Verbindungslinien: geschwungene SVG-Bezier-Kurven (steiler Zug, damit Überkreuzungen erkennbar bleiben) in 3 Farben: grau = gespeicherte Regel, grün = neu (wird beim Speichern auf den Bestand angewendet), amber = umverdrahtet (gilt nur als Regel für künftige/neue Mitglieder — Bestandsdaten werden nicht umgeschrieben).
- Drag & Drop bidirektional: von der Spalte aufs Personen-Feld oder umgekehrt; die ganze Kachel ist Drop-Ziel. Touch/iPhone wird unterstützt (erhöhte Drop-Toleranz).
- Kante am Ziel-Ende aufnehmen = umverdrahten; Drop ins Leere = löschen; Linie anklicken = entfernen.
- Ctrl+Z / Undo-Button (letzte 10 Schritte).
- „+"-Fläche je Personen-Karte: eine Spalte hineinziehen erzeugt ein neues Personen-Custom-Feld — benannt wie die Spalte, Datentyp automatisch abgeleitet (Datum/Zahl/Checkbox/E-Mail/Telefon/Text); bei gleichem Label wird das bestehende Feld wiederverwendet.
- Mehrere Ziele pro Quelle sind erlaubt (z. B. Nachname → Person 1 und Person 2). Wird eine Adress-Spalte mehrfach verdrahtet, entsteht eine Adress-Entität, die den Personen geteilt zugeordnet wird (M:N) — nicht zwei Kopien.
- Typprüfung Quelle→Ziel; passt der Feldtyp nicht, bietet der Canvas eine Konvertierung mit Dry-Run über alle vorhandenen Werte an (zeigt vorab, was nicht konvertierbar wäre).
- Pro Person (ab Slot 1) ein Beziehungs-Editor: Kind, Erziehungsberechtigt, Rechnungsempfänger, … oder eigene Bezeichnung; ohne Angabe gilt der Default „Person n".
- Die Rolle wird beim Speichern gesetzt und erscheint in der Personen-Liste als Tag „Mitglied <Rolle>" (z. B. „Mitglied Kind", „Mitglied Person 2").
Vor dem Anwenden zeigt ein Vorschau-Modal: „X neu (wird angewendet) / Y umverdrahtet (nur Regel) / Z entfernt". Erst danach läuft der Apply-Motor. Limits: 60 Member-Spalten, 30 Felder pro Person, 10 Personen.
- Befüllt nur leere Ziele (nicht-destruktiv); bei bestehenden Personen gilt die Regel sonst nur für neue Mitglieder.
- Konsumiert den Member-Wert: Übernahme = Verschieben, nicht Kopieren („eine Wahrheit").
- Fehlende Slot-Personen werden beim Anwenden automatisch erzeugt.
- Person-exklusiv: Vorname, E-Mail, Handy. Teilbar: Nachname, Adresse, Festnetz, Custom-Felder (Klassifikation via Schweizer Telefon-Logik: 075–079 = mobil).
- Regeln sind persistent (
PersonFieldMapping); der Import synct sie am Ende (sync_import_mappings, Canvas-Regeln haben Vorrang). Verwaiste Regeln (Quelle nach Reset+Re-Import weg) werden angezeigt, nie stillschweigend gelöscht.
- Mitgliederliste: die alte Member-Spalte projiziert das verdrahtete Personen-Feld — der Wert steht weiterhin dort, Zellen-Edits schreiben auf die Person durch. Die Adress-Spalte zeigt die Adresse des Hauptkontakts; der Zellen-Editor schreibt auf den Hauptkontakt (und erzeugt ihn notfalls).
- Personen-Liste: die extrahierten Personen erscheinen als eigene Zeilen mit Tag „Mitglied <Rolle>" und eigener Personen-Nr.; Spring-Buttons wechseln gefiltert zwischen Person und zugehöriger Mitgliedschaft.
- Erfassungsmaske (neues Mitglied von Hand): verdrahtete Spalten ohne Member-Feld (Vorname, E-Mail, Strasse, …) erscheinen als Eingabefelder unter „Personen-Felder gemäss Spalten-Zuordnung"; die Werte fliessen beim Speichern direkt an die richtigen Personen/Slots. E-Mail-Konflikte blockieren nicht — sie erscheinen als amber-Warnbanner (Mitglied wird erstellt, nur die E-Mail nicht übernommen).
- Import: jeder abgeschlossene Import wendet die gespeicherten Regeln auf die neuen Zeilen an.
?view=list — „Spalten-Zuordnung" als Tabelle mit globaler Regel + Karten-UI, ohne Canvas. Gleiche Regel-Engine. Für den schnellen Fall „diese Spalte gehört zu Person 2" ohne visuelles Verdrahten.
Kurzzeitig (v0.16.60–63) gab es member-owned Adressen/Telefone mit automatischer Vererbung an Personen („zieht eine Person aus, verliert sie den Zugriff"). Das wurde in v0.16.77 komplett zurückgebaut:
Adresse/Telefon sind person-owned. Teilen = dieselbe Entität explizit an mehrere Personen verdrahten (M:N). Es gibt KEINE member-owned Kontakte und KEINE automatische Vererbung.
Begründung: Die implizite Vererbung war nirgends sichtbar (kein Screen zeigte einer Person die geerbte Adresse) und konkurrierte mit der expliziten Verdrahtung des Canvas. Ein sichtbarer Mechanismus statt zwei halbsichtbarer. Die Tabellen link_address_member/link_phone_number_member existieren noch im Schema, sind aber deprecated und leer (Migration 0019). Doku: docs/konzept-feld-eigentuemerschaft.md (Teil 1 = Historie, Teil 2 = aktiv).
Mit aktivem Addon zeigt das Termin-Formular des Kalenders die Checkbox „Termin an alle Personen in der Mitgliedschaft" (Default: an):
- Haushaltsmitglieder der eingeladenen Person werden mit-informiert (eigene Mail, Termin im eigenen ICS-Feed mit Titelzusatz „[für X]").
- Sie sind Stellvertreter: ihr Magic-Link beantwortet die Einladung im Namen der eingeladenen Person (Bestätigungsseite „stellvertretend für X"); sie haben keinen eigenen Zu-/Absage-Status, erscheinen nicht in der Empfängerliste und zählen nicht zur 18er-Grenze der gegenseitigen Sichtbarkeit.
- Der Live-Empfänger-Zähler im Formular berücksichtigt die Haushalts-Erweiterung.
Die Firma-Karte wurde in v0.16.93 aus dem Personen-Canvas entfernt — Firmen-Zuordnung läuft über den eigenen Firmen-Canvas (?view=firmen) des Addons Firmen Mitglieder (Zeile = Firma, Personen-Slots statt freier Verdrahtung).
/clucore/addons/mehrpersonen/wizard/ — der ursprüngliche Extraktions-Wizard (v0.14.94). Seit v0.16.69 nur noch erreichbar, wenn geparkte Legacy-Daten (additional_person_data) existieren; sonst Redirect zum Canvas.