Completed
Push — release-2.1 ( 001348...ca7b71 )
by Mathias
18:55
created

smf_fileUpload.js ➔ ... ➔ dOptions.smf_insertBBC   B

Complexity

Conditions 8
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 8
nc 1
nop 3
dl 0
loc 13
rs 7.7777
c 2
b 0
f 0
1
function smf_fileUpload(oOptions)
2
{
3
	// Check if the file should be accepted or not...
4
	Dropzone.prototype.accept = function(file, done) {
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
5
		if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
6
			done(this.options.dictMaxFilesExceeded);
7
			return this.emit("maxfilesexceeded", file);
8
		} else
9
			return this.options.accept.call(this, file, done);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
10
	};
11
12
	var previewNode = document.querySelector('#au-template');
13
	previewNode.id = '';
14
	var previewTemplate = previewNode.parentNode.innerHTML;
15
	previewNode.parentNode.removeChild(previewNode);
16
17
	// Default values in case oOptions isn't defined.
18
	var dOptions = {
19
		url: smf_prepareScriptUrl(smf_scripturl) + 'action=uploadAttach;sa=add;' + smf_session_var + '=' + smf_session_id + (current_board ? ';board=' + current_board : ''),
0 ignored issues
show
Bug introduced by
The variable smf_scripturl seems to be never declared. If this is a global, consider adding a /** global: smf_scripturl */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Best Practice introduced by
If you intend to check if the variable current_board is declared in the current environment, consider using typeof current_board === "undefined" instead. This is safe if the variable is not actually declared.
Loading history...
Bug introduced by
The variable smf_session_var seems to be never declared. If this is a global, consider adding a /** global: smf_session_var */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Bug introduced by
The variable smf_session_id seems to be never declared. If this is a global, consider adding a /** global: smf_session_id */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
20
		parallelUploads : 1,
21
		filesizeBase:1024,
22
		paramName: 'attachment',
23
		uploadMultiple:true,
24
		previewsContainer: '#au-previews',
25
		previewTemplate: previewTemplate,
26
		acceptedFiles: '.doc,.gif,.jpg,.pdf,.png,.txt,.zip',
27
		thumbnailWidth: 100,
28
		thumbnailHeight: null,
29
		autoQueue: false,
30
		clickable: '.fileinput-button',
31
		smf_insertBBC: function(file, w, h){
32
33
			var mime_type = typeof file.type !== "undefined" ? file.type : (typeof file.mime_type !== "undefined" ? file.mime_type : '');
34
35
			var bbcOptionalParams = {
36
				width: mime_type.indexOf('image') == 0 && +w > 0 ? (' width='+ w) : '',
37
				height: mime_type.indexOf('image') == 0 && +h > 0 ? (' height='+ h) : '',
38
				name: typeof file.name !== "undefined" ? (' name='+ file.name) : '',
39
				type: ' type=' + mime_type,
40
			};
41
42
			return '[attach' + bbcOptionalParams.width + bbcOptionalParams.height + decodeURIComponent(bbcOptionalParams.name) + bbcOptionalParams.type +']' + file.attachID + '[/attach]';
43
		},
44
		createMaxSizeBar: function(){
45
46
				// Update the MaxSize bar to reflect the new size percentage.
47
				var range_maxFile = Math.round($.fn.percentToRange($.fn.rangeToPercent(myDropzone.options.totalMaxSize, 0, myDropzone.options.maxLimitReferenceUploadSize), 0, 100));
48
49
				// 3 basic colors.
50
				if (range_maxFile <= 33)
51
					range_maxFile_class = 'green';
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable range_maxFile_class seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.range_maxFile_class.
Loading history...
52
53
				else if (range_maxFile >= 34 && range_maxFile <= 66)
54
					range_maxFile_class = 'yellow';
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
55
56
				else
57
					range_maxFile_class = 'red';
58
59
				$('#maxFiles_progress').show();
60
				$('#maxFiles_progress_text').show();
61
				$('#maxFiles_progress').removeClass().addClass('progressBar progress_'+ range_maxFile_class);
62
				$('#maxFiles_progress span').width(range_maxFile + '%');
63
64
				// Show or update the text.
65
				$('#maxFiles_progress_text').text(myDropzone.options.text_max_size_progress.replace('{currentTotal}', (Math.round(myDropzone.options.maxLimitReferenceUploadSize / 1024))).replace('{currentRemain}', Math.round(myDropzone.options.totalMaxSize / 1024)));
66
67
				if (myDropzone.options.totalMaxSize == 0){
68
					$('#maxFiles_progress').hide();
69
					$('#maxFiles_progress_text').hide();
70
				}
71
		},
72
		accept: function(file, done) {
73
74
			// Need to check if the added file doesn't surpass the total max size setting.
75
			myDropzone.options.totalMaxSize = myDropzone.options.totalMaxSize + file.size;
76
77
			// This file has reached the max total size per post.
78
			if (myDropzone.options.maxLimitReferenceUploadSize > 0 && myDropzone.options.totalMaxSize > myDropzone.options.maxLimitReferenceUploadSize){
79
				done(myDropzone.options.text_totalMaxSize.replace('{currentTotal}', Math.round(myDropzone.options.maxLimitReferenceUploadSize / 1024)).replace('{currentRemain}', Math.round(myDropzone.options.totalMaxSize / 1024)));
80
81
				// File is cancel.
82
				file.status = Dropzone.CANCELED;
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
83
			}
84
85
			// The file is too big.
86
			if ((myDropzone.options.maxFilesize > 0) && (file.size > (myDropzone.options.maxFilesize * 1024))){
87
				done(myDropzone.options.dictFileTooBig);
88
89
				// File is cancel.
90
				file.status = Dropzone.CANCELED;
91
92
				// File wasn't accepted so remove its size.
93
				myDropzone.options.totalMaxSize = myDropzone.options.totalMaxSize - file.size;
94
			}
95
			else{
96
97
				myDropzone.options.createMaxSizeBar();
98
99
				// All done!
100
				done();
101
			}
102
		},
103
		totalMaxSize: 0
104
	};
105
106
	if(oOptions.thumbnailHeight && oOptions.thumbnailWidth) {
107
		if(oOptions.thumbnailHeight > oOptions.thumbnailWidth) {
108
			oOptions.thumbnailWidth = null;
109
		}
110
111
		else {
112
			oOptions.thumbnailHeight = null;
113
		}
114
	}
115
116
	$.extend(true, dOptions, oOptions);
117
118
119
	var myDropzone = new Dropzone('div#attachUpload', dOptions);
120
121
	myDropzone.on('addedfile', function(file) {
122
123
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
124
125
		// If the attachment is an image and has a thumbnail, show it. Otherwise fallback to the generic thumbfile.
126
		if (!file.type.match(/image.*/)) {
127
			myDropzone.emit('thumbnail', file, smf_images_url +'/generic_attach.png');
0 ignored issues
show
Bug introduced by
The variable smf_images_url seems to be never declared. If this is a global, consider adding a /** global: smf_images_url */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
128
		}
129
130
		// If the file is too small, it won't have a thumbnail, show the regular file.
131
		else if (typeof file.isMock !== "undefined" && typeof file.attachID !== "undefined") {
132
			myDropzone.emit('thumbnail', file, smf_prepareScriptUrl(smf_scripturl) +'action=dlattach;attach='+ (file.thumbID > 0 ? file.thumbID : file.attachID) + ';type=preview');
0 ignored issues
show
Bug introduced by
The variable smf_scripturl seems to be never declared. If this is a global, consider adding a /** global: smf_scripturl */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
133
		}
134
135
		file.name = file.name.php_to8bit().php_urlencode();
136
137
		// Show the file info.
138
		_thisElement.find('.attach-ui').fadeIn();
139
140
		// Create a function to insert the BBC attach tag.
141
		file.insertAttachment = function (_innerElement, response){
142
			insertButton = $('<a />')
0 ignored issues
show
Bug introduced by
The variable insertButton seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.insertButton.
Loading history...
143
			.addClass('button_submit')
144
			.prop('disabled', false)
145
			.text(myDropzone.options.text_insertBBC)
146
			.on('click', function (e) {
147
				e.preventDefault();
148
149
				w = _innerElement.find('input[name="attached_BBC_width"]').val();
0 ignored issues
show
Bug introduced by
The variable w seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.w.
Loading history...
150
				h = _innerElement.find('input[name="attached_BBC_height"]').val();
0 ignored issues
show
Bug introduced by
The variable h seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.h.
Loading history...
151
152
				// Get the editor stuff.
153
				var oEditor = $('#' + oEditorID).data('sceditor');
0 ignored issues
show
Bug introduced by
The variable oEditorID seems to be never declared. If this is a global, consider adding a /** global: oEditorID */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
154
155
				oEditor.insert(myDropzone.options.smf_insertBBC(response, w, h));
156
			})
157
			.appendTo(_innerElement.find('.attach-ui'));
158
		};
159
160
		// Replace the filled with a message when the attachment is deleted.
161
		file.deleteAttachment = function (_innerElement, attachmentId, file){
162
163
			deleteButton = $('<a />')
0 ignored issues
show
Bug introduced by
The variable deleteButton seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.deleteButton.
Loading history...
164
			.addClass('button_submit')
165
			.prop('disabled', false)
166
			.text(myDropzone.options.text_deleteAttach)
167
			.one('click', function (e) {
0 ignored issues
show
Unused Code introduced by
The parameter e is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
168
169
				$this = $(this);
0 ignored issues
show
Bug introduced by
The variable $this seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.$this.
Loading history...
170
171
				// Perform the action only after receiving the confirmation.
172
				if (!confirm(smf_you_sure)){
0 ignored issues
show
Bug introduced by
The variable smf_you_sure seems to be never declared. If this is a global, consider adding a /** global: smf_you_sure */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
173
					return;
174
				}
175
176
				// Let the server know you want to delete the file you just recently uploaded...
177
				$.ajax({
178
					url: smf_prepareScriptUrl(smf_scripturl) + 'action=uploadAttach;sa=delete;attach='+ attachmentId +';' + smf_session_var + '=' + smf_session_id + (current_board ? ';board=' + current_board : ''),
0 ignored issues
show
Bug introduced by
The variable smf_session_var seems to be never declared. If this is a global, consider adding a /** global: smf_session_var */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Bug introduced by
The variable smf_scripturl seems to be never declared. If this is a global, consider adding a /** global: smf_scripturl */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Bug introduced by
The variable smf_session_id seems to be never declared. If this is a global, consider adding a /** global: smf_session_id */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
179
					type: 'GET',
180
					dataType: 'json',
181
					beforeSend: function(){
182
						ajax_indicator(true);
183
					},
184
					complete: function(jqXHR, textStatus){
0 ignored issues
show
Unused Code introduced by
The parameter jqXHR is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter textStatus is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
185
						ajax_indicator(false);
186
187
						// Delete the button.
188
						$this.fadeOutAndRemove('slow');
189
					},
190
					success: function (data, textStatus, xhr) {
0 ignored issues
show
Unused Code introduced by
The parameter xhr is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter textStatus is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
191
192
						// For dramatic purposes only!
193
						_innerElement.removeClass('infobox').addClass(data.type +'box');
194
195
						// Remove the text field and show a nice confirmation message.
196
						_innerElement.find('.attached_BBC').text(data.text);
197
						_thisElement.find('.attach-info a.insertBBC').fadeOut();
198
199
						// Do stuff only if the file was actually accepted and it doesn't have an error status.
200
						if (file.accepted && file.status != Dropzone.ERROR) {
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
201
202
							// Need to remove the file size to make sure theres plenty of room for another one.
203
							myDropzone.options.totalMaxSize = myDropzone.options.totalMaxSize - file.size;
204
205
							// Re-count!
206
							myDropzone.options.createMaxSizeBar();
207
						}
208
					},
209
					error: function (xhr, textStatus, errorThrown) {
0 ignored issues
show
Unused Code introduced by
The parameter errorThrown is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
210
211
						// Tell the user something horrible happen!
212
						_innerElement.find('span.error').append(textStatus.error.join('<br>'));
213
214
						// For dramatic purposes only!
215
						_innerElement.removeClass('infobox').addClass('errorbox');
216
					}
217
				});
218
			})
219
			.appendTo(_innerElement.find('.attach-ui'));
220
		};
221
222
		// Hookup the upload button.
223
		_thisElement.find('.upload').on( 'click', function() {
224
			myDropzone.enqueueFile(file);
225
		});
226
227
		// Show the main stuff!
228
		_thisElement.addClass('descbox');
229
230
		// Show the upload and cancel all buttons only if there is something to cancel/upload.
231
		if (myDropzone.getFilesWithStatus(Dropzone.ADDED).length == 1){
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
232
			$('div#attachUpload').find('#attach-cancelAll, #attach-uploadAll').fadeIn();
233
		}
234
	});
235
236
	// Stuff to do when a file gets cancel.
237
	myDropzone.on('removedfile', function(file) {
238
239
		// Do stuff only if the file was actually accepted and it doesn't have an error status.
240
		if (file.accepted && file.status != Dropzone.ERROR) {
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
241
242
			// Need to remove the file size to make sure theres plenty of room for another one.
243
			myDropzone.options.totalMaxSize = myDropzone.options.totalMaxSize - file.size;
244
245
			// Re-count!
246
			myDropzone.options.createMaxSizeBar();
247
		}
248
249
		// Hide the cancel and upload all buttons if there is nothing to cancel/upload anymore.
250
		if (myDropzone.getFilesWithStatus(Dropzone.ADDED).length == 0){
251
			$('div#attachUpload').find('#attach-cancelAll, #attach-uploadAll').fadeOut();
252
		}
253
	});
254
255
	// Update the total progress bar.
256
	myDropzone.on('totaluploadprogress', function(progress) {
257
		$('#total-progress span').width(progress + '%');
258
	});
259
260
	myDropzone.on('error', function(file, errorMessage, xhr) {
0 ignored issues
show
Unused Code introduced by
The parameter errorMessage is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter xhr is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
261
262
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
263
264
		// Remove the 'upload' button.
265
		_thisElement.find('.upload').fadeOutAndRemove('slow');
266
267
		// Set a nice css class to make it more obvious theres an error.
268
		_thisElement.addClass('errorbox').removeClass('descbox');
269
	});
270
271
	myDropzone.on('success', function(file, responseText, e) {
0 ignored issues
show
Unused Code introduced by
The parameter e is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
272
273
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
274
275
		// Remove the 'upload' button.
276
		_thisElement.find('.upload').fadeOutAndRemove('slow');
277
278
		// Don't do anything if there is no response from server.
279
		if (!responseText){
280
			return;
281
		}
282
283
		// There is a general error.
284
		if (responseText.generalErrors){
285
			_thisElement.find('span.error').append(responseText.generalErrors.join('<br>'));
286
			return;
287
		}
288
289
		// Server returns an array.
290
		response = responseText.files[0];
0 ignored issues
show
Bug introduced by
The variable response seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.response.
Loading history...
291
292
		// Show the input field and insert button.
293
		_thisElement.find('.attach-info div.attached_BBC').fadeIn();
294
		_thisElement.find('.attach-info a.insertBBC').fadeIn();
295
296
		if (typeof response.mime_type == "undefined" || response.mime_type.indexOf('image') != 0){
297
			_thisElement.find('.attach-info .attached_BBC_width_height').hide();
298
		}
299
300
		// The request was complete but the server returned an error.
301
		if (typeof response.errors !== 'undefined' && response.errors.length > 0){
302
303
			_thisElement.addClass('errorbox').removeClass('descbox');
304
305
			// Show the server error.
306
			_thisElement.find('span.error').append(response.errors.join('<br>'));
307
			return;
308
		}
309
310
		// If there wasn't any error, change the current cover.
311
		_thisElement.addClass('infobox').removeClass('descbox');
312
313
		// Append the BBC.
314
		w = _thisElement.find('input[name="attached_BBC_width"]').val();
0 ignored issues
show
Bug introduced by
The variable w seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.w.
Loading history...
315
		h = _thisElement.find('input[name="attached_BBC_height"]').val();
0 ignored issues
show
Bug introduced by
The variable h seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.h.
Loading history...
316
		_thisElement.find('input[name="attachBBC"]').val(myDropzone.options.smf_insertBBC(response, w, h));
317
318
		file.insertAttachment(_thisElement, response);
319
320
		// You have already loaded this attachment, to prevent abuse, you cannot cancel it and upload a new one.
321
		_thisElement.find('a.cancel').fadeOutAndRemove('slow');
322
323
		// Fire up the delete button.
324
		file.deleteAttachment(_thisElement, response.attachID, file);
325
	});
326
327
	myDropzone.on('uploadprogress', function(file, progress, bytesSent) {
0 ignored issues
show
Unused Code introduced by
The parameter bytesSent is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
328
329
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
330
331
		// Get the current file box progress bar, set its inner span's width accordingly.
332
		_thisElement.find('div.progressBar span').width(progress + '%');
333
	});
334
335
	myDropzone.on('complete', function(file, progress, bytesSent) {
0 ignored issues
show
Unused Code introduced by
The parameter progress is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter bytesSent is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
336
337
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
338
339
		// Hide the progress bar.
340
		_thisElement.find('div.progressBar').fadeOut();
341
342
		// Finishing up mocking!
343
		if (typeof file.isMock !== "undefined" && typeof file.attachID !== "undefined"){
344
			// Show the input field.
345
			_thisElement.find('.attach-info div.attached_BBC').fadeIn();
346
			_thisElement.find('.attach-info a.insertBBC').fadeIn();
347
348
			if (typeof file.type == "undefined" || file.type.indexOf('image') != 0){
349
				_thisElement.find('.attach-info .attached_BBC_width_height').hide();
350
			}
351
352
			// If there wasn't any error, change the current cover.
353
			_thisElement.addClass('infobox').removeClass('descbox');
354
355
			// Remove the 'upload' button.
356
			_thisElement.find('.upload').fadeOutAndRemove('slow');
357
358
			// Append the BBC.
359
			w = _thisElement.find('input[name="attached_BBC_width"]').val();
0 ignored issues
show
Bug introduced by
The variable w seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.w.
Loading history...
360
			h = _thisElement.find('input[name="attached_BBC_height"]').val();
0 ignored issues
show
Bug introduced by
The variable h seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.h.
Loading history...
361
			_thisElement.find('input[name="attachBBC"]').val(myDropzone.options.smf_insertBBC(file, w, h));
362
363
			file.insertAttachment(_thisElement, file);
364
365
			// You have already loaded this attachment, to prevent abuse, you cannot cancel it and upload a new one.
366
			_thisElement.find('a.cancel').fadeOutAndRemove('slow');
367
368
			// Fire up the delete button.
369
			file.deleteAttachment(_thisElement, file.attachID, file);
370
371
			// Need to count this towards the max limit.
372
			myDropzone.options.totalMaxSize = myDropzone.options.totalMaxSize + file.size;
373
374
			// Re-count and display the bar.
375
			myDropzone.options.createMaxSizeBar();
376
		}
377
	});
378
379
	// Show each individual's progress bar.
380
	myDropzone.on('sending', function(file, xhr, formData) {
0 ignored issues
show
Unused Code introduced by
The parameter formData is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter xhr is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
381
382
		_thisElement = $(file.previewElement);
0 ignored issues
show
Bug introduced by
The variable _thisElement seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window._thisElement.
Loading history...
383
384
		// Show the progress bar when upload starts.
385
		_thisElement.find('div.progressBar').fadeIn();
386
387
		// Show the total progress bar when upload starts.
388
		$("#total-progress").fadeIn();
389
	});
390
391
	// Update the total progress bar.
392
	myDropzone.on("totaluploadprogress", function(progress) {
393
		$("#total-progress span").width(progress + '%');
394
	});
395
396
	// Hide the total progress bar when nothing's uploading anymore.
397
	myDropzone.on("queuecomplete", function(progress) {
0 ignored issues
show
Unused Code introduced by
The parameter progress is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
398
		$("#total-progress").fadeOut();
399
	});
400
401
	// Add an event for uploading and cancelling all files.
402
	$('a#attach-cancelAll' ).on('click', function() {
403
404
		if (!confirm(smf_you_sure)){
0 ignored issues
show
Bug introduced by
The variable smf_you_sure seems to be never declared. If this is a global, consider adding a /** global: smf_you_sure */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
405
			return;
406
		}
407
408
		myDropzone.removeAllFiles(true);
409
		myDropzone.options.createMaxSizeBar();
410
	});
411
412
	$('a#attach-uploadAll' ).on('click', function() {
413
414
		if (!confirm(smf_you_sure)){
0 ignored issues
show
Bug introduced by
The variable smf_you_sure seems to be never declared. If this is a global, consider adding a /** global: smf_you_sure */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
415
			return;
416
		}
417
418
		myDropzone.enqueueFiles(myDropzone.getFilesWithStatus(Dropzone.ADDED));
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
419
		myDropzone.options.createMaxSizeBar();
420
	});
421
422
	// Need to tell the user they cannot post until all files are either uploaded or canceled.
423
	$("input[name ='post']").on('click', function(e) {
424
425
		attachAdded = myDropzone.getFilesWithStatus(Dropzone.ADDED).length;
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Bug introduced by
The variable attachAdded seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.attachAdded.
Loading history...
426
		attachQueued = myDropzone.getFilesWithStatus(Dropzone.QUEUED).length;
0 ignored issues
show
Bug introduced by
The variable attachQueued seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.attachQueued.
Loading history...
427
428
		if (attachAdded > 0 || attachQueued > 0 ){
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if attachAdded > 0 || attachQueued > 0 is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
429
			alert(myDropzone.options.text_attachLeft);
430
			e.preventDefault();
431
			e.stopPropagation();
432
			return false;
433
		}
434
	});
435
436
	// Hide the default way to show already atached files.
437
	$('#postAttachment').fadeOutAndRemove('slow');
438
439
	// Show any attachments already uploaded.
440
	if (typeof current_attachments !== "undefined"){
0 ignored issues
show
Bug introduced by
The variable current_attachments seems to be never declared. If this is a global, consider adding a /** global: current_attachments */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
441
		$.each(current_attachments, function(key, mock) {
442
443
			// Tell the world this is a mock file!
444
			mock.isMock = true;
445
446
			// Tell eveyone this file was accepted.
447
			mock.status = Dropzone.ADDED;
0 ignored issues
show
Bug introduced by
The variable Dropzone seems to be never declared. If this is a global, consider adding a /** global: Dropzone */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
448
			mock.accepted = true;
449
450
			myDropzone.emit("addedfile", mock);
451
452
			// This file is "completed".
453
			myDropzone.emit("complete", mock);
454
		});
455
	}
456
}
457