1057 Commits

Author SHA1 Message Date
Kabiru Mwenja ee8375dcfd Merge pull request #23712 from opf/implementation/stc-783-adapt-pdf-export-of-timesheets-for-semantic-identifiers
Implementation/STC-783: Adapt PDF export of timesheets for semantic identifiers
2026-06-12 17:09:17 +03:00
Kabiru Mwenja 20e9771457 Code-maintenance: remove unreachable WorkPackageCostlogController (#23704)
Remove unreachable WorkPackageCostlogController

The controller has no route in the application and is referenced nowhere,
so it can never be dispatched. The similarly named cost-report redirect
flow is served elsewhere, leaving this as dead code.
2026-06-12 14:46:22 +03:00
Kabiru Mwenja 375dcaba05 Adapt timesheet PDF export for semantic work package identifiers
The work package column hardcoded the numeric id. Using formatted_id
renders the project-based identifier in semantic mode.
2026-06-12 14:15:23 +03:00
Dombi Attila 5a14af6e0d Merge pull request #23630 from opf/task/op-19483-introduce-bundler-cooldown
[OP-19483] Introduce Bundler cooldown
2026-06-11 10:47:57 +03:00
Dombi Attila f67e8c02b8 Fix missing magic comment 2026-06-09 18:00:38 +03:00
Dombi Attila 90d54206a4 Add cooldown to the module Gemfiles too 2026-06-09 17:06:34 +03:00
OpenProject Actions CI 16707c0224 update locales from crowdin [ci skip] 2026-06-09 12:39:31 +00:00
ulferts db815d0d22 Merge remote-tracking branch 'origin/dev' into merge-release/17.5-20260609045502 2026-06-09 09:32:19 +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 9993792dbf Merge remote-tracking branch 'origin/release/17.4' into release/17.5 2026-06-02 16:22:18 +02:00
Oliver Günther 2a6412d5ae Merge remote-tracking branch 'origin/release/17.3' into release/17.4 2026-06-02 16:22:05 +02:00
Oliver Günther bef69b6aaf Parse query params as a separate options hash, not kwargs 2026-06-02 16:21:14 +02:00
Klaus Zanders 0fe1f31822 Get rid of CSS styling on #add_filter_block and #add_filter_select.
Instead make it CSS classes and put it on the old instances
2026-05-29 09:28:01 +02:00
OpenProject Actions CI eb6717f81e Merge branch 'release/17.5' into dev 2026-05-27 14:11:35 +00:00
Oliver Günther 595275a218 Ensure field name used in report is whitelisted 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
Alexander Brandon Coles 0812f6f8bf Merge branch 'dev' into housekeeping/bump-jquery-4.0.0 2026-05-27 09:15:25 +02:00
Ivan Kuchin e3afba4465 follow yamllint except key ordering 2026-05-26 16:33:15 +02:00
OpenProject Actions CI a147cf2168 Merge branch 'release/17.5' into dev 2026-05-26 13:14:53 +00:00
Alexander Brandon Coles c2e8f514e5 Move reporting filter removal click to wrapper
Moves the `click->reporting--page#removeFilter` Stimulus action from
the inner `<a>` element to the outer `<div>` wrapper. This ensures the
entire remove-filter area is a valid click target, so the hidden
`fields[]` value is cleared reliably when removing a filter.
2026-05-26 12:03:21 +02:00
Alexander Brandon Coles 9f2719dcd1 Refactor reporting filter SQL setup
Extract operator application and query-value preparation from
`sql_statement` to keep the blank-value fix while bringing the method
back under RuboCop metric limits.
2026-05-26 12:03:21 +02:00
Alexander Brandon Coles 1e1636eaf9 Fix reporting date operators with blank values
Skip positive-arity reporting operators when no value is present, which
otherwise causes sporadic feature spec failures. Cover the blank-value
case through the filter SQL path and keep direct operator specs focused
on explicit nil values.
2026-05-26 12:03:21 +02:00
David. 7645b508b6 Merge pull request #23312 from opf/bug/73660-not-possible-to-filter-for-blocked-users-in-time-and-cost-report
https://community.openproject.org/wp/73660
2026-05-26 09:05:31 +02:00
OpenProject Actions CI e38557f12f Merge branch 'release/17.5' into dev 2026-05-26 04:53:23 +00:00
OpenProject Actions CI 7983e8f4cb update locales from crowdin [ci skip] 2026-05-26 04:30:40 +00:00
OpenProject Actions CI 3ca0c4d361 update locales from crowdin [ci skip] 2026-05-26 04:28:22 +00:00
Tomas Hykel 948fa43321 chore: Remove feature flag for project-based work package identifiers 2026-05-25 17:45:06 +02:00
OpenProject Actions CI 9e37bb03d7 update locales from crowdin [ci skip] 2026-05-23 04:18:23 +00:00
Mir Bhatia 3b43e4fb98 Allow filtering for locked users in time and cost report 2026-05-22 11:24:07 +02:00
OpenProject Actions CI 22b36b603f update locales from crowdin [ci skip] 2026-05-21 14:09:08 +00:00
OpenProject Actions CI 9bc594acc2 update locales from crowdin [ci skip] 2026-05-19 04:35:25 +00:00
OpenProject Actions CI d5b027b04b update locales from crowdin [ci skip] 2026-05-19 04:31:41 +00:00
Jan Sandbrink 90acd7a022 Merge pull request #22549 from opf/session-auth-csrf-protection
Consider Sec-Fetch-Site header for session auth
2026-05-18 08:59:56 +02:00
Kabiru Mwenja c67978a7d1 Encapsulate canonical-numeric guard as numeric_id?
The `value == value.to_i.to_s` round-trip check that filters leading-
zero ID forms ("0123") was duplicated across the WP link handler, the
PDF export macro, and the cost-query filter.

A new `WorkPackage::SemanticIdentifier.numeric_id?(value)` predicate
captures the canonical-numeric check at one site. It pairs with
`semantic_id?` as the WP-finder shape gate; the two answer different
questions (shape vs routing) and so are kept independent rather than
expressed as one another's negation.

The cost-query filter switches to the predicate in this slice; the
text-formatting and PDF callers convert in a follow-up.
2026-05-13 17:51:43 +03:00
Eric Schubert f3f8625434 [chore] removed docs and code insertions for custom header
- X-Requested-With header no longer needed to prevent CSRF for session
  based auth
- removed occurences and mentions from code and docs
2026-05-12 08:13:14 +02:00
OpenProject Actions CI cddc29b8e0 update locales from crowdin [ci skip] 2026-05-10 04:26:19 +00:00
OpenProject Actions CI bda5ed1cdc update locales from crowdin [ci skip] 2026-05-10 04:24:16 +00:00
OpenProject Actions CI 0778811719 Merge branch 'release/17.4' into dev 2026-05-06 12:47:03 +00:00
Oliver Günther c660802146 Merge remote-tracking branch 'origin/release/17.3' into release/17.4 2026-05-06 09:19:25 +02:00
OpenProject Actions CI 8803d3366f update locales from crowdin [ci skip] 2026-05-06 04:26:27 +00:00
OpenProject Actions CI 0e4437def6 update locales from crowdin [ci skip] 2026-05-06 04:21:38 +00:00
Oliver Günther ee21124210 Consistently output CSRF tokens in cost reporting 2026-05-04 10:10:52 +02:00
OpenProject Actions CI 02ab170a14 update locales from crowdin [ci skip] 2026-04-25 04:01:06 +00:00
OpenProject Actions CI d309f2a419 Merge branch 'release/17.4' into dev 2026-04-24 04:34:07 +00:00
OpenProject Actions CI f579df8b4b update locales from crowdin [ci skip] 2026-04-24 04:18:08 +00:00
Oliver Günther 4ce9a19709 Properly validate renaming of cost reports 2026-04-23 21:48:10 +02:00
Kabiru Mwenja e8d41a3c4d Cover autocompleter label in classic and semantic modes
Adds two test layers that would have caught the plain-hash bug the
widget fix addressed:

- Widget unit spec (modules/reporting/spec/lib/widget/filters/work_package_spec.rb)
  asserts map_filter_values emits id/displayId/formattedId/subject/name
  with the right values in both modes. Fast feedback, pins the
  Rails-to-Angular contract the autocompleter template depends on.

- work_package_costlog_spec is now parameterised over classic and
  semantic modes via shared_examples, asserting the pre-populated
  autocompleter renders "#42 subject" and "MYPROJ-1 subject"
  respectively. End-to-end confidence that the widget, template, and
  formattedId helper agree in a real browser.
2026-04-21 20:47:13 +03:00
Kabiru Mwenja 143b3b2da9 Fix autocompleter label for pre-populated work packages
The reporting filter widget pre-populates opce-autocompleter with
plain hashes ({id:, name:}). When the autocompleter template switched
from `#{item.id}` to `{{ item.formattedId }}`, those hashes had no
formattedId key and the ID prefix disappeared from the selected-value
label, breaking work_package_costlog_spec and time_entry_activity_spec.

Extend Widget::Filters::WorkPackage#map_filter_values to emit
formattedId, displayId, and subject alongside id/name so the
autocompleter template has the data it needs.

Centralise the formatting logic in a new WorkPackage#formatted_id
model method, mirroring the frontend formatWorkPackageId helper:
semantic identifiers pass through (PROJ-42); numeric ids are
prefixed with # (#42).
2026-04-21 19:59:02 +03:00
Oliver Günther a727128fe5 Prevent cost report renaming 2026-04-15 14:18:33 +02:00
OpenProject Actions CI 9ce2ccddbf update locales from crowdin [ci skip] 2026-04-09 11:41:23 +00:00