Current File : /home/illuminatiprivate.express/public_html/plugins/renatio/formbuilder/assets/js/file-multi.js |
/*
* FileMulti class
*
* Dependences:
* - Some other plugin (filename.js)
*/
+function ($) { "use strict";
var MultiFileUploader = function (element, options) {
this.options = options
this.$container = $(element)
this.$el = $('.content', element)
this.$clickable = $('.clickable', element)
this.$template = $('.template', element)
this.$fileHolder = $('div.img', this.$el)
var acceptedFiles = this.options.fileTypes
if (acceptedFiles == '*')
acceptedFiles = null
this.dropzone = new Dropzone(this.$container.get(0), {
url: window.location,
clickable: this.$clickable.get(0),
previewsContainer: this.$el.get(0),
previewTemplate: this.$template.html(),
acceptedFiles: acceptedFiles,
maxFilesize: this.options.maxSize,
paramName: 'file_data'
})
var self = this
this.dropzone.on("error", function(file, error){
alert(error)
})
this.dropzone.on("sending", function(file, xhr, formData) {
self.addExtraFormData(formData)
})
this.dropzone.on("success", function(file, response){
self.updateFile(file, response)
})
this.$el.on('click', '.delete', function(){
self.removeFile($(this))
})
}
MultiFileUploader.prototype.addExtraFormData = function(formData) {
if (this.options.extraData) {
$.each(this.options.extraData, function (name, value) {
formData.append(name, value)
})
}
var $form = this.$el.closest('form')
if ($form.length > 0) {
$.each($form.serializeArray(), function (index, field) {
formData.append(field.name, field.value)
})
}
}
MultiFileUploader.prototype.updateFile = function(file, response) {
var $preview = $(file.previewElement),
$img = $('.thumbnail', $preview)
if (response.id) {
$preview.data('id', response.id)
$img.attr('src', response.thumb)
}
}
MultiFileUploader.prototype.removeFile = function($link) {
var self = this,
$preview = $link.closest('.dz-preview'),
id = $preview.data('id')
if (!id) {
$preview.remove()
return
}
$preview.removeClass('dz-success').addClass('dz-removing')
var request = this.$container.closest('form').request(this.options.handler, {
data: {
id: id,
mode: 'delete'
},
redirect: false
})
request.success(function() {
$preview.remove()
})
}
MultiFileUploader.DEFAULTS = {
handler: 'onUpdateFile',
maxSize: null,
fileTypes: null
}
var old = $.fn.multiFileUploader
$.fn.multiFileUploader = function (option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('oc.multiFileUploader')
var options = $.extend({}, MultiFileUploader.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('oc.multiFileUploader', (data = new MultiFileUploader(this, options)))
if (typeof option == 'string') data[option].call($this)
})
}
$.fn.multiFileUploader.Constructor = MultiFileUploader
$.fn.multiFileUploader.noConflict = function () {
$.fn.multiFileUploader = old
return this
}
// ICON UPLOAD CONTROL DATA-API
// ===============
$(document).render(function(){
$('[data-control=multi-file-uploader]').multiFileUploader()
})
}(window.jQuery);