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
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
Comment #3
mably commentedComment #5
mably commented