|
|
@@ -26,7 +26,7 @@ Google Play en één doorloop die alleen Bob kan doen.
|
|
|
|
|
|
| # | Taak | Kort |
|
|
|
|---|---|---|
|
|
|
-| **FOTOBOEK** | Fotoboek: foto's kiezen uit Drupal + beheren | **Claude — bezig** (2026-09-22/23). **Drupal AF. App: alle VIER de upload-knoppen zijn om en export-geverifieerd** (logo + foto's op `uitgaansevenementAanmaken`, logo + foto's op `stadsactiviteitAanmaken`), `dart analyze` 0 errors. Elke knop: `Confirm Dialog` ("Waar komt het logo vandaan?" / "Waar komen de foto's vandaan?", knoppen **Mobiel** / **Fotoboek**) → conditional op `confirmDialogResponse` → TRUE = bottom sheet 85 % met `FotoboekGridComponent`, FALSE = de bestaande upload-keten. Bij de logo-knoppen zet de callback `createLogoFid`/`createLogoUrl`, bij de foto-knoppen doet hij *Add to List* op `createFotosFids`/`createFotosUrls` — dus meerdere keuzes vullen aan, net als de mobiele kiezer. ⚠️ Wegklikken van de dialoog telt als **Mobiel** (FlutterFlow genereert `?? false`). **Nog te doen:** (a) 5e tab "Mijn foto's" op `mijnProfiel` voor beheer/verwijderen (endpoint `mijn_fotos` + `mijn_fotos/verwijder` staan live); (b) cosmetica op het component: zoekveld boven de grid i.p.v. eronder (2 sleeppogingen mislukt), Hint Text "Zoek op bestandsnaam" + EN-vertaling; (c) **testen op een toestel** — Claude kan dat niet, want alle vier de pagina's vragen om ingelogd zijn. **Opruimen (Bob):** wegwerp-component `FotoboekGridComponentCopy`, en het callback-argument **`urlTekst`** op `FotoboekGridComponent` (door Claude toegevoegd toen `createFotosUrls` nog een `List<String>` leek; het is een `List<Image Path>`, dus `url` volstond — het argument is onschadelijk maar ongebruikt). Endpoint-spec + builder-recepten staan in `CLAUDE.md` |
|
|
|
+| **FOTOBOEK** | Fotoboek: foto's kiezen uit Drupal + beheren | **App AF en export-geverifieerd (2026-09-24), `dart analyze` 0 errors.** Alle vier de upload-knoppen bieden *Mobiel* / *Fotoboek* (bottom sheet met `FotoboekGridComponent`; wegklikken telt als Mobiel). `mijnProfiel` heeft een 5e tab **Mijn foto's** (EN *My photos*) met hetzelfde component (Expanded): tikken op een foto → Confirm Dialog *Foto verwijderen?* → `drupalRequest` POST `mijn_fotos/verwijder.json` met body `{"fid": <fid>}` (Combine Text) → snackbar met `functions.fotoMelding(resultaat)` (nieuwe custom function, geeft de `melding` uit Drupal terug, anders een eigen foutzin) → Rebuild Page, waarna de grid opnieuw ophaalt. Zoekveld staat boven de grid (hint *Zoek op bestandsnaam* / *Search by file name*, vulling Primary Background). **Nog te doen (Bob, ingelogd op een toestel):** kiezen uit het fotoboek op beide aanmaakpagina's, en verwijderen in *Mijn foto's* — zowel een vrije foto (verdwijnt) als een foto die op een evenement staat (snackbar noemt waar hij in gebruik is). De Drupal-meldingen zijn alleen NL. **Opruimen (Bob):** wegwerp-component `FotoboekGridComponentCopy`, en het ongebruikte callback-argument **`urlTekst`** op `FotoboekGridComponent`. |
|
|
|
| **G0.6** | Play-screenshots | ✅ Nieuwe set van 10 klaar (2026-09-19 avond). Alleen `tel-04-horeca.png` moet over zodra *Show Test Ads* uit staat |
|
|
|
|
|
|
|
|
|
@@ -149,11 +149,8 @@ schoon. De prijs van disablen is één warning per actie.
|
|
|
| **Bij livegang** | Schakelaars en opruimklussen | Eigen blok hieronder |
|
|
|
| ~~115~~ | ~~AdBanner verplaatsen~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): volgorde is nu slider → banner → filterbalk → lijst |
|
|
|
| ~~116~~ | ~~AdBanner springt~~ | ✅ **AF** (Bob 2026-09-20): Container `65/65/105/105` mét de padding erin, dus de banner krijgt zijn volle 50 resp. 90 dp én de lucht tot de slider blijft |
|
|
|
-| **121b** | Twee nieuwe weesmappen in `lib/` | **Bob.** `lib/uitgaanspaginas/p_uitgaan_page_copy2` en `.../p_uitgaan_page_copy3` staan in git maar niet meer in de export (pagina's in de builder verwijderd); ze geven 2 analyze-errors (`parameter1` bestaat niet meer). Weghalen: `git rm -r -q lib/uitgaanspaginas/p_uitgaan_page_copy2 lib/uitgaanspaginas/p_uitgaan_page_copy3 && git commit -m "weesmappen copy2/copy3 weg"` — daarna geeft `fvm dart analyze lib/` 0 errors |
|
|
|
-| **120** | 11 hardcoded kleuren aan thematokens binden | **Bob — open.** Stand 2026-09-24 (twee verse exports na Bob's ronde): alleen ContainerWat/Organisatie/Entree op `uitgaansevenementAanmaken` staan op Alternate (door Claude). **Bob's ronde van 2026-09-24 is NIET in de export geland** — nog steeds `0xFFEEEEEE` op `uitgaansevenementAanmaken` r1140 (ContainerWanneer) en 5× op `stadsactiviteitAanmaken`, en `0xFF09B34A` op `tagCategorieComponent` én `HorecagelegenheidoverzichtKaart`. Vermoedelijk is de tekst/hex bewerkt i.p.v. het kleurblokje aangeklikt (dat levert opnieuw een hex op), of is een andere eigenschap (Fill i.p.v. Border) gezet. 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) |
|
|
|
| **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 |
|
|
|
| **128-A** | ✅ **KLAAR** — nieuwsbrieven-resource staat live | Gedeployd en getest op productie 2026-09-21; de tikfout in de omschrijving van tid 36676 is ook weg (gemeten 2026-09-24) |
|
|
|
| **129** | Sessie-verlopen-melding afmaken/verifiëren | **Niet in deze chat** (Bob 2026-09-21). De afhandeling bestaat: `drupalRequest` herkent 401 en 403-met-"anonymous", zet `sessieVerlopen` en `VerbindingsBanner` hangt in `HeaderButtonsComponent`. Staat alleen **in de builder, niet in de gecommitte `lib/`** — dus nooit geëxporteerd/gecommit. Nalopen of het af is en of de banner ook echt verschijnt. Eigen blok hieronder |
|
|
|
@@ -648,18 +645,6 @@ eerste tab naar die knop (of toon `LegeLijstComponent` met die tekst).
|
|
|
`PUitgaanPage` letterlijk `false`); en de page state **`zoekOpen` op Home**
|
|
|
wordt nergens meer geschreven — dat is een restant van vóór de verhuizing naar
|
|
|
App State.
|
|
|
-- **Build-stempel zichtbaar voor eindgebruikers.** `functions.buildStempel()`
|
|
|
- stond onderaan de **drawer** (✅ door Bob weggehaald 2026-09-24) en staat nog op
|
|
|
- **Favorieten** (`favorieten_widget.dart`, onderaan tab 4) en toont `onbekend` zolang er
|
|
|
- geen `--dart-define=BUILD_TS=…` meegaat — en FlutterFlow's eigen deploy geeft
|
|
|
- die nooit mee, dus in de winkelversie staat er gegarandeerd "onbekend".
|
|
|
- **Twee opties (Claude 2026-09-24):** (a) de `Text` op beide plekken weghalen;
|
|
|
- (b) vervangen door het échte versienummer: een custom widget `VersieLabel`
|
|
|
- met dependency `package_info_plus` dat `PackageInfo.fromPlatform()` leest en
|
|
|
- `v{version} ({buildNumber})` toont — dat is precies het nummer dat
|
|
|
- FlutterFlow bij elke deploy ophoogt (App Settings → Mobile Deployment),
|
|
|
- dus het loopt vanzelf mee. `buildStempel()` + `BUILD_TS` kunnen dan weg.
|
|
|
- Advies: (b), ~20 regels, Claude kan dit bouwen.
|
|
|
- **Datums in `MijnProfiel`** staan ruw (`2026-09-22 06:06:00`) terwijl de rest
|
|
|
van de app *dinsdag 22 sep, 14:00* gebruikt. Geldt voor *Mijn evenementen* en
|
|
|
*Eigen activiteiten*.
|
|
|
@@ -677,8 +662,6 @@ eerste tab naar die knop (of toon `LegeLijstComponent` met die tekst).
|
|
|
"gelijktrekken" met de `$.horecagelegenheidnid` van de views.)*
|
|
|
- **Zoekveld krijgt geen focus** als je het opent met het vergrootglas — je moet
|
|
|
er zelf nog in tikken.
|
|
|
-- **Login-melding** zegt *"Controleer je gebruikersnaam en wachtwoord"* terwijl
|
|
|
- het veld *E-mailadres* heet.
|
|
|
- **Testadvertenties staan nog aan** (zichtbaar op `PUitgaanPage` en het
|
|
|
horeca-overzicht); op het horeca-overzicht legt de 468×60-banner zich over de
|
|
|
onderste kaart heen. Zie ook G0.6.
|
|
|
@@ -1142,49 +1125,9 @@ sterretje bij de categoriekeuze) zijn gedaan op béide pagina's:
|
|
|
hulpregel zegt "de **zaak** waar het evenement plaatsvindt". Eén woord kiezen
|
|
|
is een besluit voor Bob, geen opruimklus.
|
|
|
|
|
|
-### 123 · Stadsrechten-cascade op `stadsactiviteitAanmaken` — Drupal-deel · Eigenaar: Bob
|
|
|
-
|
|
|
-**Code staat klaar en is getest** (herschreven 2026-09-24, want de versie van
|
|
|
-2026-09-20 was nergens bewaard): `snippets/mijn-stadsrechten-keten.inc.txt` in
|
|
|
-dit repo, én al op de server in `~/tmp/` (o1). Daar staat ook
|
|
|
-`~/tmp/evenementen_aanmaken.NIEUW.inc`: het complete bestand met de nieuwe
|
|
|
-functie er al in (regels 316-373 vervangen), `php -l` schoon, 16 functies zoals
|
|
|
-het origineel. Read-only doorgedraaid tegen bobcity (4× gemeente), bobhoreca
|
|
|
-(provincie + gemeente) en Bee (0 rechten): klopt.
|
|
|
-
|
|
|
-**Deploy (Bob, één blok):**
|
|
|
-```bash
|
|
|
-cd /data/disk/o1/static/uitgaanskrant/sites/all/modules/custom
|
|
|
-cp custom.evenementen_aanmaken.inc ~/tmp/custom.evenementen_aanmaken.inc.bak-$(date +%F)
|
|
|
-diff custom.evenementen_aanmaken.inc ~/tmp/evenementen_aanmaken.NIEUW.inc | grep "^[0-9]" # alleen 316-373 hoort te verschillen
|
|
|
-cp ~/tmp/evenementen_aanmaken.NIEUW.inc custom.evenementen_aanmaken.inc
|
|
|
-drush @uitgaanskrant.com cc all
|
|
|
-```
|
|
|
-Terugrollen: de `.bak` terugkopiëren + `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:
|
|
|
+### 124 · Stadsrechten-cascade — app-deel · Eigenaar: nader te bepalen
|
|
|
|
|
|
-| 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)
|
|
|
+*Niet meer geblokkeerd: 123 (de `keten`-velden op `mijn_stadsrechten`) staat sinds 2026-09-24 live op productie én devbob, md5-geverifieerd. Veldenlijst staat in `CLAUDE.md` bij `field_town_access`.*
|
|
|
|
|
|
De eerste dropdown in het *Waar*-blok van `stadsactiviteitAanmaken` moet de drie
|
|
|
cascade-dropdowns voorvullen tot zover het recht reikt, in plaats van alleen
|
|
|
@@ -1212,7 +1155,7 @@ 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: Bob — **5 van 7 AF** (2026-09-24, export-geverifieerd: `lijstVeld` + Provincie/Gemeente/Plaats op `stadsactiviteitAanmaken` én Horecagelegenheid + Entree op `uitgaansevenementAanmaken` (daar 0× `as List?)!` over), `dart analyze` 0 errors. **Rest, beide op `stadsactiviteitAanmaken`:** de Stadsrechten-dropdown in de `Column` met de `MijnStadsrechten`-query (`tid`/`titel`) en Entree (`tid`/`naam`) — de laatste 4 `as List?)!`. Daarna op een toestel testen of alle dropdowns nog vullen)
|
|
|
+### 125 · Crash: lege lijst sloopt een dropdown · Eigenaar: Bob — **builder-deel AF** (2026-09-24 avond, export-geverifieerd: alle 14 `lijstVeld`-bindingen op beide aanmaakpagina's, 0× `as List?)!`, `dart analyze` 0 errors). **Rest: op een toestel ingelogd testen of alle dropdowns nog vullen.**
|
|
|
|
|
|
`stadsactiviteit_aanmaken_widget.dart:1878` doet
|
|
|
`(getJsonField(respons, r'$[:].plaatsid', true) as List?)!`. `getJsonField` geeft
|
|
|
@@ -1286,65 +1229,6 @@ 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.
|
|
|
|
|
|
-### 120 · 12 hardcoded kleuren aan thematokens binden · Eigenaar: Bob (of Claude bij een breder venster)
|
|
|
-
|
|
|
-Gemeten op de verse export van 2026-09-20 (dode kopieën uitgefilterd). Dit is de
|
|
|
-staart van P1-33: daar is destijds het **rood** opgeruimd, grijs en groen bleven
|
|
|
-staan.
|
|
|
-
|
|
|
-| kleur | = token | aantal | waar |
|
|
|
-|---|---|---|---|
|
|
|
-| `Color(0xFFEEEEEE)` | **Alternate** | 9 | kaartranden op `uitgaansevenementAanmaken` (4) en `stadsactiviteitAanmaken` (5) |
|
|
|
-| `Color(0xFF09B34A)` | **Tertiary** | 2 | `HorecagelegenheidoverzichtKaart` + `tagCategorieComponent` (het groene categorielabel) |
|
|
|
-
|
|
|
-**Nu onzichtbaar** — de hexwaarden zijn exact gelijk aan de tokens, dus er verandert
|
|
|
-niets aan het beeld. Het punt is onderhoud: wijzig je ooit `alternate` of
|
|
|
-`tertiary` in Theme Settings, dan lopen deze elf plekken niet mee en krijg je twee
|
|
|
-tinten door elkaar.
|
|
|
-
|
|
|
-**Doen:** per widget het kleine **kleurblokje** vóór de kleurnaam aanklikken (niet
|
|
|
-de tekst — dan maak je er weer een hex van) → in "Choose a Color" onderaan de lijst
|
|
|
-**Theme Colors** → *Alternate* resp. *Tertiary*. Sluit met de X, niet met Escape
|
|
|
-(Escape laat de tree-selectie terugspringen naar de pagina-root).
|
|
|
-
|
|
|
-⚠️ **Controle 2026-09-24 avond, twee verse exports:** Bob's ronde is niet doorgekomen —
|
|
|
-zelfde 8 hexen als ervoor. Herkenning in de builder: na een geslaagde wissel toont het
|
|
|
-Border Color-veld het woord **Alternate** (met een blokje ervoor), niet `#eeeeee`.
|
|
|
-Staat er nog een hex, dan is de tekst bewerkt i.p.v. het blokje. Verifieer per kaart
|
|
|
-in het paneel vóór je verdergaat; Claude checkt daarna met
|
|
|
-`grep -c "0xFFEEEEEE" <widget>.dart` (hoort 0) in een verse export.
|
|
|
-
|
|
|
-**Stand 2026-09-24 middag:** `uitgaansevenementAanmaken` ContainerWat, ContainerOrganisatie
|
|
|
-en Container (Entree) staan op Alternate (export: 1× `0xFFEEEEEE` over, dat is
|
|
|
-**ContainerWanneer** — daar landde de klik op de pagina-root). ContainerMedia stond al
|
|
|
-goed. Nog te doen: ContainerWanneer + de 5 kaarten op `stadsactiviteitAanmaken` + de
|
|
|
-2 groene.
|
|
|
-
|
|
|
-**Vindplaatsen, gemeten op de export van 2026-09-20** — het gaat steeds om de
|
|
|
-**Border color** van de kaart-Container om een formuliersectie, niet om de Fill:
|
|
|
-
|
|
|
-| pagina | sectie waar de kaart bij hoort |
|
|
|
-|---|---|
|
|
|
-| `uitgaansevenementAanmaken` | intro ("Meld hier een evenement aan…") · zoekveld · "Datum eind" · "Link om kaarten te kopen" |
|
|
|
-| `stadsactiviteitAanmaken` | intro ("Meld hier een activiteit aan…") · zoekveld · "Datum eind" · "Plaats activiteit" · "Website van de activiteit" |
|
|
|
-
|
|
|
-De twee groene (`09B34A` → **Tertiary**) zijn wél Fill Colors:
|
|
|
-`HorecagelegenheidoverzichtKaart` en `tagCategorieComponent`, allebei het
|
|
|
-categorielabel.
|
|
|
-
|
|
|
-**De 12e kleur slaan we over:** `Color(0xFFFACFC6)` in een gradient op
|
|
|
-`SliderUitgaanComponentSmallCurrent`. Dat is roze, hoort bij géén token, en dat
|
|
|
-component heeft **nul gebruikers** — het staat al op de opruimlijst.
|
|
|
-
|
|
|
-⚠️ **Claude kwam hier 2026-09-20 niet doorheen.** Navigeren, panelen wisselen en
|
|
|
-de linkerrail werkten normaal, maar **geen enkele klik op een widget-tree-rij
|
|
|
-selecteerde iets** — ook de root niet, in ~10 pogingen op wisselende x/y. Een klik
|
|
|
-op de chevron ernaast deed wél iets (deselecteerde de root), dus de events komen
|
|
|
-aan; alleen de rij-selectie niet. Zonder selectie verschijnt het
|
|
|
-eigenschappen-paneel niet en is er geen kleur te zetten. Bob's venster was toen
|
|
|
-**1266x952**; een breder venster is het eerste om te proberen.
|
|
|
-
|
|
|
-Geen haast, geen blokker — prima klusje voor tussendoor.
|
|
|
### ~~117~~ · ✅ Kalenderpermissie eruit — AF (2026-09-20)
|
|
|
|
|
|
Bob heeft Calendar uitgezet in App Settings → Permissions. Verse export bevestigt:
|