lesson.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. var renderer = new marked.Renderer();
  2. renderer.code = function (code, language) {
  3. if (language == "mermaid") return '<pre class="mermaid">' + code + "</pre>";
  4. else return "<pre><code>" + code + "</code></pre>";
  5. };
  6. function lesson_show(id) {
  7. $.get(
  8. "../course/lesson_get.php",
  9. {
  10. id: id,
  11. },
  12. function (data, status) {
  13. let arrLesson = JSON.parse(data);
  14. let html = "";
  15. for (const lesson of arrLesson) {
  16. html += '<div class="card" style="display:flex;margin:1em;padding:10px;">';
  17. html += '<div style="flex:7;">';
  18. html += '<div class="pd-10">';
  19. html +=
  20. '<div class="title" style="padding-bottom:5px;font-size:200%;font-weight:600;">' +
  21. lesson["title"] +
  22. "</div>";
  23. html += '<div style="">';
  24. let summary = "";
  25. try {
  26. summary = marked(lesson["summary"], { renderer: renderer });
  27. } catch {}
  28. html += '<div class="summary" style="padding-bottom:5px;">' + summary + "</div>";
  29. let live = "";
  30. try {
  31. live = marked(lesson["live"], { renderer: renderer });
  32. } catch {}
  33. html += '<div class="summary" style="padding-bottom:5px;">' + live + "</div>";
  34. let replay = "";
  35. try {
  36. replay = marked(lesson["replay"], { renderer: renderer });
  37. } catch {}
  38. html += '<div class="summary" style="padding-bottom:5px;">' + replay + "</div>";
  39. let attachment = "";
  40. try {
  41. attachment = marked(lesson["attachment"], { renderer: renderer });
  42. } catch {}
  43. html += '<div class="summary" style="padding-bottom:5px;">' + attachment + "</div>";
  44. html += "</div>";
  45. html += "</div>";
  46. html += "</div>";
  47. html += '<div style="flex:3;max-width:15em;">';
  48. let d = new Date();
  49. d.setTime(lesson["date"]);
  50. let strData = d.toLocaleDateString();
  51. let strTime = d.toLocaleTimeString();
  52. html += "<div >" + gLocal.gui.date + ":" + strData + "</div>";
  53. html += "<div >" + gLocal.gui.time + ":" + strTime + "</div>";
  54. let dt = lesson["duration"] / 60;
  55. let sdt = "";
  56. if (dt > 59) {
  57. sdt += Math.floor(dt / 60) + gLocal.gui.h;
  58. }
  59. let m = dt % 60;
  60. if (m > 0) {
  61. sdt += (dt % 60) + gLocal.gui.mins;
  62. }
  63. html += "<div >" + gLocal.gui.duration + ":" + sdt + "</div>";
  64. let now = new Date();
  65. let lesson_time = "";
  66. if (now < lesson["date"]) {
  67. lesson_time = gLocal.gui.not_started;
  68. } else if (now > lesson["date"] && now < lesson["date"] + dt * 1000) {
  69. lesson_time = gLocal.gui.in_progress;
  70. } else {
  71. lesson_time = gLocal.gui.already_over;
  72. }
  73. html += '<div ><span class="lesson_status">' + lesson_time + "</span></div>";
  74. html += "</div>";
  75. html += "</div>";
  76. }
  77. $("#lesson_list").html(html);
  78. mermaid.initialize();
  79. }
  80. );
  81. }
  82. function lesson_load(lesson_id) {
  83. $.get(
  84. "../course/lesson_get.php",
  85. {
  86. id: lesson_id,
  87. },
  88. function (data, status) {
  89. let html = "";
  90. let lesson_info = JSON.parse(data);
  91. if (lesson_info) {
  92. //head
  93. html += "<div id='course_info_head' class='course_info_block'>";
  94. html += "<div id='course_info_head_title'>";
  95. html += "<div id='course_title'>" + lesson_info.title + "</div>";
  96. html += "<div id='course_subtitle'>" + lesson_info.subtitle + "</div>";
  97. html += "</div>";
  98. html += "</div>";
  99. //end of head
  100. let d = new Date();
  101. d.setTime(lesson_info.date);
  102. let strData = d.toLocaleDateString();
  103. let strTime = d.toLocaleTimeString();
  104. let dt = lesson_info["duration"] / 60;
  105. let strDuration = "";
  106. if (dt > 59) {
  107. strDuration += Math.floor(dt / 60) + "小时";
  108. }
  109. let m = dt % 60;
  110. if (m > 0) {
  111. strDuration += (dt % 60) + "分钟";
  112. }
  113. html += "<div id='course_info_head_2' class='course_info_block'>";
  114. html += "<div class='info_item'>" + "<span>上课时间:<span>" + strData + " " + strTime + "</div>";
  115. html +=
  116. "<div class='info_item'>" + "<span>" + gLocal.gui.duration + ":<span>" + strDuration + "</div>";
  117. html += "<div class='info_item'>" + "<span>" + gLocal.gui.speaker + ":<span>";
  118. html +=
  119. "<a href='../uhome/course.php?userid=" +
  120. lesson_info.teacher +
  121. "'>" +
  122. lesson_info.teacher_info.nickname +
  123. "</a>";
  124. html += "</span>";
  125. //html += "<span>地区:缅甸</span>";
  126. html += "</div>";
  127. html += "</div>";
  128. // end of course_info_head_2
  129. //live
  130. if (lesson_info.live && lesson_info.live.length > 0) {
  131. html += "<div id='course_info_live' class='course_info_block'>";
  132. html += "<h2>" + gLocal.gui.notice_live + "</h2>";
  133. try {
  134. html += marked(lesson_info.live);
  135. } catch (e) {
  136. html += e.message;
  137. }
  138. html += "</div>";
  139. }
  140. //end of live
  141. //replay
  142. if (lesson_info.replay && lesson_info.replay.length > 0) {
  143. html += "<div id='course_info_replay' class='course_info_block'>";
  144. html += "<h2>" + gLocal.gui.record_replay + "</h2>";
  145. try {
  146. html += marked(lesson_info.replay);
  147. } catch (e) {
  148. html += e.message;
  149. }
  150. html += "</div>";
  151. }
  152. //end of replay
  153. //attachment
  154. if (lesson_info.attachment && lesson_info.attachment.length > 0) {
  155. html += "<div id='course_info_attachment' class='course_info_block'>";
  156. html += "<h2>" + gLocal.gui.attachment + "</h2>";
  157. try {
  158. html += marked(lesson_info.attachment);
  159. } catch (e) {
  160. html += e.message;
  161. }
  162. html += "</div>";
  163. }
  164. //end of attachment
  165. //content
  166. if (lesson_info.content && lesson_info.content.length > 0) {
  167. html += "<div id='course_info_content' class='course_info_block'>";
  168. html += "<h2>" + gLocal.gui.detaile + "</h2>";
  169. try {
  170. html += marked(lesson_info.content);
  171. } catch (e) {
  172. html += e.message;
  173. }
  174. html += "</div>";
  175. }
  176. //end of attachment
  177. $("#lesson_info").html(html);
  178. render_lesson_list(lesson_info.course_id, lesson_info.id);
  179. }
  180. }
  181. );
  182. }
  183. function render_lesson_list(id, currLesson) {
  184. $.get(
  185. "../course/lesson_list.php",
  186. {
  187. id: id,
  188. },
  189. function (data, status) {
  190. let arrLesson = JSON.parse(data);
  191. let html = "";
  192. for (const lesson of arrLesson) {
  193. let currlessonStyle = "";
  194. if (lesson.id == currLesson) {
  195. currlessonStyle = " curr_lesson";
  196. } else {
  197. currlessonStyle = " not_curr_lesson";
  198. }
  199. //计算课程是否已经开始
  200. let now = new Date();
  201. let class_lesson_time = "";
  202. let dt = lesson["duration"] / 60;
  203. if (now < lesson["date"]) {
  204. class_lesson_time = "not_started";
  205. } else if (now > lesson["date"] && now < lesson["date"] + dt * 1000) {
  206. class_lesson_time = "in_progress";
  207. } else {
  208. class_lesson_time = "already_over";
  209. }
  210. html += '<div class="lesson_card ' + currlessonStyle + '" >';
  211. let d = new Date();
  212. d.setTime(lesson["date"]);
  213. let strData = d.toLocaleDateString();
  214. let strTime = d.toLocaleTimeString();
  215. html += '<div class="pd-10">';
  216. html += "<div class='datatime " + class_lesson_time + "'>" + strData + " " + strTime + "</div>";
  217. html +=
  218. '<div class="title" ><a href="../course/lesson.php?id=' +
  219. lesson["id"] +
  220. '">' +
  221. lesson["title"] +
  222. "</a></div>";
  223. html += "</div>";
  224. /*
  225. let dt = lesson["duration"] / 60;
  226. let sdt = "";
  227. if (dt > 59) {
  228. sdt += Math.floor(dt / 60) + "小时";
  229. }
  230. let m = dt % 60;
  231. if (m > 0) {
  232. sdt += (dt % 60) + "分钟";
  233. }
  234. html += "<div >" + gLocal.gui.duration + ":" + sdt + "</div>";
  235. html += '<div ><span class="lesson_status">' + lesson_time + "</span></div>";
  236. */
  237. html += "</div>";
  238. }
  239. $("#lesson_list").html(html);
  240. }
  241. );
  242. }