video.form.add.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. $data = [];
  3. ?>
  4. <nav aria-label="breadcrumb" class="ariane">
  5. <ol class="breadcrumb" style="border-radius: 0 0 5px 5px; padding:5px 10px;">
  6. <li class="breadcrumb-item"><a href="/">Toutes les vidéos</a></li>
  7. <li class="breadcrumb-item active" aria-current="page"><?php echo isset($data["title"]) ? $data["title"] : "Ajouter une vidéo"; ?></li>
  8. </ol>
  9. </nav>
  10. <div class='container' style="position: relative;">
  11. <form method="post" id="uploadForm" enctype="multipart/form-data">
  12. <input type="hidden" name="from" value="video.form.add">
  13. <div class='form-group' id="progressBarBox" style="display:none;">
  14. <span id="progressPercent">0%</span>
  15. <progress id="progressBar" value="0" max="100" style="width: 100%; display: none;"></progress>
  16. </div>
  17. <div class='form-group SubmitElement'>
  18. <label for='videoFile'>Charger la vidéo</label>
  19. <div class='custom-file'>
  20. <input type='file' name='videoFile' class='custom-file-input' id='videoFile' accept='video/*' required>
  21. <label class='custom-file-label' for='videoFile'>Choisir un fichier</label>
  22. </div>
  23. </div>
  24. <div class='form-group' id="previewFileName" style="display:none;">
  25. <label for='selectedFileName'>Nom de la vidéo sélectionnée</label>
  26. <input type='text' class='form-control' id='selectedFileName' readonly>
  27. </div>
  28. <div class='form-group SubmitElement'>
  29. <label>Statut de la vidéo</label>
  30. <div class='custom-control custom-radio'>
  31. <input type='radio' id='activeStatus' name='videoStatus' class='custom-control-input' value='1' <?php echo ((isset($data["active"]) and $data["active"] == 1) or !isset($data["active"])) ? "checked" : NULL; ?>>
  32. <label class='custom-control-label' for='activeStatus'>Accessible à tous</label>
  33. </div>
  34. <div class='custom-control custom-radio'>
  35. <input type='radio' id='inactiveStatus' name='videoStatus' class='custom-control-input' value='0' <?php echo (isset($data["active"]) and $data["active"] == 0) ? "checked" : NULL; ?>>
  36. <label class='custom-control-label' for='inactiveStatus'>Non accessible</label>
  37. </div>
  38. </div>
  39. <div class='form-group'>
  40. <label for='videoName'>Titre de la vidéo</label>
  41. <input type='text' class='form-control' id='videoName' name="videoName" value="<?php echo isset($data["title"]) ? $data["title"] : NULL; ?>" required>
  42. </div>
  43. <div class='form-group'>
  44. <label for='dateEvent'>Jour de l'évènement</label>
  45. <input class='form-control' type="date" id="dateEvent" name="dateEvent" value="<?php echo isset($data["dateEvent"]) ? $data["dateEvent"] : NULL; ?>" required>
  46. </div>
  47. <div class='form-group SubmitElement'>
  48. <button type='submit' class='btn btn-primary btn-lg'>Enregistrer la vidéo</button>
  49. </div>
  50. </form>
  51. </div>
  52. <style>
  53. #progressBar {
  54. height: 20px;
  55. }
  56. #progressPercent {
  57. font-weight: bold;
  58. }
  59. </style>
  60. <script>
  61. document.getElementById('videoFile').addEventListener('change', function() {
  62. var fileName = this.files[0].name;
  63. document.getElementById('selectedFileName').value = fileName;
  64. document.getElementById('previewFileName').style.display = 'block';
  65. });
  66. document.getElementById('uploadForm').addEventListener('submit', function(event) {
  67. document.getElementById('progressBarBox').style.display = 'block';
  68. var elements = document.getElementsByClassName('SubmitElement');
  69. for (var i = 0; i < elements.length; i++) {
  70. elements[i].style.display = 'none';
  71. }
  72. event.preventDefault();
  73. var form = document.getElementById('uploadForm');
  74. var fileInput = document.getElementById('videoFile');
  75. var progressBar = document.getElementById('progressBar');
  76. var progressPercent = document.getElementById('progressPercent');
  77. progressBar.style.display = 'block';
  78. var formData = new FormData(form);
  79. var xhr = new XMLHttpRequest();
  80. xhr.open('POST', '/edit/add', true);
  81. xhr.upload.onprogress = function(event) {
  82. if (event.lengthComputable) {
  83. var percentComplete = (event.loaded / event.total) * 100;
  84. progressBar.value = percentComplete;
  85. progressPercent.textContent = Math.round(percentComplete) + '%';
  86. }
  87. };
  88. xhr.onload = function() {
  89. if (xhr.status === 200) {
  90. try {
  91. // Récupérer la réponse JSON contenant l'ID
  92. var response = JSON.parse(xhr.responseText);
  93. var videoId = response.id;
  94. if (videoId) {
  95. // Rediriger vers /edit/ID avec l'ID récupéré
  96. window.location.href = "/edit/" + videoId;
  97. } else {
  98. alert("Erreur : ID non trouvé dans la réponse.");
  99. showElement();
  100. }
  101. } catch (e) {
  102. alert("Erreur lors du traitement de la réponse.");
  103. showElement();
  104. }
  105. } else {
  106. alert('Erreur lors du téléchargement.');
  107. // progressBar.value = 0; // Réinitialiser la barre
  108. // progressPercent.textContent = '0%';
  109. showElement();
  110. }
  111. };
  112. xhr.send(formData);
  113. });
  114. function showElement(){
  115. var elements = document.getElementsByClassName('SubmitElement');
  116. for (var i = 0; i < elements.length; i++) {
  117. elements[i].style.display = 'block';
  118. }
  119. }
  120. </script>