Dave and I talked through this idea a bit today over a coffee. It has come up a handful of times and there are certainly use interesting use cases for it.
But of course, the devil is in the details and there are a wide range of uses cases to consider.
Here's what we came up with as a starter for the approach. I will say up front, this doesn't mean we'll drop what we're working on to deliver this. But having a thought through design is the first step to it happening at some point in the future.
This is focused on the user experience of the feature rather than any specifics of how it would be implemented.
- A node that is 'locked' cannot be moved.
- if you select multiple nodes including a locked one, the selection cannot be moved
- if a locked node is imported, it can be moved during the initial import, but once placed, it cannot move
- Double-clicking on the node will open its edit dialog, but the Done button is unavailable.
- this allows a user to examine a node's configuration but not change it
somewhere in the edit dialog is a toggle to lock/unlock the node. Unlocking the node will enable the Done button. If the node is then relocked, the Done button remains active to save any changes.
- A Flow can be locked.
- this will lock all nodes in the flow and the flow's properties.
- double-clicking on a node in a locked flow will open its edit dialog, with the Done button unavailable
- the dialog will not provide an unlock option - that must be done at the flow level
Some open questions:
- can a locked node be copy/pasted?
- can a locked node be exported?
- should a node have any visual indication that its locked?
- Maybe something that only appears when the node is selected (similar to the Link node behaviour)
- should there be a keyboard-click combo that allows a locked node to be moved?
Some other half-baked thoughts:
- should there be a specific 'unlock-nodes' (name very much tbd) permission - this would allow for a setup where one user (lets call them, Teacher) can setup some flows with missing pieces, and another user (lets call them Student) can fill in those missing parts without being able to modify the existing parts.