the publish workflow listener would check the current node and if its published, simply return and let the provider continue. createFromNode is recursive, so it gets to decide again for each child. as soon as it encounters something not published, it will tell to not process children. hm, and we need something to distinguish whether an item should be created for the current node at all or not. i guess best the event would have setIgnoreItem and isIgnoreItem methods for that.

note that the current ContentAwareFactory is incorrect with publish workflow, as it will create the root node even if it is not published. so we do want a slight BC break here.

indeed, event handlers do have a risk on stepping on each others toes. the publish workflow handler is pretty simple i would say, as it can just overwrite whatever was there to not show something that is not published. then its a question of timing with event priorities. and for custom events of being careful not to overwrite previously set things if we might want to preserve them.