368 Commits

Author SHA1 Message Date
Klaus Zanders 24a5b24bcd Merge pull request #23661 from opf/wire-up-edit-work-package
[Resource Management] Allow editing Work on the WP from the Resource Planner
2026-06-11 16:19:17 +02:00
Klaus Zanders c730866e12 Ensure that everything is nicely reloaded when creating/updating/deleting a resource allocation 2026-06-10 17:00:39 +02:00
Klaus Zanders 1d91460c84 Extract progress modal form glue into a shared ModalParams concern 2026-06-10 15:40:15 +02:00
Kabiru Mwenja 0d3c2850c9 Resolve notification email links to the semantic identifier too
The notification-row partial and the mention email's "see in center"
button built their /notifications/details/<id> links from the numeric
primary key, so mention, digest and reminder emails still linked to the
numeric URL on a semantic-identifier instance.

The split view already resolves the id through find_by_display_id, which
accepts both the numeric id and the semantic identifier, so handing it
the work package lets to_param render the display id. Also drops the
unused split_view_work_package_id helper, whose to_i wrongly suggested
the route only accepts a numeric id.
2026-06-02 10:18:30 +03:00
Dombi Attila 86d4831164 Update the respond_to_with_turbo_streams method to accept a service result too as a response. 2026-05-19 00:44:11 +03:00
Behrokh Satarnejad d924c255cf [69524] Primerize Types form configuration page (#22854)
* Create the section component

* Create the form configuration component

* Create a controller

* change form template

* Use primer dialog for reset to defaults button

* show WP configuration modal while creating a related WPs table

* Fix the drag and drop functionality without save button

* Fix renaming functionality

* Use generic drag and drop in form configuration and move all client side action handling to server side

* Fix embedded query form configuration regressions

* Add data test selectors to all elements that we used for test

* update the current tests with the new implementations and design

* Add new tests for new controller of sections and rows

* WP quesry row should only have edit quesry action

* Update transformer spec regarding the new changes

* Fix the failing test in reset form configuration and some tests for actions

* Fix rubocop errors

* Fix eslint errors

* Add spec for removing a section

* Use condensed border boxes

* fix failing specs

* fix failing specs

* Switch the buttons in form configuration component

* Create the section at the top of the list

* Instead of using UUID, use the name of the group as the key

* Add missing check for EE for section actions

* Remove angular components

* Use action list instead of a border box for left side panel

* Reduce the margin between the right side panel and sub header, add some space to the query table left side, span to the whole available space

* Show validation errors while updating and creating a section

* Use a danger dialog for reset to default

* Add a confirmation for removing the section

* Align items in the row

* Use test_selector instead of data-test-selector

* Create move_action in rb file

* Create move_action in rb file

* Simplify section component

* Simplify form configuration component

* Remove dialog for rename and delete section on missing EE

* Create a component for inactive attribute list

* Create a separate component for reset dialog

* Remove EE feedback dialog

* Remove form partial which is not needed anymore

* Remove unused js strings

* Update using update_via_turbo

* Remove form configuration rows controller

* Create a blanksalte component

* Fix failing specs

* Fix failing specs

* Fix failing specs

* Remove unused translation strings

* Align form configuration section routes with actual create flow

* Change section to group

* Change section to group in services and controllers

* Change section to group in en.yml

* Fix rubocop errors

* Move the query group persistence assertion from the JS feature spec
to the synchronous form configuration groups controller spec.

* Reuse query service result in embedded query build

* Keep inactive attribute filter after turbo list refresh

* Extract form configuration group edit state into form model

* Fix the failing test

* Potential fix for pull request finding 'CodeQL / Potentially uninitialized local variable'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Rename inactive attribute component inputs

* Refine reset dialog wording for form configuration

* Use direct Turbo action for adding attribute groups

* Reuse generic filter-list controller for inactive attributes

* Remove focus impelementation in ts

* Group form configuration Stimulus controllers under one namespace

* Use turbo request service in form configuration controller

* Clarify legacy group key normalization in form config contract

* Replace inactive attribute list wrapper via turbo stream

* Extract duplicate untitled group key generation into Type::FormGroup.next_untitled_key

* Auto-generate untitled group name on create instead of returning an error

* Avoid mixed return types in form config group create service

* Extract shared form configuration group service behavior into concern

* Fix spacing for the last group and italic font for the placeholder rows

* Replace Angular no-results component with Primer Banner on form configuration page

* Hide dropped element immediately to prevent flickering before Turbo Stream response

* Reload type before rendering create error to prevent duplicate groups

* Await service initialization before use to prevent potential race condition

* Replace sleep calls with deterministic waits in form configuration spec

* Handle malformed JSON and invalid query errors gracefully in form configuration update

* Make query group label a clickable button and empty group hint italic

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-13 12:56:18 +02:00
Oliver Günther eae05f9d1a Fix after login redirect not ending up on configured URL by default
We used request.url and a back_url for the home path to redirect users
if they did not end up trying to access on a deep link.

In case you access / and get redirected by require_login, you want users
to end up on the after_login_default_redirect_url

Likewise, if you access /login without a back_url, you want the same
behavior

Deep linking logins are unchanged

https://community.openproject.org/work_packages/74756
2026-05-08 09:26:58 +02:00
Henriette Darge 66cae3a519 Merge remote-tracking branch 'origin/dev' into feature/65404-combine-and-redesign-notification-settings-and-email-reminders-pages-in-myaccount-area 2026-04-07 09:08:43 +02:00
Andrej 09d81d666b Merge branch 'dev' into merge-release/17.3-20260331113837 2026-03-31 13:39:43 +02:00
Oliver Günther d675f09e8e Allow selection of existing user IDs only when user is visible
https://community.openproject.org/work_packages/73369
2026-03-31 12:49:15 +02:00
Henriette Darge d5a7da66ce Fix workday saving for users when disabling all workdays 2026-03-30 12:20:37 +02:00
Henriette Darge ee9140df34 Extend the exisisting Notifications::ShowPageComponent to be used for other users in the administration settings as well 2026-03-27 13:49:49 +01:00
Jan Sandbrink f9d8bc6614 Introduce SubclassResponsibility error
This error is intended for cases when a method is
intentionally not implemented, because the module/class defining
it expects a subclass (or class including the module) to implement
the method.

This is intended to distinguish it from other cases, such as:
* feature not implemented yet
* edge case of a method call not yet supported

Notably it avoids the misuse of the Ruby-defined NotImplementedError,
which is only intended for much more specific scenarios:

> Raised when a feature is not implemented on the current platform. For example, methods depending on the fsync or fork system calls may raise this exception [...]

Also see https://docs.ruby-lang.org/en/master/NotImplementedError.html
2026-03-27 08:14:56 +01:00
Oliver Günther d3f543ddd4 Alter i18n links to avoid inconsistency 2026-03-20 09:49:11 +01:00
Oliver Günther 4d731dcab6 Replace raw and explicit html_safe calls 2026-03-20 09:49:10 +01:00
Klaus Zanders 59696bbd7d Merge branch 'dev' into user-working-times 2026-03-11 14:25:33 +01:00
Henriette Darge c814a59bd4 Correctly show the blue info banner when no items are present. Further, show an error message when trying to delete the last custom option 2026-03-09 10:56:04 +01:00
Klaus Zanders 5959386860 Add feature flag for working times 2026-03-06 13:28:06 +01:00
Klaus Zanders 061adf07b7 Add controllers to allow modifying resources for other users 2026-03-06 13:28:04 +01:00
Pavel Balashou ed4d8ce316 Merge remote-tracking branch 'origin/dev' into jira-migration 2026-02-25 10:47:28 +01:00
Pavel Balashou 6ef68298c1 Merge branch 'dev' into jira-migration 2026-02-23 16:08:11 +01:00
Henriette Darge 7aadbb3c72 Merge branch 'dev' into feature/70292-primerize-custom-field-forms 2026-02-23 15:51:20 +01:00
Henriette Darge 058e0e1dd9 Guard params check and allow further controller on table component 2026-02-23 15:01:32 +01:00
Henriette Darge 72a274dbd5 Restore the old customOptions table but within a separate "items" tab 2026-02-19 15:45:20 +01:00
as-op 86c8326209 obey rubocop 2026-02-19 15:31:24 +01:00
Jan Sandbrink 76dd718136 Move generation of WWW-header into format block
This way, the header is only generated when it's needed
and not on every request.
2026-02-13 13:23:54 +01:00
Jan Sandbrink eb73e27e23 Merge pull request #21968 from opf/rename-rest-api-enabled
Rename rest_api_enabled to api_tokens_enabled
2026-02-13 09:52:58 +01:00
Jan Sandbrink d61bb47b2b Rename rest_api_enabled to api_tokens_enabled
The name of this setting was pretty outdated by now.
It might have disabled the entire API in the past, but that time
is long gone. By now the APIv3 can't be disabled at all and OpenProject
would fall apart if it was disabled.

The only thing that this setting changes, is whether users can create
an access token in their account settings and whether tokens created
this way are accepted by OpenProject. So naming and description have
been adapted accordingly.
2026-02-13 09:24:53 +01:00
Pavel Balashou 2e57030482 Use state_machine to manage jira_import state. 2026-02-10 12:25:38 +01:00
Jan Sandbrink 508c8bbad7 Always respond in Bearer method for WWW-Authenticate header
The intention of this change is to always respond in the metadata-rich
version of the header that indicates things like the required scope and
the URL of the resource_metadata endpoint, which was previously hidden
and only visible if clients used a non-standard HTTP request header.

semantically it's probably the preferable version of the header by now
anyways, because:

* all APIs accept some kind of Bearer token, not all of them accept Basic auth
* Even API tokens can now be passed as Bearer tokens

Practically the Basic auth header also caused unintended browser pop-ups when the frontend
code didn't include the correct request header to avoid the Basic auth offer, this now can't
happen anymore, since the Basic auth version of the header is only returned, if the client actively
tried to authenticate through Basic auth.
2026-02-10 09:02:07 +01:00
as-op faa588aa6f fix select projects modal submit 2026-02-09 16:38:38 +01:00
as-op 2762a72ca2 switch selection of projects from frontend js to backend with pagination support 2026-02-09 16:03:35 +01:00
Oliver Günther 00feb586fa Rework authorization with clearer load_and_authorize_with_permission_in_project 2026-01-16 10:31:30 +01:00
OpenProject Actions CI a99e84e1ff Merge branch 'release/16.6' into release/17.0 2025-12-01 10:05:21 +00:00
Oliver Günther 7026df4771 Log failed logins when using password change 2025-12-01 10:06:43 +01:00
Oliver Günther 47477fe687 Add tab for work package custom fields 2025-11-25 22:06:39 +01:00
Bruno Pagno 61fa598cde allow dynamic CSP to define addresses without standard ports 2025-10-28 08:16:38 +01:00
Oliver Günther ec60cb7bfd Use EmailValidator.valid?(id) instead of id.to_i
Remark from Klaus. Not related to this PR, but emails are allowed to
start with numbers. So the id.to_i will return that number when the
email starts with one.
2025-10-23 12:59:58 +02:00
Oliver Günther fdcaa56d3b Return the invited user, even if send_notifications is suppressed
You invited the user after all, in case of sharing, we want a custom
notification
2025-10-23 12:59:57 +02:00
Oliver Günther f342732b25 Invite users by email 2025-10-23 12:59:56 +02:00
Oliver Günther 0f1f0e62cb Reduce visibility of principals to common memberships or view_all_principals permission 2025-10-23 12:59:56 +02:00
Klaus Zanders 9fa00aa797 Merge pull request #20382 from opf/implementation/67310-display-multiple-outcomes-and-have-the-ui-work-correctly
Allow displaying multiple outcomes
2025-10-23 10:47:23 +02:00
Klaus Zanders 8efb3e0fd0 Allow replacing components with other components
Taken from https://github.com/opf/openproject/pull/20385
2025-10-21 14:44:51 +02:00
Oliver Günther 3b0a489bd9 Add message and invite 2025-10-21 10:01:26 +02:00
Oliver Günther 8dd39c9f9b Allow invitations 2025-10-21 10:01:25 +02:00
Kabiru Mwenja 22b139c8f4 Merge branch 'dev' into merge-release/16.5-20251010123254 2025-10-10 15:36:38 +03:00
Kabiru Mwenja 2484b48525 Switch from infinite scrolling to managed lazy loaded pages
Akin to lazy frames but with better intersection threshold control
2025-10-08 15:42:42 +03:00
Kabiru Mwenja 2468d4d98a Set up POC for infinite scrolling on AT (Messy Commit!) 2025-10-08 15:42:38 +03:00
Henriette Darge 2eb2c84b59 Merge remote-tracking branch 'origin/release/16.5' into housekeeping/merge-release-into-dev 2025-10-01 11:02:10 +02:00
Eric Schubert cdc8201ab8 [#59359] redirect to edit path after creating a custom field
- https://community.openproject.org/work_packages/59359
2025-09-26 14:22:28 +02:00