uploadform.html 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <link rel="stylesheet" href="style.css" type="text/css" />
  6. <link rel="stylesheet" href="modal.css" type="text/css" />
  7. <script src="modal.js"></script>
  8. <title>radio patapedia</title>
  9. <script>
  10. // frontend
  11. let isUploading = false;
  12. window.addEventListener ( 'load', function ( )
  13. {
  14. document.querySelector ( '#uploadForm' ).addEventListener ( 'change', function ( ev )
  15. {
  16. let upload = document.querySelector ( '#file' );
  17. let label = document.querySelector ( '#desc' );
  18. if ( upload.files.length > 0 )
  19. {
  20. let name = upload.files [0].name;
  21. label.innerHTML = name;
  22. }
  23. } );
  24. document.querySelector ( '#uploadForm' ).addEventListener ( 'submit', function ( ev )
  25. {
  26. ev.preventDefault ( );
  27. let formData = new FormData ( this );
  28. let blackout = document.querySelector ( '#uploadBlackout' );
  29. if ( !isUploading )
  30. {
  31. let request = new XMLHttpRequest ( );
  32. request.withCredentials = true;
  33. blackout.style.display = 'block';
  34. isUploading = true;
  35. request.open ( 'POST', 'process' );
  36. request.addEventListener ( 'readystatechange', function ( reqEvent )
  37. {
  38. if ( request.readyState == XMLHttpRequest.DONE )
  39. {
  40. if ( request.status == 200 )
  41. {
  42. modalbox.displayModal ( 'progressDialog', 'Przesyłanie zakończone', '<p>Twoja piosenka została dodana do puli. Niedługo powinna pojawić się na czacie głosowym ♪</p>',
  43. [
  44. { id: 'progressDialogOk', message: 'Ok', handler: function ( ev ) {
  45. window.location.href = '/';
  46. } }
  47. ]
  48. );
  49. }
  50. else
  51. {
  52. try
  53. {
  54. let jsonResult = JSON.parse ( request.responseText );
  55. if ( jsonResult.message )
  56. {
  57. modalbox.displayModal ( 'progressDialog', 'Wystąpił błąd', '<p>Podczas przesyłania twojej piosenki wystąpił błąd!</p><p>Serwer pozostawił komentarz: ' + jsonResult.message + '</p>',
  58. [
  59. { id: 'progressDialogOk', message: 'Ok', handler: function ( ev ) {
  60. modalbox.closeModal ( this );
  61. } }
  62. ]
  63. );
  64. }
  65. else
  66. {
  67. modalbox.displayModal ( 'progressDialog', 'Wystąpił błąd', '<p>Podczas przesyłania twojej piosenki wystąpił błąd!</p><p>Serwer nie pozostawił żadnego komentarza. Prosimy spróbować ponownie później.</p>',
  68. [
  69. { id: 'progressDialogOk', message: 'Ok', handler: function ( ev ) {
  70. modalbox.closeModal ( this );
  71. } }
  72. ]
  73. );
  74. }
  75. }
  76. catch ( error )
  77. {
  78. modalbox.displayModal ( 'progressDialog', 'Wystąpił błąd', '<p>Podczas przesyłania twojej piosenki wystąpił błąd!</p><p>Wystąpił nieznany błąd po stronie klienta</p>',
  79. [
  80. { id: 'progressDialogOk', message: 'Ok', handler: function ( ev ) {
  81. modalbox.closeModal ( this );
  82. } }
  83. ]
  84. );
  85. }
  86. blackout.style.display = 'none';
  87. isUploading = false;
  88. }
  89. }
  90. } );
  91. request.send ( formData );
  92. }
  93. } );
  94. } );
  95. </script>
  96. </head>
  97. <body>
  98. <div class="backgroundCover"></div>
  99. <div class="bodyWrapper">
  100. <div class="siteHeader">
  101. <div class="siteHeaderWordmark">
  102. radio patapedia
  103. </div>
  104. </div>
  105. <div class="siteMain">
  106. <h1>Przesyłanie Pliku</h1>
  107. <p>Plik musi być w formacie MP3. Inne formaty audio nie są obsługiwane. Wielokrotne przesyłanie niepoprawnych plików zakończy się automatyczną blokadą konta.</p>
  108. <div class="userinfo">
  109. <img src="{{useravatar}}" alt="Avatar">
  110. <p>Przesyłasz plik jako</p>
  111. <p class="username"><span class="name">{{username}}</span><span class="discriminator">#{{discriminator}}</span></p>
  112. </div>
  113. <div class="uploadform">
  114. <div id="uploadBlackout" class="uploadBlackout" style="display:none">
  115. <img src="loading.gif" alt="Loading..." />
  116. </div>
  117. <form method="POST" action="process" id="uploadForm">
  118. <div class="audiofile">
  119. <span id="desc">Nie wybrano pliku</span>
  120. <input type="file" name="song" id="file" class="inputfile" accept="audio/mpeg" />
  121. <label for="file" id="uploadLabel">Wybierz plik</label>
  122. <input type="submit" value="Rozpocznij Przesyłanie" />
  123. </div>
  124. </form>
  125. </div>
  126. <div class="footer">
  127. <p>Strona i aplikacja stworzona przez rekjna. Tło ukradłem z deviantarta owoca.</p>
  128. </div>
  129. </div>
  130. </div>
  131. </body>
  132. </html>