<?xml version="1.0"?>
<dc-workflow xmlns:i18n="http://xml.zope.org/namespaces/i18n"
             i18n:domain="collective.conferences"
             workflow_id="conferences_workshop_workflow"
             title="Conference Workshop Publication Workflow"
             description=" - A simple workflow for Conference Workshop objects."
             state_variable="review_state"
             initial_state="pending"
             manager_bypass="False"
             i18n:attributes="title; description">

    <permission>Access contents information</permission>
    <permission>Change portal events</permission>
    <permission>Modify portal content</permission>
    <permission>View</permission>

    <state state_id="pending" title="Pending" i18n:attributes="title">
            <description i18n:translate="">Waiting for the Review, further editable by
                                           the owner (contributor).</description>
            <exit-transition transition_id="publish" />
            <exit-transition transition_id="reject"/>
            <exit-transition transition_id="retract" />
        <permission-map name="Access contents information"
                        acquired="True">
            <permission-role>Owner</permission-role>
            <permission-role>Reviewer</permission-role>
            <permission-role>Manager</permission-role>
            <permission-role>Site-Administrator</permission-role>
        </permission-map>
        <permission-map name="Modify portal content"
                        acquired="True">
            <permission-role>Owner</permission-role>
            <permission-role>Reviewer</permission-role>
            <permission-role>Manager</permission-role>
            <permission-role>Site-Administrator</permission-role>
        </permission-map>
        <permission-map name="View"
                        acquired="True">
            <permission-role>Owner</permission-role>
            <permission-role>Reviewer</permission-role>
            <permission-role>Manager</permission-role>
            <permission-role>Site-Administrator</permission-role>
        </permission-map>
    </state>


    <state state_id="private" title="Private" i18n:attributes="title">
            <description i18n:translate="">The owner can edit the workshop</description>
        <exit-transition transition_id="publish"/>
        <exit-transition transition_id="submit"/>
        <permission-map name="Access contents information"
                        acquired="False">
            <permission-role>Manager</permission-role>
            <permission-role>Owner</permission-role>
            <permission-role>Site Administrator</permission-role>
        </permission-map>
        <permission-map name="Modify portal content"
                        acquired="False">
            <permission-role>Manager</permission-role>
            <permission-role>Owner</permission-role>
            <permission-role>Site Administrator</permission-role>
        </permission-map>
        <permission-map name="View"
                        acquired="False">
            <permission-role>Manager</permission-role>
            <permission-role>Owner</permission-role>
            <permission-role>Site Administrator</permission-role>
         </permission-map>
    </state>

    <state state_id="published" title="Published" i18n:attributes="title">
        <description i18n:translate="">Visible to everyone, editable by the owner.
        </description>
        <exit-transition transition_id="retract"/>
        <exit-transition transition_id="reject"/>
        <permission-map name="Access contents information"
                        acquired="True">
        </permission-map>
        <permission-map name="Modify portal content"
                        acquired="True">
        </permission-map>
        <permission-map name="View"
                        acquired="True">
        </permission-map>
    </state>

  <transition transition_id="publish" new_state="published"
             title="Reviewer publishes content"
             trigger="USER"
             before_script="" after_script=""
             i18n:attributes="title">
      <description i18n:translate="">Publishing the item makes it visible to all
          users of the site.
      </description>
      <action url="%(content_url)s/content_status_modify?workflow_action=publish"
          category="workflow"
          i18n:translate="">Publish</action>
      <guard>
          <guard-permission>Review portal content</guard-permission>
      </guard>
  </transition>

  <transition transition_id="reject"  new_state="private"
             title="Reviewer sends content back for re-drafting"
             trigger="USER"
             before_script="" after_script=""
             i18n:attributes="title">
      <description i18n:translate="">
          Sending the item back will return the item to the original author instead of publishing it.
          You should preferably provide a reason to the author why it was not published.
      </description>
      <action url="%(content_url)s/content_status_modify?workflow_action=reject"
          category="workflow"
          i18n:translate="">Send back</action>
      <guard>
          <guard-permission>Review portal content</guard-permission>
      </guard>
  </transition>

  <transition transition_id="retract" new_state="private"
             title="Member retracts submission"
             trigger="USER"
             before_script="" after_script=""
             i18n:attributes="title">
      <description i18n:translate="">
          If you submitted the item by mistake or want to perform additional edits, this will take it back.
      </description>
      <action url="%(content_url)s/content_status_modify?workflow_action=retract"
          category="workflow"
          i18n:translate="">Retract</action>
      <guard>
          <guard-permission>Request review</guard-permission>
      </guard>
  </transition>

  <transition transition_id="submit"  new_state="pending"
             title="Member submits content for publication"
             trigger="USER"
             before_script="" after_script=""
             i18n:attributes="title">
      <description i18n:translate="">
          Puts your item in a review queue, so it can be published on the site.
      </description>
      <action url="%(content_url)s/content_status_modify?workflow_action=submit"
          category="workflow"
          i18n:translate="">Submit for publication</action>
      <guard>
          <guard-permission>Request review</guard-permission>
      </guard>
  </transition>

  <worklist worklist_id="reviewer_queue" title="">
      <description>Reviewer tasks</description>
      <action url="%(portal_url)s/search?review_state=pending"
          category="global">Pending (%(count)d)</action>
      <guard>
          <guard-permission>Review portal content</guard-permission>
      </guard>
      <match name="review_state" values="pending"/>
  </worklist>

  <variable variable_id="action"         for_catalog="False"
           for_status="True" update_always="True">
      <description>Previous transition</description>
      <default>
          <expression>transition/getId|nothing</expression>
      </default>
      <guard>

      </guard>
  </variable>

  <variable variable_id="actor"          for_catalog="False"
           for_status="True" update_always="True">
      <description>The ID of the user who performed the previous transition</description>
      <default>
          <expression>user/getId</expression>
      </default>
      <guard>

      </guard>
  </variable>
  <variable variable_id="comments"       for_catalog="False"
           for_status="True" update_always="True">
      <description>Comment about the last transition</description>
      <default>
          <expression>python:state_change.kwargs.get('comment', '')</expression>
      </default>
      <guard>

      </guard>
  </variable>

  <variable variable_id="review_history" for_catalog="False"
           for_status="False" update_always="False">
      <description>Provides access to workflow history</description>
      <default>
          <expression>state_change/getHistory</expression>
      </default>
      <guard>
          <guard-permission>Request review</guard-permission>
          <guard-permission>Review portal content</guard-permission>
      </guard>
  </variable>

  <variable variable_id="time"           for_catalog="False"
           for_status="True" update_always="True">
      <description>When the previous transition was performed</description>
      <default>
          <expression>state_change/getDateTime</expression>
      </default>
      <guard>

      </guard>
  </variable>

</dc-workflow>
