From 509c0c6843f6347c217acd154dcaa540dcb68d35 Mon Sep 17 00:00:00 2001 From: Dev Date: Fri, 3 Apr 2026 10:15:06 +0200 Subject: [PATCH] docs(04-07): complete Localization + Shared Dialogs + Example CSV Resources plan - Create 04-07-SUMMARY.md with task details, decisions, and self-check results - Update STATE.md: progress 91%, decisions recorded, session updated - Update ROADMAP.md: phase 4 progress (7/10 summaries) --- .planning/ROADMAP.md | 2 +- .planning/STATE.md | 13 +- .../04-07-SUMMARY.md | 137 ++++++++++++++++++ 3 files changed, 146 insertions(+), 6 deletions(-) create mode 100644 .planning/phases/04-bulk-operations-and-provisioning/04-07-SUMMARY.md diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 8525a8f..5ecd977 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -138,5 +138,5 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 | 1. Foundation | 8/8 | Complete | 2026-04-02 | | 2. Permissions | 7/7 | Complete | 2026-04-02 | | 3. Storage and File Operations | 8/8 | Complete | 2026-04-02 | -| 4. Bulk Operations and Provisioning | 6/10 | In Progress| | +| 4. Bulk Operations and Provisioning | 7/10 | In Progress| | | 5. Distribution and Hardening | 0/? | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index e6bd718..b4756be 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone status: executing -stopped_at: Completed 04-bulk-operations-and-provisioning-04-06-PLAN.md -last_updated: "2026-04-03T08:09:18.086Z" +stopped_at: Completed 04-bulk-operations-and-provisioning-04-07-PLAN.md +last_updated: "2026-04-03T08:14:57.163Z" last_activity: 2026-04-03 — Plan 04-04 complete — BulkMemberService with Graph API and CSOM fallback progress: total_phases: 5 completed_phases: 3 total_plans: 33 - completed_plans: 29 + completed_plans: 30 percent: 65 --- @@ -89,6 +89,7 @@ Progress: [██████░░░░] 65% | Phase 04-bulk-operations-and-provisioning P02 | 25 | 2 tasks | 4 files | | Phase 04-bulk-operations-and-provisioning P04 | 7min | 2 tasks | 3 files | | Phase 04-bulk-operations-and-provisioning P06 | 10min | 2 tasks | 4 files | +| Phase 04-bulk-operations-and-provisioning P07 | 15 | 2 tasks | 11 files | ## Accumulated Context @@ -169,6 +170,8 @@ Recent decisions affecting current work: - [Phase 04-bulk-operations-and-provisioning]: TemplateService uses ModelSiteTemplate alias — consistent with ITemplateService; CSOM SiteTemplate and Core.Models.SiteTemplate are both in scope - [Phase 04-bulk-operations-and-provisioning]: FolderStructureService.BuildUniquePaths sorts by slash count for parent-first ordering — ensures intermediate folders exist before children when using Folders.Add - [Phase 04-bulk-operations-and-provisioning]: TemplateService.ApplyTemplateAsync creates new ClientContext for new site URL — adminCtx.Url points to admin site, new site needs separate context +- [Phase 04-bulk-operations-and-provisioning]: FolderBrowserDialog uses Core.Helpers.ExecuteQueryRetryHelper (not Infrastructure.Auth) — consistent with established project namespace pattern +- [Phase 04-bulk-operations-and-provisioning]: Example CSV files placed in Resources/ and registered as EmbeddedResource — accessible via Assembly.GetManifestResourceStream without file system dependency ### Pending Todos @@ -181,6 +184,6 @@ None yet. ## Session Continuity -Last session: 2026-04-03T08:09:18.084Z -Stopped at: Completed 04-bulk-operations-and-provisioning-04-06-PLAN.md +Last session: 2026-04-03T08:14:57.160Z +Stopped at: Completed 04-bulk-operations-and-provisioning-04-07-PLAN.md Resume file: None diff --git a/.planning/phases/04-bulk-operations-and-provisioning/04-07-SUMMARY.md b/.planning/phases/04-bulk-operations-and-provisioning/04-07-SUMMARY.md new file mode 100644 index 0000000..6e128e6 --- /dev/null +++ b/.planning/phases/04-bulk-operations-and-provisioning/04-07-SUMMARY.md @@ -0,0 +1,137 @@ +--- +phase: 04-bulk-operations-and-provisioning +plan: 07 +subsystem: ui +tags: [wpf, xaml, localization, resx, dialogs, csv, embedded-resources] + +requires: + - phase: 04-02 + provides: CSV import infrastructure used by bulk tabs + - phase: 04-03 + provides: FolderStructureService used by FolderBrowserDialog context + - phase: 04-04 + provides: BulkMemberService driving bulkmembers localization keys + - phase: 04-05 + provides: BulkSiteService driving bulksites localization keys + - phase: 04-06 + provides: TemplateService driving templates localization keys +provides: + - All Phase 4 EN/FR localization keys in Strings.resx and Strings.fr.resx + - ResourceManager accessors in Strings.Designer.cs for all new Phase 4 keys + - ConfirmBulkOperationDialog XAML dialog with Proceed/Cancel buttons + - FolderBrowserDialog XAML dialog with lazy-loading TreeView of SharePoint libraries/folders + - Example CSV embedded resources: bulk_add_members.csv, bulk_create_sites.csv, folder_structure.csv +affects: + - 04-08 + - 04-09 + - 04-10 + +tech-stack: + added: [] + patterns: + - EmbeddedResource CSV files accessible at runtime via Assembly.GetManifestResourceStream + - FolderBrowserDialog lazy-loads sub-folders on TreeViewItem expand to avoid full tree fetch upfront + - ConfirmBulkOperationDialog receives pre-formatted message string from caller (no binding to ViewModel) + +key-files: + created: + - SharepointToolbox/Views/Dialogs/ConfirmBulkOperationDialog.xaml + - SharepointToolbox/Views/Dialogs/ConfirmBulkOperationDialog.xaml.cs + - SharepointToolbox/Views/Dialogs/FolderBrowserDialog.xaml + - SharepointToolbox/Views/Dialogs/FolderBrowserDialog.xaml.cs + - SharepointToolbox/Resources/bulk_add_members.csv + - SharepointToolbox/Resources/bulk_create_sites.csv + - SharepointToolbox/Resources/folder_structure.csv + modified: + - SharepointToolbox/Localization/Strings.resx + - SharepointToolbox/Localization/Strings.fr.resx + - SharepointToolbox/Localization/Strings.Designer.cs + - SharepointToolbox/SharepointToolbox.csproj + +key-decisions: + - "FolderBrowserDialog uses Core.Helpers.ExecuteQueryRetryHelper (not Infrastructure.Auth) — consistent with established project namespace pattern" + - "Example CSV files placed in Resources/ and registered as EmbeddedResource — accessible via Assembly.GetManifestResourceStream without file system dependency" + +patterns-established: + - "FolderBrowserDialog lazy-expand pattern: dummy Loading... child node replaced on first expand event" + - "FolderNodeInfo record used as TreeViewItem.Tag for type-safe selection result" + +requirements-completed: + - FOLD-02 + +duration: 15min +completed: 2026-04-03 +--- + +# Phase 4 Plan 07: Localization + Shared Dialogs + Example CSV Resources Summary + +**80+ Phase 4 EN/FR localization keys added to resx files, ConfirmBulkOperationDialog and lazy-loading FolderBrowserDialog created, three example CSV files bundled as EmbeddedResource** + +## Performance + +- **Duration:** 15 min +- **Started:** 2026-04-03T08:10:00Z +- **Completed:** 2026-04-03T08:25:00Z +- **Tasks:** 2 +- **Files modified:** 11 + +## Accomplishments + +- Added all Phase 4 EN/FR localization keys (tabs, transfer, bulk members, bulk sites, folder structure, templates, shared bulk strings, folder browser dialog) — 80+ keys across both .resx files with full Designer.cs accessors +- Created ConfirmBulkOperationDialog with TranslationSource-bound title/buttons and caller-provided message text +- Created FolderBrowserDialog with lazy-loading TreeView: root loads document libraries, each library node loads sub-folders on first expand using ExecuteQueryRetryHelper +- Bundled three example CSV files (bulk_add_members, bulk_create_sites, folder_structure) as EmbeddedResource in csproj + +## Task Commits + +Each task was committed atomically: + +1. **Task 1 + Task 2: Phase 4 localization, dialogs, and CSV resources** - `1a2cc13` (feat) + +**Plan metadata:** (committed with final docs commit) + +## Files Created/Modified + +- `SharepointToolbox/Localization/Strings.resx` - Added 80+ Phase 4 EN localization keys +- `SharepointToolbox/Localization/Strings.fr.resx` - Added 80+ Phase 4 FR localization keys +- `SharepointToolbox/Localization/Strings.Designer.cs` - Added ResourceManager property accessors for all new keys +- `SharepointToolbox/Views/Dialogs/ConfirmBulkOperationDialog.xaml` - Confirmation dialog with Proceed/Cancel buttons +- `SharepointToolbox/Views/Dialogs/ConfirmBulkOperationDialog.xaml.cs` - Code-behind with IsConfirmed result property +- `SharepointToolbox/Views/Dialogs/FolderBrowserDialog.xaml` - Folder tree browser dialog +- `SharepointToolbox/Views/Dialogs/FolderBrowserDialog.xaml.cs` - Lazy-loading TreeView with SelectedLibrary/SelectedFolderPath properties +- `SharepointToolbox/Resources/bulk_add_members.csv` - Example CSV for bulk member addition (comma-delimited) +- `SharepointToolbox/Resources/bulk_create_sites.csv` - Example CSV for bulk site creation (semicolon-delimited) +- `SharepointToolbox/Resources/folder_structure.csv` - Example CSV for folder structure creation (semicolon-delimited) +- `SharepointToolbox/SharepointToolbox.csproj` - Added EmbeddedResource entries for three CSV files + +## Decisions Made + +- FolderBrowserDialog uses `Core.Helpers.ExecuteQueryRetryHelper` (not `Infrastructure.Auth`) — consistent with the established project namespace pattern from Phases 2/3 +- Example CSV files placed in `Resources/` and registered as `EmbeddedResource` — runtime access via `Assembly.GetManifestResourceStream` without file system dependency + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered + +None. + +## User Setup Required + +None - no external service configuration required. + +## Next Phase Readiness + +- All Phase 4 localization keys available for use in ViewModels/Views (04-08, 04-09, 04-10) +- ConfirmBulkOperationDialog ready to be shown before destructive bulk operations +- FolderBrowserDialog ready for use in FileTransferViewModel (source/dest folder picker) +- Example CSV files accessible as embedded resources for "Load Example" buttons in all bulk tabs + +--- +*Phase: 04-bulk-operations-and-provisioning* +*Completed: 2026-04-03* + +## Self-Check: PASSED + +All created files verified present. Commit 1a2cc13 confirmed in git log.