scratch – Diff between revs 20 and 21

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 20 Rev 21
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html lang="en"> 2 <html lang="en">
3 <head> 3 <head>
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
8 <meta name="description" content="quick file upload"> 8 <meta name="description" content="quick asset upload">
9 <meta name="author" content="Wizardry and Steamworks"> 9 <meta name="author" content="Wizardry and Steamworks">
10 <link rel="icon" href="favicon.ico"> 10 <link rel="icon" href="favicon.ico">
11   11  
12 <title>Quickload</title> 12 <title>Quickload</title>
13   13  
14 <!-- Bootstrap core CSS --> 14 <!-- Bootstrap core CSS -->
15 <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet"> 15 <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet">
16   16  
17 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 17 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
18 <link href="css/bootstrap/ie10-viewport-bug-workaround.css" rel="stylesheet"> 18 <link href="css/bootstrap/ie10-viewport-bug-workaround.css" rel="stylesheet">
19   19  
20 <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> 20 <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
21 <!--[if lt IE 9]><script src="js/bootstrap/ie8-responsive-file-warning.js"></script><![endif]--> 21 <!--[if lt IE 9]><script src="js/bootstrap/ie8-responsive-file-warning.js"></script><![endif]-->
22 <script src="js/bootstrap/ie-emulation-modes-warning.js"></script> 22 <script src="js/bootstrap/ie-emulation-modes-warning.js"></script>
23   23  
24 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 24 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
25 <!--[if lt IE 9]> 25 <!--[if lt IE 9]>
26 <script src="js/bootstrap/html5shiv.min.js"></script> 26 <script src="js/bootstrap/html5shiv.min.js"></script>
27 <script src="js/bootstrap/respond.min.js"></script> 27 <script src="js/bootstrap/respond.min.js"></script>
28 <![endif]--> 28 <![endif]-->
29 29
30 <!-- DropZone --> 30 <!-- DropZone -->
31 <link href="css/dropzone/dropzone.min.css" rel="stylesheet"> 31 <link href="css/dropzone/dropzone.min.css" rel="stylesheet">
32 <!-- Local style --> 32 <!-- Local style -->
33 <link href="css/style.css" rel="stylesheet"> 33 <link href="css/style.css" rel="stylesheet">
34 </head> 34 </head>
35   35  
36 <body> 36 <body>
37   37  
38 <div class="container"> 38 <div class="container">
39   39  
40 <!-- Main component for a primary marketing message or call to action --> 40 <!-- Main component for a primary marketing message or call to action -->
41 <div class="jumbotron"> 41 <div class="jumbotron">
42 <h1>Quickload</h1> 42 <h1>Quickload</h1>
43 <p>Asset sharing platform.</p> 43 <p>Asset sharing platform.</p>
44 </div> 44 </div>
45 45
46 <ul class="nav nav-tabs"> 46 <ul class="nav nav-tabs">
47 <li class="active"><a href="#">Files</a></li> 47 <li class="active"><a href="#">Files</a></li>
48 </ul> 48 </ul>
49 49
50 <div class="panel panel-default"> 50 <div class="panel panel-default">
51 <div class="panel-heading"> 51 <div class="panel-heading">
52 <h3 class="panel-title">File Upload</h3> -  
53 </div> -  
54 <div class="panel-body" style="min-height: 480px; border: 2px dashed #0087F7; border-radius: 5px; background: white; box-sizing: border-box; padding: 54px 54px; outline-offset: -24px;"> -  
55 <div id="actions" class="row fallback"> 52 <div id="actions" class="row">
56 <div class="col-lg-5"> 53 <div class="col-lg-5">
57 <div class="btn-group btn-group-justified" role="group"> 54 <div class="btn-group btn-group-justified" role="group">
58 <!-- The fileinput-button span is used to style the file input field as button --> 55 <!-- The fileinput-button span is used to style the file input field as button -->
59 <div class="btn-group" role="group"> 56 <div class="btn-group" role="group">
60 <button type="button" class="btn btn-default fileinput-button"> 57 <button id="uploadbutton" type="button" class="btn btn-default">
61 <i class="glyphicon glyphicon-plus"></i> 58 <i class="glyphicon glyphicon-plus"></i>
62 <span>Add...</span> 59 <span>Add...</span>
63 </button> 60 </button>
64 </div> 61 </div>
65 <div class="btn-group" role="group"> 62 <div class="btn-group" role="group">
66 <button type="submit" class="btn btn-default start"> 63 <button type="submit" class="btn btn-default start">
67 <i class="glyphicon glyphicon-upload"></i> 64 <i class="glyphicon glyphicon-upload"></i>
68 <span>Upload</span> 65 <span>Upload</span>
69 </button> 66 </button>
70 </div> 67 </div>
71 <div class="btn-group" role="group"> 68 <div class="btn-group" role="group">
72 <button type="reset" class="btn btn-default cancel"> 69 <button type="reset" class="btn btn-default cancel">
73 <i class="glyphicon glyphicon-ban-circle"></i> 70 <i class="glyphicon glyphicon-ban-circle"></i>
74 <span>Cancel</span> 71 <span>Cancel</span>
75 </button> 72 </button>
76 </div> 73 </div>
77 </div> 74 </div>
78 </div> 75 </div>
79 </div> 76 </div>
-   77 </div>
-   78 <div class="panel-body" id="uploadpanel">
80 <div class="table table-striped files" id="previews"> 79 <div class="table table-striped files" id="previews">
81 <div id="template" class="file-row"> 80 <div id="template" class="file-row">
82 <!-- This is used as the file preview template --> 81 <!-- This is used as the file preview template -->
83 <div> 82 <div>
84 <span class="preview"><img src="img/fileholder.svg" alt="Upload file thumbnail" data-dz-thumbnail></span> 83 <span class="preview"><img src="img/fileholder.svg" width="58" alt="Upload file thumbnail" data-dz-thumbnail></span>
85 </div> 84 </div>
86 <div> 85 <div>
87 <p id="name" class="name" data-dz-name></p> 86 <p id="name" class="name" data-dz-name></p>
88 <div class="input-group"> 87 <div class="input-group">
89 <input id="URL" type="text" class="form-control" readonly> 88 <input id="URL" type="text" class="form-control" readonly>
90 <span class="input-group-btn"> 89 <span class="input-group-btn">
91 <button id="btn-clipboard" class="btn btn-default" type="button"><img class="clippy" src="img/clipboard/clippy.svg" width="13" alt="Copy to clipboard"></button> 90 <button id="btn-clipboard" class="btn btn-default" type="button"><img class="clippy" src="img/clipboard/clippy.svg" width="13" alt="Copy to clipboard"></button>
92 </span> 91 </span>
93 </div> 92 </div>
94 <strong class="error text-danger" data-dz-errormessage></strong> 93 <strong class="error text-danger" data-dz-errormessage></strong>
95 </div> 94 </div>
96 <div> 95 <div>
97 <p class="size" data-dz-size></p> 96 <p class="size" data-dz-size></p>
98 <div id="progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"> 97 <div id="progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
99 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div> 98 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div>
100 </div> 99 </div>
101 </div> 100 </div>
102 <div> 101 <div>
103 <button id="start" class="btn btn-default start"> 102 <button id="start" class="btn btn-default start">
104 <i class="glyphicon glyphicon-upload"></i> 103 <i class="glyphicon glyphicon-upload"></i>
105 <span>Upload</span> 104 <span>Upload</span>
106 </button> 105 </button>
107 <button id="cancel" data-dz-remove class="btn btn-default cancel"> 106 <button id="cancel" data-dz-remove class="btn btn-default cancel">
108 <i class="glyphicon glyphicon-ban-circle"></i> 107 <i class="glyphicon glyphicon-ban-circle"></i>
109 <span>Cancel</span> 108 <span>Cancel</span>
110 </button> 109 </button>
111 <button id="delete" data-dz-remove class="btn btn-danger delete"> 110 <button id="remove" data-dz-remove class="btn btn-danger remove">
112 <i class="glyphicon glyphicon-trash"></i> 111 <i class="glyphicon glyphicon-remove"></i>
113 <span>Delete</span> 112 <span>Remove</span>
114 </button> 113 </button>
115 </div> 114 </div>
116 </div> 115 </div>
117   116  
118 </div> 117 </div>
119 </div> 118 </div>
120 <!-- The global file processing state --> 119 <!-- The global file processing state -->
121 <div class="fileupload-process"> 120 <div class="fileupload-process">
122 <div id="total-progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"> 121 <div id="total-progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
123 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div> 122 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div>
124 </div> 123 </div>
125 </div> 124 </div>
126 </div> 125 </div>
127   126  
128 </div> <!-- /container --> 127 </div> <!-- /container -->
129 128
130 <div id="footer"> 129 <div id="footer">
131 <div class="container"> 130 <div class="container">
132 <p class="text-muted credit">Copyright <i class="glyphicon glyphicon-copyright-mark"></i> 2017 <a href="http://grimore.org">Wizardry and Steamworks</a>.</p> 131 <p class="text-muted credit">Copyright <i class="glyphicon glyphicon-copyright-mark"></i> 2017 <a href="http://grimore.org">Wizardry and Steamworks</a>.</p>
133 </div> 132 </div>
134 </div> 133 </div>
135   134  
136 <script src="js/jquery/jquery.min.js"></script> 135 <script src="js/jquery/jquery.min.js"></script>
137 <script src="js/bootstrap/bootstrap.min.js"></script> 136 <script src="js/bootstrap/bootstrap.min.js"></script>
138 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 137 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
139 <script src="js/bootstrap/ie10-viewport-bug-workaround.js"></script> 138 <script src="js/bootstrap/ie10-viewport-bug-workaround.js"></script>
140 139
141 <!-- DropZone --> 140 <!-- DropZone -->
142 <script src="js/dropzone/dropzone.min.js"></script> 141 <script src="js/dropzone/dropzone.min.js"></script>
143 <!-- <script src="js/dropzone/dropzone-amd-module.min.js"></script> --> 142 <!-- <script src="js/dropzone/dropzone-amd-module.min.js"></script> -->
144 <!-- Clipboard --> 143 <!-- Clipboard -->
145 <script src="js/clipboard/clipboard.min.js"></script> 144 <script src="js/clipboard/clipboard.min.js"></script>
146 <script> 145 <script>
147 $(document).ready(function(){ 146 $(document).ready(function(){
148 // Get the template HTML and remove it from the doument 147 // Get the template HTML and remove it from the doument
149 var previewNode = document 148 var previewNode = document
150 .querySelector("#template"); 149 .querySelector("#template");
151 previewNode.id = ""; 150 previewNode.id = "";
152 var previewTemplate = previewNode 151 var previewTemplate = previewNode
153 .parentNode 152 .parentNode
154 .innerHTML; 153 .innerHTML;
155 previewNode 154 previewNode
156 .parentNode 155 .parentNode
157 .removeChild(previewNode); 156 .removeChild(previewNode);
158   157  
159 var myDropzone = new Dropzone('.panel-body', { // Make the whole body a dropzone 158 var myDropzone = new Dropzone('.panel-body', { // Make the whole body a dropzone
160 url: "upload.php", // Set the url 159 url: "upload.php", // Set the url
161 paramName: "file", 160 paramName: "file",
162 thumbnailWidth: 80, 161 thumbnailWidth: 80,
163 thumbnailHeight: 80, 162 thumbnailHeight: 80,
164 //parallelUploads: 20, 163 //parallelUploads: 20,
165 previewTemplate: previewTemplate, 164 previewTemplate: previewTemplate,
166 autoQueue: false, // Make sure the files aren't queued until manually added 165 autoQueue: false, // Make sure the files aren't queued until manually added
167 previewsContainer: "#previews", // Container to display the previews 166 previewsContainer: "#previews", // Container to display the previews
168 clickable: true, 167 clickable: [
-   168 "#uploadbutton",
-   169 "#uploadpanel"
-   170 ],
169 //clickable: ".fileinput-button" // Element that should be used as click trigger to select files. 171 //clickable: "#uploadbutton" // Element that should be used as click trigger to select files.
170 }).on("addedfile", (file) => { 172 }).on("addedfile", (file) => {
171 // Hookup the start button 173 // Hookup the start button
172 file.previewElement.querySelector(".start").onclick = () => { 174 file.previewElement.querySelector(".start").onclick = () => {
173 myDropzone.enqueueFile(file); 175 myDropzone.enqueueFile(file);
174 }; 176 };
175 }).on("totaluploadprogress", (progress) => { 177 }).on("totaluploadprogress", (progress) => {
176 document 178 document
177 .querySelector("#total-progress .progress-bar") 179 .querySelector("#total-progress .progress-bar")
178 .style 180 .style
179 .width = progress + "%"; 181 .width = progress + "%";
180 }).on("sending", (file) => { 182 }).on("sending", (file) => {
181 // Show the total progress bar when upload starts 183 // Show the total progress bar when upload starts
182 document.querySelector("#total-progress") 184 document.querySelector("#total-progress")
183 .style 185 .style
184 .opacity = 1; 186 .opacity = 1;
185 187
186 // And disable the start button. 188 // And disable the start button.
187 file 189 file
188 .previewElement 190 .previewElement
189 .querySelector(".start") 191 .querySelector(".start")
190 .setAttribute("disabled", "disabled"); 192 .setAttribute("disabled", "disabled");
191 }).on("queuecomplete", (progress) => { 193 }).on("queuecomplete", (progress) => {
192 document.querySelector("#total-progress") 194 document.querySelector("#total-progress")
193 .style 195 .style
194 .opacity = "0"; 196 .opacity = "0";
195 }).on("success", (file, data) => { 197 }).on("success", (file, data) => {
196 198
197 var boxURLID = '_' + Math 199 var boxURLID = '_' + Math
198 .random() 200 .random()
199 .toString(36) 201 .toString(36)
200 .substr(2, 9); 202 .substr(2, 9);
201 file 203 file
202 .previewElement 204 .previewElement
203 .querySelector("#URL") 205 .querySelector("#URL")
204 .value = data; 206 .value = data;
205 207
206 file 208 file
207 .previewElement 209 .previewElement
208 .querySelector("#URL") 210 .querySelector("#URL")
209 .setAttribute('id', boxURLID) 211 .setAttribute('id', boxURLID)
210 212
211 // Clipboard button. 213 // Clipboard button.
212 clipButtonID = '_' + Math 214 clipButtonID = '_' + Math
213 .random() 215 .random()
214 .toString(36) 216 .toString(36)
215 .substr(2, 9); 217 .substr(2, 9);
216 file 218 file
217 .previewElement 219 .previewElement
218 .querySelector("#btn-clipboard") 220 .querySelector("#btn-clipboard")
219 .setAttribute('data-clipboard-target', '#' + boxURLID) 221 .setAttribute('data-clipboard-target', '#' + boxURLID)
220 222
221 file 223 file
222 .previewElement 224 .previewElement
223 .querySelector("#btn-clipboard") 225 .querySelector("#btn-clipboard")
224 .setAttribute('id', clipButtonID); 226 .setAttribute('id', clipButtonID);
225   227  
226 file 228 file
227 .previewElement 229 .previewElement
228 .querySelector(".start") 230 .querySelector(".start")
229 .setAttribute("disabled", "disabled"); 231 .setAttribute("disabled", "disabled");
230 file 232 file
231 .previewElement 233 .previewElement
232 .querySelector(".cancel") 234 .querySelector(".cancel")
233 .setAttribute("disabled", "disabled"); 235 .setAttribute("disabled", "disabled");
234 236
235 new Clipboard('#' + clipButtonID); 237 new Clipboard('#' + clipButtonID);
236 }); 238 });
237 -  
238 if($('.panel-body').hasClass('fallback')) { 239
239 document.querySelector("#actions .start").onclick = function() { 240 document.querySelector("#actions .start").onclick = () => {
240 myDropzone.enqueueFiles( 241 myDropzone.enqueueFiles(
241 myDropzone 242 myDropzone
242 .getFilesWithStatus(Dropzone.ADDED)); 243 .getFilesWithStatus(Dropzone.ADDED));
-   244 };
243 }; 245
244 document.querySelector("#actions .cancel").onclick = function() { 246 document.querySelector("#actions .cancel").onclick = () => {
245 myDropzone.removeAllFiles(true); -  
246 }; 247 myDropzone.removeAllFiles(true);
247 } 248 };
248 }); 249 });
249 </script> 250 </script>
250 </body> 251 </body>
251 </html> 252 </html>
252   253