diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 452e22bf41653150a29354eec7b54f983f9cecd4..4091e7bb016c5d0efc15b23630d0265440e08f2c 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -1129,7 +1129,7 @@ class TypeaheadSelectionWidget extends ChoicesWidget { $value = key($this->value); } - $config = $this->getConfiguration(); + $config = $this->field->getConfiguration(); $source = array(); foreach ($this->field->getList()->getItems() as $i) $source[] = array( diff --git a/include/class.forms.php b/include/class.forms.php index 27c6eee2a183a355ba6e1e5dc13453c7fe77b2aa..3b1cc51b0502f3f0b8ca2a5b766f3ccd1426c575 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -1903,7 +1903,8 @@ class FileUploadWidget extends Widget { <div class="dropzone"><i class="icon-upload"></i> Drop files here or <a href="#" class="manual">choose them</a> - <input type="file" class="multifile" multiple id="file-<?php echo $id; ?>" style="display:none;" + <input type="file" multiple="multiple" + id="file-<?php echo $id; ?>" style="display:none;" accept="<?php echo implode(',', $config['__mimetypes']); ?>"/> </div></div> <script type="text/javascript"> diff --git a/js/jquery.multifile.js b/js/jquery.multifile.js deleted file mode 100644 index a1ae5a02fd9eb4e7f54c53c60951933ecf7fb801..0000000000000000000000000000000000000000 --- a/js/jquery.multifile.js +++ /dev/null @@ -1,204 +0,0 @@ -/********************************************************************* - jquery.multifile.js - - Multifile plugin that allows users to upload multiple files at once in unobstructive manner - cleaner interface. - - Allows limiting number of files - Whitelist file type(s) using file extension - Limit file sizes. - - NOTE: - * Files are not uploaded until the form is submitted - * Server side file type validation is a MUST - * Plugin doesn't take into account PHP related limitations e.g max uploads + max size. - - Peter Rotich <peter@osticket.com> - Copyright (c) 2006-2013 osTicket - http://www.osticket.com - - Credits: - The plugin borrows heavily from a plugin by Rocky Meza @ fusionbox - https://github.com/fusionbox/jquery-multifile - - vim: expandtab sw=4 ts=4 sts=4: -**********************************************************************/ - -;(function($, global, undefined) { - - $.fn.multifile = function(options) { - var container = null; - var options = $.extend({}, $.fn.multifile.defaults, options); - - options.allowedFileTypes = $.map(options.file_types.toLowerCase().split(','), $.trim); - options.inputTemplate = options.inputTemplate || $.fn.multifile.inputTemplate; - - container = options.container || null; - - - return this.each(function() { - - var settings = options; - var $container - - , addInput = function(event) { - - var $this = $(this) - , fObj = $(this).closest('form') - , new_input = $.fn.multifile.cloneInput($this) - , file = $.fn.multifile.getFileObject(this); - - if(fObj.data('files') == undefined) - fObj.data('files', 0); - - if(fObj.data('files')>=settings.max_uploads || (fObj.data('files')+file.count)>settings.max_uploads) { - alert('You have reached the maximum number of files ('+ settings.max_uploads+') allowed per upload'); - } else if(!$.fn.multifile.checkFileTypes(file, settings.allowedFileTypes)) { - var msg = 'Selected file type is NOT allowed'; - if(file.count>1) - msg = 'File type of one or more of the selected files is NOT allowed'; - - alert('Error: '+msg); - $this.replaceWith(new_input); - } else if(!$.fn.multifile.checkFileSize(file, settings.max_file_size)) { - var msg = 'Selected file exceeds allowed size'; - if(file.count>1) - msg = 'File size of one or more of the selected files exceeds allowed size'; - - alert('Error: '+msg); - $this.replaceWith(new_input); - } else { - $this.hide(); - - settings - .inputTemplate(file) - .appendTo($container) - .on('click', 'input', bindRemoveInput($this, file)); - - fObj.data('files', fObj.data('files')+file.count); - if(fObj.data('files')<settings.max_uploads) - $this.after(new_input); - } - - } - - , bindRemoveInput = function($input, file) { - - return function(event) { - - event.preventDefault(); - - if(confirm('Are you sure you want to remove '+file.name+'?')) { - var fObj = $(this).closest('form'); - - fObj.data('files', fObj.data('files')-file.count); - if(fObj.data('files')<settings.max_uploads && (fObj.data('files')+file.count)>=settings.max_uploads) - $input.after($.fn.multifile.cloneInput($input).show()); - - $input.remove(); - $(this).parent().remove(); - } - - return false; - }; - - }; - - if ( container ) { - if ( typeof container == 'string' ) - $container = $(container, $(this).closest('form')); - else - $container = container; - } else { - $container = $('<div class="uploads" />'); - $(this).after($container); - } - - $(this).bind('change.multifile', addInput); - - }); - }; - - $.fn.multifile.inputTemplate = function(file) { - return $('<label style="padding-right:5px;"><input type="checkbox" name="uploads[]" value="' + file.name + '" checked="checked"> ' + file.name + '</label><br/>'); - }; - - $.fn.multifile.checkFileTypes = function(file, allowedFileTypes) { - - //Wildcard. - if(allowedFileTypes[0]=='.*') - return true; - - var filenames = $.map(file.name.toLowerCase().split(','), $.trim); - for (var i = 0, _len = filenames.length; i < _len; i++) - if(filenames[i] && $.inArray('.'+filenames[i].split('.').pop(), allowedFileTypes) == -1) - return false; - - return true; - }; - - $.fn.multifile.checkFileSize = function(file, MaxFileSize) { - - //Size info not available or max file is not set (let server-side handle it). - if(!MaxFileSize || !file.size) - return true; - - var filesizes = $.map(file.size.split(','), $.trim); - for (var i = 0, _len = filesizes.length; i < _len; i++) - if(filesizes[i] > MaxFileSize) - return false; - - return true; - }; - - //Clone file input and clear the value without triggering a warning! - $.fn.multifile.cloneInput = function(input) { - - var $clone = input.clone(true); - - if ($.browser.msie) { - $clone.replaceWith(function () { return $(this).clone(true); }); - } else { - $clone.val(''); - } - - return $clone; - } - - //Get file object - $.fn.multifile.getFileObject = function(input) { - var file = {}; - - file.count = 1; - // check for HTML5 FileList support - if ( !!global.FileList ) { - if ( input.files.length == 1 ) { - file.name = input.files[0].name; - file.size = '' + input.files[0].size; - } else { //Multi-select - // We do this in order to support `multiple` files. - // You can't display them separately because they - // belong to only one file input. It is impossible - // to remove just one of the files. - file.name = input.files[0].name; - file.size = '' + input.files[0].size; - for (var i = 1, _len = input.files.length; i < _len; i++) { - file.name += ', ' + input.files[i].name; - file.size += ', ' + input.files[i].size; - } - - file.count = i; - } - } else { - file.name = input.value; - } - - return file; - }; - - //Default options - $.fn.multifile.defaults = { - max_uploads: 1, - file_types: '.*', - max_file_size: 0 - }; -})(jQuery, this);