• 
      

    Add flexible placement of actions in attachment points, with options.

    Review Request #14675 — Created Nov. 6, 2025 and submitted — Latest diff uploaded

    Information

    Review Board
    release-7.1.x

    Reviewers

    This is the last piece of the core actions rewrite to enable multiple
    views for the same actions.

    Instead of assigning a single attachment point and parent ID to an
    action, zero or more placements can now be assigned. A placement is an
    ActionPlacement instance that sets:

    1. The attachment point to render into
    2. An optional parent action ID
    3. An optional default renderer
    4. An optional DOM element ID

    This enables an action to (for example) be parented to a menu or another
    group in one attachment point, and then a button or some other render in
    another group.

    Actions no longer fail to register when a placement fails. That is, if
    an action is too deeply nested in one placement, it will still register,
    since it can still be used in another (even if registered later via a
    future extension hook).

    At this point, we have 4 core concepts comprising the action system:

    1. Actions, which contains the core metadata and client-side
      activation logic.

    2. Action renderers, which render the HTML and JavaScript for an action
      in a given attachment point.

    3. Attachment Points, which are a location in which actions can be
      placed, providing default renderers.

    4. Placements, which define the Attachment Point configuration in which
      an Action would be rendered, and options governing that rendering.

    Unit tests pass.

    Tested that all actions worked as expected, including with in-progress
    changes to consolidate the actions used for Quick Access.

    Commits

    Files