Line 1 | Line 1 |
---|
| /* global phpbb, plupload, attachInline */
|
plupload.addI18n(phpbb.plupload.i18n); phpbb.plupload.ids = [];
(function($) { // Avoid conflicts with other libraries
|
plupload.addI18n(phpbb.plupload.i18n); phpbb.plupload.ids = [];
(function($) { // Avoid conflicts with other libraries
|
"use strict";
| 'use strict';
|
/** * Set up the uploader.
|
/** * Set up the uploader.
|
* * @return undefined
| |
*/ phpbb.plupload.initialize = function() { // Initialize the Plupload uploader.
|
*/ phpbb.plupload.initialize = function() { // Initialize the Plupload uploader.
|
uploader.init();
| phpbb.plupload.uploader.init();
|
// Set attachment data. phpbb.plupload.setData(phpbb.plupload.data); phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData());
// Only execute if Plupload initialized successfully.
|
// Set attachment data. phpbb.plupload.setData(phpbb.plupload.data); phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData());
// Only execute if Plupload initialized successfully.
|
uploader.bind('Init', function() { phpbb.plupload.form = $(phpbb.plupload.config.form_hook)[0],
| phpbb.plupload.uploader.bind('Init', function() { phpbb.plupload.form = $(phpbb.plupload.config.form_hook)[0];
|
phpbb.plupload.rowTpl = $('#attach-row-tpl')[0].outerHTML;
// Hide the basic upload panel and remove the attach row template.
| phpbb.plupload.rowTpl = $('#attach-row-tpl')[0].outerHTML;
// Hide the basic upload panel and remove the attach row template.
|
Line 29 | Line 29 |
---|
$('#attach-panel-multi').show(); });
|
$('#attach-panel-multi').show(); });
|
uploader.bind('PostInit', function() {
| phpbb.plupload.uploader.bind('PostInit', function() {
|
// Point out the drag-and-drop zone if it's supported.
|
// Point out the drag-and-drop zone if it's supported.
|
if (uploader.features.dragdrop) {
| if (phpbb.plupload.uploader.features.dragdrop) {
|
$('#drag-n-drop-message').show(); }
|
$('#drag-n-drop-message').show(); }
|
| // Ensure "Add files" button position is correctly calculated. if ($('#attach-panel-multi').is(':visible')) { phpbb.plupload.uploader.refresh(); } $('[data-subpanel="attach-panel"]').one('click', function() { phpbb.plupload.uploader.refresh(); });
|
}); };
/** * Unsets all elements in the object uploader.settings.multipart_params whose keys * begin with 'attachment_data['
|
}); };
/** * Unsets all elements in the object uploader.settings.multipart_params whose keys * begin with 'attachment_data['
|
* * @return undefined
| |
*/ phpbb.plupload.clearParams = function() {
|
*/ phpbb.plupload.clearParams = function() {
|
var obj = uploader.settings.multipart_params;
| var obj = phpbb.plupload.uploader.settings.multipart_params;
|
for (var key in obj) { if (!obj.hasOwnProperty(key) || key.indexOf('attachment_data[') !== 0) { continue; }
|
for (var key in obj) { if (!obj.hasOwnProperty(key) || key.indexOf('attachment_data[') !== 0) { continue; }
|
delete uploader.settings.multipart_params[key];
| delete phpbb.plupload.uploader.settings.multipart_params[key];
|
} };
/** * Update uploader.settings.multipart_params object with new data. *
|
} };
/** * Update uploader.settings.multipart_params object with new data. *
|
* @param object obj * @return undefined
| * @param {object} obj
|
*/ phpbb.plupload.updateMultipartParams = function(obj) {
|
*/ phpbb.plupload.updateMultipartParams = function(obj) {
|
uploader.settings.multipart_params = $.extend( uploader.settings.multipart_params, obj );
| var settings = phpbb.plupload.uploader.settings; settings.multipart_params = $.extend(settings.multipart_params, obj);
|
};
/** * Convert the array of attachment objects into an object that PHP would expect as POST data. *
|
};
/** * Convert the array of attachment objects into an object that PHP would expect as POST data. *
|
* @return object An object in the form 'attachment_data[i][key]': value as
| * @returns {object} An object in the form 'attachment_data[i][key]': value as
|
* expected by the server */ phpbb.plupload.getSerializedData = function() {
| * expected by the server */ phpbb.plupload.getSerializedData = function() {
|
Line 92 | Line 95 |
---|
* Get the index from the phpbb.plupload.data array where the given * attachment id appears. *
|
* Get the index from the phpbb.plupload.data array where the given * attachment id appears. *
|
* @param int attach_id The attachment id of the file. * @return bool Returns false if the id cannot be found. * @return int Returns the index of the file if it exists.
| * @param {int} attachId The attachment id of the file. * @returns {bool|int} Index of the file if exists, otherwise false.
|
*/
|
*/
|
phpbb.plupload.getIndex = function(attach_id) { var index = $.inArray(Number(attach_id), phpbb.plupload.ids);
| phpbb.plupload.getIndex = function(attachId) { var index = $.inArray(Number(attachId), phpbb.plupload.ids);
|
return (index !== -1) ? index : false; };
/** * Set the data in phpbb.plupload.data and phpbb.plupload.ids arrays. *
|
return (index !== -1) ? index : false; };
/** * Set the data in phpbb.plupload.data and phpbb.plupload.ids arrays. *
|
* @param array data Array containing the new data to use. In the form of
| * @param {Array} data Array containing the new data to use. In the form of
|
* array(index => object(property: value). Requires attach_id to be one of the object properties.
|
* array(index => object(property: value). Requires attach_id to be one of the object properties.
|
* * @return undefined
| |
*/ phpbb.plupload.setData = function(data) { // Make sure that the array keys are reset.
| */ phpbb.plupload.setData = function(data) { // Make sure that the array keys are reset.
|
Line 122 | Line 122 |
---|
/** * Update the attachment data in the HTML and the phpbb & phpbb.plupload objects. *
|
/** * Update the attachment data in the HTML and the phpbb & phpbb.plupload objects. *
|
* @param array data Array containing the new data to use. * @param string action The action that required the update. Used to update the inline attachment bbcodes. * @param int index The index from phpbb.plupload_ids that was affected by the action. * @param array downloadUrl Optional array of download urls to update. * @return undefined
| * @param {Array} data Array containing the new data to use. * @param {string} action The action that required the update. Used to update the inline attachment bbcodes. * @param {int} index The index from phpbb.plupload_ids that was affected by the action. * @param {Array} downloadUrl Optional array of download urls to update.
|
*/ phpbb.plupload.update = function(data, action, index, downloadUrl) {
| */ phpbb.plupload.update = function(data, action, index, downloadUrl) {
|
Line 140 | Line 139 |
---|
/** * Update the relevant elements and hidden data for all attachments. *
|
/** * Update the relevant elements and hidden data for all attachments. *
|
* @param array downloadUrl Optional array of download urls to update. * @return undefined
| * @param {Array} downloadUrl Optional array of download urls to update.
|
*/ phpbb.plupload.updateRows = function(downloadUrl) { for (var i = 0; i < phpbb.plupload.ids.length; i++) {
| */ phpbb.plupload.updateRows = function(downloadUrl) { for (var i = 0; i < phpbb.plupload.ids.length; i++) {
|
Line 155 | Line 153 |
---|
* data for the file inserted into it. The row is then appended or prepended to * #file-list based on the attach_order setting. *
|
* data for the file inserted into it. The row is then appended or prepended to * #file-list based on the attach_order setting. *
|
* @param object file Plupload file object for the new attachment. * @return undefined
| * @param {object} file Plupload file object for the new attachment.
|
*/ phpbb.plupload.insertRow = function(file) { var row = $(phpbb.plupload.rowTpl);
| */ phpbb.plupload.insertRow = function(file) { var row = $(phpbb.plupload.rowTpl);
|
Line 165 | Line 162 |
---|
row.find('.file-name').html(plupload.xmlEncode(file.name)); row.find('.file-size').html(plupload.formatSize(file.size));
|
row.find('.file-name').html(plupload.xmlEncode(file.name)); row.find('.file-size').html(plupload.formatSize(file.size));
|
if (phpbb.plupload.order == 'desc') {
| if (phpbb.plupload.order === 'desc') {
|
$('#file-list').prepend(row); } else { $('#file-list').append(row);
| $('#file-list').prepend(row); } else { $('#file-list').append(row);
|
Line 175 | Line 172 |
---|
/** * Update the relevant elements and hidden data for an attachment. *
|
/** * Update the relevant elements and hidden data for an attachment. *
|
* @param int index The index from phpbb.plupload.ids of the attachment to edit. * @param array downloadUrl Optional array of download urls to update. * @return undefined
| * @param {int} index The index from phpbb.plupload.ids of the attachment to edit. * @param {Array} downloadUrl Optional array of download urls to update.
|
*/ phpbb.plupload.updateRow = function(index, downloadUrl) { var attach = phpbb.plupload.data[index],
| */ phpbb.plupload.updateRow = function(index, downloadUrl) { var attach = phpbb.plupload.data[index],
|
Line 189 | Line 185 |
---|
link = $('<a></a>');
link.attr('href', url).html(attach.real_filename);
|
link = $('<a></a>');
link.attr('href', url).html(attach.real_filename);
|
row.find('.file-name').html(link)
| row.find('.file-name').html(link);
|
}
row.find('textarea').attr('name', 'comment_list[' + index + ']');
| }
row.find('textarea').attr('name', 'comment_list[' + index + ']');
|
Line 199 | Line 195 |
---|
/** * Update hidden input data for an attachment. *
|
/** * Update hidden input data for an attachment. *
|
* @param object row jQuery object for the attachment row. * @param object attach Attachment data object from phpbb.plupload.data * @param int index Attachment index from phpbb.plupload.ids * @return undefined
| * @param {object} row jQuery object for the attachment row. * @param {object} attach Attachment data object from phpbb.plupload.data * @param {int} index Attachment index from phpbb.plupload.ids
|
*/ phpbb.plupload.updateHiddenData = function(row, attach, index) { row.find('input[type="hidden"]').remove();
for (var key in attach) {
|
*/ phpbb.plupload.updateHiddenData = function(row, attach, index) { row.find('input[type="hidden"]').remove();
for (var key in attach) {
|
| if (!attach.hasOwnProperty(key)) { return; }
|
var input = $('<input />') .attr('type', 'hidden')
|
var input = $('<input />') .attr('type', 'hidden')
|
.attr('name', 'attachment_data[' + index + '][' + key +']')
| .attr('name', 'attachment_data[' + index + '][' + key + ']')
|
.attr('value', attach[key]); $('textarea', row).after(input); }
| .attr('value', attach[key]); $('textarea', row).after(input); }
|
Line 222 | Line 221 |
---|
* responds with the updated attachment data list so that any future * uploads can maintain state with the server *
|
* responds with the updated attachment data list so that any future * uploads can maintain state with the server *
|
* @param object row jQuery object for the attachment row. * @param int attachId Attachment id of the file to be removed. * * @return undefined
| * @param {object} row jQuery object for the attachment row. * @param {int} attachId Attachment id of the file to be removed.
|
*/ phpbb.plupload.deleteFile = function(row, attachId) { // If there's no attach id, then the file hasn't been uploaded. Simply delete the row. if (typeof attachId === 'undefined') {
|
*/ phpbb.plupload.deleteFile = function(row, attachId) { // If there's no attach id, then the file hasn't been uploaded. Simply delete the row. if (typeof attachId === 'undefined') {
|
var file = uploader.getFile(row.attr('id')); uploader.removeFile(file);
| var file = phpbb.plupload.uploader.getFile(row.attr('id')); phpbb.plupload.uploader.removeFile(file);
|
row.slideUp(100, function() { row.remove();
| row.slideUp(100, function() { row.remove();
|
Line 259 | Line 256 |
---|
// trigger_error() was called which likely means a permission error was encountered. if (typeof response.title !== 'undefined') {
|
// trigger_error() was called which likely means a permission error was encountered. if (typeof response.title !== 'undefined') {
|
uploader.trigger('Error', {message: response.message});
| phpbb.plupload.uploader.trigger('Error', { message: response.message });
|
// We will have to assume that the deletion failed. So leave the file status as uploaded. row.find('.file-status').toggleClass('file-uploaded');
| // We will have to assume that the deletion failed. So leave the file status as uploaded. row.find('.file-status').toggleClass('file-uploaded');
|
Line 270 | Line 267 |
---|
phpbb.plupload.handleMaxFilesReached();
if (row.attr('id')) {
|
phpbb.plupload.handleMaxFilesReached();
if (row.attr('id')) {
|
var file = uploader.getFile(row.attr('id')); uploader.removeFile(file);
| var file = phpbb.plupload.uploader.getFile(row.attr('id')); phpbb.plupload.uploader.removeFile(file);
|
} row.slideUp(100, function() { row.remove(); // Hide the file list if it's empty now. phpbb.plupload.hideEmptyList(); });
|
} row.slideUp(100, function() { row.remove(); // Hide the file list if it's empty now. phpbb.plupload.hideEmptyList(); });
|
uploader.trigger('FilesRemoved');
| phpbb.plupload.uploader.trigger('FilesRemoved');
|
};
$.ajax(phpbb.plupload.config.url, { type: 'POST', data: $.extend(fields, phpbb.plupload.getSerializedData()),
|
};
$.ajax(phpbb.plupload.config.url, { type: 'POST', data: $.extend(fields, phpbb.plupload.getSerializedData()),
|
headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'}
| headers: phpbb.plupload.config.headers
|
}) .always(always) .done(done);
| }) .always(always) .done(done);
|
Line 292 | Line 289 |
---|
/** * Check the attachment list and hide its container if it's empty.
|
/** * Check the attachment list and hide its container if it's empty.
|
* * @return undefined
| |
*/ phpbb.plupload.hideEmptyList = function() { if (!$('#file-list').children().length) { $('#file-list-container').slideUp(100); }
|
*/ phpbb.plupload.hideEmptyList = function() { if (!$('#file-list').children().length) { $('#file-list-container').slideUp(100); }
|
}
| };
|
/**
|
/**
|
* Update the indices used in inline attachment bbcodes. This ensures that the bbcodes * correspond to the correct file after a file is added or removed. This should be called * before the phpbb.plupload,data and phpbb.plupload.ids arrays are updated, otherwise it will * not work correctly. * * @param string action The action that occurred -- either "addition" or "removal" * @param int index The index of the attachment from phpbb.plupload.ids that was affected.
| * Update the indices used in inline attachment bbcodes. This ensures that the * bbcodes correspond to the correct file after a file is added or removed. * This should be called before the phpbb.plupload,data and phpbb.plupload.ids * arrays are updated, otherwise it will not work correctly.
|
*
|
*
|
* @return undefined
| * @param {string} action The action that occurred -- either "addition" or "removal" * @param {int} index The index of the attachment from phpbb.plupload.ids that was affected.
|
*/ phpbb.plupload.updateBbcode = function(action, index) { var textarea = $('#message', phpbb.plupload.form),
| */ phpbb.plupload.updateBbcode = function(action, index) { var textarea = $('#message', phpbb.plupload.form),
|
Line 322 | Line 315 |
---|
return; }
|
return; }
|
// Private function used to replace the bbcode. var updateBbcode = function(match, fileName) {
| function runUpdate(i) { var regex = new RegExp('\\[attachment=' + i + '\\](.*?)\\[\\/attachment\\]', 'g'); text = text.replace(regex, function updateBbcode(_, fileName) {
|
// Remove the bbcode if the file was removed. if (removal && index === i) { return ''; } var newIndex = i + ((removal) ? -1 : 1);
|
// Remove the bbcode if the file was removed. if (removal && index === i) { return ''; } var newIndex = i + ((removal) ? -1 : 1);
|
return '[attachment=' + newIndex +']' + fileName + '[/attachment]'; };
| return '[attachment=' + newIndex + ']' + fileName + '[/attachment]'; }); }
|
|
|
// Private function used to generate search regexp var searchRegexp = function(index) { return new RegExp('\\[attachment=' + index + '\\](.*?)\\[\\/attachment\\]', 'g');
| // Loop forwards when removing and backwards when adding ensures we don't // corrupt the bbcode index. var i; if (removal) { for (i = index; i < phpbb.plupload.ids.length; i++) { runUpdate(i);
|
}
|
}
|
// The update order of the indices is based on the action taken to ensure that we don't corrupt // the bbcode index by updating it several times as we move through the loop. // Removal loop starts at the removed index and moves to the end of the array. // Addition loop starts at the end of the array and moves to the added index at 0. var searchLoop = function() { if (typeof i === 'undefined') { i = (removal) ? index : phpbb.plupload.ids.length - 1;
| } else { for (i = phpbb.plupload.ids.length - 1; i >= index; i--) { runUpdate(i);
|
}
|
}
|
return (removal) ? (i < phpbb.plupload.ids.length): (i >= index);
| |
}
|
}
|
var i;
| |
|
|
while (searchLoop()) { text = text.replace(searchRegexp(i), updateBbcode); (removal) ? i++ : i--; }
| |
textarea.val(text); };
/** * Get Plupload file objects based on their upload status. *
|
textarea.val(text); };
/** * Get Plupload file objects based on their upload status. *
|
* @param int status Plupload status - plupload.DONE, plupload.FAILED, plupload.QUEUED, * plupload.STARTED, plupload.STOPPED
| * @param {int} status Plupload status - plupload.DONE, plupload.FAILED, * plupload.QUEUED, plupload.STARTED, plupload.STOPPED
|
*
|
*
|
* @return Returns an array of the Plupload file objects matching the status.
| * @returns {Array} The Plupload file objects matching the status.
|
*/ phpbb.plupload.getFilesByStatus = function(status) { var files = [];
|
*/ phpbb.plupload.getFilesByStatus = function(status) { var files = [];
|
$.each(uploader.files, function(i, file) {
| $.each(phpbb.plupload.uploader.files, function(i, file) {
|
if (file.status === status) { files.push(file); } }); return files;
|
if (file.status === status) { files.push(file); } }); return files;
|
}
| };
|
/** * Check whether the user has reached the maximun number of files that he's allowed * to upload. If so, disables the uploader and marks the queued files as failed. Otherwise * makes sure that the uploader is enabled. *
|
/** * Check whether the user has reached the maximun number of files that he's allowed * to upload. If so, disables the uploader and marks the queued files as failed. Otherwise * makes sure that the uploader is enabled. *
|
* @return bool Returns true if the limit has been reached. False if otherwise.
| * @returns {bool} True if the limit has been reached. False if otherwise.
|
*/ phpbb.plupload.handleMaxFilesReached = function() { // If there is no limit, the user is an admin or moderator.
| */ phpbb.plupload.handleMaxFilesReached = function() { // If there is no limit, the user is an admin or moderator.
|
Line 392 | Line 380 |
---|
phpbb.plupload.markQueuedFailed(phpbb.plupload.lang.TOO_MANY_ATTACHMENTS); // Disable the uploader. phpbb.plupload.disableUploader();
|
phpbb.plupload.markQueuedFailed(phpbb.plupload.lang.TOO_MANY_ATTACHMENTS); // Disable the uploader. phpbb.plupload.disableUploader();
|
uploader.trigger('Error', {message: phpbb.plupload.lang.TOO_MANY_ATTACHMENTS});
| phpbb.plupload.uploader.trigger('Error', { message: phpbb.plupload.lang.TOO_MANY_ATTACHMENTS });
|
return true;
|
return true;
|
} else if(phpbb.plupload.maxFiles > phpbb.plupload.ids.length) {
| } else if (phpbb.plupload.maxFiles > phpbb.plupload.ids.length) {
|
// Enable the uploader if the user is under the limit phpbb.plupload.enableUploader(); } return false;
|
// Enable the uploader if the user is under the limit phpbb.plupload.enableUploader(); } return false;
|
}
| };
|
/** * Disable the uploader
|
/** * Disable the uploader
|
* * @return undefined
| |
*/ phpbb.plupload.disableUploader = function() { $('#add_files').addClass('disabled');
|
*/ phpbb.plupload.disableUploader = function() { $('#add_files').addClass('disabled');
|
uploader.disableBrowse(); }
| phpbb.plupload.uploader.disableBrowse(); };
|
/** * Enable the uploader
|
/** * Enable the uploader
|
* * @return undefined
| |
*/ phpbb.plupload.enableUploader = function() { $('#add_files').removeClass('disabled');
|
*/ phpbb.plupload.enableUploader = function() { $('#add_files').removeClass('disabled');
|
uploader.disableBrowse(false); }
| phpbb.plupload.uploader.disableBrowse(false); };
|
/** * Mark all queued files as failed. *
|
/** * Mark all queued files as failed. *
|
* @param string error Error message to present to the user. * @return undefined
| * @param {string} error Error message to present to the user.
|
*/ phpbb.plupload.markQueuedFailed = function(error) { var files = phpbb.plupload.getFilesByStatus(plupload.QUEUED);
| */ phpbb.plupload.markQueuedFailed = function(error) { var files = phpbb.plupload.getFilesByStatus(plupload.QUEUED);
|
Line 435 | Line 418 |
---|
$('#' + file.id).find('.file-progress').hide(); phpbb.plupload.fileError(file, error); });
|
$('#' + file.id).find('.file-progress').hide(); phpbb.plupload.fileError(file, error); });
|
}
| };
|
/** * Marks a file as failed and sets the error message for it. *
|
/** * Marks a file as failed and sets the error message for it. *
|
* @param object file Plupload file object that failed. * @param string error Error message to present to the user. * @return undefined
| * @param {object} file Plupload file object that failed. * @param {string} error Error message to present to the user.
|
*/ phpbb.plupload.fileError = function(file, error) { file.status = plupload.FAILED; file.error = error;
|
*/ phpbb.plupload.fileError = function(file, error) { file.status = plupload.FAILED; file.error = error;
|
$('#' + file.id).find('.file-status').addClass('file-error').attr({'data-error-title': phpbb.plupload.lang.ERROR, 'data-error-message': error}); }
| $('#' + file.id).find('.file-status') .addClass('file-error') .attr({ 'data-error-title': phpbb.plupload.lang.ERROR, 'data-error-message': error }); };
|
/** * Set up the Plupload object and get some basic data. */
|
/** * Set up the Plupload object and get some basic data. */
|
var uploader = new plupload.Uploader(phpbb.plupload.config);
| phpbb.plupload.uploader = new plupload.Uploader(phpbb.plupload.config);
|
phpbb.plupload.initialize();
|
phpbb.plupload.initialize();
|
| var $fileList = $('#file-list');
|
/** * Insert inline attachment bbcode. */
|
/** * Insert inline attachment bbcode. */
|
$('#file-list').on('click', '.file-inline-bbcode', function(e) {
| $fileList.on('click', '.file-inline-bbcode', function(e) {
|
var attachId = $(this).parents('.attach-row').attr('data-attach-id'), index = phpbb.plupload.getIndex(attachId);
|
var attachId = $(this).parents('.attach-row').attr('data-attach-id'), index = phpbb.plupload.getIndex(attachId);
|
attach_inline(index, phpbb.plupload.data[index].real_filename);
| attachInline(index, phpbb.plupload.data[index].real_filename);
|
e.preventDefault(); });
/** * Delete a file. */
|
e.preventDefault(); });
/** * Delete a file. */
|
$('#file-list').on('click', '.file-delete', function(e) {
| $fileList.on('click', '.file-delete', function(e) {
|
var row = $(this).parents('.attach-row'), attachId = row.attr('data-attach-id');
| var row = $(this).parents('.attach-row'), attachId = row.attr('data-attach-id');
|
Line 487 | Line 471 |
---|
/** * Display the error message for a particular file when the error icon is clicked. */
|
/** * Display the error message for a particular file when the error icon is clicked. */
|
$('#file-list').on('click', '.file-error', function(e) {
| $fileList.on('click', '.file-error', function(e) {
|
phpbb.alert($(this).attr('data-error-title'), $(this).attr('data-error-message')); e.preventDefault(); });
| phpbb.alert($(this).attr('data-error-title'), $(this).attr('data-error-message')); e.preventDefault(); });
|
Line 495 | Line 479 |
---|
/** * Fires when an error occurs. */
|
/** * Fires when an error occurs. */
|
uploader.bind('Error', function(up, error) {
| phpbb.plupload.uploader.bind('Error', function(up, error) {
|
error.file.name = plupload.xmlEncode(error.file.name);
// The error message that Plupload provides for these is vague, so we'll be more specific.
| error.file.name = plupload.xmlEncode(error.file.name);
// The error message that Plupload provides for these is vague, so we'll be more specific.
|
Line 512 | Line 496 |
---|
* send the real filename along with the chunk. This is necessary because * for some reason the filename is set to 'blob' whenever a file is chunked *
|
* send the real filename along with the chunk. This is necessary because * for some reason the filename is set to 'blob' whenever a file is chunked *
|
* @param object up The plupload.Uploader object * @param object file The plupload.File object that is about to be * uploaded * * @return undefined
| * @param {object} up The plupload.Uploader object * @param {object} file The plupload.File object that is about to be uploaded
|
*/
|
*/
|
uploader.bind('BeforeUpload', function(up, file) {
| phpbb.plupload.uploader.bind('BeforeUpload', function(up, file) {
|
if (phpbb.plupload.handleMaxFilesReached()) { return; }
|
if (phpbb.plupload.handleMaxFilesReached()) { return; }
|
phpbb.plupload.updateMultipartParams({'real_filename': file.name});
| phpbb.plupload.updateMultipartParams({ real_filename: file.name });
|
});
/**
| });
/**
|
Line 531 | Line 512 |
---|
* response from the server and checks for an error. If an error occurs it * is reported to the user and the upload of this particular file is halted *
|
* response from the server and checks for an error. If an error occurs it * is reported to the user and the upload of this particular file is halted *
|
* @param object up The plupload.Uploader object * @param object file The plupload.File object whose chunk has just
| * @param {object} up The plupload.Uploader object * @param {object} file The plupload.File object whose chunk has just
|
* been uploaded
|
* been uploaded
|
* @param object response The response object from the server * * @return undefined
| * @param {object} response The response object from the server
|
*/
|
*/
|
uploader.bind('ChunkUploaded', function(up, file, response) {
| phpbb.plupload.uploader.bind('ChunkUploaded', function(up, file, response) {
|
if (response.chunk >= response.chunks - 1) { return; }
| if (response.chunk >= response.chunks - 1) { return; }
|
Line 559 | Line 538 |
---|
// If trigger_error() was called, then a permission error likely occurred. if (typeof json.title !== 'undefined') {
|
// If trigger_error() was called, then a permission error likely occurred. if (typeof json.title !== 'undefined') {
|
json.error = {message: json.message};
| json.error = { message: json.message };
|
}
if (json.error) {
| }
if (json.error) {
|
Line 576 | Line 555 |
---|
/** * Fires when files are added to the queue.
|
/** * Fires when files are added to the queue.
|
* * @return undefined
| |
*/
|
*/
|
uploader.bind('FilesAdded', function(up, files) {
| phpbb.plupload.uploader.bind('FilesAdded', function(up, files) {
|
// Prevent unnecessary requests to the server if the user already uploaded // the maximum number of files allowed. if (phpbb.plupload.handleMaxFilesReached()) {
| // Prevent unnecessary requests to the server if the user already uploaded // the maximum number of files allowed. if (phpbb.plupload.handleMaxFilesReached()) {
|
Line 587 | Line 564 |
---|
}
// Switch the active tab if the style supports it
|
}
// Switch the active tab if the style supports it
|
if (typeof activateSubPanel == 'function') { activateSubPanel('attach-panel');
| if (typeof activateSubPanel === 'function') { activateSubPanel('attach-panel'); // jshint ignore: line
|
}
// Show the file list if there aren't any files currently.
|
}
// Show the file list if there aren't any files currently.
|
if (!$('#file-list-container').is(':visible')) { $('#file-list-container').show(100);
| var $fileListContainer = $('#file-list-container'); if (!$fileListContainer.is(':visible')) { $fileListContainer.show(100);
|
}
$.each(files, function(i, file) {
| }
$.each(files, function(i, file) {
|
Line 601 | Line 579 |
---|
});
up.bind('UploadProgress', function(up, file) {
|
});
up.bind('UploadProgress', function(up, file) {
|
$('#' + file.id + " .file-progress-bar").css('width', file.percent + '%');
| $('.file-progress-bar', '#' + file.id).css('width', file.percent + '%');
|
$('#file-total-progress-bar').css('width', up.total.percent + '%'); });
| $('#file-total-progress-bar').css('width', up.total.percent + '%'); });
|
Line 619 | Line 597 |
---|
* appends it to the next file upload so that the server can maintain state * with regards to the attachments in a given post *
|
* appends it to the next file upload so that the server can maintain state * with regards to the attachments in a given post *
|
* @param object up The plupload.Uploader object * @param object file The plupload.File object that has just been
| * @param {object} up The plupload.Uploader object * @param {object} file The plupload.File object that has just been
|
* uploaded
|
* uploaded
|
* @param string response The response string from the server * * @return undefined
| * @param {string} response The response string from the server
|
*/
|
*/
|
uploader.bind('FileUploaded', function(up, file, response) {
| phpbb.plupload.uploader.bind('FileUploaded', function(up, file, response) {
|
var json = {}, row = $('#' + file.id), error;
| var json = {}, row = $('#' + file.id), error;
|
Line 635 | Line 611 |
---|
row.find('.file-progress').hide();
try {
|
row.find('.file-progress').hide();
try {
|
json = $.parseJSON(response.response);
| json = JSON.parse(response.response);
|
} catch (e) { error = 'Error parsing server response.'; }
| } catch (e) { error = 'Error parsing server response.'; }
|
Line 643 | Line 619 |
---|
// If trigger_error() was called, then a permission error likely occurred. if (typeof json.title !== 'undefined') { error = json.message;
|
// If trigger_error() was called, then a permission error likely occurred. if (typeof json.title !== 'undefined') { error = json.message;
|
up.trigger('Error', {message: error});
| up.trigger('Error', { message: error });
|
// The rest of the queue will fail. phpbb.plupload.markQueuedFailed(error);
| // The rest of the queue will fail. phpbb.plupload.markQueuedFailed(error);
|
Line 654 | Line 630 |
---|
if (typeof error !== 'undefined') { phpbb.plupload.fileError(file, error); } else if (file.status === plupload.DONE) {
|
if (typeof error !== 'undefined') { phpbb.plupload.fileError(file, error); } else if (file.status === plupload.DONE) {
|
file.attachment_data = json['data'][0];
| file.attachment_data = json.data[0];
|
row.attr('data-attach-id', file.attachment_data.attach_id); row.find('.file-inline-bbcode').show(); row.find('.file-status').addClass('file-uploaded');
|
row.attr('data-attach-id', file.attachment_data.attach_id); row.find('.file-inline-bbcode').show(); row.find('.file-status').addClass('file-uploaded');
|
phpbb.plupload.update(json['data'], 'addition', 0, [json['download_url']]);
| phpbb.plupload.update(json.data, 'addition', 0, [json.download_url]);
|
} });
/** * Fires when the entire queue of files have been uploaded.
|
} });
/** * Fires when the entire queue of files have been uploaded.
|
* * @param object up The plupload.Uploader object * @param array files An array of plupload.File objects that have just * been uploaded as part of a queue * * @return undefined
| |
*/
|
*/
|
uploader.bind('UploadComplete', function(up, files) {
| phpbb.plupload.uploader.bind('UploadComplete', function() {
|
// Hide the progress bar setTimeout(function() { $('#file-total-progress-bar').fadeOut(500, function() {
| // Hide the progress bar setTimeout(function() { $('#file-total-progress-bar').fadeOut(500, function() {
|