Repository navigation
Experiment: Add meetings and wiki pages to global search - #25141
lindenthal wants to merge 6 commits into
Conversation
Deploying openproject with ⚡ PullPreview
|
3f18160 to
269bfe4
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The wiki pages query does not register the newly introduced UpdatedAtFilter, and the API docs omit the new updatedAt property despite it being exposed and used by the UI.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Extends OpenProject’s global search (UI + API v3) to include Meetings and Wiki pages alongside Work packages, adding collection endpoints and search/quick-filter support while keeping permission-based visibility constraints.
Changes:
- Added API v3 collection endpoints and query/filter plumbing for wiki pages and meetings (incl. full-text search).
- Updated global search overlay to fetch and display Work packages/Meetings/Wiki pages with tabs and quick filters.
- Expanded API documentation (OpenAPI + tags/paths) and added request/unit specs for the new behaviors.
File summaries
| File | Description |
|---|---|
| spec/requests/api/v3/wiki_pages_resource_spec.rb | Request specs for wiki pages collection search behavior. |
| modules/wikis/spec/models/queries/wikis/wiki_pages/filter/updated_at_filter_spec.rb | Unit spec for wiki page updated-at query filter. |
| modules/wikis/lib/open_project/wikis/engine.rb | Registers wiki page query filters. |
| modules/wikis/app/models/queries/wikis/wiki_pages/filter/updated_at_filter.rb | Adds updated-at filter for wiki page queries. |
| modules/wikis/app/models/queries/wikis/wiki_pages/filter/search_filter.rb | Adds full-text search filter for wiki pages (title + text). |
| modules/meeting/spec/requests/api/v3/meetings/meetings_resource_spec.rb | Request specs for meetings collection search behavior (title/agenda/outcomes). |
| modules/meeting/spec/models/queries/meetings/filters/updated_at_filter_spec.rb | Unit spec for meeting updated-at query filter. |
| modules/meeting/app/models/queries/meetings/filters/updated_at_filter.rb | Adds updated-at filter for meeting queries. |
| modules/meeting/app/models/queries/meetings/filters/search_filter.rb | Adds full-text search filter for meetings across related tables. |
| modules/meeting/app/models/queries/meetings.rb | Registers new meeting filters (search + updatedAt). |
| lib/api/v3/wiki_pages/wiki_pages_api.rb | Adds GET /api/v3/wiki_pages index endpoint mount. |
| lib/api/v3/wiki_pages/wiki_page_representer.rb | Adds HTML link (showWikiPage) and updatedAt to wiki page representer. |
| lib/api/v3/wiki_pages/wiki_page_collection_representer.rb | Introduces wiki page collection representer for index responses. |
| lib/api/v3/utilities/path_helper.rb | Adds API path helper for wiki page index + HTML show link helper. |
| lib/api/v3/utilities/endpoints/index.rb | Extends generic index endpoint to accept an explicit query class. |
| frontend/src/app/shared/helpers/api-v3/api-v3-filter-builder.ts | Extends supported filter operators used by new quick filters. |
| frontend/src/app/shared/components/primer/dynamic-icon-map.ts | Adds icons used for new result types in global search. |
| frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.ts | Adds a method to update items programmatically. |
| frontend/src/app/features/hal/resources/wiki-page-resource.ts | Extends wiki page HAL resource fields + adds HTML show path helper. |
| frontend/src/app/features/hal/resources/meeting-resource.ts | Extends meeting HAL resource typing (project + updatedAt). |
| frontend/src/app/core/global_search/services/global-search.service.ts | Adds filter param handling for different result types. |
| frontend/src/app/core/global_search/openproject-global-search.module.ts | Wires dependencies needed for new global search UI (icons). |
| frontend/src/app/core/global_search/input/global-search-input.component.ts | Implements multi-type fetching, tabs, and quick filters. |
| frontend/src/app/core/global_search/input/global-search-input.component.spec.ts | Adds unit tests for new helper functions/behaviors. |
| frontend/src/app/core/global_search/input/global-search-input.component.sass | Styles new tabs/toolbar/quick filters and result cards. |
| frontend/src/app/core/global_search/input/global-search-input.component.html | Adds tabs, quick filters, and unified result rendering. |
| frontend/src/app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths.ts | Allows passing additional filters into WP typeahead/id fetch. |
| frontend/src/app/core/apiv3/api-v3.service.ts | Adds API v3 endpoint accessor for wiki_pages. |
| docs/api/apiv3/tags/wiki_pages.yml | Updates wiki pages tag documentation (adds showWikiPage link). |
| docs/api/apiv3/paths/wiki_pages.yml | Documents new GET /api/v3/wiki_pages endpoint (filters/search). |
| docs/api/apiv3/paths/meetings.yml | Documents filters support for meetings index. |
| docs/api/apiv3/openapi-spec.yml | Adds wiki pages collection path + schema to OpenAPI spec. |
| docs/api/apiv3/components/schemas/wiki_page_model.yml | Updates wiki page schema links (adds showWikiPage). |
| docs/api/apiv3/components/schemas/wiki_page_collection_model.yml | Adds wiki page collection schema. |
| config/locales/js-en.yml | Adds strings for new global search UI and quick filters. |
Review details
- Files reviewed: 35/35 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| _links: | ||
| type: object | ||
| properties: | ||
| showWikiPage: | ||
| allOf: |
| | self | This wiki page | WikiPage | not null | READ | | ||
| | attachments | The files attached to this wiki page | Collection | | READ | | ||
| | project | The project the wiki page belongs to | Project | not null | READ | | ||
| | showWikiPage | Open the wiki page in the web application | Link | not null | READ | | ||
|
|
269bfe4 to
e0b6a19
Compare
Expose permission-aware API v3 search filters for meetings and wiki pages, add the missing wiki page collection, and show all three resource types in the global search dropdown.
Register the updated-at filter used by global search and cover its combination with search and visibility in the wiki collection API. Document updatedAt and regenerate the new filter component copyright header.
6c53c16 to
09b6518
Compare
Include the date property decorator required by updatedAt so eager loading succeeds. Cover timestamp serialization in the wiki page API request specs.
Preserve the selected project scope and resource type when submitting searches. Register the quick-filter icons so oversized empty SVGs cannot intercept tab clicks. Update feature helpers to use the new scope selector and resource tabs, and cover search state in unit tests.
|
Warning Flaky specs
🤖 Ask Copilot to investigateCopy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer. |
Summary
Tests