<?xml version="1.0"?>
<!--
  Copyright 1999-2005 The Apache Software Foundation

  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.
-->

<!--
    This file defines the publication specific use-cases
-->

  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'kupu.edit']">
    
    <component-instance name="kupu.edit" logger="lenya.publication" 
      class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
      <view uri="modules/kupu/usecases/kupu.jx" menu="false" createContinuation="false"/>
      <transaction policy="pessimistic"/>
      <event id="edit"/>
      <parameter name="checkoutRestrictedToSession" value="false"/>
    </component-instance>
    
  </xconf>
