8206 Commits

Author SHA1 Message Date
Tom Hykel a83c91d336 Merge pull request #23696 from opf/feature/stc-729-adapt-excel-and-csv-exports-for-semantic-identifiers
[STC-729] Support semantic identifiers in Excel and CSV exports
2026-06-12 12:45:29 +02:00
OpenProject Actions CI bee1f92245 Merge branch 'release/17.5' into dev 2026-06-12 05:08:37 +00:00
Tomas Hykel a30f5d5169 [STC-729] Adapt Excel and CSV exports for semantic identifiers
https://community.openproject.org/wp/STC-729
2026-06-11 20:58:47 +02:00
Pavel Balashou 36c0c8ae5e [JIM-112] Capital letters in user email or login break import with error.
https://community.openproject.org/wp/JIM-112
2026-06-11 11:34:54 +02:00
Klaus Zanders 34c262c489 Add more scopes for working time related models 2026-06-10 11:57:00 +02:00
Klaus Zanders bda6278fd6 Merge pull request #23512 from opf/resource-allocation-modals
Resource allocation modals
2026-06-10 11:50:11 +02:00
Klaus Zanders b7640dfccd Implement journaling for resource allocations 2026-06-09 10:31:37 +02:00
Mir Bhatia 141f4b1669 Improve async version 2026-06-09 08:53:11 +02:00
ulferts 4f5a52edf9 Merge remote-tracking branch 'origin/dev' into merge-release/17.5-20260605114354 2026-06-05 13:44:46 +02:00
Alexander Brandon Coles a7e0dc3f75 Merge remote-tracking branch 'opf/dev' into HEAD
# Conflicts:
#	modules/backlogs/config/locales/crowdin/cs.yml
#	modules/backlogs/config/locales/crowdin/es.yml
#	modules/backlogs/config/locales/crowdin/it.yml
#	modules/backlogs/config/locales/crowdin/ko.yml
#	modules/backlogs/config/locales/crowdin/pl.yml
#	modules/backlogs/config/locales/crowdin/pt-BR.yml
#	modules/backlogs/config/locales/crowdin/ro.yml
#	modules/backlogs/config/locales/crowdin/zh-CN.yml
#	modules/backlogs/spec/features/inbox_column_spec.rb
#	modules/backlogs/spec/support/pages/backlog.rb
#	modules/resource_management/config/locales/crowdin/es.yml
#	modules/resource_management/config/locales/crowdin/it.yml
#	modules/resource_management/config/locales/crowdin/ko.yml
#	modules/resource_management/config/locales/crowdin/pl.yml
#	modules/resource_management/config/locales/crowdin/zh-CN.yml
#	modules/wikis/config/locales/crowdin/es.yml
#	modules/wikis/config/locales/crowdin/it.yml
#	modules/wikis/config/locales/crowdin/ko.yml
#	modules/wikis/config/locales/crowdin/pl.yml
#	modules/wikis/config/locales/crowdin/pt-BR.yml
#	modules/wikis/config/locales/crowdin/zh-CN.yml
2026-06-04 09:44:51 +02:00
Henriette Darge df05959de7 Merge pull request #23542 from opf/dream-706-newly-created-wp-custom-field-cannot-be-added-to-an-existing-wp-form-configuration
[dream-706] Newly created WP custom field cannot be added to an existing WP form configuration
2026-06-04 09:28:55 +02:00
Henriette Darge 6c04182dff Simplify test case 2026-06-04 09:05:50 +02:00
Tomas Hykel a4ae9a44c9 Allow viewing Activity attachments in shared WPs 2026-06-03 16:08:36 +02:00
Alexander Brandon Coles e7a01b741f [OP-19415] Convert FilterForm to ViewComponent
Replaces `Filters::FilterForm` (an `ApplicationForm` subclass) with
`Filters::FilterFormComponent` (an `ApplicationComponent`). The old form
overrode `:nodoc:` Primer hooks (`before_render`, `perform_render`) and
read semi-public ivars (`@builder`, `@view_context`). The new component
receives the builder as an explicit keyword arg and uses a standard ERB
template, reducing Primer internal coupling from five semi-public APIs
to one (`FormList`).

https://community.openproject.org/wp/OP-19415
2026-06-02 18:50:35 +02:00
Klaus Zanders 9a875fde7a Merge pull request #23349 from opf/work-package-list-view
[Resource Management] Work Package List View
2026-06-02 16:49:02 +02:00
Oliver Günther 11dc79a74d Merge remote-tracking branch 'origin/release/17.5' into dev 2026-06-02 16:22:39 +02:00
Oliver Günther 9a91aed979 Merge remote-tracking branch 'origin/release/17.4' into release/17.5 2026-06-02 08:54:49 +02:00
Oliver Günther b9d0405c4e Merge remote-tracking branch 'origin/release/17.3' into release/17.4 2026-06-02 08:54:40 +02:00
Oliver Günther a52d0de5d6 Improve parsing of timestamp values 2026-06-02 08:25:44 +02:00
Klaus Zanders 0143cdd4aa Cleaned and shortened comments 2026-06-01 17:45:12 +02:00
OpenProject Actions CI 523ef39065 Merge branch 'release/17.5' into dev 2026-06-01 14:42:29 +00:00
Klaus Zanders 6cc78a5ec0 Correct filter creation, manual adding of work packages 2026-06-01 15:25:48 +02:00
Oliver Günther 1f3da064ac Escape CSV formula cells by default 2026-06-01 13:44:29 +02:00
Klaus Zanders 86eae9dc16 Move constantizing of views into the model 2026-06-01 11:36:10 +02:00
Klaus Zanders 41926a0a5c Add a scope to pre-load all children 2026-06-01 11:36:07 +02:00
Klaus Zanders 0206dbefea Move User Card view into the resource management module 2026-06-01 11:36:07 +02:00
Klaus Zanders e53b50fa94 Merge branch 'dev' into filter-form-with-wp-query 2026-05-30 17:08:42 +02:00
OpenProject Actions CI b2f72fd486 Merge branch 'release/17.5' into dev 2026-05-30 04:49:04 +00:00
Kabiru Mwenja 14ef6f901d Use semantic identifier for server-rendered search result links
Work package results on the search page build their link through the
acts_as_event url proc, which passed the numeric primary key instead of
the work package's display id. In semantic mode this rendered
/work_packages/<id> even though the row showed the semantic identifier,
unlike Rails URL helpers that already resolve the object via to_param.
Pass display_id so the link follows the same convention everywhere.
2026-05-29 19:12:27 +03:00
Tom Hykel 91c3d143dc fix(ui): Numeric ID instead of semantic one on the Activity page (WP #74912) (#23345)
---------

Co-authored-by: Kabiru Mwenja <k.mwenja@openproject.com>
2026-05-29 14:45:43 +03:00
Klaus Zanders 78abead8b4 Fix interaction between Filters::FilterForm and the WorkPackage Query 2026-05-29 13:40:58 +02:00
Klaus Zanders 7af6f5d6cf Merge pull request #23441 from opf/filter-form-component
Filter form component
2026-05-29 11:18:27 +02:00
Oliver Günther 5330745e69 Add the content type for external URLs 2026-05-29 10:26:43 +02:00
Oliver Günther 6f63faeed1 Extract and use charset to properly encode attachments 2026-05-29 10:26:43 +02:00
Klaus Zanders 2a7e93d978 Add compatability for Work Package Queries 2026-05-29 09:28:03 +02:00
OpenProject Actions CI 8e8e196afe Merge branch 'release/17.5' into dev 2026-05-28 10:23:21 +00:00
Kabiru Mwenja 58a5e19669 bug/74156 Sort WP lists by project identifier, not project_id, in semantic mode (#23400)
Sort WP lists by project identifier, not project_id, in semantic mode

The semantic-mode "ID" sort grouped projects by project_id (insertion
order) before the per-project sequence. Projects added after others
landed below them in the list even when their identifier sorted
alphabetically earlier. Sort by projects.identifier instead so the order
matches the visible "<project identifier>-<sequence>" column.

The projects table is already joined for every work-package list query,
so the new sort term costs no extra round-trip.
2026-05-28 12:05:24 +03:00
OpenProject Actions CI 49b802ca02 Merge branch 'release/17.5' into dev 2026-05-28 08:51:09 +00:00
Kabiru Mwenja ab32cab495 Merge pull request #23337 from opf/bug/74762-numeric-id-in-the-email-notification-after-adding-watchers
bug/74762 Numeric ID in the email notification after adding watchers
2026-05-28 11:38:02 +03:00
OpenProject Actions CI eb6717f81e Merge branch 'release/17.5' into dev 2026-05-27 14:11:35 +00:00
Andrej fca9d9cf3f Merge pull request #23379 from opf/bug/75381-jira-migrator-give-not-helpful-error-message-if-user-email-is-blank
[#75381] Jira Migrator give not helpful error message if user email is blank
2026-05-27 11:55:22 +02:00
Pavel Balashou 365db7e703 [#75381] Jira Migrator give not helpful error message if user email is blank
https://community.openproject.org/wp/75381

- Add user/group information to the error message in case of creation failure.
2026-05-27 10:55:22 +02:00
Oliver Günther 4cc9faef4f Consistently use OpenProject::SqlSanitization instead of forwarding to sanitize_sql_array 2026-05-27 10:08:16 +02:00
Oliver Günther 4724150e3d Avoid quote_string in favor of bindings where possible 2026-05-27 10:08:16 +02:00
Oliver Günther a1505dc0f5 Merge remote-tracking branch 'origin/release/17.5' into dev 2026-05-27 09:58:01 +02:00
Behrokh Satarnejad dbef4d9e71 [74931] Show type of field beside the attribute (#23205)
* Show filed type beside its name

* Add feature spec

* Add a comment for field_type_label

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Add custom field type label assertion to feature spec

* Move custom field to active group before asserting type label

* Rename the displayed field format value from field_type to
field_format_label and reuse CustomFieldsHelper for custom field format
labels.

* Make the table configuration modal wait more and embedded work package table loading take longer to avoid flaky failures when the modal or embedded table is still refreshing in CI

* Undo changes for switch_to method

* Undo changes for the tests that are sometimes failing on CI

* Update spec/features/types/form_configuration_spec.rb

Co-authored-by: Henriette Darge <h.darge@openproject.com>

* Update spec/helpers/types_helper_spec.rb

Co-authored-by: Henriette Darge <h.darge@openproject.com>

* Rubocop errors fixed

* Fix flaky field format labels spec by revisiting page after custom field creation

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Henriette Darge <h.darge@openproject.com>
2026-05-27 09:24:38 +02:00
OpenProject Actions CI 0a4a6de314 Merge branch 'release/17.5' into dev 2026-05-26 19:46:20 +00:00
Kabiru Mwenja c607b36b8e Rename with_hash_prefix to format_display_id 2026-05-26 22:10:07 +03:00
Oliver Günther 96c1118609 Merge pull request #23208 from opf/feat/project-cost-types
Project specific cost types
2026-05-26 20:53:13 +02:00
Kabiru Mwenja e70b9ab21c Tighten mention pipeline: helper extraction, principal preload, coverage
Lift the static-anchor label composition out of LinkHandlers and into
a small Helpers::StaticMacroLabel module so the envelope path
(MentionFilter) and the text-reference path (LinkHandlers) share one
shape — same module called from both, no cross-class reach-through.

Batch the User and Group mention preloads alongside the existing WP
preload so a note with N principals costs one SELECT per type rather
than N. Class lookup now reads from indexed hashes; visibility-gating
stays where it was (at the find for principals, separate from the
label for WPs).

Rename SemanticIdentifier.format → with_hash_prefix; the prior name
was broad enough to invite misuse for arbitrary work-package values.
Override StaticHtmlFormatter#filters explicitly so a future filter
appearing in Formatter#filters is a deliberate decision to apply to
mailer-side rendering, not an automatic one.

Spec coverage: classic-mode quickinfo and inaccessible-WP paths
(symmetric with the existing semantic-mode contexts), a principal
preload N+1 guard, and an anonymous current_user smoke test that
confirms the static-HTML pipeline doesn't raise when invoked without
an authenticated viewer.
2026-05-26 14:24:02 +03:00