KFNS#36330 Je kunt nu bestanden slepen in de bijlagen modal/pop-up
svn path=/Website/trunk/; revision=37614
This commit is contained in:
@@ -149,7 +149,60 @@ if (fso.FolderExists(params.AttachPath))
|
||||
<HEAD>
|
||||
<% FCLTHeader.Generate(); %>
|
||||
<script type="text/javascript">
|
||||
|
||||
window.return_data = {};
|
||||
var looseFiles = [];
|
||||
var isAdvancedUpload = function() {
|
||||
var div = document.createElement('div');
|
||||
return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;
|
||||
}();
|
||||
|
||||
$(function() {
|
||||
|
||||
$body = $("body#mod_bijlagen");
|
||||
if (isAdvancedUpload) {
|
||||
|
||||
$body.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
})
|
||||
.on('dragover dragenter', function() {
|
||||
$body.css("opacity", "0.5");
|
||||
})
|
||||
.on('dragleave dragend drop', function() {
|
||||
$body.css("opacity", "inherit");
|
||||
})
|
||||
.on('drop', function(e) {
|
||||
addFiles(e.originalEvent.dataTransfer);
|
||||
});
|
||||
}
|
||||
|
||||
// Does not work in IE 11
|
||||
$(document).on("paste", function (e)
|
||||
{
|
||||
var data = (e.originalEvent || e).clipboardData;
|
||||
|
||||
if (data.items.length && data.items[0].type.indexOf("image") !== -1)
|
||||
addFiles(data.items[0], "paste");
|
||||
});
|
||||
});
|
||||
|
||||
function addFiles(fileInput, source)
|
||||
{
|
||||
if (source == "paste")
|
||||
{
|
||||
looseFiles = [fileInput.getAsFile()]; // List of File instead of FileList
|
||||
document.getElementById("displayFilename").innerHTML = fileInput.getAsFile().name
|
||||
FcltMgr.resized();
|
||||
iface.button[looseFiles.length ? 'enable' : 'disable' ]('btn_upload_submit');
|
||||
}
|
||||
else
|
||||
{
|
||||
looseFiles = $.extend(true, {}, fileInput.files);
|
||||
displayFilename(fileInput);
|
||||
iface.button[fileInput.files && fileInput.files.length ? 'enable' : 'disable' ]('btn_upload_submit');
|
||||
}
|
||||
}
|
||||
|
||||
function FindFile(fname)
|
||||
{
|
||||
@@ -170,52 +223,106 @@ if (fso.FolderExists(params.AttachPath))
|
||||
});
|
||||
}
|
||||
|
||||
function doSubmitUpload()
|
||||
function validateFile(file)
|
||||
{
|
||||
if (document.forms.u2.imgfile.value == "")
|
||||
return false;
|
||||
// TODO: Met FireFox kun je clientside de max-grootte controleren via
|
||||
// document.getElementById('imgfile').files[0].fileSize
|
||||
// IE ondersteunt dat helaas niet dus nog niet geimplementeerd.
|
||||
<% if (params.extFilter) { %>
|
||||
if (!new RegExp("<%=safe.jsstring(regFilter)%>", "ig").test(document.forms.u2.imgfile.value))
|
||||
// Controleer extenties
|
||||
<% if (params.extFilter) { %>
|
||||
if (!new RegExp("<%=safe.jsstring(regFilter)%>", "ig").test(file.name))
|
||||
{
|
||||
FcltMgr.alert(L("lcl_shared_file_ext_invalid_start") + "<%=safe.jsstring(params.extFilter)%>" + L("lcl_shared_file_ext_invalid_end"));
|
||||
return false;
|
||||
}
|
||||
<% } %>
|
||||
if (!new RegExp("<%=safe.jsstring(S("flexAllowedExt"))%>", "ig").test(document.forms.u2.imgfile.value))
|
||||
<% } %>
|
||||
if (!new RegExp("<%=safe.jsstring(S("flexAllowedExt"))%>", "ig").test(file.name))
|
||||
{
|
||||
FcltMgr.alert(L("lcl_shared_file_ext_not_allowed"));
|
||||
return false;
|
||||
}
|
||||
// Controleer of de te uploaden bestand al bestaat.
|
||||
var uName = document.forms.u2.imgfile.value.replace(/\\/g,"/").split("/");
|
||||
var fName = uName[uName.length-1];
|
||||
var fTable = document.getElementById("filetable");
|
||||
var fRow = fTable.getElementsByTagName("A");
|
||||
var equal = false;
|
||||
for(var i=0; i<fRow.length; i++)
|
||||
|
||||
<% if (S("asp_max_upload") > 0) { %>
|
||||
// Controleer maximale grootte
|
||||
if (file.size > <%=S("asp_max_upload")%>)
|
||||
{
|
||||
FcltMgr.alert(L("lcl_shared_size_exceeded").format(file.name, "<%=S("asp_max_upload")%>"));
|
||||
return false;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function doSubmitUpload()
|
||||
{
|
||||
|
||||
if (document.forms.u2.imgfile.value == "" && !looseFiles.length)
|
||||
return false;
|
||||
|
||||
var fileList = looseFiles.length ? looseFiles : document.forms.u2.imgfile.files;
|
||||
|
||||
// File(s) valideren
|
||||
for (var i = 0; i < fileList.length; i++)
|
||||
{
|
||||
var tName = fRow[i].innerHTML.replace(/^\s+|\s+$/g,""); // spaties ervoor en erachter verwijderen.
|
||||
equal = tName.toLowerCase() == fName.toLowerCase();
|
||||
if (equal)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (!validateFile(fileList[i]))
|
||||
return false;
|
||||
}
|
||||
|
||||
FcltMgr.confirm(L('lcl_shared_file_replace').format(tName),
|
||||
{ autoconfirm: !equal,
|
||||
// Controleer of de te uploaden bestand al bestaat.
|
||||
var tName = "";
|
||||
var equals = [];
|
||||
var fTable = document.getElementById("filetable");
|
||||
var fRow = fTable.getElementsByTagName("A");
|
||||
if (fRow.length)
|
||||
for (var x = 0; x < fileList.length; x++)
|
||||
{
|
||||
for(var y = 0; y < fRow.length; y++)
|
||||
{
|
||||
tName = fRow[y].innerHTML.replace(/^\s+|\s+$/g,""); // spaties ervoor en erachter verwijderen.
|
||||
fName = fileList[x].name.toLowerCase();
|
||||
if (tName.toLowerCase() == fName)
|
||||
{
|
||||
equals.push(tName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FcltMgr.confirm((equals.length > 1 ? L('lcl_shared_files_replace') : L('lcl_shared_file_replace')).format(equals.join(", ")),
|
||||
{ autoconfirm: !equals.length,
|
||||
fncancel: function() { /* geen actie bij confirm=cancel */ }
|
||||
},
|
||||
function()
|
||||
{ // confirm=OK
|
||||
$("#uploading").show();
|
||||
FcltMgr.resized();
|
||||
document.forms.u2.action = "<%=protectQS.create("UploadForm_save.asp?action=insert"+transitParam)%>"
|
||||
document.forms.u2.submit();
|
||||
}
|
||||
{ // confirm=OK
|
||||
$("#uploading").show();
|
||||
FcltMgr.resized();
|
||||
|
||||
document.forms.u2.action = "<%=protectQS.create("UploadForm_save.asp?action=insert"+transitParam)%>";
|
||||
|
||||
if (looseFiles.length)
|
||||
{
|
||||
$form = $("form[name=u2]");
|
||||
var ajaxData = new FormData();
|
||||
ajaxData.append("<%=protectRequest.theVar%>", "<%=safe.htmlattr(protectRequest.theToken())%>");
|
||||
|
||||
for (var i = 0; i < looseFiles.length; i++)
|
||||
ajaxData.append("imgfile", looseFiles[i]);
|
||||
|
||||
$.ajax({
|
||||
url: $form.attr('action'),
|
||||
type: $form.attr('method'),
|
||||
data: ajaxData,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function(data, textStatus, jqXHR) {
|
||||
var iFrame = $("#hidFrameUpload")[0].contentWindow.document;
|
||||
var $body = $("body", iFrame);
|
||||
$body.html(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
document.forms.u2.submit();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -251,6 +358,7 @@ if (fso.FolderExists(params.AttachPath))
|
||||
window.return_data.org_data=FcltMgr.dialogArguments();
|
||||
FcltMgr.closeDetail(window, return_data);
|
||||
}
|
||||
|
||||
</script>
|
||||
</HEAD>
|
||||
|
||||
@@ -328,7 +436,7 @@ if (fso.FolderExists(params.AttachPath))
|
||||
<label for="file-upload" class="uploadbutton"><i class="fa fa-upload fa-lg"> </i><%=L("lcl_select_file")%></label>
|
||||
<div id="displayFilename" style="display: block"></div>
|
||||
<% if (params.extFilter) { Response.Write("(" + safe.html(params.extFilter) + ")"); } %>
|
||||
<input id="file-upload" type="file" <%=isMultiple%> name="imgfile" style="width: 95%" onchange="displayFilename(this);iface.button[this.value?'enable':'disable']('btn_upload_submit')">
|
||||
<input id="file-upload" type="file" <%=isMultiple%> name="imgfile" style="width: 95%" onchange="looseFiles=[];displayFilename(this);iface.button[this.value?'enable':'disable']('btn_upload_submit')">
|
||||
<div id="uploading" style="display:none">
|
||||
Please wait...
|
||||
</div>
|
||||
|
||||
@@ -82,12 +82,15 @@ var fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||
__Log("Upload file: " + name + " is safe: " + safename);
|
||||
|
||||
// iPad/IPhone uploaden directe foto altijd als 'Image.jpg' wat erg lastig is
|
||||
if (safename.match(/image.jpg/i) || safename.match(/image.jpeg/i) || safename.match(/image.png/i))
|
||||
if (safename.match(/image.jpg/i) || safename.match(/image.jpeg/i) || safename.match(/image.png/i) ||
|
||||
safename.match(/afbeelding.jpg/i) || safename.match(/afbeelding.jpeg/i) || safename.match(/afbeelding.png/i))
|
||||
{
|
||||
// Bij gelijktijdig uploaden van bestanden is een timestamp op seconde niet toereikend.
|
||||
// We doen de teller er ook nog maar bij.
|
||||
var ext = safename.split(".")[safename.split(".").length - 1];
|
||||
safename = "Image_{0}{1}.{2}".format(iso8601Date(new Date), counter>0?"_" + counter:"", ext);
|
||||
var fileName = safename.split(".");
|
||||
var ext = fileName[fileName.length-1];
|
||||
fileName = fileName.slice(0, -1).join(".");
|
||||
safename = fileName + "_{0}{1}.{2}".format(iso8601Date(new Date), counter>0?"_" + counter:"", ext);
|
||||
__Log("-->Ios: " + safename);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user