A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 rivejä
1.5 KiB

  1. const fileForm = document.querySelector('form.import-form');
  2. const selectElem = document.querySelector('select[name="collection"]');
  3. const submitElem = document.querySelector('input[type="submit"]');
  4. const zipInfo = document.querySelector('span.zip > ul.info');
  5. const zipWarning = document.querySelector('span.zip > p.error');
  6. const fileInput = document.querySelector('input[type="file"]')
  7. document.onreadystatechange = () => {
  8. if ( document.readyState === "interactive") {
  9. selectElem.disabled = true;
  10. submitElem.disabled = true;
  11. zipInfo.hidden = true;
  12. zipWarning.hidden = true;
  13. }
  14. }
  15. fileInput.onchange = function() {
  16. if ( this.files.length === 1 ) {
  17. if ( this.files[0].type === 'application/zip' ) {
  18. selectElem.disabled = true;
  19. submitElem.disabled = false;
  20. zipInfo.hidden = false;
  21. zipWarning.hidden = true;
  22. } else {
  23. selectElem.disabled = false;
  24. submitElem.disabled = false;
  25. zipInfo.hidden = true;
  26. zipWarning.hidden = true;
  27. }
  28. }
  29. if ( this.files.length > 1 ) {
  30. selectElem.disabled = false;
  31. submitElem.disabled = false;
  32. var zips = 0;
  33. Array.from(this.files).forEach(file => {
  34. if ( file.name.endsWith(".zip") ) {
  35. zips++;
  36. }
  37. })
  38. if ( zips > 0 ) {
  39. zipInfo.hidden = true;
  40. zipWarning.hidden = false;
  41. } else {
  42. zipInfo.hidden = true;
  43. zipWarning.hidden = true;
  44. }
  45. }
  46. }
  47. submitElem.addEventListener("click", (e) => {
  48. e.preventDefault();
  49. submitElem.disabled = true;
  50. fileForm.submit();
  51. });