Index: main/plugin-cms/plugin.xml =================================================================== --- main/plugin-cms/plugin.xml (revision 19001) +++ main/plugin-cms/plugin.xml (working copy) @@ -289,6 +289,10 @@ class="org.ametys.cms.workflow.SetCurrentStepFunction"> + + + Index: main/plugin-cms/src/org/ametys/cms/workflow/SetCurrentStepFunction.java =================================================================== --- main/plugin-cms/src/org/ametys/cms/workflow/SetCurrentStepFunction.java (revision 19001) +++ main/plugin-cms/src/org/ametys/cms/workflow/SetCurrentStepFunction.java (working copy) @@ -20,7 +20,6 @@ import org.apache.avalon.framework.activity.Initializable; import org.ametys.cms.repository.WorkflowAwareContent; -import org.ametys.cms.workflow.AbstractContentWorkflowComponent; import org.ametys.plugins.workflow.Workflow; import com.opensymphony.module.propertyset.PropertySet; @@ -48,9 +47,9 @@ if (content != null) { + // Save the current step Step currentStep = (Step) _workflow.getCurrentSteps(content.getWorkflowId()).iterator().next(); content.setCurrentStepId(currentStep.getStepId()); - content.saveChanges(); } } Index: main/plugin-cms/src/org/ametys/cms/workflow/CreateContentFunction.java =================================================================== --- main/plugin-cms/src/org/ametys/cms/workflow/CreateContentFunction.java (revision 19001) +++ main/plugin-cms/src/org/ametys/cms/workflow/CreateContentFunction.java (working copy) @@ -37,7 +37,6 @@ import org.ametys.plugins.repository.RepositoryConstants; import org.ametys.plugins.repository.RepositoryIntegrityViolationException; import org.ametys.plugins.repository.collection.AmetysObjectCollection; -import org.ametys.plugins.repository.version.VersionableAmetysObject; import org.ametys.plugins.workflow.store.JackrabbitWorkflowStore; import com.opensymphony.module.propertyset.PropertySet; @@ -125,9 +124,6 @@ session.save(); - // Creates the first version - ((VersionableAmetysObject) content).checkpoint(); - _observationManager.notify(new Event(getUser(transientVars), ObservationConstants.CONTENT_ADDED, content)); // Content created Index: main/plugin-cms/src/org/ametys/cms/workflow/CreateVersionFunction.java =================================================================== --- main/plugin-cms/src/org/ametys/cms/workflow/CreateVersionFunction.java (revision 0) +++ main/plugin-cms/src/org/ametys/cms/workflow/CreateVersionFunction.java (revision 0) @@ -0,0 +1,47 @@ +/* + * Copyright 2012 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.ametys.cms.workflow; + +import java.util.Map; + +import org.ametys.cms.repository.WorkflowAwareContent; +import org.ametys.plugins.repository.version.VersionableAmetysObject; + +import com.opensymphony.module.propertyset.PropertySet; +import com.opensymphony.workflow.FunctionProvider; +import com.opensymphony.workflow.WorkflowException; + +/** + * Creates a new version + * + */ +public class CreateVersionFunction extends AbstractContentWorkflowComponent implements FunctionProvider +{ + @Override + public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException + { + WorkflowAwareContent content = getContent(transientVars); + + if (content != null) + { + // Create a new version + if (content instanceof VersionableAmetysObject) + { + ((VersionableAmetysObject) content).checkpoint(); + } + } + } +} Index: main/plugin-cms/src/org/ametys/cms/workflow/EditContentFunction.java =================================================================== --- main/plugin-cms/src/org/ametys/cms/workflow/EditContentFunction.java (revision 19001) +++ main/plugin-cms/src/org/ametys/cms/workflow/EditContentFunction.java (working copy) @@ -62,7 +62,6 @@ import org.ametys.plugins.repository.metadata.ModifiableRichText; import org.ametys.plugins.repository.metadata.UnknownMetadataException; import org.ametys.plugins.repository.metadata.jcr.JCRCompositeMetadata; -import org.ametys.plugins.repository.version.VersionableAmetysObject; import org.ametys.runtime.upload.Upload; import org.ametys.runtime.upload.UploadManager; import org.ametys.runtime.util.I18nizableText; @@ -162,9 +161,6 @@ // Commit changes modifiableContent.saveChanges(); - // Create a new version - ((VersionableAmetysObject) modifiableContent).checkpoint(); - // Notify the observers of the modification. _observationManager.notify(new Event(getUser(transientVars), ObservationConstants.CONTENT_MODIFIED, modifiableContent)); Index: main/plugin-cms/src/org/ametys/cms/workflow/ContentWorkflowAction.java =================================================================== --- main/plugin-cms/src/org/ametys/cms/workflow/ContentWorkflowAction.java (revision 19001) +++ main/plugin-cms/src/org/ametys/cms/workflow/ContentWorkflowAction.java (working copy) @@ -84,10 +84,6 @@ lockManager.addLockToken(lockHolder.getProperty(RepositoryConstants.METADATA_LOCKTOKEN).getString()); } - - Step currentStep = (Step) _workflow.getCurrentSteps(content.getWorkflowId()).iterator().next(); - content.setCurrentStepId(currentStep.getStepId()); - content.saveChanges(); } catch (RepositoryException e) {