Content does not seem to be published
Question
Modifications have been made in the edit mode and have been published but they're not present in live, do you know why?
There isn't any error in the logs.
Answer
One explanation to this behavior is the presence of User Generated Content (UGC).
The principle of UGC is explained there: when a user creates a content in live mode, a specific mixin and properties will be set in order to prevent any overwriting if a publication is being made from the edit workspace to the live workspace.
The same principles is applied if you're modifying that thanks to a customer action directly in the live workspace
In order to know if it's your case, you can:
- Open the JCR Repository Browser (DX_URL/modules/tools/jcrBrowser.jsp) and navigate to the node you have modified
- Switch to the live workspace
- Check for the presence of the mixin jmix:
liveProperties. If it's there, it means this node will be handle as UGC.
In order to know the "scope" of this UGC, you can also look for the property j:
If you want to remove this mixin and property, you can:
- Open the JCR Console and execute the following script (do not forget to change the variable nodeType and path)
JCRObservationManager.setAllEventListenersDisabled(true); def nodeType = "[jnt:user]"; def path = "/"; final String stmt = "SELECT * FROM " + nodeType + " where [jcr:mixinTypes] = 'jmix:liveProperties' AND ISDESCENDANTNODE('" + path + "')"; org.jahia.services.content.MultipleNodeIterator iterator = session.getWorkspace().getQueryManager().createQuery(stmt, Query.JCR_SQL2).execute().getNodes(); log.info("Number of affected nodes :"+iterator.getSize()); while (iterator.hasNext()) { final JCRNodeWrapper node = (JCRNodeWrapper) iterator.nextNode(); log.info("Live Properties :"+node.getPropertyAsString("j:liveProperties")); node.getProperty("j:liveProperties").remove(); node.removeMixin("jmix:liveProperties"); log.info("liveProperties removed for " + node.getPropertyAsString('j:firstName')); } session.save(); JCRObservationManager.setAllEventListenersDisabled(false);
It will of course only correct the current state of your nodes but your custom code is responsible, you'll have to correct it