<?xml version="1.0" standalone="no" ?>
<!--
Sequencing example demonstrating forced sequential order. SCORM 2004 3rd Edition.

Provided by Rustici Software - http://www.scorm.com

Sequencing Strategy:
This example demonstrates a sequencing strategy that requires the learner
to visit the SCOs in order. Once a SCO has been visited, the learner can
jump backwards to review material, but the learner can not jump ahead beyond
the next SCO.

Rollup Strategy:
Completion: All activities must be completed
Satisfaction: All activities must be satisfied (activities without assessment are satisfied upon being completed)
Score: No score is rolled up (all activities have objective measure weight = 0)

This example also demonstrates using a sequencing collection to define sequencing rules
that are common to every item.
-->

<manifest identifier="com.scorm.golfsamples.sequencing.forcedsequential.20043rd" version="1"
          xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
          xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3"
          xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3"
          xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
          xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd
                              http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd
                              http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd
                              http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd
                              http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd">

  <metadata>
    <schema>ADL SCORM</schema>
    <schemaversion>2004 3rd Edition</schemaversion>
  </metadata>
  
  <organizations default="golf_sample_default_org">

    <!-- Since we're using global objectives, make sure to set them to not be global to system-->
    <organization identifier="golf_sample_default_org" adlseq:objectivesGlobalToSystem="false">
      <title>Golf Explained - Sequencing Forced Order</title>

      <item identifier="playing_item" identifierref="playing_resource">
        <title>Playing the Game</title>
        
        <!-- Notice the refernce to the reusable sequencing collection (defined at the bottom)-->
        <imsss:sequencing IDRef="common_seq_rules">
          
          <imsss:objectives>
            <!--
            Each SCO has a global objective to that can be read by other SCOs to see if it is completed.
            This global will be satisfied when the activity is satisfied since it is associated with the
            primary objective
            -->
            <imsss:primaryObjective objectiveID="playing_satisfied">
              <imsss:mapInfo targetObjectiveID = "com.scorm.golfsamples.sequencing.forcedsequential.playing_satisfied" 
                             readSatisfiedStatus = "true" writeSatisfiedStatus = "true"/>
            </imsss:primaryObjective>
          </imsss:objectives>
        </imsss:sequencing>
      </item>
      <item identifier="etuqiette_item" identifierref="etiquette_resource">
        <title>Etiquette</title>
        
        <imsss:sequencing IDRef="common_seq_rules">
        
          <imsss:sequencingRules>

            <imsss:preConditionRule>
              
              <!--  
              If the previous SCO is not satisfied or the status is unknown, disable this SCO.
              Notice that the "not" operator isn't a logical NOT in which all other conditions evaluate
              to true. Instead it indicates that "not satisfied" is the only condition that evaluates to true.
              -->
              <imsss:ruleConditions conditionCombination="any">
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="satisfied"/>
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="objectiveStatusKnown"/>
              </imsss:ruleConditions>
            
              <!--  'Disabled' will cause the SCO to be visible in the course tree, but not accessible via choice or flow.  -->
              <imsss:ruleAction action="disabled"/>
            
            </imsss:preConditionRule>
            
          </imsss:sequencingRules>
          <imsss:objectives>
            <imsss:primaryObjective objectiveID="etiquette_satisfied">
              <imsss:mapInfo targetObjectiveID = "com.scorm.golfsamples.sequencing.forcedsequential.etiquette_satisfied" 
                             readSatisfiedStatus = "true" writeSatisfiedStatus = "true"/>
            </imsss:primaryObjective>
            
            <!--
            Set up another objective to read the status of this activity's prerequisite. We can then use this objective in
            our sequencing rules to disable this activity.
            -->
            <imsss:objective objectiveID="previous_sco_satisfied">
              <imsss:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.playing_satisfied" 
                             readSatisfiedStatus="true" writeSatisfiedStatus="false"/>
            </imsss:objective>
            
          </imsss:objectives>
        </imsss:sequencing>
      </item>
      <item identifier="handicapping_item" identifierref="handicapping_resource">
        <title>Handicapping</title>
        <imsss:sequencing IDRef="common_seq_rules">
          <imsss:sequencingRules>
            <imsss:preConditionRule>
              <imsss:ruleConditions conditionCombination="any">
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="satisfied"/>
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="objectiveStatusKnown"/>
              </imsss:ruleConditions>
              <imsss:ruleAction action="disabled"/>
            </imsss:preConditionRule>
          </imsss:sequencingRules>
          <imsss:objectives>
            <imsss:primaryObjective objectiveID="handicapping_satisfied">
              <imsss:mapInfo targetObjectiveID = "com.scorm.golfsamples.sequencing.forcedsequential.handicapping_satisfied" 
                             readSatisfiedStatus = "true" writeSatisfiedStatus = "true"/>
            </imsss:primaryObjective>
            <imsss:objective objectiveID="previous_sco_satisfied">
              <imsss:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.etiquette_satisfied" 
                             readSatisfiedStatus="true" writeSatisfiedStatus="false"/>
            </imsss:objective>
          </imsss:objectives>
        </imsss:sequencing>
      </item>
      <item identifier="havingfun_item" identifierref="havingfun_resource">
        <title>Having Fun</title>
        <imsss:sequencing IDRef="common_seq_rules">
          <imsss:sequencingRules>
            <imsss:preConditionRule>
              <imsss:ruleConditions conditionCombination="any">
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="satisfied"/>
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="objectiveStatusKnown"/>
              </imsss:ruleConditions>
              <imsss:ruleAction action="disabled"/>
            </imsss:preConditionRule>
          </imsss:sequencingRules>
          <imsss:objectives>
            <imsss:primaryObjective objectiveID="havingfun_satisfied">
              <imsss:mapInfo targetObjectiveID = "com.scorm.golfsamples.sequencing.forcedsequential.havingfun_satisfied"
                             readSatisfiedStatus = "true" writeSatisfiedStatus = "true"/>
            </imsss:primaryObjective>
            <imsss:objective objectiveID="previous_sco_satisfied">
              <imsss:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.handicapping_satisfied"
                             readSatisfiedStatus="true" writeSatisfiedStatus="false"/>
            </imsss:objective>
          </imsss:objectives>
        </imsss:sequencing>
      </item>
      <item identifier="assessment_item" identifierref="assessment_resource">
        <title>Quiz</title>
        <imsss:sequencing IDRef="common_seq_rules">
          <imsss:sequencingRules>
            <imsss:preConditionRule>
              <imsss:ruleConditions conditionCombination="any">
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="satisfied"/>
                <imsss:ruleCondition referencedObjective="previous_sco_satisfied" operator="not" condition="objectiveStatusKnown"/>
              </imsss:ruleConditions>
              <imsss:ruleAction action="disabled"/>
            </imsss:preConditionRule>
          </imsss:sequencingRules>
          <imsss:objectives>
            <imsss:primaryObjective objectiveID="assessment_satisfied" />
            <imsss:objective objectiveID="previous_sco_satisfied">
              <imsss:mapInfo targetObjectiveID="com.scorm.golfsamples.sequencing.forcedsequential.havingfun_satisfied" 
                             readSatisfiedStatus="true" writeSatisfiedStatus="false"/>
            </imsss:objective>
          </imsss:objectives>
        </imsss:sequencing>
      </item>
      <imsss:sequencing>
        <!--Both choice and flow navigation are allowed-->
        <imsss:controlMode choice="true" flow="true"/>
      </imsss:sequencing>
    </organization>
  </organizations>
  <resources>
    <resource identifier="playing_resource" type="webcontent" adlcp:scormType="sco" href="shared/launchpage.html?content=playing">
      <file href="Playing/otherscoreing.jpg"/>
      <file href="Playing/OtherScoring.html"/>
      <file href="Playing/Par.html"/>
      <file href="Playing/par.jpg"/>
      <file href="Playing/Playing.html"/>
      <file href="Playing/playing.jpg"/>
      <file href="Playing/rules.jpg"/>
      <file href="Playing/RulesOfGolf.html"/>
      <file href="Playing/Scoring.html"/>
      <file href="Playing/scoring.jpg"/>
      <dependency identifierref="common_files"/>
    </resource>
    <resource identifier="etiquette_resource" type="webcontent" adlcp:scormType="sco" href="shared/launchpage.html?content=etiquette">
      <file href="Etiquette/Course.html"/>
      <file href="Etiquette/course.jpg"/>
      <file href="Etiquette/Distracting.html"/>
      <file href="Etiquette/distracting.jpg"/>
      <file href="Etiquette/Play.html"/>
      <file href="Etiquette/play.jpg"/>
      <dependency identifierref="common_files"/>
    </resource>
    <resource identifier="handicapping_resource" type="webcontent" adlcp:scormType="sco" href="shared/launchpage.html?content=handicapping">
      <file href="Handicapping/calchandi.jpg"/>
      <file href="Handicapping/calcscore.jpg"/>
      <file href="Handicapping/CalculatingHandicap.html"/>
      <file href="Handicapping/CalculatingScore.html"/>
      <file href="Handicapping/Example.html"/>
      <file href="Handicapping/example.jpg"/>
      <file href="Handicapping/Overview.html"/>
      <file href="Handicapping/overview.jpg"/>
      <dependency identifierref="common_files"/>
    </resource>
    <resource identifier="havingfun_resource" type="webcontent" adlcp:scormType="sco" href="shared/launchpage.html?content=havingfun">
      <file href="HavingFun/friends.jpg"/>
      <file href="HavingFun/fun.jpg"/>
      <file href="HavingFun/HowToBeStylish.html"/>
      <file href="HavingFun/HowToHaveFun.html"/>
      <file href="HavingFun/MakeFriends.html"/>
      <file href="HavingFun/stylish.jpg"/>
      <dependency identifierref="common_files"/>
    </resource>
    <resource identifier="assessment_resource" type="webcontent" adlcp:scormType="sco" href="shared/launchpage.html?content=assessment">
      <file href="Playing/questions.js"/>
      <file href="Etiquette/questions.js"/>
      <file href="Handicapping/questions.js"/>
      <file href="HavingFun/questions.js"/>
      <dependency identifierref="common_files"/>
    </resource>
    <resource identifier="common_files" type="webcontent" adlcp:scormType="asset">
      <file href="shared/assessmenttemplate.html"/>
      <file href="shared/background.jpg"/>
      <file href="shared/cclicense.png"/>
      <file href="shared/contentfunctions.js"/>
      <file href="shared/launchpage.html"/>
      <file href="shared/scormfunctions.js"/>
      <file href="shared/style.css"/>
    </resource>
  </resources>

  <!-- Define a reusable sequencing collection for rules used by all SCOs-->
  <imsss:sequencingCollection>

    <imsss:sequencing ID="common_seq_rules">

      <!-- This course doesn't rollup a score -->
      <imsss:rollupRules objectiveMeasureWeight="0"></imsss:rollupRules>

      <!-- Set these values to prevent content from accidently being auto-completed/satisfied-->
      <imsss:deliveryControls completionSetByContent="true" objectiveSetByContent="true"/>

    </imsss:sequencing>
  </imsss:sequencingCollection>
</manifest>
