mirror of https://gitee.com/y_project/RuoYi.git
升级bootstrap-fileinput到最新版本5.1.3
parent
7776b82c18
commit
d14ce06afd
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* bootstrap-fileinput v5.1.2
|
* bootstrap-fileinput v5.1.3
|
||||||
* http://plugins.krajee.com/file-input
|
* http://plugins.krajee.com/file-input
|
||||||
*
|
*
|
||||||
* Krajee default styling for bootstrap-fileinput.
|
* Krajee default styling for bootstrap-fileinput.
|
||||||
|
@ -200,6 +200,10 @@
|
||||||
.file-preview-image {
|
.file-preview-image {
|
||||||
font: 40px Impact, Charcoal, sans-serif;
|
font: 40px Impact, Charcoal, sans-serif;
|
||||||
color: #008000;
|
color: #008000;
|
||||||
|
width:auto;
|
||||||
|
height:auto;
|
||||||
|
max-width:100%;
|
||||||
|
max-height:100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.krajee-default.file-preview-frame {
|
.krajee-default.file-preview-frame {
|
||||||
|
@ -241,19 +245,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.krajee-default .file-preview-text {
|
.krajee-default .file-preview-text {
|
||||||
display: block;
|
|
||||||
color: #428bca;
|
color: #428bca;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
|
||||||
outline: none;
|
outline: none;
|
||||||
padding: 8px;
|
|
||||||
resize: none;
|
resize: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.krajee-default .file-preview-html {
|
.krajee-default .file-preview-html {
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
padding: 8px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.krajee-default .file-other-icon {
|
.krajee-default .file-other-icon {
|
||||||
|
@ -316,7 +315,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.kv-upload-progress .progress-bar {
|
.kv-upload-progress .progress-bar {
|
||||||
height: 11px;
|
height: 20px;
|
||||||
font-family: Verdana, Helvetica, sans-serif;
|
font-family: Verdana, Helvetica, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +433,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-uploading {
|
.file-uploading {
|
||||||
background: url(loading-sm.gif) no-repeat center bottom 10px;
|
background: url(../img/loading-sm.gif) no-repeat center bottom 10px;
|
||||||
opacity: 0.65;
|
opacity: 0.65;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,4 +556,8 @@
|
||||||
background-color: #d9edf7;
|
background-color: #d9edf7;
|
||||||
border-color: #17a2b8;
|
border-color: #17a2b8;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-preview .kv-zoom-cache {
|
||||||
|
display: none;
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* bootstrap-fileinput v5.1.2
|
* bootstrap-fileinput v5.1.3
|
||||||
* http://plugins.krajee.com/file-input
|
* http://plugins.krajee.com/file-input
|
||||||
*
|
*
|
||||||
* Author: Kartik Visweswaran
|
* Author: Kartik Visweswaran
|
||||||
|
@ -111,7 +111,7 @@
|
||||||
if (!relativePath) {
|
if (!relativePath) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return (file.size + '_' + relativePath.replace(/\s/img, '_'));
|
return (file.size + '_' + encodeURIComponent(relativePath).replace(/%/g, '_'));
|
||||||
},
|
},
|
||||||
getFrameSelector: function (id, selector) {
|
getFrameSelector: function (id, selector) {
|
||||||
selector = selector || '';
|
selector = selector || '';
|
||||||
|
@ -471,18 +471,8 @@
|
||||||
uniqId: function () {
|
uniqId: function () {
|
||||||
return (new Date().getTime() + Math.floor(Math.random() * Math.pow(10, 15))).toString(36);
|
return (new Date().getTime() + Math.floor(Math.random() * Math.pow(10, 15))).toString(36);
|
||||||
},
|
},
|
||||||
parseEventCallback: function (str) {
|
|
||||||
return Function('\'use strict\'; return (function() { ' + str + ' });')(); // jshint ignore:line
|
|
||||||
},
|
|
||||||
cspBuffer: {
|
cspBuffer: {
|
||||||
CSP_ATTRIB: 'data-csp-01928735', // a randomly named temporary attribute to store the CSP elem id
|
CSP_ATTRIB: 'data-csp-01928735', // a randomly named temporary attribute to store the CSP elem id
|
||||||
domEventsList: [
|
|
||||||
'mousedown', 'mouseup', 'click', 'dblclick', 'mousemove', 'mouseover', 'mousewheel', 'mouseout',
|
|
||||||
'contextmenu', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'keydown', 'keypress', 'keyup',
|
|
||||||
'focus', 'blur', 'change', 'submit', 'scroll', 'resize', 'hashchange', 'load', 'unload',
|
|
||||||
'cut', 'copy', 'paste'
|
|
||||||
],
|
|
||||||
domElementEvents: {},
|
|
||||||
domElementsStyles: {},
|
domElementsStyles: {},
|
||||||
stash: function (htmlString) {
|
stash: function (htmlString) {
|
||||||
var self = this, outerDom = $.parseHTML('<div>' + htmlString + '</div>'), $el = $(outerDom);
|
var self = this, outerDom = $.parseHTML('<div>' + htmlString + '</div>'), $el = $(outerDom);
|
||||||
|
@ -503,20 +493,6 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$el.filter('*').removeAttr('style'); // make sure all style attr are removed
|
$el.filter('*').removeAttr('style'); // make sure all style attr are removed
|
||||||
$.each(self.domEventsList, function (key, eventName) { // handle onXXX events set as inline markup
|
|
||||||
var id, fn, event = 'on' + eventName, $inlineEvent = $el.find('[' + event + ']');
|
|
||||||
if ($inlineEvent.length) {
|
|
||||||
fn = $h.parseEventCallback($inlineEvent.attr(event));
|
|
||||||
if ($inlineEvent.attr(self.CSP_ATTRIB)) {
|
|
||||||
id = $inlineEvent.attr(self.CSP_ATTRIB);
|
|
||||||
} else {
|
|
||||||
id = $h.uniqId();
|
|
||||||
self.domElementEvents[id] = [];
|
|
||||||
}
|
|
||||||
self.domElementEvents[id].push({name: eventName + '.csp', handler: fn}); // special csp namespace
|
|
||||||
$inlineEvent.removeAttr(event).attr(self.CSP_ATTRIB, id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var values = Object.values ? Object.values(outerDom) : Object.keys(outerDom).map(function (itm) {
|
var values = Object.values ? Object.values(outerDom) : Object.keys(outerDom).map(function (itm) {
|
||||||
return outerDom[itm];
|
return outerDom[itm];
|
||||||
});
|
});
|
||||||
|
@ -527,22 +503,13 @@
|
||||||
apply: function (domElement) {
|
apply: function (domElement) {
|
||||||
var self = this, $el = $(domElement);
|
var self = this, $el = $(domElement);
|
||||||
$el.find('[' + self.CSP_ATTRIB + ']').each(function (key, elem) {
|
$el.find('[' + self.CSP_ATTRIB + ']').each(function (key, elem) {
|
||||||
var $elem = $(elem), id = $elem.attr(self.CSP_ATTRIB), styles = self.domElementsStyles[id],
|
var $elem = $(elem), id = $elem.attr(self.CSP_ATTRIB), styles = self.domElementsStyles[id];
|
||||||
events = self.domElementEvents[id];
|
|
||||||
if (styles) {
|
if (styles) {
|
||||||
$elem.css(styles);
|
$elem.css(styles);
|
||||||
}
|
}
|
||||||
if (events) {
|
|
||||||
$.each(events, function (key, event) {
|
|
||||||
if (event && event.name) {
|
|
||||||
$elem.off(event.name).on(event.name, event.handler);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
$elem.removeAttr(self.CSP_ATTRIB);
|
$elem.removeAttr(self.CSP_ATTRIB);
|
||||||
});
|
});
|
||||||
self.domElementsStyles = {};
|
self.domElementsStyles = {};
|
||||||
self.domElementEvents = {};
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setHtml: function ($elem, htmlString) {
|
setHtml: function ($elem, htmlString) {
|
||||||
|
@ -1651,7 +1618,10 @@
|
||||||
tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload,
|
tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload,
|
||||||
tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage,
|
tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage,
|
||||||
tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim,
|
tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim,
|
||||||
tStats;
|
tStats, tModalLabel, renderObject = function (type, mime) {
|
||||||
|
return '<object class="kv-preview-data file-preview-' + type + '" title="{caption}" ' +
|
||||||
|
'data="{data}" type="' + mime + '"' + tStyle + '>\n' + $h.DEFAULT_PREVIEW + '\n</object>\n';
|
||||||
|
};
|
||||||
tMain1 = '{preview}\n' +
|
tMain1 = '{preview}\n' +
|
||||||
'<div class="kv-upload-progress kv-hidden"></div><div class="clearfix"></div>\n' +
|
'<div class="kv-upload-progress kv-hidden"></div><div class="clearfix"></div>\n' +
|
||||||
'<div class="input-group {class}">\n' +
|
'<div class="input-group {class}">\n' +
|
||||||
|
@ -1680,7 +1650,7 @@
|
||||||
// noinspection HtmlUnknownAttribute
|
// noinspection HtmlUnknownAttribute
|
||||||
tCaption = '<div class="file-caption form-control {class}" tabindex="500">\n' +
|
tCaption = '<div class="file-caption form-control {class}" tabindex="500">\n' +
|
||||||
' <span class="file-caption-icon"></span>\n' +
|
' <span class="file-caption-icon"></span>\n' +
|
||||||
' <input class="file-caption-name" onkeydown="return false;" onpaste="return false;">\n' +
|
' <input class="file-caption-name">\n' +
|
||||||
'</div>';
|
'</div>';
|
||||||
//noinspection HtmlUnknownAttribute
|
//noinspection HtmlUnknownAttribute
|
||||||
tBtnDefault = '<button type="{type}" tabindex="500" title="{title}" class="{css}" ' +
|
tBtnDefault = '<button type="{type}" tabindex="500" title="{title}" class="{css}" ' +
|
||||||
|
@ -1689,12 +1659,13 @@
|
||||||
tBtnLink = '<a href="{href}" tabindex="500" title="{title}" class="{css}" {status}>{icon} {label}</a>';
|
tBtnLink = '<a href="{href}" tabindex="500" title="{title}" class="{css}" {status}>{icon} {label}</a>';
|
||||||
//noinspection HtmlUnknownAttribute
|
//noinspection HtmlUnknownAttribute
|
||||||
tBtnBrowse = '<div tabindex="500" class="{css}" {status}>{icon} {label}</div>';
|
tBtnBrowse = '<div tabindex="500" class="{css}" {status}>{icon} {label}</div>';
|
||||||
|
tModalLabel = $h.MODAL_ID + 'Label';
|
||||||
tModalMain = '<div id="' + $h.MODAL_ID + '" class="file-zoom-dialog modal fade" ' +
|
tModalMain = '<div id="' + $h.MODAL_ID + '" class="file-zoom-dialog modal fade" ' +
|
||||||
'tabindex="-1" aria-labelledby="' + $h.MODAL_ID + 'Label"></div>';
|
'tabindex="-1" aria-labelledby="' + tModalLabel + '"></div>';
|
||||||
tModal = '<div class="modal-dialog modal-lg{rtl}" role="document">\n' +
|
tModal = '<div class="modal-dialog modal-lg{rtl}" role="document">\n' +
|
||||||
' <div class="modal-content">\n' +
|
' <div class="modal-content">\n' +
|
||||||
' <div class="modal-header">\n' +
|
' <div class="modal-header">\n' +
|
||||||
' <h5 class="modal-title">{heading}</h5>\n' +
|
' <h5 class="modal-title" id="' + tModalLabel + '">{heading}</h5>\n' +
|
||||||
' <span class="kv-zoom-title"></span>\n' +
|
' <span class="kv-zoom-title"></span>\n' +
|
||||||
' <div class="kv-zoom-actions">{toggleheader}{fullscreen}{borderless}{close}</div>\n' +
|
' <div class="kv-zoom-actions">{toggleheader}{fullscreen}{borderless}{close}</div>\n' +
|
||||||
' </div>\n' +
|
' </div>\n' +
|
||||||
|
@ -1747,11 +1718,11 @@
|
||||||
tTagAft = '</div>{footer}\n{zoomCache}</div>\n';
|
tTagAft = '</div>{footer}\n{zoomCache}</div>\n';
|
||||||
tGeneric = '{content}\n';
|
tGeneric = '{content}\n';
|
||||||
tStyle = ' {style}';
|
tStyle = ' {style}';
|
||||||
tHtml = '<div class="kv-preview-data file-preview-html" title="{caption}"' + tStyle + '>{data}</div>\n';
|
tHtml = renderObject('html', 'text/html');
|
||||||
tImage = '<img src="{data}" class="file-preview-image kv-preview-data" title="{title}" ' +
|
tText = renderObject('text', 'text/plain;charset=UTF-8');
|
||||||
'alt="{alt}"' + tStyle + '>\n';
|
tPdf = renderObject('pdf', 'application/pdf');
|
||||||
tText = '<textarea class="kv-preview-data file-preview-text" title="{caption}" readonly' + tStyle + '>' +
|
tImage = '<img src="{data}" class="file-preview-image kv-preview-data" title="{title}" alt="{alt}"' +
|
||||||
'{data}</textarea>\n';
|
tStyle + '>\n';
|
||||||
tOffice = '<iframe class="kv-preview-data file-preview-office" ' +
|
tOffice = '<iframe class="kv-preview-data file-preview-office" ' +
|
||||||
'src="https://view.officeapps.live.com/op/embed.aspx?src={data}"' + tStyle + '></iframe>';
|
'src="https://view.officeapps.live.com/op/embed.aspx?src={data}"' + tStyle + '></iframe>';
|
||||||
tGdocs = '<iframe class="kv-preview-data file-preview-gdocs" ' +
|
tGdocs = '<iframe class="kv-preview-data file-preview-gdocs" ' +
|
||||||
|
@ -1761,12 +1732,11 @@
|
||||||
tAudio = '<!--suppress ALL --><audio class="kv-preview-data file-preview-audio" controls' + tStyle + '>\n<source src="{data}" ' +
|
tAudio = '<!--suppress ALL --><audio class="kv-preview-data file-preview-audio" controls' + tStyle + '>\n<source src="{data}" ' +
|
||||||
'type="{type}">\n' + $h.DEFAULT_PREVIEW + '\n</audio>\n';
|
'type="{type}">\n' + $h.DEFAULT_PREVIEW + '\n</audio>\n';
|
||||||
tFlash = '<embed class="kv-preview-data file-preview-flash" src="{data}" type="application/x-shockwave-flash"' + tStyle + '>\n';
|
tFlash = '<embed class="kv-preview-data file-preview-flash" src="{data}" type="application/x-shockwave-flash"' + tStyle + '>\n';
|
||||||
tPdf = '<embed class="kv-preview-data file-preview-pdf" src="{data}" type="application/pdf"' + tStyle + '>\n';
|
|
||||||
tObject = '<object class="kv-preview-data file-preview-object file-object {typeCss}" ' +
|
tObject = '<object class="kv-preview-data file-preview-object file-object {typeCss}" ' +
|
||||||
'data="{data}" type="{type}"' + tStyle + '>\n' + '<param name="movie" value="{caption}" />\n' +
|
'data="{data}" type="{type}"' + tStyle + '>\n' + '<param name="movie" value="{caption}" />\n' +
|
||||||
$h.OBJECT_PARAMS + ' ' + $h.DEFAULT_PREVIEW + '\n</object>\n';
|
$h.OBJECT_PARAMS + ' ' + $h.DEFAULT_PREVIEW + '\n</object>\n';
|
||||||
tOther = '<div class="kv-preview-data file-preview-other-frame"' + tStyle + '>\n' + $h.DEFAULT_PREVIEW + '\n</div>\n';
|
tOther = '<div class="kv-preview-data file-preview-other-frame"' + tStyle + '>\n' + $h.DEFAULT_PREVIEW + '\n</div>\n';
|
||||||
tZoomCache = '<div class="kv-zoom-cache" style="display:none">{zoomContent}</div>';
|
tZoomCache = '<div class="kv-zoom-cache">{zoomContent}</div>';
|
||||||
vDefaultDim = {width: '100%', height: '100%', 'min-height': '480px'};
|
vDefaultDim = {width: '100%', height: '100%', 'min-height': '480px'};
|
||||||
if (self._isPdfRendered()) {
|
if (self._isPdfRendered()) {
|
||||||
tPdf = self.pdfRendererTemplate.replace('{renderer}', self._encodeURI(self.pdfRendererUrl));
|
tPdf = self.pdfRendererTemplate.replace('{renderer}', self._encodeURI(self.pdfRendererUrl));
|
||||||
|
@ -1879,7 +1849,7 @@
|
||||||
},
|
},
|
||||||
text: function (vType, vName) {
|
text: function (vType, vName) {
|
||||||
return $h.compare(vType, 'text.*') || $h.compare(vName, /\.(xml|javascript)$/i) ||
|
return $h.compare(vType, 'text.*') || $h.compare(vName, /\.(xml|javascript)$/i) ||
|
||||||
$h.compare(vName, /\.(txt|md|csv|nfo|ini|json|php|js|css)$/i);
|
$h.compare(vName, /\.(txt|md|nfo|ini|json|php|js|css)$/i);
|
||||||
},
|
},
|
||||||
video: function (vType, vName) {
|
video: function (vType, vName) {
|
||||||
return $h.compare(vType, 'video.*') && ($h.compare(vType, /(ogg|mp4|mp?g|mov|webm|3gp)$/i) ||
|
return $h.compare(vType, 'video.*') && ($h.compare(vType, /(ogg|mp4|mp?g|mov|webm|3gp)$/i) ||
|
||||||
|
@ -1956,7 +1926,7 @@
|
||||||
$.each(self.previewContentTemplates, function (key, value) {
|
$.each(self.previewContentTemplates, function (key, value) {
|
||||||
if ($h.isEmpty(self.previewTemplates[key])) {
|
if ($h.isEmpty(self.previewTemplates[key])) {
|
||||||
tagBef = tags.tagBefore2;
|
tagBef = tags.tagBefore2;
|
||||||
if (key === 'generic' || key === 'image' || key === 'html' || key === 'text') {
|
if (key === 'generic' || key === 'image') {
|
||||||
tagBef = tags.tagBefore1;
|
tagBef = tags.tagBefore1;
|
||||||
}
|
}
|
||||||
if (self._isPdfRendered() && key === 'pdf') {
|
if (self._isPdfRendered() && key === 'pdf') {
|
||||||
|
@ -2473,7 +2443,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_listen: function () {
|
_listen: function () {
|
||||||
var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, fullScreenEvents;
|
var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, fullScreenEv, $cap, fn;
|
||||||
self._handler($el, 'click', function (e) {
|
self._handler($el, 'click', function (e) {
|
||||||
if ($el.hasClass('file-no-browse')) {
|
if ($el.hasClass('file-no-browse')) {
|
||||||
if ($el.data('zoneClicked')) {
|
if ($el.data('zoneClicked')) {
|
||||||
|
@ -2487,9 +2457,15 @@
|
||||||
if (self.showBrowse) {
|
if (self.showBrowse) {
|
||||||
self._handler(self.$btnFile, 'click', $.proxy(self._browse, self));
|
self._handler(self.$btnFile, 'click', $.proxy(self._browse, self));
|
||||||
}
|
}
|
||||||
|
$cap = $cont.find('.file-caption-name');
|
||||||
|
fn = function () {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
self._handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));
|
self._handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));
|
||||||
self._handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));
|
self._handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));
|
||||||
self._handler($cont.find('.fileinput-pause'), 'click', $.proxy(self.pause, self));
|
self._handler($cont.find('.fileinput-pause'), 'click', $.proxy(self.pause, self));
|
||||||
|
self._handler($cap, 'keydown', fn);
|
||||||
|
self._handler($cap, 'paste', fn);
|
||||||
self._initDragDrop();
|
self._initDragDrop();
|
||||||
self._handler($form, 'reset', $.proxy(self.clear, self));
|
self._handler($form, 'reset', $.proxy(self.clear, self));
|
||||||
if (!self.isAjaxUpload) {
|
if (!self.isAjaxUpload) {
|
||||||
|
@ -2499,8 +2475,8 @@
|
||||||
self._handler($(window), 'resize', function () {
|
self._handler($(window), 'resize', function () {
|
||||||
self._listenFullScreen(screen.width === window.innerWidth && screen.height === window.innerHeight);
|
self._listenFullScreen(screen.width === window.innerWidth && screen.height === window.innerHeight);
|
||||||
});
|
});
|
||||||
fullScreenEvents = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange';
|
fullScreenEv = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange';
|
||||||
self._handler($(document), fullScreenEvents, function () {
|
self._handler($(document), fullScreenEv, function () {
|
||||||
self._listenFullScreen($h.checkFullScreen());
|
self._listenFullScreen($h.checkFullScreen());
|
||||||
});
|
});
|
||||||
self._autoFitContent();
|
self._autoFitContent();
|
||||||
|
@ -2563,15 +2539,15 @@
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
},
|
},
|
||||||
_zoneDragEnter: function (e) {
|
_zoneDragEnter: function (e) {
|
||||||
var self = this, dataTransfer = e.originalEvent.dataTransfer,
|
var self = this, dt = e.originalEvent.dataTransfer, hasFiles = $.inArray('Files', dt.types) > -1;
|
||||||
hasFiles = $.inArray('Files', dataTransfer.types) > -1;
|
|
||||||
self._zoneDragDropInit(e);
|
self._zoneDragDropInit(e);
|
||||||
if (self.isDisabled || !hasFiles) {
|
if (self.isDisabled || !hasFiles) {
|
||||||
e.originalEvent.dataTransfer.effectAllowed = 'none';
|
dt.effectAllowed = 'none';
|
||||||
e.originalEvent.dataTransfer.dropEffect = 'none';
|
dt.dropEffect = 'none';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (self._raise('fileDragEnter', {'sourceEvent': e, 'files': dataTransfer.types.Files})) {
|
dt.dropEffect = 'copy';
|
||||||
|
if (self._raise('fileDragEnter', {'sourceEvent': e, 'files': dt.types.Files})) {
|
||||||
$h.addCss(self.$dropZone, 'file-highlighted');
|
$h.addCss(self.$dropZone, 'file-highlighted');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2588,8 +2564,8 @@
|
||||||
},
|
},
|
||||||
_zoneDrop: function (e) {
|
_zoneDrop: function (e) {
|
||||||
/** @namespace e.originalEvent.dataTransfer */
|
/** @namespace e.originalEvent.dataTransfer */
|
||||||
var self = this, i, $el = self.$element, dataTransfer = e.originalEvent.dataTransfer,
|
var self = this, i, $el = self.$element, dt = e.originalEvent.dataTransfer,
|
||||||
files = dataTransfer.files, items = dataTransfer.items, folders = $h.getDragDropFolders(items),
|
files = dt.files, items = dt.items, folders = $h.getDragDropFolders(items),
|
||||||
processFiles = function () {
|
processFiles = function () {
|
||||||
if (!self.isAjaxUpload) {
|
if (!self.isAjaxUpload) {
|
||||||
self.changeTriggered = true;
|
self.changeTriggered = true;
|
||||||
|
@ -3639,10 +3615,18 @@
|
||||||
self._showFileError(errMsg, params);
|
self._showFileError(errMsg, params);
|
||||||
}, self.processDelay);
|
}, self.processDelay);
|
||||||
};
|
};
|
||||||
formdata.append(self.uploadFileAttr, fileObj.file, fileName);
|
self._setFileData(formdata, fileObj.file, fileName, id);
|
||||||
self._setUploadData(formdata, {fileId: id});
|
self._setUploadData(formdata, {fileId: id});
|
||||||
self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata, id, i);
|
self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata, id, i);
|
||||||
},
|
},
|
||||||
|
_setFileData: function (formdata, file, fileName, fileId) {
|
||||||
|
var self = this, preProcess = self.preProcessUpload;
|
||||||
|
if (preProcess && typeof preProcess === 'function') {
|
||||||
|
formdata.append(self.uploadFileAttr, preProcess(fileId, file));
|
||||||
|
} else {
|
||||||
|
formdata.append(self.uploadFileAttr, file, fileName);
|
||||||
|
}
|
||||||
|
},
|
||||||
_uploadBatch: function () {
|
_uploadBatch: function () {
|
||||||
var self = this, fm = self.fileManager, total = fm.total(), params = {}, fnBefore, fnSuccess, fnError,
|
var self = this, fm = self.fileManager, total = fm.total(), params = {}, fnBefore, fnSuccess, fnError,
|
||||||
fnComplete, hasPostData = total > 0 || !$.isEmptyObject(self.uploadExtraData), errMsg,
|
fnComplete, hasPostData = total > 0 || !$.isEmptyObject(self.uploadExtraData), errMsg,
|
||||||
|
@ -3766,7 +3750,7 @@
|
||||||
var ctr = 0;
|
var ctr = 0;
|
||||||
$.each(self.fileManager.stack, function (key, data) {
|
$.each(self.fileManager.stack, function (key, data) {
|
||||||
if (!$h.isEmpty(data.file)) {
|
if (!$h.isEmpty(data.file)) {
|
||||||
formdata.append(self.uploadFileAttr, data.file, (data.nameFmt || ('untitled_' + ctr)));
|
self._setFileData(formdata, data.file, (data.nameFmt || ('untitled_' + ctr)), key);
|
||||||
}
|
}
|
||||||
ctr++;
|
ctr++;
|
||||||
});
|
});
|
||||||
|
@ -4082,9 +4066,6 @@
|
||||||
css = css.replace(' ' + $h.SORT_CSS, '');
|
css = css.replace(' ' + $h.SORT_CSS, '');
|
||||||
}
|
}
|
||||||
tmplt = self._parseFilePreviewIcon(tmplt, fname);
|
tmplt = self._parseFilePreviewIcon(tmplt, fname);
|
||||||
if (c === 'text') {
|
|
||||||
d = $h.htmlEncode(d);
|
|
||||||
}
|
|
||||||
if (cat === 'object' && !ftype) {
|
if (cat === 'object' && !ftype) {
|
||||||
$.each(self.defaults.fileTypeSettings, function (key, func) {
|
$.each(self.defaults.fileTypeSettings, function (key, func) {
|
||||||
if (key === 'object' || key === 'other') {
|
if (key === 'object' || key === 'other') {
|
||||||
|
@ -4161,12 +4142,9 @@
|
||||||
}
|
}
|
||||||
var self = this, fname = $h.getFileName(file), ftype = fileInfo.type, caption = fileInfo.name,
|
var self = this, fname = $h.getFileName(file), ftype = fileInfo.type, caption = fileInfo.name,
|
||||||
cat = self._parseFileType(ftype, fname), content, $preview = self.$preview, fsize = file.size || 0,
|
cat = self._parseFileType(ftype, fname), content, $preview = self.$preview, fsize = file.size || 0,
|
||||||
iData = (cat === 'text' || cat === 'html' || cat === 'image') ? theFile.target.result : data,
|
iData = cat === 'image' ? theFile.target.result : data,
|
||||||
fileId = self.fileManager.getId(file), previewId = self._getThumbId(fileId);
|
fileId = self.fileManager.getId(file), previewId = self._getThumbId(fileId);
|
||||||
/** @namespace window.DOMPurify */
|
/** @namespace window.DOMPurify */
|
||||||
if (cat === 'html' && self.purifyHtml && window.DOMPurify) {
|
|
||||||
iData = window.DOMPurify.sanitize(iData);
|
|
||||||
}
|
|
||||||
content = self._generatePreviewTemplate(cat, iData, fname, ftype, previewId, fileId, false, fsize);
|
content = self._generatePreviewTemplate(cat, iData, fname, ftype, previewId, fileId, false, fsize);
|
||||||
self._clearDefaultPreview();
|
self._clearDefaultPreview();
|
||||||
self._addToPreview($preview, content);
|
self._addToPreview($preview, content);
|
||||||
|
@ -5217,12 +5195,12 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.lock(true);
|
self.lock(true);
|
||||||
var file = files[i], previewId = previewInitId + '-' + self._getFileId(file), fSizeKB, j, msg,
|
var file = files[i], id = self._getFileId(file), previewId = previewInitId + '-' + id, fSizeKB, j, msg,
|
||||||
fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2,
|
fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2,
|
||||||
caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000,
|
caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000,
|
||||||
fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0,
|
fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0,
|
||||||
strTypes = '', fileId, canLoad, fileReaderAborted = false,
|
strTypes = '', fileId, canLoad, fileReaderAborted = false,
|
||||||
func, knownTypes = 0, isText, isHtml, isImage, txtFlag, processFileLoaded = function () {
|
func, knownTypes = 0, isImage, txtFlag, processFileLoaded = function () {
|
||||||
var msg = msgProgress.setTokens({
|
var msg = msgProgress.setTokens({
|
||||||
'index': i + 1,
|
'index': i + 1,
|
||||||
'files': numFiles,
|
'files': numFiles,
|
||||||
|
@ -5234,7 +5212,7 @@
|
||||||
self._updateFileDetails(numFiles);
|
self._updateFileDetails(numFiles);
|
||||||
readFile(i + 1);
|
readFile(i + 1);
|
||||||
}, self.processDelay);
|
}, self.processDelay);
|
||||||
if (self._raise('fileloaded', [file, previewId, i, reader]) && self.isAjaxUpload) {
|
if (self._raise('fileloaded', [file, previewId, id, i, reader]) && self.isAjaxUpload) {
|
||||||
fm.add(file);
|
fm.add(file);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -5336,12 +5314,10 @@
|
||||||
self._updateFileDetails(numFiles);
|
self._updateFileDetails(numFiles);
|
||||||
}
|
}
|
||||||
readFile(i + 1);
|
readFile(i + 1);
|
||||||
self._raise('fileloaded', [file, previewId, i]);
|
self._raise('fileloaded', [file, previewId, id, i]);
|
||||||
}, 10);
|
}, 10);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
isText = fnText(file.type, caption);
|
|
||||||
isHtml = fnHtml(file.type, caption);
|
|
||||||
isImage = fnImage(file.type, caption);
|
isImage = fnImage(file.type, caption);
|
||||||
$status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles));
|
$status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles));
|
||||||
$container.addClass('file-thumb-loading');
|
$container.addClass('file-thumb-loading');
|
||||||
|
@ -5349,7 +5325,7 @@
|
||||||
self._errorHandler(evt, caption);
|
self._errorHandler(evt, caption);
|
||||||
};
|
};
|
||||||
reader.onload = function (theFile) {
|
reader.onload = function (theFile) {
|
||||||
var hex, fileInfo, uint, byte, bytes = [], contents, mime, readTextImage = function (textFlag) {
|
var hex, fileInfo, uint, byte, bytes = [], contents, mime, readImage = function () {
|
||||||
var newReader = new FileReader();
|
var newReader = new FileReader();
|
||||||
newReader.onerror = function (theFileNew) {
|
newReader.onerror = function (theFileNew) {
|
||||||
self._errorHandler(theFileNew, caption);
|
self._errorHandler(theFileNew, caption);
|
||||||
|
@ -5368,11 +5344,7 @@
|
||||||
self._initFileActions();
|
self._initFileActions();
|
||||||
processFileLoaded();
|
processFileLoaded();
|
||||||
};
|
};
|
||||||
if (textFlag) {
|
newReader.readAsDataURL(file);
|
||||||
newReader.readAsText(file, self.textEncoding);
|
|
||||||
} else {
|
|
||||||
newReader.readAsDataURL(file);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
fileInfo = {'name': caption, 'type': file.type};
|
fileInfo = {'name': caption, 'type': file.type};
|
||||||
$.each(settings, function (k, f) {
|
$.each(settings, function (k, f) {
|
||||||
|
@ -5393,12 +5365,9 @@
|
||||||
mime = $h.isSvg(contents) ? 'image/svg+xml' : $h.getMimeType(hex, contents, file.type);
|
mime = $h.isSvg(contents) ? 'image/svg+xml' : $h.getMimeType(hex, contents, file.type);
|
||||||
}
|
}
|
||||||
fileInfo = {'name': caption, 'type': mime};
|
fileInfo = {'name': caption, 'type': mime};
|
||||||
isText = fnText(mime, '');
|
|
||||||
isHtml = fnHtml(mime, '');
|
|
||||||
isImage = fnImage(mime, '');
|
isImage = fnImage(mime, '');
|
||||||
txtFlag = isText || isHtml;
|
if (isImage) {
|
||||||
if (txtFlag || isImage) {
|
readImage(txtFlag);
|
||||||
readTextImage(txtFlag);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5431,14 +5400,10 @@
|
||||||
}, self.processDelay);
|
}, self.processDelay);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (isText || isHtml) {
|
if (isImage) {
|
||||||
reader.readAsText(file, self.textEncoding);
|
reader.readAsDataURL(file);
|
||||||
} else {
|
} else {
|
||||||
if (isImage) {
|
reader.readAsArrayBuffer(file);
|
||||||
reader.readAsDataURL(file);
|
|
||||||
} else {
|
|
||||||
reader.readAsArrayBuffer(file);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5831,7 +5796,6 @@
|
||||||
frameClass: 'krajee-default',
|
frameClass: 'krajee-default',
|
||||||
mainClass: 'file-caption-main',
|
mainClass: 'file-caption-main',
|
||||||
mainTemplate: null,
|
mainTemplate: null,
|
||||||
purifyHtml: true,
|
|
||||||
fileSizeGetter: null,
|
fileSizeGetter: null,
|
||||||
initialCaption: '',
|
initialCaption: '',
|
||||||
initialPreview: [],
|
initialPreview: [],
|
||||||
|
@ -5939,7 +5903,7 @@
|
||||||
resizeQuality: 0.92,
|
resizeQuality: 0.92,
|
||||||
resizeDefaultImageType: 'image/jpeg',
|
resizeDefaultImageType: 'image/jpeg',
|
||||||
resizeIfSizeMoreThan: 0, // in KB
|
resizeIfSizeMoreThan: 0, // in KB
|
||||||
minFileSize: 0,
|
minFileSize: -1,
|
||||||
maxFileSize: 0,
|
maxFileSize: 0,
|
||||||
maxFilePreviewSize: 25600, // 25 MB
|
maxFilePreviewSize: 25600, // 25 MB
|
||||||
minFileCount: 0,
|
minFileCount: 0,
|
||||||
|
@ -5949,11 +5913,11 @@
|
||||||
msgValidationErrorClass: 'text-danger',
|
msgValidationErrorClass: 'text-danger',
|
||||||
msgValidationErrorIcon: '<i class="glyphicon glyphicon-exclamation-sign"></i> ',
|
msgValidationErrorIcon: '<i class="glyphicon glyphicon-exclamation-sign"></i> ',
|
||||||
msgErrorClass: 'file-error-message',
|
msgErrorClass: 'file-error-message',
|
||||||
progressThumbClass: 'progress-bar progress-bar-striped active',
|
progressThumbClass: 'progress-bar progress-bar-striped active progress-bar-animated',
|
||||||
progressClass: 'progress-bar bg-success progress-bar-success progress-bar-striped active',
|
progressClass: 'progress-bar bg-success progress-bar-success progress-bar-striped active progress-bar-animated',
|
||||||
progressInfoClass: 'progress-bar bg-info progress-bar-info progress-bar-striped active',
|
progressInfoClass: 'progress-bar bg-info progress-bar-info progress-bar-striped active progress-bar-animated',
|
||||||
progressCompleteClass: 'progress-bar bg-success progress-bar-success',
|
progressCompleteClass: 'progress-bar bg-success progress-bar-success',
|
||||||
progressPauseClass: 'progress-bar bg-primary progress-bar-primary progress-bar-striped active',
|
progressPauseClass: 'progress-bar bg-primary progress-bar-primary progress-bar-striped active progress-bar-animated',
|
||||||
progressErrorClass: 'progress-bar bg-danger progress-bar-danger',
|
progressErrorClass: 'progress-bar bg-danger progress-bar-danger',
|
||||||
progressUploadThreshold: 99,
|
progressUploadThreshold: 99,
|
||||||
previewFileType: 'image',
|
previewFileType: 'image',
|
||||||
|
@ -5970,6 +5934,7 @@
|
||||||
fileActionSettings: {},
|
fileActionSettings: {},
|
||||||
otherActionButtons: '',
|
otherActionButtons: '',
|
||||||
textEncoding: 'UTF-8',
|
textEncoding: 'UTF-8',
|
||||||
|
preProcessUpload: null,
|
||||||
ajaxSettings: {},
|
ajaxSettings: {},
|
||||||
ajaxDeleteSettings: {},
|
ajaxDeleteSettings: {},
|
||||||
showAjaxErrorDetails: true,
|
showAjaxErrorDetails: true,
|
||||||
|
@ -6071,7 +6036,7 @@
|
||||||
close: 'Close detailed preview'
|
close: 'Close detailed preview'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.fileinputLocales.zh = {
|
$.fn.fileinputLocales.zh = {
|
||||||
fileSingle: '文件',
|
fileSingle: '文件',
|
||||||
filePlural: '个文件',
|
filePlural: '个文件',
|
||||||
|
@ -6088,13 +6053,14 @@
|
||||||
msgNoFilesSelected: '未选择文件',
|
msgNoFilesSelected: '未选择文件',
|
||||||
msgPaused: 'Paused',
|
msgPaused: 'Paused',
|
||||||
msgCancelled: '取消',
|
msgCancelled: '取消',
|
||||||
msgPlaceholder: '选择 {files}...',
|
msgPlaceholder: '选择 {files} ...',
|
||||||
msgZoomModalHeading: '详细预览',
|
msgZoomModalHeading: '详细预览',
|
||||||
msgFileRequired: '必须选择一个文件上传.',
|
msgFileRequired: '必须选择一个文件上传.',
|
||||||
msgSizeTooSmall: '文件 "{name}" (<b>{size} KB</b>) 必须大于限定大小 <b>{minSize} KB</b>.',
|
msgSizeTooSmall: '文件 "{name}" (<b>{size} KB</b>) 必须大于限定大小 <b>{minSize} KB</b>.',
|
||||||
msgSizeTooLarge: '文件 "{name}" (<b>{size} KB</b>) 超过了允许大小 <b>{maxSize} KB</b>.',
|
msgSizeTooLarge: '文件 "{name}" (<b>{size} KB</b>) 超过了允许大小 <b>{maxSize} KB</b>.',
|
||||||
msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
|
msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
|
||||||
msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
|
msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
|
||||||
|
msgTotalFilesTooMany: 'You can upload a maximum of <b>{m}</b> files (<b>{n}</b> files detected).',
|
||||||
msgFileNotFound: '文件 "{name}" 未找到!',
|
msgFileNotFound: '文件 "{name}" 未找到!',
|
||||||
msgFileSecured: '安全限制,为了防止读取文件 "{name}".',
|
msgFileSecured: '安全限制,为了防止读取文件 "{name}".',
|
||||||
msgFileNotReadable: '文件 "{name}" 不可读.',
|
msgFileNotReadable: '文件 "{name}" 不可读.',
|
||||||
|
@ -6114,10 +6080,10 @@
|
||||||
'object': 'object'
|
'object': 'object'
|
||||||
},
|
},
|
||||||
msgUploadAborted: '该文件上传被中止',
|
msgUploadAborted: '该文件上传被中止',
|
||||||
msgUploadThreshold: '处理中...',
|
msgUploadThreshold: '处理中 …',
|
||||||
msgUploadBegin: '正在初始化...',
|
msgUploadBegin: '正在初始化 …',
|
||||||
msgUploadEnd: '完成',
|
msgUploadEnd: '完成',
|
||||||
msgUploadResume: 'Resuming upload...',
|
msgUploadResume: 'Resuming upload …',
|
||||||
msgUploadEmpty: '无效的文件上传.',
|
msgUploadEmpty: '无效的文件上传.',
|
||||||
msgUploadError: 'Upload Error',
|
msgUploadError: 'Upload Error',
|
||||||
msgDeleteError: 'Delete Error',
|
msgDeleteError: 'Delete Error',
|
||||||
|
@ -6158,7 +6124,7 @@
|
||||||
indicatorSuccessTitle: '上传',
|
indicatorSuccessTitle: '上传',
|
||||||
indicatorErrorTitle: '上传错误',
|
indicatorErrorTitle: '上传错误',
|
||||||
indicatorPausedTitle: 'Upload Paused',
|
indicatorPausedTitle: 'Upload Paused',
|
||||||
indicatorLoadingTitle: '上传 ...'
|
indicatorLoadingTitle: '上传 …'
|
||||||
},
|
},
|
||||||
previewZoomButtonTitles: {
|
previewZoomButtonTitles: {
|
||||||
prev: '预览上一个文件',
|
prev: '预览上一个文件',
|
||||||
|
@ -6169,7 +6135,7 @@
|
||||||
close: '关闭当前预览'
|
close: '关闭当前预览'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.fileinput.Constructor = FileInput;
|
$.fn.fileinput.Constructor = FileInput;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -110,10 +110,10 @@
|
||||||
|
|
||||||
<!-- fileinput文件上传插件 -->
|
<!-- fileinput文件上传插件 -->
|
||||||
<div th:fragment="bootstrap-fileinput-css">
|
<div th:fragment="bootstrap-fileinput-css">
|
||||||
<link th:href="@{/ajax/libs/bootstrap-fileinput/fileinput.min.css}" rel="stylesheet"/>
|
<link th:href="@{/ajax/libs/bootstrap-fileinput/fileinput.min.css?v=20201202}" rel="stylesheet"/>
|
||||||
</div>
|
</div>
|
||||||
<div th:fragment="bootstrap-fileinput-js">
|
<div th:fragment="bootstrap-fileinput-js">
|
||||||
<script th:src="@{/ajax/libs/bootstrap-fileinput/fileinput.min.js}"></script>
|
<script th:src="@{/ajax/libs/bootstrap-fileinput/fileinput.min.js?v=20201202}"></script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- duallistbox双列表框插件 -->
|
<!-- duallistbox双列表框插件 -->
|
||||||
|
|
Loading…
Reference in New Issue