Form builder stores the current editing state in a session based storage on the server-side (ctools_object_cache). If the form changes (multiple users, using the non-form_builder interface, …) the editing states are not cleared. This means that users that have edited the form via form_builder will not see the changes until they hit "Cancel" in form_builder. Simply clearing the cache as proposed in #2034543: Form cache delete on node save should remove all cache entries for that form doesn't cut it either since we can't just simply throw away the user's work.
This issue is about finding and implementing a sensible solution for that.
Original issue
Steps to reproduce:
1. Add a new component via node/*/webform/components
2. Click the formbuilder tab
3. Component doesn't show up
OR
1. Edit an existing component via node/*/webform/components
2. Click the formbuilder tab
3. Component doesn't update
OR
1. Delete an existing component via node/*/webform/components
2. Click the formbuilder tab
3. Component still exists
Comments
Comment #2
apmsooner commentedAlso adding that modifying the components at all via formbuilder wipes out any changes from the components section outside of formbuilder. So, if you were to manually add an additional component via node/*/webform/components and save, you will see the new component in that section. If you then navigate to node/*/webform where formbuilder renders, not only do you not see the added component, saving that form will wipe it out from the normal components admin section.
Comment #3
torotil commentedYes, that's an issue. Basically the same things apply when two users edit the webform at the same time. With the standard webform interface and the form_builder interface you need only one. See #1911248: Add abilitaty for admins to bypass the Form Builder interface to access advanced Webform component settings.
So this is more about adding a "edit conflict detection" than about an actual bug. This is a complex topic. Feel free to provide patches.
For the while: After you make changes to the webform in node/*/webform/components you need to hit cancel on the webform to load the changes.