|
5 | 5 | module ScormPackage |
6 | 6 | module Packaging |
7 | 7 | class Generator |
8 | | - attr_reader :course, :scorm_token |
| 8 | + attr_reader :course |
9 | 9 |
|
10 | | - def initialize(course, scorm_token) |
| 10 | + def initialize(course) |
11 | 11 | @course = course |
12 | | - @scorm_token = scorm_token |
13 | 12 | end |
14 | 13 |
|
15 | 14 | def generate |
@@ -106,33 +105,25 @@ def generate_lesson_html(lesson) |
106 | 105 | <script src="../../scormfunctions.js"></script> |
107 | 106 | <title>#{lesson.title}</title> |
108 | 107 | <style> |
109 | | - .loader { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); } |
| 108 | + .loader { display: block; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); } |
110 | 109 | iframe { display: none; width: 560px; height: 315px; border: none; } |
111 | 110 | </style> |
112 | 111 | </head> |
113 | 112 | <body> |
114 | 113 | <p>Lesson: #{lesson.title}</p> |
115 | | - <ul>#{lesson.videos.map do |video| |
116 | | - "<li>Language: #{video.language}<br>" \ |
117 | | - "<div id=\"loader-#{video.id}\" class=\"loader\">Loading...</div>" \ |
118 | | - "<iframe id=\"custom-iframe-#{video.id}\" data-video-url=\"#{video.video_url}\"></iframe></li>" |
119 | | - end.join}</ul> |
| 114 | + <ul> |
| 115 | + #{lesson.videos.map do |video| |
| 116 | + "<li>Language: #{video.language}<br>" \ |
| 117 | + "<div id=\"loader-#{video.id}\" class=\"loader\">Loading...</div>" \ |
| 118 | + "<iframe id=\"iframe-#{video.id}\" src=\"#{video.video_url}\" onload=\"hideLoader('#{video.id}')\"></iframe></li>" |
| 119 | + end.join} |
| 120 | + </ul> |
| 121 | +
|
120 | 122 | <script> |
121 | | - const loadIframe = async (iframe) => { |
122 | | - const loader = document.getElementById(`loader-${iframe.id.split('-').pop()}`); |
123 | | - try { |
124 | | - loader.style.display = 'block'; |
125 | | - const response = await fetch(iframe.dataset.videoUrl, { |
126 | | - headers: { 'X-Scorm-Token': '#{scorm_token}' } |
127 | | - }); |
128 | | - iframe.srcdoc = await response.text(); |
129 | | - iframe.style.display = 'block'; |
130 | | - } catch (error) { console.error(error); } |
131 | | - finally { loader.style.display = 'none'; } |
132 | | - }; |
133 | | - window.addEventListener('load', () => |
134 | | - document.querySelectorAll('iframe[data-video-url]').forEach(loadIframe) |
135 | | - ); |
| 123 | + function hideLoader(videoId) { |
| 124 | + document.getElementById('loader-' + videoId).style.display = 'none'; |
| 125 | + document.getElementById('iframe-' + videoId).style.display = 'block'; |
| 126 | + } |
136 | 127 | </script> |
137 | 128 | </body> |
138 | 129 | </html> |
|
0 commit comments