be9fc615599894fd5f6736740f56b4950b1312a0
[moodle.git] / mod / scorm / playscorm.php
1 <?PHP  // $Id$
3 /// This page prints a particular instance of scorm
5     require_once('../../config.php');
6     require_once('lib.php');
8     optional_variable($id);    // Course Module ID, or
9     optional_variable($a);     // scorm ID
11     if ($id) {
12         if (! $cm = get_record('course_modules', 'id', $id)) {
13             error('Course Module ID was incorrect');
14         }
15     
16         if (! $course = get_record('course', 'id', $cm->course)) {
17             error('Course is misconfigured');
18         }
19     
20         if (! $scorm = get_record('scorm', 'id', $cm->instance)) {
21             error('Course module is incorrect');
22         }
24     } else {
25         if (! $scorm = get_record('scorm', 'id', $a)) {
26             error('Course module is incorrect');
27         }
28         if (! $course = get_record('course', 'id', $scorm->course)) {
29             error('Course is misconfigured');
30         }
31         if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) {
32             error('Course Module ID was incorrect');
33         }
34     }
36     require_login($course->id, false, $cm);
37     
38     $strscorms = get_string('modulenameplural', 'scorm');
39     $strscorm  = get_string('modulename', 'scorm');
40         
41     if ($course->category) {
42         $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
43                        <a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
44     } else {
45         $navigation = "<a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
46     }
48     $pagetitle = strip_tags("$course->shortname: ".format_string($scorm->name));
50     if (!$cm->visible and !isteacher($course->id)) {
51         print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), '', '', true, 
52                      update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
53         notice(get_string("activityiscurrentlyhidden"));
54     }
55     
56     //
57     // Checkin script parameters
58     //
59     $mode = '';
60     $scoid='';
61     $currentorg='';
62     $modestring = '';
63     $scoidstring = '';
64     $currentorgstring = '';
65     if (!empty($_POST['mode'])) {
66         $mode = $_POST['mode'];
67         $modestring = '&mode='.$mode;
68     }
69     if (!empty($_POST['scoid'])) {
70         $scoid = $_POST['scoid'];
71         $scoidstring = '&scoid='.$scoid;
72     }
73     if (!empty($_POST['currentorg'])) {
74     $currentorg = $_POST['currentorg'];
75     $currentorgstring = '&currentorg='.$currentorg;
76     }
77     
78     $strexpand = get_string('expcoll','scorm');
79     $strpopup = get_string('popup','scorm');
80     
81     //
82     // Print the page header
83     //
84     
85     //$bodyscripts = "onunload='SCOFinish();'";
86     $bodyscripts = '';
87     print_header($pagetitle, "$course->fullname",
88     "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
89     '', '', true, update_module_button($cm->id, $course->id, $strscorm),'',false,$bodyscripts);
90 ?>
91     
92     <table width="100%">
93     <tr><td valign="top">
94         <p><?php echo format_text($scorm->summary) ?></p>
95         <p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p>
96     <table class='generalbox' cellpadding='5' cellspacing='0'>
97         <tr>
98             <th>
99                 <div style='float: left;'><?php print_string('coursestruct','scorm') ?></div>
100                     <!--<div style='float:right;'>
101                         <a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a>
102                     </div> -->
103                 </th>
104         </tr>
105         <!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">  -->
106         <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">  
107 <?php
108     $sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true);
109     if ($mode == 'normal') {
110     if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
111         if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
112         $mode = 'review';
113         }
114     }
115     }
116     add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
117     $scoidstring = '&scoid='.$sco->id;
118     $modestring = '&mode='.$mode;
120     $SESSION->scorm_scoid = $sco->id;
121 ?>
122         </td></tr>
123         <tr><td align="center">
124         <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
125             <input name="scoid" type="hidden" />
126             <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
127             <input name="mode" type="hidden" value="<?php echo $mode ?>" />
128             <input name="prev" type="<?php if (($sco->prev == 0) || ($sco->showprev == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="prevSCO();" />
129             <input name="next" type="<?php if (($sco->next == 0) || ($sco->shownext == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('next','scorm') ?>" onClick="nextSCO();" /><br />
130             <input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
131         </form>
132         </td></tr>
133     </table>
134     </td>
135     <td valign="top" width="<?php print $scorm->width ?>"> 
136         <iframe  name="main" width="100%" height="<?php echo $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
137     </td></tr>
138     </table>
139     <style type="text/css">
140         .scormlist { 
141             list-style-type:none; 
142             text-indent:-4ex;
143         } 
144     </style>
145     <script language="javascript" type="text/javascript">
146     <!--
147         function playSCO(scoid) {
148             if (scoid == 0) {
149                 document.location = 'view.php?id=<?php echo $cm->id ?>';
150             } else {
151                 document.navform.scoid.value=scoid;
152                 document.navform.submit();
153             }
154         }
156     function popup(win,image) {
157         win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1");
158             image.src = "pix/popdown.gif";
159         return win;
160     }
162     function prevSCO() {
163         playSCO(<?php echo $sco->prev ?>);
164     }
166     function nextSCO() {
167         playSCO(<?php echo $sco->next ?>);
168     }
170         function expandCollide(which,list) {
171             var nn=document.ids?true:false
172         var w3c=document.getElementById?true:false
173         var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
174         var mid=w3c?").style":".style";
175         
176             if (eval(beg+list+mid+".display") != "none") {
177                 which.src = "pix/plus.gif";
178                 eval(beg+list+mid+".display='none';");
179             } else {
180                 which.src = "pix/minus.gif";
181                 eval(beg+list+mid+".display='block';");
182             }
183         }
184     -->
185     </script>
186     <script language="JavaScript" type="text/javascript" src="request.js"></script>
187     <script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></script>
188 </body>
189 </html>