Learning.cshtml 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. 
  2. @{
  3. ViewBag.Title = "Learning";
  4. Layout = "~/Views/Shared/_LayoutLearning.cshtml";
  5. }
  6. @using NEducation.NEduService;
  7. @using NEducation.Content.Texts;
  8. @model NEducation.Models.VocabularyModel
  9. <link href="~/Content/assets/css/animate.css" rel="stylesheet" type="text/css" />
  10. <link href="~/Content/assets/css/kontext.css" rel="stylesheet" type="text/css" />
  11. <link href="~/Content/assets/css/learning-flashcard.css" rel="stylesheet" type="text/css" />
  12. <input type='hidden' id='hidden-topicid' value='96' />
  13. <input type='hidden' id='hidden-parent' value='95' />
  14. <input type='hidden' id='complete-link' value='/Voca/LearningFinish?lessonId=@Model.lessonId' />
  15. <!-- Process -->
  16. <div class="learning-main-process">
  17. <div class="learning-main-process-value"></div>
  18. </div>
  19. <div class="learning-theory-body">
  20. <!-- Flashcard -->
  21. <div class="learning-theory-flashcard">
  22. <div id="learning-theory-kontext" class="kontext">
  23. @for (int i = 0; i < Model.vocabularies.Count; i++)
  24. {
  25. NEducation.Code.Vocabulary voca = Model.vocabularies[i];
  26. <div class="layer @(@i == 0 ? " show exercise-current" : "")" words="@voca.nameGlobal" word="@voca.id" definition="" style="display: none; margin-top: 50px;">
  27. <div class="flash-card-viewport">
  28. <div class="flash-card-box" id="learning-theory-box-@(i + 1)" index="@(i + 1)" img_url="@voca.picture">
  29. <figure class="slide jbs-current">
  30. <div class="learning-theory-flash-card-content">
  31. <div class="card-img">
  32. @*<img src="@voca.picture" alt="@voca.nameGlobal" />*@
  33. <img src="@voca.picture" alt="@voca.nameGlobal" />
  34. </div>
  35. <div class="card-content">
  36. <p class="card-content-text-large">
  37. @voca.nameGlobal
  38. @if (voca.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_FILE)
  39. {
  40. <a class="card-content-sound main-sound-play" href="javascript:void(0)"
  41. sound_url="@(voca.content)"></a>
  42. }
  43. </p>
  44. <p class="card-content-line">@voca.descriptionGlobal</p>
  45. <p class="card-content-phonetic">
  46. @*@if (voca.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_FILE)
  47. {
  48. <a class="card-content-sound main-sound-play" href="javascript:void(0)"
  49. sound_url="@(voca.content)"></a>
  50. }*@
  51. @*@voca.spell*@
  52. </p>
  53. @if (voca.example != null && voca.example != "")
  54. {
  55. @*<p class="card-content-line">
  56. </p>*@
  57. <p class="card-content-example">
  58. @*<a class="card-content-sound main-sound-play" href="javascript:void(0)"
  59. sound_url="~/Content/assets/sounds/samples/0jloj1uugdnp5dvcpoxiw9503kucjx65m3prpee.mp3"></a>*@
  60. <span>@Lang.Example:</span><br />
  61. @Html.Raw(@voca.example.Replace(voca.nameGlobal.ToLower(), "<span class='text-blue'>" + voca.nameGlobal.ToLower() + "</span>"))
  62. @*<a href="javascript:void(0)" class="example-button"><i class="fa fa-angle-down" aria-hidden="true"></i></a>*@
  63. </p>
  64. }
  65. </div>
  66. <span class="card-number">1</span>
  67. <span class="card-turn">
  68. <span class="turn-icon"></span>
  69. </span>
  70. </div>
  71. </figure>
  72. <figure class="slide jbs-current" style="display:none;">
  73. <div class="learning-theory-flash-card-content">
  74. <div class="card-img">
  75. <img alt="img" />
  76. </div>
  77. <div class="card-content">
  78. <p class="card-content-text-main">
  79. @voca.nameLocal
  80. </p>
  81. @*<p class="card-content-line">
  82. <span class="card-content-type">
  83. @if (voca.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_FILE)
  84. {
  85. <a class="card-content-sound main-sound-play" href="javascript:void(0)"
  86. sound_url="@(voca.content)"></a>
  87. }
  88. @voca.spell
  89. </span>
  90. </p>*@
  91. <p class="card-content-line"> </p>
  92. <p class="card-content-example"> </p>
  93. <p class="card-content-phonetic">
  94. @if (voca.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_FILE)
  95. {
  96. <a class="card-content-sound main-sound-play" href="javascript:void(0)"
  97. sound_url="@(voca.content)"></a>
  98. }
  99. @voca.spell
  100. </p>
  101. @*<p class="card-content-example">
  102. @voca.nameLocal
  103. </p>*@
  104. @*<p class="card-content-example-translate">@voca.example_mean</p>*@
  105. @*<p class="card-content-line"></p>*@
  106. @*<a href="javascript:void(0)" class="context"><span></span>Context</a>*@
  107. </div>
  108. <span class="card-number">2</span>
  109. <span class="card-turn">
  110. <span class="turn-icon"></span>
  111. @*<span class="turn-text">Xoay<br />flashcards</span>*@
  112. </span>
  113. </div>
  114. </figure>
  115. </div>
  116. </div>
  117. <!--Begin fill answer-->
  118. <div class="learning-fill">
  119. <div class="row">
  120. <div class="col-md-12">
  121. <input type="text" class="form-control learning-fill-word" placeholder="@Lang.EnterYourAnswer" />
  122. <button class="learning-btn-fill-word btn-learning-check">@Lang.Check@*Kiểm tra*@@*Vérifier*@</button>
  123. </div>
  124. <div class="col-md-7 col-md-offset-5 hidden-xs hidden-sm warning-test-group" style="margin-top: -50px;">
  125. <div class="learning-right-group animated bounceIn">
  126. <p class="learning-fill-msg">
  127. <img src="~/Content/assets/imgs/learning-right.png" /><span>
  128. @*You are correct!*@
  129. @Lang.RightAnswer
  130. </span>
  131. </p>
  132. <p class="learning-view-msg hidden-sm">
  133. @*Nhấn vào nút xoay để xem các mặt Flashcard bạn nhé! ^^*@
  134. @*Cliquez sur le bouton de rotation pour afficher vos visages Flashcard! ^^*@
  135. </p>
  136. </div>
  137. <div class="learning-wrong-group animated bounceIn">
  138. <p class="learning-fill-msg">
  139. <img src="~/Content/assets/imgs/learning-wrong.png" /><span>
  140. @*Vous avez tort!*@
  141. @Lang.WrongAnswer
  142. </span>
  143. </p>
  144. <p class="learning-view-msg hidden-sm">
  145. @*Nhấn vào nút xoay để xem gợi ý bạn nhé! ^^*@
  146. @*Cliquez sur le bouton de rotation pour voir votre suggestion! ^^*@
  147. </p>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. <!--End fill answer-->
  153. </div>
  154. }
  155. </div>
  156. </div>
  157. </div>
  158. <!-- Bottom -->
  159. <div class="learning-theory-bottom">
  160. <div class="learning-theory-bottom-cover">
  161. <a class="learning-theory-button button-back" href="javascript:void(0)">
  162. @Lang.Back
  163. @*Quay lại*@
  164. @*Reviens*@
  165. </a>
  166. <div class="learning-theory-list-button">
  167. @*<a href="javascript:void(0)" data-toggle="modal" data-target="#feedback-fault" class="button-item item-1"><span class="item-icon"></span>Báo lỗi</a>
  168. <a href="javascript:void(0)" class="button-item item-2 btn-learning-pin-word"><span class="item-icon"></span>Ghim từ</a>
  169. <a href="#" data-toggle="modal" data-target="#modal-setup" class="button-item item-3"><span class="item-icon"></span>Cài đặt</a>*@
  170. @*<a href="javascript:void(0)" topic="96" is_unknow="1" is_finish="0" parent="95" class="button-item item-4 button-learning-continue" text="Học từ vựng">
  171. <span class="item-icon"></span>Chuyển bước
  172. </a>*@
  173. </div>
  174. <a class="learning-theory-button button-next" href="javascript:void(0)">
  175. @Lang.Next
  176. @*Tiếp theo*@
  177. @*Suivant*@
  178. </a>
  179. </div>
  180. </div>
  181. <div id="modal-collocations" class="modal fade" tabindex="-1" role="dialog">
  182. <div class="modal-dialog" role="document">
  183. <div class="modal-content">
  184. <a class="modal-button-close" href="javascript:void(0)" data-dismiss="modal"></a>
  185. <p class="collocations-title">Collocations</p>
  186. <div class="collocations-content"></div>
  187. </div>
  188. </div>
  189. </div>
  190. <!--begin feedback-->
  191. <div id="feedback-fault" class="modal fade" tabindex="-1" role="dialog">
  192. <div class="modal-dialog fault-dialog">
  193. <div class="modal-content">
  194. <div class="modal-content-feedback">
  195. <a class="modal-button-close" href="javascript:void(0)" data-dismiss="modal"></a>
  196. <p class="fault-title text-center"><span>BÁO LỖI</span> </p>
  197. <div class="modal-body">
  198. <!--begin feedback content-->
  199. <div class="row">
  200. <div class="col-xs-12">
  201. <p class="fault-subtitle">Vui lòng chọn lỗi cần thông báo</p>
  202. </div>
  203. <div class="col-xs-12">
  204. <div class="slt-fault">
  205. <p><span class="slt-fault-value" value="1">Lỗi hình ảnh</span><i class="fa fa-chevron-down"></i></p>
  206. </div>
  207. <div class="slt-fault-option">
  208. <p>
  209. <span class="slt-item" value="1">Lỗi hình ảnh</span>
  210. <span class="slt-item" value="3">Định nghĩa tiếng Anh</span>
  211. </p>
  212. <p>
  213. <span class="slt-item" value="4">Nghĩa tiếng Việt</span>
  214. <span class="slt-item" value="8">Loại từ</span>
  215. </p>
  216. <p>
  217. <span class="slt-item" value="6">Phiên âm Anh</span>
  218. <span class="slt-item" value="10">Phiên âm Mỹ</span>
  219. </p>
  220. <p>
  221. <span class="slt-item" value="2">Âm thanh Anh của từ</span>
  222. <span class="slt-item" value="11">Âm thanh Anh của ví dụ</span>
  223. </p>
  224. <p>
  225. <span class="slt-item" value="12">Âm thanh Mỹ của từ</span>
  226. <span class="slt-item" value="13">Âm thanh Mỹ của ví dụ</span>
  227. </p>
  228. <p>
  229. <span class="slt-item" value="5">Từ đồng nghĩa</span>
  230. <span class="slt-item" value="7">Dịch ví dụ</span>
  231. </p>
  232. <p>
  233. <span class="slt-item" value="14">Ví dụ tiếng Anh</span>
  234. <span class="slt-item" value="9">Lỗi khác</span>
  235. </p>
  236. </div>
  237. </div>
  238. <div class="col-xs-12">
  239. <textarea class="form-control txt-fault" rows="7" placeholder="Vui lòng nhập nội dung lỗi vào đây"></textarea>
  240. <p class="msg-feedback"></p>
  241. </div>
  242. <div class="col-xs-12 text-center">
  243. <a href="javascript:void(0)" topic="96" class="send-fault">GỬI</a>
  244. </div>
  245. </div>
  246. <!--end feedback content-->
  247. </div>
  248. </div>
  249. <div class="modal-content-thanks">
  250. <div class="row">
  251. <div class="col-xs-12">
  252. <p class="text-center"><img class="feedback-sent-img animated bounceIn" src="~/Content/assets/imgs/feedback-vocabulary-sent.png" /></p>
  253. <p class="feedback-has-sent text-center">ĐÃ GỬI</p>
  254. <p class="feedback-thanks text-center">Cảm ơn bạn rất nhiều về sự đóng góp.<br /> Chúc bạn học tốt!</p>
  255. </div>
  256. </div>
  257. </div>
  258. </div><!-- /.modal-content -->
  259. </div><!-- /.modal-dialog -->
  260. </div><!-- /.modal -->
  261. <!--end feedback-->
  262. <style>
  263. @@media (max-width: 768px) {
  264. .flash-card-viewport {
  265. height: 350px;
  266. }
  267. #learning-theory-kontext .flash-card-box .slide {
  268. height: 350px;
  269. }
  270. }
  271. </style>
  272. <script type="text/javascript">
  273. var checkOption = 1;
  274. $('.slt-fault').click(function (e) {
  275. checkOption = 0;
  276. $('.slt-fault-option').slideToggle();
  277. setTimeout(function () {
  278. checkOption = 1;
  279. }, 500);
  280. });
  281. $('#feedback-fault .modal-body').click(function () {
  282. if (checkOption == 1) {
  283. $('.slt-fault-option').slideUp();
  284. }
  285. });
  286. $('.slt-item').click(function () {
  287. var val = $(this).attr('value');
  288. $('.slt-fault span').attr('value', val);
  289. $('.slt-fault span').text($(this).text());
  290. });
  291. $('.txt-fault').keyup(function () {
  292. if ($(this).val() != "") {
  293. $('.send-fault').addClass('send-fault-active');
  294. } else {
  295. $('.send-fault').removeClass('send-fault-active');
  296. }
  297. });
  298. //feedback fault
  299. $('.send-fault').click(function () {
  300. var contentFault = $('.txt-fault').val();
  301. var fault = $('.slt-fault span').attr('value');
  302. var topic = $(this).attr('topic');
  303. var word = $('.exercise-current').attr('word');
  304. var definition = $('.exercise-current').attr('definition');
  305. if (contentFault.trim() == "") {
  306. return;
  307. }
  308. $.ajax({
  309. url: urlConfig("report-fault"),
  310. data: {
  311. topic: topic,
  312. fault: fault,
  313. synset: definition,
  314. word: word,
  315. faultContent: contentFault
  316. },
  317. type: "POST"
  318. }).success(function (data) {
  319. if (data[0] != 0) {
  320. $('.modal-content-feedback').css('display', 'none');
  321. $('.modal-content-thanks').css('display', 'block');
  322. $('.txt-fault').val('');
  323. setTimeout(function () {
  324. $('#feedback-fault').modal('hide')
  325. $('.modal-content-thanks').css('display', 'none');
  326. $('.modal-content-feedback').css('display', 'block');
  327. }, 3000);
  328. }
  329. });
  330. });
  331. </script>
  332. <style>
  333. </style>
  334. <div id="modal-setup" class="modal fade" tabindex="-1" role="dialog">
  335. <div class="modal-dialog" role="document">
  336. <div class="modal-content">
  337. <a class="modal-button-close" href="javascript:void(0)" data-dismiss="modal"></a>
  338. <p class="setup-title">Cài đặt</p>
  339. <p class="setup-line"></p>
  340. <form action="https://www.voca.vn/set-learning-type" method="post">
  341. <div class="setup-content">
  342. <p class="setup-label">Chọn âm thanh</p>
  343. <div class="setup-radio">
  344. <label class="setup-check">
  345. <input class="setup-sound-check-input" checked="checked" type="radio" value="1" name="sound_type">
  346. <span class="setup-sound-check"><span class="icon"></span></span>
  347. Anh - Mỹ
  348. </label>
  349. <label class="setup-check">
  350. <input class="setup-sound-check-input" type="radio" value="2" name="sound_type">
  351. <span class="setup-sound-check"><span class="icon"></span></span>
  352. Anh - Anh
  353. </label>
  354. </div>
  355. </div>
  356. <div class="setup-content hidden">
  357. <p class="setup-label">Chọn giao diện</p>
  358. <div class="setup-radio setup-lang">
  359. <label class="setup-check">
  360. <input class="setup-sound-check-input" checked="checked" type="radio" value="1" name="interface_type">
  361. <span class="setup-sound-check"><span class="icon"></span></span>
  362. Ngang
  363. </label>
  364. <label class="setup-check">
  365. <input class="setup-sound-check-input" type="radio" value="2" name="interface_type">
  366. <span class="setup-sound-check"><span class="icon"></span></span>
  367. Dọc
  368. </label>
  369. </div>
  370. </div>
  371. <button type="submit" class="setup-submit">Lưu</button>
  372. </form>
  373. </div>
  374. </div>
  375. </div>
  376. <script type="text/javascript">
  377. $(document).on('change', '#modal-setup input[type="radio"]', function () {
  378. $("#modal-setup .setup-submit").addClass('setup-active');
  379. });
  380. </script>
  381. <div class="modal fade" id="modal-sample" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  382. <div class="modal-dialog" role="document">
  383. <div class="modal-content">
  384. <a href="javascript:void(0)" class="modal-button-close" data-dismiss="modal"></a>
  385. <div class="sample-title">
  386. <p>Từ "<span></span>" trong ngữ cảnh</p>
  387. </div>
  388. <div class="sample-tab">
  389. <a href="javascript:void(0)" class="tab-text sample-tab-active">Từ trong câu</a>
  390. <a href="javascript:void(0)" class="tab-video">Từ trong video</a>
  391. </div>
  392. <div class="sample-content"></div>
  393. <div class="video-content">
  394. <div class="video-item-content">
  395. <div class="modal-video-cover">
  396. <div id="video-player"></div>
  397. </div>
  398. <div class="song-video-bg"></div>
  399. <div class="song-video-lyric">
  400. <div class="playbuton">
  401. <span></span>
  402. </div>
  403. <p class="lyric-en"></p>
  404. <p class="lyric-vi"></p>
  405. <a href="javascript:void(0)" class="song-prev"></a>
  406. <a href="javascript:void(0)" class="song-next"></a>
  407. </div>
  408. </div>
  409. <p class="video-msg">Hiện VOCA chưa cập nhật các VIDEO cho từ vựng này. Nhưng sẽ sớm thôi, bạn hãy chờ nhé!^^</p>
  410. </div>
  411. </div>
  412. </div>
  413. </div>
  414. <script type="text/javascript">
  415. var list = [];
  416. var videoId;
  417. var start = 0;
  418. var end = 0;
  419. var isSeeked = false;
  420. var listPos = 0;
  421. $(document).ready(function () {
  422. $(".context").click(function (event) {
  423. event.stopPropagation();
  424. listPos = 0;
  425. videoId = '';
  426. isSeeked = false;
  427. $('.video-content').fadeOut();
  428. $('.sample-content').fadeIn();
  429. $('#modal-sample .sample-tab a').removeClass('sample-tab-active');
  430. $('#modal-sample .sample-tab a').eq(0).addClass('sample-tab-active');
  431. var word = $('.exercise-current').attr('words');
  432. if (word == undefined) {
  433. word = $('.exercise-current').attr('answer');
  434. }
  435. $('.sample-title p span').text(word);
  436. var sample = $('.exercise-current').find('.card-content-example').html();
  437. $.ajax({
  438. url: 'https://www.voca.vn/sample-by-word' + '/' + word,
  439. data: {
  440. 'sample': sample
  441. },
  442. headers: {
  443. 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
  444. },
  445. type: 'POST'
  446. }).success(function (result) {
  447. $('.sample-content').html(result[1]);
  448. list = result[0];
  449. if (list.length > 0) {
  450. $('.video-item-content').fadeIn();
  451. $('.video-msg').fadeOut();
  452. var sp = "";
  453. for (var i = 0; i < list.length; i++) {
  454. sp += "<span></span>";
  455. }
  456. $('.playbuton').html(sp);
  457. start = list[listPos]['start'];
  458. end = list[listPos]['end'];
  459. videoId = list[listPos]['video_id'];
  460. $('.lyric-en').html(list[listPos]['content']);
  461. $('.lyric-vi').html(list[listPos]['content_vi']);
  462. $('.playbuton span').removeClass('sp-active');
  463. $('.playbuton span').eq(listPos).addClass('sp-active');
  464. } else {
  465. $('.video-item-content').fadeOut();
  466. $('.video-msg').fadeIn();
  467. }
  468. $('#modal-sample').modal();
  469. });
  470. return false;
  471. });
  472. $('.tab-video').click(function () {
  473. if (!$(this).hasClass('sample-tab-active')) {
  474. player.playVideo();
  475. $('#modal-sample .sample-tab a').removeClass('sample-tab-active');
  476. $(this).addClass('sample-tab-active');
  477. $('.sample-content').fadeOut();
  478. $('.video-content').fadeIn();
  479. }
  480. });
  481. $('.tab-text').click(function () {
  482. if (!$(this).hasClass('sample-tab-active')) {
  483. player.pauseVideo();
  484. clearInterval(intervalVideo);
  485. clearInterval(timeVideo);
  486. $('#modal-sample .sample-tab a').removeClass('sample-tab-active');
  487. $(this).addClass('sample-tab-active');
  488. $('.video-content').fadeOut();
  489. $('.sample-content').fadeIn();
  490. }
  491. });
  492. });
  493. </script>
  494. <script type="text/javascript">
  495. $(document).on('click', '.playbuton span', function (e) {
  496. player.pauseVideo();
  497. listPos = $(this).index();
  498. isSeeked = false
  499. start = list[listPos]['start'];
  500. end = list[listPos]['end'];
  501. $('.lyric-en').html(list[listPos]['content']);
  502. $('.lyric-vi').html(list[listPos]['content_vi']);
  503. $('.playbuton span').removeClass('sp-active');
  504. $(this).addClass('sp-active');
  505. player.cueVideoById({ videoId: list[listPos]['video_id'] });
  506. setTimeout(function () {
  507. player.playVideo();
  508. }, 500);
  509. });
  510. $(document).on('click', '.song-next', function (e) {
  511. listPos = parseInt(listPos) + 1;
  512. if (list[listPos] != undefined) {
  513. player.pauseVideo();
  514. isSeeked = false
  515. start = list[listPos]['start'];
  516. end = list[listPos]['end'];
  517. $('.lyric-en').html(list[listPos]['content']);
  518. $('.lyric-vi').html(list[listPos]['content_vi']);
  519. $('.playbuton span').removeClass('sp-active');
  520. $('.playbuton span').eq(listPos).addClass('sp-active');
  521. player.cueVideoById({ videoId: list[listPos]['video_id'] });
  522. setTimeout(function () {
  523. player.playVideo();
  524. }, 500);
  525. }
  526. });
  527. $(document).on('click', '.song-prev', function (e) {
  528. listPos = parseInt(listPos) - 1;
  529. if (list[listPos] != undefined) {
  530. player.pauseVideo();
  531. isSeeked = false
  532. start = list[listPos]['start'];
  533. end = list[listPos]['end'];
  534. $('.lyric-en').html(list[listPos]['content']);
  535. $('.lyric-vi').html(list[listPos]['content_vi']);
  536. $('.playbuton span').removeClass('sp-active');
  537. $('.playbuton span').eq(listPos).addClass('sp-active');
  538. player.cueVideoById({ videoId: list[listPos]['video_id'] });
  539. setTimeout(function () {
  540. player.playVideo();
  541. }, 500);
  542. }
  543. });
  544. var tag = document.createElement('script');
  545. tag.src = "https://www.youtube.com/iframe_api";
  546. var firstScriptTag = document.getElementsByTagName('script')[0];
  547. firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
  548. var player;
  549. function onYouTubeIframeAPIReady() {
  550. player = new YT.Player('video-player', {
  551. height: '100%',
  552. width: '100%',
  553. playerVars: {
  554. autoplay: 0,
  555. controls: 0,
  556. showinfo: 0,
  557. playsinline: 1,
  558. rel: 0
  559. },
  560. events: {
  561. 'onStateChange': onPlayerStateChange,
  562. 'onError': onPlayerError
  563. }
  564. });
  565. function isFunction(functionToCheck) {
  566. return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
  567. }
  568. $('#modal-sample').on('show.bs.modal', function (event) {
  569. if (event.relatedTarget != undefined) {
  570. videoId = $(event.relatedTarget).data('video');
  571. }
  572. player.cueVideoById({ videoId: videoId });
  573. player.pauseVideo();
  574. });
  575. $('#modal-sample').on('hide.bs.modal', function (event) {
  576. player.pauseVideo();
  577. clearInterval(intervalVideo);
  578. clearInterval(timeVideo);
  579. });
  580. }
  581. var intervalVideo, timeVideo;
  582. function onPlayerStateChange(event) {
  583. if (event.data == YT.PlayerState.PLAYING) {
  584. // Set setInterval
  585. intervalVideo = setInterval(function () {
  586. var currentTime = player.getCurrentTime();
  587. if (!isNaN(start) && !isNaN(end)) {
  588. isSeeked = true;
  589. if (currentTime < start || currentTime > end) {
  590. player.seekTo(start);
  591. }
  592. }
  593. if (currentTime >= end || isNaN(end)) {
  594. player.pauseVideo();
  595. setTimeout(function () {
  596. playNextVideo();
  597. }, 2000);
  598. }
  599. }, 100);
  600. } else {
  601. clearInterval(intervalVideo);
  602. }
  603. }
  604. function onPlayerError(event) {
  605. playNextVideo();
  606. }
  607. function playNextVideo() {
  608. listPos++;
  609. if (list[listPos] != undefined) {
  610. timeVideo = setTimeout(function () {
  611. $('.playbuton span').removeClass('sp-active');
  612. $('.playbuton span').eq(listPos).addClass('sp-active');
  613. isSeeked = false
  614. start = list[listPos]['start'];
  615. end = list[listPos]['end'];
  616. $('.lyric-en').html(list[listPos]['content']);
  617. $('.lyric-vi').html(list[listPos]['content_vi']);
  618. player.cueVideoById({ videoId: list[listPos]['video_id'] });
  619. setTimeout(function () {
  620. player.playVideo();
  621. }, 500);
  622. }, 1000);
  623. }
  624. }
  625. </script>
  626. <!--******** AUDIO MAIN ******** -->
  627. <audio id="learning-main-audio">
  628. <source class="src" src="" type="audio/mpeg">
  629. </audio>
  630. <audio id="audio-answer-right">
  631. <source class="src" src="~/Content/assets/sounds/learning_right.mp3" type="audio/mpeg">
  632. </audio>
  633. <audio id="audio-answer-wrong">
  634. <source class="src" src="~/Content/assets/sounds/learning_wrong.mp3" type="audio/mpeg">
  635. </audio>
  636. <input type="hidden" name="" id="learning-modal-info" is_unknow="0" is_finish="1" is_review="0" topic="0" parent="0" />
  637. <div class="modal fade" id="learning-modal">
  638. <div class="modal-dialog">
  639. <div class="modal-content">
  640. <span class="modal-button-close" data-dismiss="modal"></span>
  641. <div class="learning-modal-content">
  642. <p class="learning-modal-title">
  643. @Lang.ContinueWithYourChoose
  644. @*Veuillez continuer avec l'option suivante*@
  645. </p>
  646. <div class="learning-modal-btn">
  647. <a class="learning-modal-btn-learning" href="/Voca/Learning?lessonId=@ViewBag.lessonId">@Lang.Relearn</a>
  648. <a class="learning-modal-btn-testing" link="" href="/Voca/Testing?lessonId=@ViewBag.lessonId">@Lang.Retest</a>
  649. </div>
  650. </div>
  651. </div><!-- /.modal-content -->
  652. </div><!-- /.modal-dialog -->
  653. </div><!-- /.modal -->
  654. <script type="text/javascript">
  655. $(document).ready(function () {
  656. $('#learning-question-modal a').click(function () {
  657. var link = $(this).attr('link');
  658. var topic = $('#learning-modal-info').attr('topic');
  659. var parent = $('#learning-modal-info').attr('parent');
  660. var url = link + '/' + topic + '-' + parent;
  661. $('#learning-modal-form').attr('action', url);
  662. $('.learning-modal-btn-unknow').attr('href', (url + '-unknow'));
  663. $('.learning-modal-btn-all').attr('href', url);
  664. });
  665. });
  666. </script>
  667. @*<div class="modal fade" id="learning-question-modal" tabindex="-1" role="dialog" aria-hidden="true">
  668. <div class="modal-dialog">
  669. <div class="modal-content">
  670. <span class="modal-button-close" data-dismiss="modal"></span>
  671. <div class="learning-question-modal-content">
  672. <p class="learning-question-modal-title">Bạn hãy chọn một hình thức học</p>
  673. <div class="learning-question-modal-btn">
  674. <a class="learning-modal-btn-flashcard" data-toggle="modal" data-target="#learning-type-modal" data-dismiss="modal" href="javascript:void()" link="https://www.voca.vn/learning-flashcard">Flashcard 2 mặt</a>
  675. <a class="learning-modal-btn-flashcard-dark" data-toggle="modal" data-target="#learning-type-modal" data-dismiss="modal" href="javascript:void()" link="https://www.voca.vn/learning">Flashcard 3 mặt</a>
  676. <a class="learning-modal-btn-writing" data-toggle="modal" data-target="#learning-type-modal" data-dismiss="modal" href="javascript:void()" link="https://www.voca.vn/learning-writing">Gõ từ</a>
  677. <a class="learning-modal-btn-pronounciation" data-toggle="modal" data-target="#learning-type-modal" data-dismiss="modal" href="javascript:void()" link="https://www.voca.vn/learning-speaking">Phát âm</a>
  678. </div>
  679. </div>
  680. </div>
  681. </div>
  682. </div>*@
  683. <!--<a class="learning-modal-btn-sentence" data-toggle="modal" data-target="#learning-type-modal" data-dismiss="modal" href="javascript:void()" link="https://www.voca.vn/learning-context">Ngữ cảnh</a>-->
  684. <script type="text/javascript">
  685. $(document).ready(function () {
  686. $('.learning-modal-btn-choosing').click(function () {
  687. var topic = $('#learning-modal-info').attr('topic');
  688. var parent = $('#learning-modal-info').attr('parent');
  689. $.ajax({
  690. url: urlConfig("choose-learn-words"),
  691. data: {
  692. topic: topic,
  693. parent: parent
  694. },
  695. type: "POST"
  696. }).success(function (data) {
  697. if (data[0] != 0) {
  698. $('#modal-choose-word .choose-word-content-cover').html(data);
  699. $('#modal-choose-word').modal();
  700. }
  701. });
  702. });
  703. });
  704. </script>
  705. <input type="hidden" id="learning-modal-btn-unknow-content" unknow="Học từ chưa biết" unfinish="Học từ chưa thuộc" name="">
  706. <div class="modal fade" id="learning-type-modal" tabindex="-1" role="dialog" aria-hidden="true">
  707. <div class="modal-dialog">
  708. <div class="modal-content">
  709. <span class="modal-button-close" data-dismiss="modal"></span>
  710. <div class="learning-type-modal-content">
  711. <p class="learning-type-modal-title">Bạn hãy chọn một hình thức học</p>
  712. <div class="learning-type-modal-btn">
  713. <a class="learning-modal-btn-choosing" href="javascript:void(0)">Chọn từ muốn học</a>
  714. <a class="learning-modal-btn-unknow" href="">Học từ chưa thuộc</a>
  715. <a class="learning-modal-btn-all" href="">Học tất cả</a>
  716. </div>
  717. </div>
  718. </div><!-- /.modal-content -->
  719. </div><!-- /.modal-dialog -->
  720. </div><!-- /.modal -->
  721. <script type="text/javascript">
  722. $(document).on('click', '.choose-word-title .choose-all .choose-word-check', function () {
  723. if ($(this).hasClass('word-checked')) {
  724. $(this).removeClass('word-checked');
  725. $('.choose-word-content .word-item .item-check input[type="checkbox"]').prop('checked', false);
  726. } else {
  727. $(this).addClass('word-checked');
  728. $('.choose-word-content .word-item .item-check input[type="checkbox"]').prop('checked', true);
  729. }
  730. $('.choose-word-content .word-item .item-check input[type="checkbox"]').trigger('change');
  731. });
  732. $(document).on('change', '.choose-word-content .word-item .item-check input[type="checkbox"]', function () {
  733. var total = $(".choose-word-content .word-item .item-check input[type='checkbox']").length;
  734. var totalCheck = $(".choose-word-content .word-item .item-check input[type='checkbox']:checked").length;
  735. if (total == totalCheck) {
  736. $(".choose-word-title .choose-all .choose-word-check").addClass('word-checked');
  737. } else {
  738. $(".choose-word-title .choose-all .choose-word-check").removeClass('word-checked');
  739. }
  740. $(".choose-word-title .number").text(totalCheck < 10 ? '0' + totalCheck : totalCheck);
  741. });
  742. </script>
  743. <!-- MODAL -->
  744. <div id="modal-choose-word" class="modal fade" tabindex="-1" role="dialog">
  745. <div class="modal-dialog" role="document">
  746. <div class="modal-content">
  747. <a class="modal-button-close" href="javascript:void(0)" data-dismiss="modal"></a>
  748. <form id="learning-modal-form" action="" method="post">
  749. <p class="choose-word-title">Chọn từ muốn học<span class="number">00</span><span class="choose-all">Chọn tất cả <span class="choose-word-check"><span class="icon-all"></span></span></span></p>
  750. <div class="choose-word-content">
  751. <div class="choose-word-content-cover"></div>
  752. </div>
  753. <button type="submit" class="choose-word-button">Bắt đầu học</button>
  754. </form>
  755. </div>
  756. </div>
  757. </div>
  758. <!--******** AUDIO MAIN ******** -->
  759. <audio id="learning-main-audio">
  760. <source class="src" src="" type="audio/mpeg">
  761. </audio>
  762. <script type="text/javascript" src="~/Content/assets/js/voca/learning-main.js"></script>
  763. <script type="text/javascript" src="~/Content/assets/js/voca/box-slider.jquery.js"></script>
  764. <script type="text/javascript" src="~/Content/assets/js/voca/box-slider-fx-scroll-3d.js"></script>
  765. <script type="text/javascript" src="~/Content/assets/js/voca/kontext.js"></script>
  766. <script type="text/javascript" src="~/Content/assets/js/voca/learning-flashcard.js"></script>
  767. <!--END CONTENT-->