|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | | -(() => { |
| 3 | +(function () { |
4 | 4 | function parseURL (text) { |
5 | | - const xml = new window.DOMParser().parseFromString(text, 'text/xml') |
6 | | - const tag = xml.getElementsByTagName('Key')[0] |
| 5 | + var xml = new window.DOMParser().parseFromString(text, 'text/xml') |
| 6 | + var tag = xml.getElementsByTagName('Key')[0] |
7 | 7 | return decodeURI(tag.childNodes[0].nodeValue) |
8 | 8 | } |
9 | 9 |
|
10 | 10 | function addHiddenInput (body, name, form) { |
11 | | - const key = parseURL(body) |
12 | | - const input = document.createElement('input') |
| 11 | + var key = parseURL(body) |
| 12 | + var input = document.createElement('input') |
13 | 13 | input.type = 'hidden' |
14 | 14 | input.value = key |
15 | 15 | input.name = name |
|
18 | 18 |
|
19 | 19 | function waitForAllFiles (form) { |
20 | 20 | if (window.uploading !== 0) { |
21 | | - setTimeout(() => { |
| 21 | + setTimeout(function () { |
22 | 22 | waitForAllFiles(form) |
23 | 23 | }, 100) |
24 | 24 | } else { |
|
27 | 27 | } |
28 | 28 |
|
29 | 29 | function request (method, url, data) { |
30 | | - return new Promise((resolve, reject) => { |
31 | | - const xhr = new window.XMLHttpRequest() |
| 30 | + return new Promise(function (resolve, reject) { |
| 31 | + var xhr = new window.XMLHttpRequest() |
32 | 32 | xhr.open(method, url) |
33 | | - xhr.onload = () => { |
| 33 | + |
| 34 | + xhr.onload = function () { |
34 | 35 | if (xhr.status === 201) { |
35 | 36 | resolve(xhr.responseText) |
36 | 37 | } else { |
37 | 38 | reject(xhr.statusText) |
38 | 39 | } |
39 | 40 | } |
40 | | - xhr.onerror = () => { |
| 41 | + |
| 42 | + xhr.onerror = function () { |
41 | 43 | reject(xhr.statusText) |
42 | 44 | } |
43 | 45 | xhr.send(data) |
44 | 46 | }) |
45 | 47 | } |
46 | 48 |
|
47 | 49 | function uploadFiles (form, fileInput, name) { |
48 | | - const url = fileInput.getAttribute('data-url') |
49 | | - const promises = Array.from(fileInput.files).map((file) => { |
50 | | - const s3Form = new window.FormData() |
51 | | - Array.from(fileInput.attributes).forEach(attr => { |
52 | | - let name = attr.name |
| 50 | + var url = fileInput.getAttribute('data-url') |
| 51 | + var promises = Array.from(fileInput.files).map(function (file) { |
| 52 | + var s3Form = new window.FormData() |
| 53 | + Array.from(fileInput.attributes).forEach(function (attr) { |
| 54 | + var name = attr.name |
| 55 | + |
53 | 56 | if (name.startsWith('data-fields')) { |
54 | 57 | name = name.replace('data-fields-', '') |
55 | 58 | s3Form.append(name, attr.value) |
|
60 | 63 | s3Form.append('file', file) |
61 | 64 | return request('POST', url, s3Form) |
62 | 65 | }) |
63 | | - Promise.all(promises).then((results) => { |
64 | | - results.forEach((result) => { |
| 66 | + Promise.all(promises).then(function (results) { |
| 67 | + results.forEach(function (result) { |
65 | 68 | addHiddenInput(result, name, form) |
66 | 69 | }) |
67 | | - |
68 | | - const input = document.createElement('input') |
| 70 | + var input = document.createElement('input') |
69 | 71 | input.type = 'hidden' |
70 | 72 | input.name = 's3file' |
71 | 73 | input.value = fileInput.name |
72 | 74 | fileInput.name = '' |
73 | 75 | form.appendChild(input) |
74 | 76 | window.uploading -= 1 |
75 | | - }, (err) => { |
| 77 | + }, function (err) { |
76 | 78 | console.log(err) |
77 | 79 | fileInput.setCustomValidity(err) |
78 | 80 | fileInput.reportValidity() |
79 | 81 | }) |
80 | 82 | } |
81 | 83 |
|
82 | 84 | function clickSubmit (e) { |
83 | | - let submitButton = e.target |
84 | | - let form = submitButton.closest('form') |
85 | | - const submitInput = document.createElement('input') |
| 85 | + var submitButton = e.target |
| 86 | + var form = submitButton.closest('form') |
| 87 | + var submitInput = document.createElement('input') |
86 | 88 | submitInput.type = 'hidden' |
87 | 89 | submitInput.value = submitButton.value || '1' |
88 | 90 | submitInput.name = submitButton.name |
|
91 | 93 |
|
92 | 94 | function uploadS3Inputs (form) { |
93 | 95 | window.uploading = 0 |
94 | | - const inputs = form.querySelectorAll('.s3file') |
95 | | - Array.from(inputs).forEach(input => { |
| 96 | + var inputs = form.querySelectorAll('.s3file') |
| 97 | + Array.from(inputs).forEach(function (input) { |
96 | 98 | window.uploading += 1 |
97 | 99 | uploadFiles(form, input, input.name) |
98 | | - } |
99 | | - ) |
| 100 | + }) |
100 | 101 | waitForAllFiles(form) |
101 | 102 | } |
102 | 103 |
|
103 | | - document.addEventListener('DOMContentLoaded', () => { |
104 | | - let forms = Array.from(document.querySelectorAll('.s3file')).map(input => { |
| 104 | + document.addEventListener('DOMContentLoaded', function () { |
| 105 | + var forms = Array.from(document.querySelectorAll('.s3file')).map(function (input) { |
105 | 106 | return input.closest('form') |
106 | 107 | }) |
107 | 108 | forms = new Set(forms) |
108 | | - forms.forEach(form => { |
109 | | - form.addEventListener('submit', (e) => { |
| 109 | + forms.forEach(function (form) { |
| 110 | + form.addEventListener('submit', function (e) { |
110 | 111 | e.preventDefault() |
111 | 112 | uploadS3Inputs(e.target) |
112 | 113 | }) |
113 | | - let submitButtons = form.querySelectorAll('input[type=submit], button[type=submit]') |
114 | | - Array.from(submitButtons).forEach(submitButton => { |
| 114 | + var submitButtons = form.querySelectorAll('input[type=submit], button[type=submit]') |
| 115 | + Array.from(submitButtons).forEach(function (submitButton) { |
115 | 116 | submitButton.addEventListener('click', clickSubmit) |
116 | | - } |
117 | | - ) |
| 117 | + }) |
118 | 118 | }) |
119 | 119 | }) |
120 | 120 | })() |
0 commit comments