scratch – Diff between revs 70 and 71

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 70 Rev 71
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 asset 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>scratch</title> 12 <title>scratch</title>
13   13  
14 <!-- Bootstrap core CSS --> 14 <!-- Bootstrap core CSS -->
15 <link href="bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> 15 <link href="bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
16 <!-- Font Awesome --> 16 <!-- Font Awesome -->
17 <link href="bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet"> 17 <link href="bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet">
18 18
19 <!-- DropZone --> 19 <!-- DropZone -->
20 <link href="bower_components/dropzone/dist/min/dropzone.min.css" rel="stylesheet"> 20 <link href="bower_components/dropzone/dist/min/dropzone.min.css" rel="stylesheet">
21 <!-- Local style --> -  
22 <link href="css/files/style.css" rel="stylesheet"> -  
-   21
23 <!-- Site-wide style CCS --> 22 <!-- Site-wide style CCS -->
24 <link href="css/style.css" rel="stylesheet"> 23 <link href="css/style.css" rel="stylesheet">
-   24
-   25 <!-- Local style -->
-   26 <link href="css/files/style.css" rel="stylesheet">
25 </head> 27 </head>
26   28  
27 <body> 29 <body>
-   30  
-   31 <!-- Main component for a primary marketing message or call to action -->
28   32 <div class="paralax-background"></div>
-   33 <div class="jumbotron">
-   34 <h1>scratch copy</h1>
-   35 <p class="quote">the asset sharer</p>
29 <div class="container"> -  
30   -  
31 <!-- Main component for a primary marketing message or call to action --> 36 </div>
32 <div class="paralax-background"></div> -  
33 <div class="jumbotron"> -  
34 <h1>Scratch</h1> -  
35 <p class="lead">Asset sharing platform</p> 37  
36 </div> 38 <div class="container">
37 39
38 <ul class="nav nav-tabs"> 40 <ul class="nav nav-tabs">
39 <li><a href="index.html">Home</a></li> 41 <li><a href="index.html">Home</a></li>
40 <li class="active"><a href="#">File</a></li> 42 <li class="active"><a href="#">File</a></li>
41 <li><a href="text.html">Text</a></li> 43 <li><a href="text.html">Text</a></li>
42 </ul> 44 </ul>
43 45
44 <div class="panel panel-default"> 46 <div class="panel panel-default">
45 <div class="panel-heading"> 47 <div class="panel-heading">
46 <div id="actions" class="row"> 48 <div id="actions" class="row">
47 <div class="col-lg-5"> 49 <div class="col-lg-5">
48 <div class="btn-group btn-group-justified" role="group"> 50 <div class="btn-group btn-group-justified" role="group">
49 <!-- The fileinput-button span is used to style the file input field as button --> 51 <!-- The fileinput-button span is used to style the file input field as button -->
50 <div class="btn-group" role="group"> 52 <div class="btn-group" role="group">
51 <button id="uploadbutton" type="button" class="btn btn-default"> 53 <button id="uploadbutton" type="button" class="btn btn-default">
52 <i class="glyphicon glyphicon-plus"></i> 54 <i class="glyphicon glyphicon-plus"></i>
53 <span>Add...</span> 55 <span>Add...</span>
54 </button> 56 </button>
55 </div> 57 </div>
56 <div class="btn-group" role="group"> 58 <div class="btn-group" role="group">
57 <button type="submit" class="btn btn-default start"> 59 <button type="submit" class="btn btn-default start">
58 <i class="glyphicon glyphicon-upload"></i> 60 <i class="glyphicon glyphicon-upload"></i>
59 <span>Upload All</span> 61 <span>Upload All</span>
60 </button> 62 </button>
61 </div> 63 </div>
62 <div class="btn-group" role="group"> 64 <div class="btn-group" role="group">
63 <button type="reset" class="btn btn-default cancel"> 65 <button type="reset" class="btn btn-default cancel">
64 <i class="glyphicon glyphicon-ban-circle"></i> 66 <i class="glyphicon glyphicon-ban-circle"></i>
65 <span>Cancel All</span> 67 <span>Cancel All</span>
66 </button> 68 </button>
67 </div> 69 </div>
68 </div> 70 </div>
69 </div> 71 </div>
70 </div> 72 </div>
71 </div> 73 </div>
72 <div class="panel-body" id="uploadpanel"> 74 <div class="panel-body" id="uploadpanel">
73 <div class="table table-striped files" id="previews"> 75 <div class="table table-striped files" id="previews">
74 <div id="template" class="file-row"> 76 <div id="template" class="file-row">
75 <!-- This is used as the file preview template --> 77 <!-- This is used as the file preview template -->
76 <div> 78 <div>
77 <span class="preview"><img src="img/fileholder.svg" width="58" alt="Upload file thumbnail" data-dz-thumbnail></span> 79 <span class="preview"><img src="img/fileholder.svg" width="58" alt="Upload file thumbnail" data-dz-thumbnail></span>
78 </div> 80 </div>
79 <div> 81 <div>
80 <p id="name" class="name" data-dz-name></p> 82 <p id="name" class="name" data-dz-name></p>
81 <div class="input-group"> 83 <div class="input-group">
82 <input id="URL" type="text" class="form-control" readonly> 84 <input id="URL" type="text" class="form-control" readonly>
83 <span class="input-group-btn"> 85 <span class="input-group-btn">
84 <button id="btn-clipboard" class="btn btn-default" type="button"><i class="glyphicon glyphicon-paperclip"></i></button> 86 <button id="btn-clipboard" class="btn btn-default" type="button"><i class="glyphicon glyphicon-paperclip"></i></button>
85 </span> 87 </span>
86 </div> 88 </div>
87 <strong class="error text-danger" data-dz-errormessage></strong> 89 <strong class="error text-danger" data-dz-errormessage></strong>
88 </div> 90 </div>
89 <div> 91 <div>
90 <p class="size" data-dz-size></p> 92 <p class="size" data-dz-size></p>
91 <div id="progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"> 93 <div id="progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
92 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div> 94 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div>
93 </div> 95 </div>
94 </div> 96 </div>
95 <div> 97 <div>
96 <button id="start" class="btn btn-default start"> 98 <button id="start" class="btn btn-default start">
97 <i class="glyphicon glyphicon-upload"></i> 99 <i class="glyphicon glyphicon-upload"></i>
98 <span>Upload</span> 100 <span>Upload</span>
99 </button> 101 </button>
100 <button id="cancel" data-dz-remove class="btn btn-default cancel"> 102 <button id="cancel" data-dz-remove class="btn btn-default cancel">
101 <i class="glyphicon glyphicon-ban-circle"></i> 103 <i class="glyphicon glyphicon-ban-circle"></i>
102 <span>Cancel</span> 104 <span>Cancel</span>
103 </button> 105 </button>
104 <button id="remove" data-dz-remove class="btn btn-danger remove"> 106 <button id="remove" data-dz-remove class="btn btn-danger remove">
105 <i class="glyphicon glyphicon-remove"></i> 107 <i class="glyphicon glyphicon-remove"></i>
106 <span>Remove</span> 108 <span>Remove</span>
107 </button> 109 </button>
108 </div> 110 </div>
109 </div> 111 </div>
110   112  
111 </div> 113 </div>
112 </div> 114 </div>
113 <!-- The global file processing state --> 115 <!-- The global file processing state -->
114 <div class="fileupload-process"> 116 <div class="fileupload-process">
115 <div id="total-progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"> 117 <div id="total-progress" class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
116 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div> 118 <div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress></div>
117 </div> 119 </div>
118 </div> 120 </div>
119 </div> 121 </div>
120   122  
121 </div> <!-- /container --> 123 </div> <!-- /container -->
122 124
123 <div id="footer"> 125 <div id="footer">
124 <div class="container"> 126 <div class="container">
125 <p class="text-muted credit">Copyright <i class="glyphicon glyphicon-copyright-mark"></i> 2017 <a href="http://grimore.org">Wizardry and Steamworks</a>.</p> 127 <p class="text-muted credit text-center">Copyright <i class="glyphicon glyphicon-copyright-mark"></i> 2017 <a href="http://grimore.org">Wizardry and Steamworks</a>.</p>
126 </div> 128 </div>
127 </div> 129 </div>
128   130  
129 <!-- jQuery --> 131 <!-- jQuery -->
130 <script src="bower_components/jquery/dist/jquery.min.js"></script> 132 <script src="bower_components/jquery/dist/jquery.min.js"></script>
131 <!-- BootStrap --> 133 <!-- BootStrap -->
132 <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> 134 <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
133 135
134 <!-- DropZone --> 136 <!-- DropZone -->
135 <script src="bower_components/dropzone/dist/min/dropzone.min.js"></script> 137 <script src="bower_components/dropzone/dist/min/dropzone.min.js"></script>
136 <!-- Clipboard --> 138 <!-- Clipboard -->
137 <script src="bower_components/clipboard/dist/clipboard.min.js"></script> 139 <script src="bower_components/clipboard/dist/clipboard.min.js"></script>
138 <script> 140 <script>
139 $(document).ready(() => { 141 $(document).ready(() => {
140 // Get the template HTML and remove it from the doument 142 // Get the template HTML and remove it from the doument
141 var previewNode = document 143 var previewNode = document
142 .querySelector("#template"); 144 .querySelector("#template");
143 previewNode.id = ""; 145 previewNode.id = "";
144 var previewTemplate = previewNode 146 var previewTemplate = previewNode
145 .parentNode 147 .parentNode
146 .innerHTML; 148 .innerHTML;
147 previewNode 149 previewNode
148 .parentNode 150 .parentNode
149 .removeChild(previewNode); 151 .removeChild(previewNode);
150   152  
151 var myDropzone = new Dropzone('.panel-body', { // Make the whole body a dropzone 153 var myDropzone = new Dropzone('.panel-body', { // Make the whole body a dropzone
152 url: "file.php", // Set the url 154 url: "file.php", // Set the url
153 paramName: "file", 155 paramName: "file",
154 thumbnailWidth: 80, 156 thumbnailWidth: 80,
155 thumbnailHeight: 80, 157 thumbnailHeight: 80,
156 //parallelUploads: 20, 158 //parallelUploads: 20,
157 previewTemplate: previewTemplate, 159 previewTemplate: previewTemplate,
158 autoQueue: false, // Make sure the files aren't queued until manually added 160 autoQueue: false, // Make sure the files aren't queued until manually added
159 previewsContainer: "#previews", // Container to display the previews 161 previewsContainer: "#previews", // Container to display the previews
160 clickable: [ 162 clickable: [
161 "#uploadbutton", 163 "#uploadbutton",
162 "#uploadpanel" 164 "#uploadpanel"
163 ], 165 ],
164 //clickable: "#uploadbutton" // Element that should be used as click trigger to select files. 166 //clickable: "#uploadbutton" // Element that should be used as click trigger to select files.
165 }).on("addedfile", (file) => { 167 }).on("addedfile", (file) => {
166 // Hookup the start button 168 // Hookup the start button
167 file.previewElement.querySelector(".start").onclick = () => { 169 file.previewElement.querySelector(".start").onclick = () => {
168 myDropzone.enqueueFile(file); 170 myDropzone.enqueueFile(file);
169 }; 171 };
170 }).on("totaluploadprogress", (progress) => { 172 }).on("totaluploadprogress", (progress) => {
171 document 173 document
172 .querySelector("#total-progress .progress-bar") 174 .querySelector("#total-progress .progress-bar")
173 .style 175 .style
174 .width = progress + "%"; 176 .width = progress + "%";
175 }).on("sending", (file) => { 177 }).on("sending", (file) => {
176 // Show the total progress bar when upload starts 178 // Show the total progress bar when upload starts
177 document.querySelector("#total-progress") 179 document.querySelector("#total-progress")
178 .style 180 .style
179 .opacity = 1; 181 .opacity = 1;
180 182
181 // And disable the start button. 183 // And disable the start button.
182 file 184 file
183 .previewElement 185 .previewElement
184 .querySelector(".start") 186 .querySelector(".start")
185 .setAttribute("disabled", "disabled"); 187 .setAttribute("disabled", "disabled");
186 }).on("queuecomplete", (progress) => { 188 }).on("queuecomplete", (progress) => {
187 document.querySelector("#total-progress") 189 document.querySelector("#total-progress")
188 .style 190 .style
189 .opacity = "0"; 191 .opacity = "0";
190 }).on("success", (file, data) => { 192 }).on("success", (file, data) => {
191 193
192 var boxURLID = '_' + Math 194 var boxURLID = '_' + Math
193 .random() 195 .random()
194 .toString(36) 196 .toString(36)
195 .substr(2, 9); 197 .substr(2, 9);
196 file 198 file
197 .previewElement 199 .previewElement
198 .querySelector("#URL") 200 .querySelector("#URL")
199 .value = data; 201 .value = data;
200 202
201 file 203 file
202 .previewElement 204 .previewElement
203 .querySelector("#URL") 205 .querySelector("#URL")
204 .setAttribute('id', boxURLID) 206 .setAttribute('id', boxURLID)
205 207
206 // Clipboard button. 208 // Clipboard button.
207 clipButtonID = '_' + Math 209 clipButtonID = '_' + Math
208 .random() 210 .random()
209 .toString(36) 211 .toString(36)
210 .substr(2, 9); 212 .substr(2, 9);
211 file 213 file
212 .previewElement 214 .previewElement
213 .querySelector("#btn-clipboard") 215 .querySelector("#btn-clipboard")
214 .setAttribute('data-clipboard-target', '#' + boxURLID) 216 .setAttribute('data-clipboard-target', '#' + boxURLID)
215 217
216 file 218 file
217 .previewElement 219 .previewElement
218 .querySelector("#btn-clipboard") 220 .querySelector("#btn-clipboard")
219 .setAttribute('id', clipButtonID); 221 .setAttribute('id', clipButtonID);
220   222  
221 file 223 file
222 .previewElement 224 .previewElement
223 .querySelector(".start") 225 .querySelector(".start")
224 .setAttribute("disabled", "disabled"); 226 .setAttribute("disabled", "disabled");
225 file 227 file
226 .previewElement 228 .previewElement
227 .querySelector(".cancel") 229 .querySelector(".cancel")
228 .setAttribute("disabled", "disabled"); 230 .setAttribute("disabled", "disabled");
229 231
230 new Clipboard('#' + clipButtonID); 232 new Clipboard('#' + clipButtonID);
231 }); 233 });
232 234
233 document.querySelector("#actions .start").onclick = () => { 235 document.querySelector("#actions .start").onclick = () => {
234 myDropzone.enqueueFiles( 236 myDropzone.enqueueFiles(
235 myDropzone 237 myDropzone
236 .getFilesWithStatus(Dropzone.ADDED)); 238 .getFilesWithStatus(Dropzone.ADDED));
237 }; 239 };
238 240
239 document.querySelector("#actions .cancel").onclick = () => { 241 document.querySelector("#actions .cancel").onclick = () => {
240 myDropzone.removeAllFiles(true); 242 myDropzone.removeAllFiles(true);
241 }; 243 };
242 }); 244 });
243 </script> 245 </script>
-   246 <!-- Jumbotron parallax effect -->
244 <script> 247 <script>
245 var jumboHeight = $('.jumbotron').outerHeight(); 248 const jumboHeight = $('.jumbotron').outerHeight();
246 function parallax(){ 249 function parallax(){
247 var scrolled = $(window).scrollTop(); 250 var scrolled = $(window).scrollTop();
248 $('.paralax-background').css('height', (jumboHeight-scrolled) + 'px'); 251 $('.paralax-background').css('height', (jumboHeight-scrolled) + 'px');
249 } 252 }
250   253  
251 $(window).scroll(function(e){ 254 $(window).scroll(function(e){
252 parallax(); 255 parallax();
253 }); 256 });
254 </script> 257 </script>
255 </body> 258 </body>
256 </html> 259 </html>
257   260