Skip to content

Commit

Permalink
1.9.6 - fixed issue #15 (Page Items to Submit) / Added new event "Dro…
Browse files Browse the repository at this point in the history
…pzone max files exceeded" (issue #13)
  • Loading branch information
Daniel Hochleitner committed Dec 28, 2016
1 parent 4d5dd5a commit 3e8ced9
Show file tree
Hide file tree
Showing 6 changed files with 316 additions and 301 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ Dropzone is a region type plugin that allows you to provide nice looking drag’
It is based on JS Framework dropzone.js (https://github.com/enyo/dropzone).

## Changelog
#### 1.9.6 - fixed issue #15 (Page Items to Submit) / Added new event "Dropzone max files exceeded" (issue #13)
*Update Note from v1.9.5: It may be required to renew the PL/SQL Code (Upload) to the default which is shipped with this plugin. Unfortunately Plugin Attributes are not updated automatically.*

#### 1.9.5 - fully compatible with APEX 5.1 / Delete files inside Dropzone / General Code Cleanup / New Plugin Events / Float number as max Filesize
*Update Note: It may be required to renew the PL/SQL Code (Upload) to the default which is shipped with this plugin. Unfortunately Plugin Attributes are not updated automatically.*

Expand Down
2 changes: 1 addition & 1 deletion apexplugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name" : "Dropzone",
"version" : "1.9.5",
"version" : "1.9.6",
"description" : "Dropzone is a region type plugin that allows you to provide nice looking drag’n’drop file uploads.",
"keywords" : ["dropzone","drag","drop","file","upload","multi","multiple"],
"homepage" : "https://github.com/Dani3lSun/apex-plugin-dropzone",
Expand Down
76 changes: 40 additions & 36 deletions server/js/apexdropzone.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// APEX Dropzone functions
// Author: Daniel Hochleitner
// Version: 1.9.5
// Version: 1.9.6

// global namespace
var apexDropzone = {
Expand Down Expand Up @@ -48,7 +48,7 @@ var apexDropzone = {
return btoa(data);
},
// sleep function (hack to ensure server gets right file (lot of small files))
sleep_until: function(pMillseconds) {
sleepUntil: function(pMillseconds) {
var vMaxSec = new Date().getTime();
while (new Date() < vMaxSec + pMillseconds) {}
return true;
Expand Down Expand Up @@ -80,7 +80,7 @@ var apexDropzone = {
buildPageItemValuesArray: function(pPageItemsArray) {
var vArrayPageItemValues = [];
for (var i = 0; i < pPageItemsArray.length; i++) {
vArrayPageItemValues.push($v(vArrayPageItems[i]));
vArrayPageItemValues.push($v(pPageItemsArray[i]));
}
return vArrayPageItemValues;
},
Expand Down Expand Up @@ -131,35 +131,41 @@ var apexDropzone = {
// SUCCESS function
success: function(pData) {
//sleep hack for large number of small files
apexDropzone.sleep_until(pWaitTime);
// APEX event
apexDropzone.sleepUntil(pWaitTime);
// if DB SQL error
if (pData.indexOf('sqlerrm') >= 0) {
// APEX event
apex.event.trigger('#' + pRegionId, 'dropzone-upload-error', pData);
// file status
file.status = Dropzone.ERROR;
pDropzone.emit("error", file, "Database error during file upload");
} else {
// APEX event
apex.event.trigger('#' + pRegionId, 'dropzone-upload-success', pData);
// file status
file.status = Dropzone.SUCCESS;
pDropzone.emit("success", file, 'success', null);
}
// set file status SUCCESS / UPLOAD 100%
pDropzone.emit('uploadprogress', file, 100, file.size);
file.status = Dropzone.SUCCESS;
pDropzone.emit("success", file, 'success', null);
pDropzone.emit("complete", file);
// process file queue
pDropzone.processQueue();
},
// ERROR function
error: function(xhr, pMessage) {
//sleep hack for large number of small files
apexDropzone.sleep_until(pWaitTime);
apexDropzone.sleepUntil(pWaitTime);
// APEX event
apex.event.trigger('#' + pRegionId, 'dropzone-upload-error', pMessage);
// set file status ERROR
file.status = Dropzone.ERROR;
// build message for error template
var message = "";
if (pMessage === null || pMessage === undefined) {
message = 'Error processing file.';
} else {
if (pMessage) {
message = pMessage;
} else {
message = 'Error processing file';
}
pDropzone.emit("error", file, message, xhr);
pDropzone.emit("complete", file);
Expand All @@ -182,7 +188,7 @@ var apexDropzone = {
// if file not found: process queue
} else {
//sleep hack for large number of small files
apexDropzone.sleep_until(pWaitTime);
apexDropzone.sleepUntil(pWaitTime);
pDropzone.processQueue();
}
};
Expand Down Expand Up @@ -278,31 +284,24 @@ var apexDropzone = {
}
// DROPZONE
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone('div#' + vRegion,
var myDropzone = new Dropzone('div#' + vRegion, {
// NOT USED: required params, but uploading function uses plugin process
{
paramName: "p_clob_01",
url: "wwv_flow.show",
params: {
p_instance: $v('pInstance'),
p_flow_id: $v('pFlowId'),
p_flow_step_id: $v('pFlowStepId')
},
// dropzone parameters
addRemoveLinks: vDeleteFiles,
parallelUploads: vParallelUploads,
uploadMultiple: false,
autoProcessQueue: true,
maxFilesize: vMaxFileSize,
dictDefaultMessage: vOptions.defaultMessage,
clickable: vClickable,
maxFiles: vMaxFiles,
acceptedFiles: vOptions.acceptedFiles,
dictFileTooBig: vOptions.fileTooBigMessage,
dictMaxFilesExceeded: vOptions.maxFilesMessage,
dictCancelUpload: vOptions.cancelUploadMessage,
dictRemoveFile: vOptions.removeFileMessage
});
url: window.location.href.substr(0, window.location.href.indexOf('/f?p=') + 1) + 'wwv_flow.show',
// dropzone parameters
addRemoveLinks: vDeleteFiles,
parallelUploads: vParallelUploads,
uploadMultiple: false,
autoProcessQueue: true,
maxFilesize: vMaxFileSize,
dictDefaultMessage: vOptions.defaultMessage,
clickable: vClickable,
maxFiles: vMaxFiles,
acceptedFiles: vOptions.acceptedFiles,
dictFileTooBig: vOptions.fileTooBigMessage,
dictMaxFilesExceeded: vOptions.maxFilesMessage,
dictCancelUpload: vOptions.cancelUploadMessage,
dictRemoveFile: vOptions.removeFileMessage
});
// disable clickable element
if (!(vClickable)) {
$('.dz-hidden-input').prop('disabled', true);
Expand Down Expand Up @@ -364,6 +363,11 @@ var apexDropzone = {
}
}
});
// After maxFiles exceeded event
myDropzone.on('maxfilesexceeded', function(file) {
// add apex event
apex.event.trigger('#' + pRegionId, 'dropzone-maxfiles-exceeded', file);
});
// After complete: apex event / callback event / clear dropzone data / refresh region
myDropzone.on("complete", function() {
if (myDropzone.getQueuedFiles().length === 0 && myDropzone.getUploadingFiles().length === 0) {
Expand Down
Loading

0 comments on commit 3e8ced9

Please sign in to comment.