074321bda2b977e6a6ca18f411695c56e331b5fc
[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         }
16         if (! $course = get_record('course', 'id', $cm->course)) {
17             error('Course is misconfigured');
18         }
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);
38     $strscorms = get_string('modulenameplural', 'scorm');
39     $strscorm  = get_string('modulename', 'scorm');
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     }
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     }
78     $strexpand = get_string('expcoll','scorm');
79     $strpopup = get_string('popup','scorm');
81     //
82     // TOC processing
83     //
84     $result = scorm_get_toc($scorm,'structurelist',$currentorg,$scoid,$mode,true);
85     $sco = $result->sco;
86     if ($mode == 'normal') {
87         if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
88             if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
89                 $mode = 'review';
90             }
91         }
92     }
93     add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
94     $scoidstring = '&scoid='.$sco->id;
95     $modestring = '&mode='.$mode;
97     $SESSION->scorm_scoid = $sco->id;
99     //
100     // Print the page header
101     //
102     $scripts = '';
103     if ($scorm->popup == 1) {
104         $scripts = 'onunload="top.main.close();"';
105     }
106     
107     print_header($pagetitle, "$course->fullname",
108                  "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
109                  '', '', true, update_module_button($cm->id, $course->id, $strscorm), '', false, $scripts);
110 ?>
111     <script language="JavaScript" type="text/javascript" src="request.js"></script>
112     <script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></script>
113     <table class="fullscreen">
114     <tr><td class="top">
115         <?php echo $mode == 'browse' ? '<p>'.get_string('browsemode','scorm').'</p>' : ''; ?>
116         <table class='generalbox' cellpadding='5' cellspacing='0'>
117 <?php  
118     if ($scorm->hidetoc == 0) {
119 ?>
120             <tr>
121                 <th>
122                     <div class="structurehead"><?php print_string('coursestruct','scorm') ?></div>
123                 </th>
124             </tr>
125             <tr>
126                <td class="top">
127                   <?php
128                       echo $result->toc;
129                   ?>
130                </td>
131             </tr>
132 <?php
133     }
134 ?>
135             <tr><td class="center">
136                 <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
137                    <input name="scoid" type="hidden" />
138                    <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
139                    <input name="mode" type="hidden" value="<?php echo $mode ?>" />
140                    <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();" />
141                    <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();" />
142                    <input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
143                </form>
144            </td></tr>
145        </table>
146     </td>
147 <?php
148     if ($scorm->popup == 0) {
149 ?>
150     <td class="top" width="<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>">
151         <iframe name="main" class="scoframe" width="<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>" height="<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
152     </td>
153 <?php
154     }
155 ?>
156     </tr>
157     </table>
158     <script language="javascript" type="text/javascript">
159     <!--
160 <?php
161     if ($scorm->popup == 1) {
162 ?>
163         top.main = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>,height=<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>,scrollbars=1");
164 <?php
165     }
166 ?>
167         function playSCO(scoid) {
168             if (scoid == 0) {
169                 //top.main.close();
170                 document.location = '<?php echo $CFG->wwwroot ?>/course/view.php?id=<?php echo $cm->course ?>';
171             } else {
172                 document.navform.scoid.value=scoid;
173                 document.navform.submit();
174             }
175         }
177         function prevSCO() {
178             playSCO(<?php echo $sco->prev ?>);
179         }
181         function nextSCO() {
182             playSCO(<?php echo $sco->next ?>);
183         }
185         function expandCollide(which,list) {
186             var nn=document.ids?true:false
187             var w3c=document.getElementById?true:false
188             var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
189             var mid=w3c?").style":".style";
191             if (eval(beg+list+mid+".display") != "none") {
192                 which.src = "pix/plus.gif";
193                 eval(beg+list+mid+".display='none';");
194             } else {
195                 which.src = "pix/minus.gif";
196                 eval(beg+list+mid+".display='block';");
197             }
198         }
199     -->
200     </script>
201 </body>
202 </html>