Interaction operations already control which outcomes can be signalled one-click from the actions list versus needing the interaction opened, via a requires_ui config key read by guardedOutcomes(), with a real signalUrl(). Interaction tasks lacked this: InteractionTaskActionHandler::signalUrl() hard-returned NULL, blanket-disabling inline signalling for every outcome, so an interaction task (a booking review) offered no one-click outcomes at all, only an open-it link.

Standardize the two interaction families on one mechanism. Lift requires_ui (default, form field, and a guardedOutcomes helper) into the shared InteractionPluginConfigTrait, have both InteractionTask and InteractionOperation use it, and make InteractionTaskActionHandler::signalUrl() return the real signal route the interaction page own outcome buttons already complete through. The signal controller already refuses a guarded (requires_ui) outcome inline and opens the interaction, so guarding is enforced end to end; which outcomes are guarded is now per-outcome config on both families, not a handler-level blanket disable.

Docs and fr.po updated; the requires_ui field and its translation move to the shared module.

Issue fork orchestra-3611023

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mably created an issue. See original summary.

mably’s picture

Status: Active » Needs review

  • mably committed 9a619cfb on 1.x
    task: #3611023 Standardize inline-signal guarding across interaction...
mably’s picture

Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.