Merge branch 'MDL-62217_master' of git://github.com/dmonllao/moodle
[moodle.git] / mod / scorm / view.js
bloba80ddd0c30cad0dfb463eacaff5bd9535f69f70d
1 M.mod_scormform = {};
2 M.mod_scormform.init = function(Y) {
3     var scormform = Y.one('#scormviewform');
4     var cwidth = scormplayerdata.cwidth;
5     var cheight = scormplayerdata.cheight;
6     var poptions = scormplayerdata.popupoptions;
7     var launch = scormplayerdata.launch;
8     var currentorg = scormplayerdata.currentorg;
9     var sco = scormplayerdata.sco;
10     var scorm = scormplayerdata.scorm;
11     var launch_url = M.cfg.wwwroot + "/mod/scorm/player.php?a=" + scorm + "&currentorg=" + currentorg + "&scoid=" + sco + "&sesskey=" + M.cfg.sesskey + "&display=popup";
12     var course_url = scormplayerdata.courseurl;
13     var winobj = null;
15     poptions = poptions + ',resizable=yes'; // Added for IE (MDL-32506).
17     if ((cwidth == 100) && (cheight == 100)) {
18         poptions = poptions + ',width=' + screen.availWidth + ',height=' + screen.availHeight + ',left=0,top=0';
19     } else {
20         if (cwidth <= 100) {
21             cwidth = Math.round(screen.availWidth * cwidth / 100);
22         }
23         if (cheight <= 100) {
24             cheight = Math.round(screen.availHeight * cheight / 100);
25         }
26         poptions = poptions + ',width=' + cwidth + ',height=' + cheight;
27     }
29     // Hide the form and toc if it exists - we don't want to allow multiple submissions when a window is open.
30     var scormload = function () {
31         if (scormform) {
32             scormform.hide();
33         }
35         var scormtoc = Y.one('#toc');
36         if (scormtoc) {
37             scormtoc.hide();
38         }
39         // Hide the intro and display a message to the user if the window is closed.
40         var scormintro = Y.one('#intro');
41         scormintro.setHTML('<a href="' + course_url + '">' + M.util.get_string('popuplaunched', 'scorm') + '</a>');
42     }
44     // When pop-up is closed return to course homepage.
45     var scormunload = function () {
46         // Onunload is called multiple times in the SCORM window - we only want to handle when it is actually closed.
47         setTimeout(function() {
48             if (winobj.closed) {
49                 window.location = course_url;
50             }
51         }, 800)
52     }
54     var scormredirect = function (winobj) {
55         Y.on('load', scormload, winobj);
56         Y.on('unload', scormunload, winobj);
57         // Check to make sure pop-up has been launched - if not display a warning,
58         // this shouldn't happen as the pop-up here is launched on user action but good to make sure.
59         setTimeout(function() {
60             if (!winobj) {
61                 var scormintro = Y.one('#intro');
62                 scormintro.setHTML(M.util.get_string('popupsblocked', 'scorm'));
63             }}, 800);
64     }
66     // Set mode and newattempt correctly.
67     var setlaunchoptions = function() {
68         var mode = Y.one('#scormviewform input[name=mode]:checked');
69         if (mode) {
70             var modevalue = mode.get('value');
71             launch_url += '&mode=' + (modevalue ? modevalue : 'normal');
72         } else {
73             launch_url += '&mode=normal';
74         }
76         var newattempt = Y.one('#scormviewform #a');
77         launch_url += (newattempt && newattempt.get('checked') ? '&newattempt=on' : '');
78     }
80     if (launch == true) {
81         setlaunchoptions();
82         winobj = window.open(launch_url,'Popup', poptions);
83         this.target = 'Popup';
84         scormredirect(winobj);
85         winobj.opener = null;
86     }
87     // Listen for view form submit and generate popup on user interaction.
88     if (scormform) {
89         Y.on('submit', function(e) {
90             setlaunchoptions();
91             winobj = window.open(launch_url, 'Popup', poptions);
92             this.target = 'Popup';
93             scormredirect(winobj);
94             winobj.opener = null;
95             e.preventDefault();
96         }, scormform);
97     }