Explorar el Código

Taak 122 A/B/C: 19 teksten gecorrigeerd op beide aanmaakpagina's

Gedaan in de builder en geverifieerd met een verse export (19/19):
- "Categorie evenement" als kop op de ACTIVITEITENpagina -> "Categorie
  activiteit *"; op de evenementenpagina een sterretje erbij
- "Selectee..." -> "Selecteer..."
- "Datum eind" (4x) -> "Einddatum", "WebsiteURL" (2x) -> "Website",
  "TicketsURL" -> "Ticketlink", "Toelichting Entree" -> "Toelichting entree"
- "Uw Horecagelegenheid" -> "Je horecagelegenheid" (u/jij-consistentie)
- EN-typefouten weg: Zipcde, Organisatsion, Feeprice (2x), Title
  cityactivity, Title cityactvity

Punt D (hints die het label herhalen), een E-restje en punt F
(`Select...` op een NL-pagina) blijven open als schrijfkeuzes voor Bob.

CLAUDE.md: vier builder-bevindingen uit deze sessie, waarvan de
belangrijkste dat een globe-klik in dezelfde browser_batch als het
eigenschappen-filter de hele builder grijs maakt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob hace 7 horas
padre
commit
f741f1caa6
Se han modificado 2 ficheros con 75 adiciones y 161 borrados
  1. 38 0
      CLAUDE.md
  2. 37 161
      TASKS.md

+ 38 - 0
CLAUDE.md

@@ -3640,6 +3640,44 @@ niet:
 3. Staat er al een Engelse vertaling, dan is dat vaak géén fout maar
    eerder werk — controleer met de export vóór je overschrijft.
 
+**⚠️ Het globe-icoontje aanklikken IN DEZELFDE `browser_batch` als het typen van
+het eigenschappen-zoekfilter maakt de hele builder grijs.** Drie keer
+gereproduceerd op 2026-09-20, en drie keer voorkomen door de twee te splitsen.
+Het beeld: alles (canvas, beide panelen, de hele werkbalk) wordt één egaal
+grijs vlak zónder zichtbare dialoog, Escape helpt niet, en er gaat niets
+verloren — een `navigate` naar dezelfde URL herstelt alles, maar kost je wel
+een minuut aan herladen. Oorzaak lijkt de herberekening van het paneel na het
+filteren: de klik landt tijdens die relayout. **Vaste volgorde dus: filter
+typen + `zoom` in aanroep A, globe klikken in aanroep B.** Zelfde regel als
+elders in dit bestand voor het inklappen van secties.
+
+**In het vertaalpaneel landt maar ÉÉN veldbewerking per tool-aanroep — de eerste
+faalt altijd.** Scherper dan de oudere notitie hierboven. Zet je Dutch én
+English in één batch, dan komt alleen de **laatste** aan; de andere houdt stil
+zijn oude waarde. En de eerste `triple_click`+`type` direct ná het openen van
+het paneel landt sowieso niet. Werkende cadans, ±20 keer foutloos herhaald:
+globe klikken (eigen aanroep) → `triple_click`+`triple_click`+`type` voor Dutch
+(eigen aanroep) → idem voor English (eigen aanroep) → `zoom` ter controle na
+elke. Reken op 3-4 aanroepen per tekst, plus 2 voor het selecteren van het
+widget.
+
+**Het eigenschappen-zoekveld pakt de eerste typ-actie na een SELECTIEWISSEL niet,
+maar wél als het widget al geselecteerd was.** Praktisch: `left_click` op de
+tree-rij (2×) in aanroep A, en pas in aanroep B klikken+typen in
+"Search properties...". Doe je het in één batch, dan staat het veld wel gefocust
+(blauwe rand) maar blijft het leeg — typ het dan gewoon nog eens in de volgende
+aanroep, zonder opnieuw te klikken.
+
+**Globe-posities bij een gefilterd rechterpaneel (venster 1266×952, filter in
+"Search properties..."):** filter `label` → *Label Text*-globe op **(1250, 159)**;
+filter `hint` op een `TextField` → *Hint Text*-globe op **(1250, 198)**, want daar
+staat "Label Properties / Align Label With Hint" erboven; filter `hint` op een
+`FlutterFlowDropDown` → **(1250, 159)** (geen labelsectie); een `Text`-widget
+zonder filter → *Text*-globe op **(1250, 186)**. In het vertaalpaneel zelf:
+Dutch **(1177, 140)**, English **(1177, 179)**, *Back* **(1118, 215)**.
+⚠️ Mik bij het hint-geval niet op 159 — daar zit dan de toggle *Align Label With
+Hint*.
+
 **Het vertaal-globe-paneel: na *Back* landt de EERSTE volgende globe-klik nooit,
 en twee globe-kliks in één batch openen en sluiten hem weer.** Bevestigd
 2026-09-20, zes vertalingen achter elkaar op `FilterBalkComponent`. Vaste

+ 37 - 161
TASKS.md

@@ -50,7 +50,7 @@ Google Play en één doorloop die alleen Bob kan doen.
 | **120** | 12 hardcoded kleuren aan thematokens binden | ⚠️ Claude kwam er 2026-09-20 niet in: widget-selectie in de tree landt niet in Bob's huidige Chrome-venster. Inventaris mét vindplaatsen staat klaar | Alle 12 zijn exact gelijk aan een bestaand token, dus nu onzichtbaar — maar ze lopen niet mee bij een themawijziging. Eigen blok hieronder |
 | ~~117~~ | ~~Kalenderpermissie eruit~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): `READ_CALENDAR`/`WRITE_CALENDAR` én `NSCalendarsUsageDescription` zijn weg; `CAMERA` staat er nog (terecht) |
 | **118** | AdMob EU-consentbericht | ⚠️ Half: de FlutterFlow-toggle staat goed, maar het bericht moet in de **AdMob-console** gepubliceerd zijn. Eigen blok hieronder |
-| **122** | Teksten aanmaakpagina's doornemen | Labels, hints en Engelse vertalingen op de activiteiten- en evenementenpagina. Inventaris mét i18n-sleutels staat in een eigen blok hieronder; o.a. "Categorie **evenement**" als kop op de *activiteiten*pagina, "Selectee...", "WebsiteURL"/"TicketsURL" en een sterretje dat niet klopt met de introtekst |
+| **122** | Teksten aanmaakpagina's | ✅ **A/B/C af** (Claude 2026-09-20, 19 teksten, export-geverifieerd): verkeerde woorden, typefouten, technische veldnamen en het sterretje bij de categoriekeuze. Open blijven D (hints die het label herhalen), E-restje en F (`Select...` op een NL-pagina) — eigen blok hieronder |
 | **123** | `mijn_stadsrechten` uitbreiden met de keten | **Code staat klaar en is op productie getest.** Vervang regels 316-372 van `custom.evenementen_aanmaken.inc` + `cc all`. Blokkeert 124 |
 | **124-126** | Stadsrechten-cascade op `stadsactiviteitAanmaken` | Voorvullen van provincie/gemeente/plaats (124), een **crash** bij een lege plaatsenlijst (125) en een stille verkeerde plaats bij het wisselen van gemeente (126). Eigen blok hieronder |
 
@@ -356,168 +356,44 @@ tot de slider — die Bob er bewust in had gezet — blijft staan.
 tekent dus even buiten zijn kader. Inherent aan de gegenereerde widget, niet vanuit
 de builder te clippen. De layout beweegt niet meer, en dat was het doel.
 
-### 122 · Teksten op de twee aanmaakpagina's doornemen · Eigenaar: Bob
-
-**Wat:** labels, hints, sectiekoppen en Engelse vertalingen langslopen op
-`stadsactiviteitAanmaken` (51 teksten) en `uitgaansevenementAanmaken` (41).
-Het introblok en de hulpregels van taak 91 staan er goed op en zijn netjes
-vertaald — wat overblijft zijn verkeerde woorden, typefouten, technische
-veldnamen en verschillen **tussen** de twee pagina's.
-
-Inventaris uit een verse export van 2026-09-20 (de werkkopie liep achter; de
-hulpregels leken daar te ontbreken maar staan er wél). Elke sleutel hieronder is
-de i18n-key — bereikbaar via het globe-icoontje naast het Text-/Label-veld.
-`ACT` = activiteitenpagina, `EVT` = evenementenpagina.
-
-**A · Gewoon fout**
-- `ACT moj9sft5` sectiekop **"Categorie evenement"** staat op de
-  *activiteiten*pagina → "Categorie activiteit".
-- `ACT dqeuq7t8` dropdown-hint **"Selectee..."** (dubbele e).
-- `ACT oo7z1mp8` EN **"Zipcde"** — de hint eronder (`j9h65a88`) heeft wél
-  "Zipcode".
-- `EVT vu6qv8cj` EN **"Title cityactvity"** — typefout én de verkeerde entiteit.
-- `ACT jwgx4el8` EN **"Title cityactivity"** — interne veldnaam, geen Engels.
-- `EVT vkyrmq6a` EN **"Organisatsion"**.
-- `EVT r9s46lo7` / `3h3k4jh2` / `ge5o3gf7` EN **"Feeprice"**.
-
-**B · Technische namen die een gebruiker niet hoort te zien**
-- `ACT i66ori1d` / `EVT e9n6cj1o` **"WebsiteURL"** → "Website" (EN is hier gelijk
-  aan NL, dus in beide talen).
-- `EVT zfofdq9a` **"TicketsURL"** → "Ticketlink".
-- **"Datum eind"** op vier plekken (`ACT 71z3uvd8`+`1k52hayg`,
-  `EVT wkn1mu1d`+`e42lwmdh`) → "Einddatum".
-- **"Toelichting Entree"** (4 plekken) — hoofdletter midden in de zin.
-- `EVT rqx6m3yf` **"Uw Horecagelegenheid"** → de rest van beide pagina's
-  tutoyeert ("je evenement", "jouw account"), en de hulpregel eronder noemt het
-  zelf een **zaak**. Kies één aanspreekvorm en één woord.
-
-**C · Het sterretje klopt niet met de introtekst**
-Beide intro's zeggen "Velden met * zijn verplicht". Nu staat het sterretje op
-Titel, Datum en (EVT) "Kies je horecagelegenheid". Het **ontbreekt** op:
-- de categoriekeuze op **beide** pagina's, terwijl de hulpregel eronder zegt
-  *"zonder categorie is je evenement/activiteit nergens terug te vinden"*;
-- `ACT` de plaatskeuze (`ls6do5d5` / `sv5qajjt`), terwijl de hulpregel bij
-  *Waar* letterlijk zegt *"dat is verplicht"*.
-
-**D · Hints die alleen het label herhalen**
-Datum/Datum, Adres/Adres, Postcode/Postcode, Toelichting Entree (2×) en
-**Entreeprijs (3×)**. Die regel is nu weggegooide ruimte; een voorbeeld doet het
-werk wel — "bijv. 7,50", "1012 AB", "bijv. Jazz in de Tuin".
-
-**E · De twee pagina's noemen hetzelfde veld anders (vooral in het Engels)**
-
-| veld | ACT | EVT |
-|---|---|---|
-| Categorie | `Category` | `Category event` |
-| Toelichting Entree | `Admission description` / `Fee description` *(label en hint verschillen onderling!)* | `Description Fee` |
-| Entreeprijs | `Admission price` | `Feeprice` |
-| Datum eind | `End date` | `Date end` |
-| Logo kiezen | `Choose logo` | `Select logo` |
-| Omschrijving … | `Description activity` | `Event description` |
-
-**F · Engels ontbreekt of is Nederlands blijven staan**
-`ACT xiba4gka` / `l9f37oxb` / `ajotnz1f` en `EVT 2hitlrxa` / `qtnlg7nd` en
-`EVT e9n6cj1o` / `zfofdq9a`. *(`Contact` en `Media` zijn in beide talen gelijk —
-die mogen zo blijven.)* Aan de **Nederlandse** kant hetzelfde probleem: `ACT`
-gebruikt "Selecteer..."/"Zoek..." bij de categorie, maar **"Select..."** bij drie
-andere dropdowns op diezelfde pagina.
-
-**Werkwijze:** globe-icoontje per widget (recept in `CLAUDE.md`, sectie
-"Vertalingen invullen"). Eén klik per tool-aanroep, en **verifieer met een verse
-export** — het rechterpaneel toont na een geslaagde wijziging vaak nog de oude
-waarde.
-
-**Deel dat gedelegeerd kan:** punt A, E en F zijn mechanisch herhaalwerk zonder
-geneste dialogen. Zeg het even als Claude die mag oppakken; B t/m D zijn
-schrijfkeuzes en horen bij jou.
-
-### 123 · Stadsrechten-cascade op `stadsactiviteitAanmaken` — Drupal-deel · Eigenaar: Bob
-
-**Code staat klaar en is getest** (2026-09-20, Claude): vervang in
-`sites/all/modules/custom/custom.evenementen_aanmaken.inc` de **regels 316 t/m
-372** (docblock t/m sluitende accolade van `_custom_mijn_stadsrechten_service()`)
-door de aangeleverde versie. Daarna `drush @<alias> cc all`.
-
-**Waarom:** `field_town_access` mag een term op **elk** van de drie niveaus van
-de town-vocabulary bevatten — plaats (tot 2026-08-27), gemeente (huidige
-standaard) of provincie (de widget staat op Max depth 2 en laat dat toe; Bob
-geeft ze bewust op provincieniveau, dat scheelt veel werk). De app stopte die tid
-rechtstreeks in `plaatsen_bij_gemeente`, en dat geeft bij provincie én plaats een
-lege lijst → zie taak 125.
-
-De nieuwe versie geeft per recht de **volledig uitgeklapte keten** terug:
-`niveau` · `provincie_tid`/`_titel` · `gemeente_tid`/`_titel` ·
-`plaats_tid`/`_titel` · `keten` (`"provincie|gemeente|plaats"`, ontbrekende delen
-leeg) · `label` (bv. *"Noord-Brabant (hele provincie)"*). `tid`, `titel`,
-`parent_tid` en `parent_titel` blijven ongewijzigd staan, dus bestaande
-consumenten merken niets. Sortering is hiërarchisch i.p.v. alfabetisch op titel.
-
-Getest op productie onder een testnaam, alle drie de niveaus:
-
-| account | recht | `keten` |
-|---|---|---|
-| bobcity | 28694 Amsterdam (gemeente) | `28666\|28694\|` |
-| bobhoreca | 27409 Noord-Brabant (provincie) | `27409\|\|` |
-| Team Klein Frankrijk | 29912 Zuid-Holland (provincie) | `29912\|\|` |
-
-### 124 · Stadsrechten-cascade — app-deel · Eigenaar: nader te bepalen (na 123)
+### 122 · Teksten aanmaakpagina's — A/B/C AF, D/E/F open · Eigenaar: Bob
 
-De eerste dropdown in het *Waar*-blok van `stadsactiviteitAanmaken` moet de drie
-cascade-dropdowns voorvullen tot zover het recht reikt, in plaats van alleen
-`createGemeenteID` te zetten:
+**Afgerond 2026-09-20 (Claude, in de builder, 19/19 geverifieerd met een verse
+export).** Punt A (gewoon fout), punt B (technische veldnamen) en punt C (het
+sterretje bij de categoriekeuze) zijn gedaan op béide pagina's:
 
-| recht | voorvullen | gebruiker kiest nog |
-|---|---|---|
-| provincie | provincie | gemeente + plaats |
-| gemeente | provincie + gemeente | plaats |
-| plaats (oud) | alle drie | niets |
-
-**Stappen:** dropdown-waarde omzetten van `$[:].tid` naar **`$[:].keten`** (label
-op `$[:].label`), plus drie custom functions van **één** String-argument
-(`ketenProvincie` / `ketenGemeente` / `ketenPlaats` → `split('|')[n]`). Die ene
-parameter is bewust: een lookup op de hele respons vraagt een custom function met
-meerdere argumenten, en die binding loopt in de Action Flow Editor structureel
-vast (zie `CLAUDE.md`). On Selected → `Update Page State` voor
-`createProvincieID`/`createGemeenteID`/`createPlaatsID` + `Set Form Field` op de
-drie dropdowns.
-
-Een lege `Set Form Field`-waarde wordt geweigerd ("Value cannot be empty"), dus
-voor de lege delen van de keten is **Reset Form Fields** nodig — wat meteen de
-tweede helft van taak 126 afhandelt.
-
-**Voorvullen, niet verbergen** (besluit Bob 2026-09-20): met verbergen kun je
-achteraf niet meer wisselen zonder eerst de rechten-dropdown leeg te maken.
-
-### 125 · Crash: lege plaatsenlijst sloopt de Plaats-dropdown · Eigenaar: nader te bepalen
-
-`stadsactiviteit_aanmaken_widget.dart:1878` doet
-`(getJsonField(respons, r'$[:].plaatsid', true) as List?)!`. `getJsonField` geeft
-bij **0 matches `null`** — ook met `isForList: true`, want de `isEmpty`-check
-staat ervóór ([`flutter_flow_util.dart:356`]). Een lege respons `[]` geeft dus
-`Null check operator used on a null value`; in een release-build een grijs blok
-zonder melding.
-
-Treedt nu op bij elke provincie- of plaats-tid in `field_town_access`, maar staat
-**los van taak 123/124**: ook een gemeente zónder plaatsen in de taxonomie geeft
-dezelfde crash. Zelfde patroon staat op de **gemeente**- en **provincie**-dropdown
-van diezelfde pagina — alle drie langslopen.
-
-Fix: Generate-Dynamic-Children-achtige null-veiligheid via een **Predefined Path**
-op de API-call (`$[:]`, Is List) i.p.v. een JSON Path — dat genereert
-`(XCall.items(jsonBody)?.toList() ?? [])`. Recept staat in `CLAUDE.md`.
-
-### 126 · Stale `createPlaatsID` bij het wisselen van gemeente · Eigenaar: nader te bepalen
-
-Geen van de vier dropdowns in het *Waar*-blok reset de onderliggende. Scenario:
-kies gemeente A → plaats A₁ (`createPlaatsID` gezet) → wissel naar gemeente B.
-De Plaats-dropdown toont dan weer zijn hint (`FlutterFlowDropDown` filtert een
-waarde die niet in de opties zit weg, [`flutter_flow_drop_down.dart:101`]), maar
-`createPlaatsID` houdt **A₁** vast. De verzendknop blijft dus zichtbaar en je
-dient in voor de vorige plaats. Stil, geen foutmelding.
-
-Fix: `Reset Form Fields` + `Update Page State` (Reset Value) op de onderliggende
-velden in de On-Selected van provincie, gemeente én de rechten-dropdown. Overlapt
-met taak 124 — samen oppakken.
+| was | is nu |
+|---|---|
+| `ACT` kop "Categorie **evenement**" | "Categorie activiteit \*" / `Category *` |
+| `EVT` kop "Categorie evenement" | "Categorie evenement \*" / `Category *` |
+| "Selectee..." | "Selecteer..." |
+| "Datum eind" (4×) | "Einddatum" / `End date` |
+| "WebsiteURL" (2×) | "Website" |
+| "TicketsURL" | "Ticketlink" / `Ticket link` |
+| "Toelichting **E**ntree" (2×) | "Toelichting entree" |
+| "Uw Horecagelegenheid" | "Je horecagelegenheid" / `Your venue` |
+| EN `Zipcde` · `Organisatsion` · `Feeprice` (2×) | `Zipcode` · `Organisation` · `Admission price` |
+| EN `Title cityactivity` · `Title cityactvity` | `Activity title` · `Event title` |
+
+**Nog open — schrijfkeuzes, bewust bij Bob gelaten:**
+
+- **D · hints die alleen het label herhalen.** Elk veld heeft een `Text`-label
+  bóven het invoerveld én een `labelText` én een `hintText`; staan die alle drie
+  op hetzelfde woord, dan leest de gebruiker het drie keer. Bob heeft de losse
+  `Text`-labels van "Toelichting Entree" en "Entreeprijs" al weggehaald; over
+  zijn nog de label/hint-paren: `ACT` Einddatum · Adres · Postcode ·
+  Entreeprijs, `EVT` Einddatum · Toelichting entree · Entreeprijs. Een voorbeeld
+  in de hint doet meer werk dan een herhaling — "bijv. 7,50", "1012 AB".
+- **E · resterend verschil tussen de pagina's.** Alleen nog "Omschrijving …":
+  `ACT` EN `Description activity` tegenover `EVT` EN `Event description`.
+- **F · Engelse placeholders op een Nederlandse pagina.** `Select...` staat er
+  nog 4× (`ACT xiba4gka`, `l9f37oxb`, `ajotnz1f`; `EVT 2hitlrxa`, `ht4toe4o`) en
+  `Search...` 1× (`EVT qtnlg7nd`), terwijl de categorie-dropdown op `ACT` wél
+  "Selecteer..." / "Zoek..." zegt. Mechanisch werk; Claude kan dit oppakken.
+- ⚠️ **Drie woorden voor hetzelfde ding op `EVT`.** De intro zegt "van je
+  **onderneming**", de kop en de dropdown zeggen "**horecagelegenheid**", de
+  hulpregel zegt "de **zaak** waar het evenement plaatsvindt". Eén woord kiezen
+  is een besluit voor Bob, geen opruimklus.
 
 ### 121 · 15 verweesde mappen in `lib/` · Eigenaar: Bob (Claude verwijdert niets)