Implemented UI to list and edit ideas - #123
Merged
Merged
Conversation
- Basic list support for ideas (will need extra love which I will create other issues for) - Idea detail view when an idea is clicked, this will later have more controls and comments, etc. so it looks a bit empty right now. - Same idea detail view allows editing if the current user is the author or an admin.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds the initial end-to-end “Ideas” UI (list + detail/edit) backed by updated idea view models and localization, wiring navigation via a Stencil router and enhancing server-provided idea metadata (author + created time).
Changes:
- Introduces Stencil components for listing ideas and viewing/editing a single idea, with hash-based routing.
- Extends backend Idea view models/mapping to include description and “created by / created since” metadata (Humanizer).
- Expands localization resources and improves client-side error formatting.
Reviewed changes
Copilot reviewed 41 out of 47 changed files in this pull request and generated 18 comments.
Show a summary per file
| File | Description |
|---|---|
| resources/views/view.html | Loads the Stencil bundle and passes module/user context into the web component. |
| resources/App_LocalResources/UI.resx | Adds UI strings used by the new ideas list/detail screens. |
| resources/App_LocalResources/ModelValidation.resx | Updates validation resource keys/messages for idea workflows. |
| module.web/tsconfig.json | Adjusts TS compiler options for the updated web build. |
| module.web/stencil.config.ts | Enables source maps for the Stencil build. |
| module.web/src/store/state.ts | Adds global state for localization + current user id. |
| module.web/src/services/services.ts | Updates generated API client models to include new idea/localization fields. |
| module.web/src/services/alert-error.ts | Improves error normalization/formatting (ProblemDetails, ApiException, network errors). |
| module.web/src/index.ts | Adds Stencil router setup for the new UI navigation. |
| module.web/src/icons/icons.tsx | Adds SVG icons used by the new UI. |
| module.web/src/components/dnnuv-uservoice/readme.md | Updates component docs for new props and dependencies. |
| module.web/src/components/dnnuv-uservoice/dnnuv-uservoice.tsx | Initializes state/localization and defines top-level routes. |
| module.web/src/components/dnnuv-ideas/readme.md | Adds autogenerated docs for the ideas list component. |
| module.web/src/components/dnnuv-ideas/dnnuv-ideas.tsx | Implements ideas list UI and “post idea” entry point. |
| module.web/src/components/dnnuv-ideas/dnnuv-ideas.scss | Styles the ideas list layout. |
| module.web/src/components/dnnuv-idea/readme.md | Adds autogenerated docs for the idea detail component. |
| module.web/src/components/dnnuv-idea/dnnuv-idea.tsx | Implements idea detail view + edit/create form behavior. |
| module.web/src/components/dnnuv-idea/dnnuv-idea.scss | Styles the idea detail/edit screen. |
| module.web/src/components.d.ts | Updates Stencil component typings for new components/props. |
| module.web/package.json | Adds router dependency and updates build/lint wiring and deps. |
| module.web/package-lock.json | Locks updated npm dependency tree. |
| manifest.dnn | Adds Humanizer assembly and updates shipped assembly versions. |
| UnitTests/history/2026-02-07_00-35-36_CoverageHistory.xml | Adds unit test coverage snapshot output. |
| UnitTests/StartupTests.cs | Updates DI expectations for new registrations. |
| UnitTests/Services/Ideas/IdeasServiceTests.cs | Updates tests for new IdeaService signature and created-by metadata. |
| Services/Localization/LocalizationViewModel.cs | Adds new UI localization properties. |
| Services/Localization/LocalizationService.cs | Hydrates the new UI localization keys. |
| Services/Ideas/ViewModels/IdeaViewModel.cs | Adds description and corrects namespace for idea list VM. |
| Services/Ideas/ViewModels/IdeaDetailsViewModel.cs | Adds created-by and created-since metadata to idea details VM. |
| Services/Ideas/Mappers/IdeaMapper.cs | Maps idea entities to updated VMs; uses Humanizer for relative time. |
| Services/Ideas/IdeaService.cs | Adds portalId and author lookup for idea details; injects user adapter. |
| Services/Ideas/IIdeaService.cs | Updates interface signature to include portalId and view model types. |
| Module.csproj | Adds Humanizer dependency and embedded resource convention setting. |
| Migrations/Configuration.cs | Removes redundant EF migration ContextKey assignment. |
| Migrations/202602041849373_InitialCreate.resx | Updates migration metadata resource. |
| Migrations/202602041849373_InitialCreate.cs | New initial migration (table name aligned with module prefix). |
| Migrations/202602041849373_InitialCreate.Designer.cs | Updates migration id metadata. |
| Migrations/202602020254396_InitialCreate.cs | Removes the earlier initial migration. |
| IntegrationTests/history/2026-02-07_00-35-16_CoverageHistory.xml | Adds integration test coverage snapshot output. |
| IntegrationTests/Controllers/IdeaControllerTests.cs | Updates integration tests for portal settings and new VMs. |
| Extensions/ServiceCollectionExtensions.cs | Registers HttpContextBase + adapters for request context/user access. |
| Data/Entities/Idea.cs | Switches to EF [Table] attribute for correct table mapping. |
| Controllers/IdeaController.cs | Adjusts context handling and calls updated IdeaService API. |
| .github/badges/UnitTests/badge_linecoverage.svg | Updates reported unit test coverage badge. |
| .github/badges/UnitTests/badge_branchcoverage.svg | Updates reported unit test branch coverage badge. |
| .github/badges/IntegrationTests/badge_linecoverage.svg | Updates reported integration test coverage badge. |
| .github/badges/IntegrationTests/badge_branchcoverage.svg | Updates reported integration test branch coverage badge. |
Files not reviewed (1)
- module.web/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Member
Author
|
@david-poindexter copilot has a couple of valid points here, I'll revisit those tomorrow... |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Member
Author
|
@david-poindexter I handled the copilot suggestions and ready for your review. Thanks. |
david-poindexter
approved these changes
Feb 7, 2026
david-poindexter
left a comment
Contributor
There was a problem hiding this comment.
Great job @valadas (and Copilot) 🎉
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.