X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=js%2Fkivi.File.js;h=63a85346c7a6c5f21ce8dd17aa87c92543539994;hb=958b82d600cebec78ff208257b1fd348ee0439bf;hp=b02d7d0ff6a177e19e60b9c9025929943b886eb2;hpb=69e526ee5cfc3d153f738083b397a000c00c4468;p=kivitendo-erp.git diff --git a/js/kivi.File.js b/js/kivi.File.js index b02d7d0ff..63a85346c 100644 --- a/js/kivi.File.js +++ b/js/kivi.File.js @@ -1,76 +1,85 @@ namespace('kivi.File', function(ns) { + ns.list_div_id = undefined; ns.rename = function(id,type,file_type,checkbox_class,is_global) { - var $dlg = $('#rename_dialog'); + var $dlg = $('#rename_dialog_'+file_type); var parent_id = $dlg.parent("div.ui-tabs-panel").attr('id'); var checkboxes = $('.'+checkbox_class).filter(function () { return $(this).prop('checked'); }); if (checkboxes.size() === 0) { - alert(kivi.t8("No file selected, please set one checkbox!")); - return false; - } + alert(kivi.t8("No file selected, please set one checkbox!")); + return false; + } if (checkboxes.size() > 1) { - alert(kivi.t8("More than one file selected, please set only one checkbox!")); - return false; - } + alert(kivi.t8("More than one file selected, please set only one checkbox!")); + return false; + } var file_id = checkboxes[0].value; - $('#newfilename_id').val($('#filename_'+file_id).text()); - $('#next_ids_id').val(''); - $('#is_global_id').val(is_global); - $('#rename_id_id').val(file_id); - $('#sessionfile_id').val(''); - $('#rename_extra_text').html(''); + $('#newfilename_id_'+file_type).val($('#filename_'+file_id).text()); + $('#next_ids_id_'+file_type).val(''); + $('#is_global_id_'+file_type).val(is_global); + $('#rename_id_id_'+file_type).val(file_id); + $('#sessionfile_id_'+file_type).val(''); + $('#rename_extra_text_'+file_type).html(''); kivi.popup_dialog({ - id: 'rename_dialog', + id: 'rename_dialog_'+file_type, dialog: { title: kivi.t8("Rename attachment") , width: 400 , height: 200 , modal: true , close: function() { - console.log("Closing, moving to original parent " + parent_id); $dlg.remove().appendTo('#' + parent_id); } - } }); + } + }); return true; } - ns.renameclose = function() { - $("#rename_dialog").dialog('close'); + ns.renameclose = function(file_type) { + $("#rename_dialog_"+file_type).dialog('close'); return false; } - ns.renameaction = function() { - $("#rename_dialog").dialog('close'); + ns.renameaction = function(file_type) { + $("#rename_dialog_"+file_type).dialog('close'); var data = { action: 'File/ajax_rename', - id: $('#rename_id_id').val(), - to: $('#newfilename_id').val(), - next_ids: $('#next_ids_id').val(), - is_global: $('#is_global_id').val(), - sessionfile: $('#sessionfile_id').val(), + id: $('#rename_id_id_'+file_type).val(), + to: $('#newfilename_id_'+file_type).val(), + next_ids: $('#next_ids_id_'+file_type).val(), + is_global: $('#is_global_id_'+file_type).val(), + sessionfile: $('#sessionfile_id_'+file_type).val(), }; $.post("controller.pl", data, kivi.eval_json_result); return true; } - ns.askForRename = function(file_id,file_name,sessionfile,next_ids,is_global) { - $('#newfilename_id').val(file_name); - $('#rename_id_id').val(file_id); - $('#is_global_id').val(is_global); - $('#next_ids_id').val(next_ids); - $('#sessionfile_id').val(sessionfile); - $('#rename_extra_text').html(kivi.t8("The uploaded filename still exists.
If you not modify the name this is a new version of the file")); + ns.askForRename = function(file_id,file_type,file_name,sessionfile,next_ids,is_global) { + $('#newfilename_id_'+file_type).val(file_name); + $('#rename_id_id_'+file_type).val(file_id); + $('#is_global_id_'+file_type).val(is_global); + $('#next_ids_id_'+file_type).val(next_ids); + $('#sessionfile_id_'+file_type).val(sessionfile); + $('#rename_extra_text_'+file_type).html(kivi.t8("The uploaded filename still exists.
If you not modify the name this is a new version of the file")); + var $dlg = $('#rename_dialog_'+file_type); + var parent_id = $dlg.parent("div.ui-tabs-panel").attr('id'); kivi.popup_dialog( { - id: 'rename_dialog', + id: 'rename_dialog_'+file_type, dialog: { title: kivi.t8("Rename attachment") , width: 400 , height: 200 - , modal: true } - }); + , modal: true + , close: function() { + $dlg.remove().appendTo('#' + parent_id); + } } + } + ); } ns.upload = function(id,type,filetype,upload_title,gl) { + $('#upload_status_dialog').remove(); + kivi.popup_dialog({ url: 'controller.pl', data: { action: 'File/ajax_upload', file_type: filetype, @@ -90,13 +99,35 @@ namespace('kivi.File', function(ns) { } ns.allow_upload_submit = function() { - $('#upload_selected_button').prop('disabled',$('#upload_files').val() === ''); + const disable = $('#upload_files').val() === ''; + $('#upload_selected_button').prop('disabled', disable) + .toggleClass('disabled', disable); } + ns.upload_status_dialog = function() { + $('#files_upload').remove(); + $('#upload_status_dialog').remove(); + + var html = '

'; + html = html + '

'; + html = html + '

'; + $(html).hide().appendTo('#' + ns.list_div_id); + + kivi.popup_dialog({id: 'upload_status_dialog', + dialog: {title: kivi.t8('Upload Status'), + height: 200, + width: 650 }}); + }; + ns.upload_selected_files = function(id,type,filetype,maxsize,is_global) { var myform = document.getElementById("upload_form"); - var filesize = 0; var myfiles = document.getElementById("upload_files").files; + + ns.upload_files(id, type, filetype, maxsize,is_global, myfiles, myform); + } + + ns.upload_files = function(id, type, filetype, maxsize, is_global, myfiles, myform) { + var filesize = 0; for ( i=0; i < myfiles.length; i++ ) { var fname =''; try { @@ -119,16 +150,27 @@ namespace('kivi.File', function(ns) { return; } - myform.action ="controller.pl?action=File/ajax_files_uploaded&json=1&object_type="+ - type+'&object_id='+id+'&file_type='+filetype+'&is_global='+is_global; + var fd = new FormData(myform); + if (!myform) { + $(myfiles).each(function(idx, elt) { + fd.append('uploadfiles[+]', elt); + }); + } + fd.append('action', 'File/ajax_files_uploaded'); + fd.append('json', 1); + fd.append('object_type', type); + fd.append('object_id', id); + fd.append('file_type', filetype); + fd.append('is_global', is_global); + var oReq = new XMLHttpRequest(); oReq.onload = ns.attSuccess; oReq.upload.onprogress = ns.attProgress; oReq.upload.onerror = ns.attFailed; oReq.upload.onabort = ns.attCanceled; - oReq.open("post",myform.action, true); + oReq.open("post", 'controller.pl', true); $("#upload_result").html(kivi.t8("start upload")); - oReq.send(new FormData(myform)); + oReq.send(fd); } ns.attProgress = function(oEvent) { @@ -149,6 +191,7 @@ namespace('kivi.File', function(ns) { } ns.attSuccess = function() { + $('#upload_status_dialog').dialog('close'); $('#files_upload').dialog('close'); kivi.eval_json_result(jQuery.parseJSON(this.response)); } @@ -171,6 +214,12 @@ namespace('kivi.File', function(ns) { return false; } + ns.delete_file = function(id,controller_action) { + $.post('controller.pl', { action: controller_action, id: id }, function(data) { + kivi.eval_json_result(data); + }); + }; + ns.unimport = function(id,type,file_type,checkbox_class) { var checkboxes = $('.'+checkbox_class).filter(function () { return $(this).prop('checked'); }); @@ -216,20 +265,20 @@ namespace('kivi.File', function(ns) { }); return true; } - + ns.importclose = function() { $("#import_dialog").dialog('close'); return false; } - + ns.importaction = function(id,type,file_type,fromwhere,frompath,checkbox_class) { var checkboxes = $('.'+checkbox_class).filter(function () { return $(this).prop('checked'); }); - $("#import_dialog").dialog('close'); + $("#import_dialog").dialog('close'); if (checkboxes.size() === 0) { - return false; - } - var data = { + return false; + } + var data = { action : 'File/ajax_import', object_id : id, object_type: type, @@ -243,7 +292,7 @@ namespace('kivi.File', function(ns) { } ns.downloadOrderitemsFiles = function(type,id) { - var data = { + var data = { action: 'DownloadZip/download_orderitems_files', object_type: type, object_id: id, @@ -254,7 +303,110 @@ namespace('kivi.File', function(ns) { return false; } + ns.add_enlarged_thumbnail = function(e) { + var file_id = $(e.target).data('file-id'); + var file_version = $(e.target).data('file-version'); + var overlay_img_id = 'enlarged_thumb_' + file_id; + if (file_version) { overlay_img_id = overlay_img_id + '_' + file_version }; + var overlay_img = $('#' + overlay_img_id); + + if (overlay_img.data('is-overlay-shown') == 1) return; + + $('.thumbnail').off('mouseover'); + overlay_img.data('is-overlay-shown', 1); + overlay_img.show(); + + if (overlay_img.data('is-overlay-loaded') == 1) return; + + var data = { + action: 'File/ajax_get_thumbnail', + file_id: file_id, + file_version: file_version, + size: 512 + }; + + $.post("controller.pl", data, kivi.eval_json_result); + }; + + ns.remove_enlarged_thumbnail = function(e) { + $(e.target).hide(); + $(e.target).data('is-overlay-shown', 0); + $('.thumbnail').on('mouseover', ns.add_enlarged_thumbnail); + }; + + ns.download = function(e) { + var file_id = $(e.target).data('file-id'); + var file_version = $(e.target).data('file-version'); + + var data = { + action: 'File/download', + id: file_id, + version: file_version, + }; + + $.post("controller.pl", data, kivi.eval_json_result); + + }; + ns.init = function() { - } + // Preventing page from redirecting + $("#" + ns.list_div_id).on("dragover", function(e) { + e.preventDefault(); + e.stopPropagation(); + }); + + $("#" + ns.list_div_id).on("drop", function(e) { + e.preventDefault(); + e.stopPropagation(); + }); + + // Drag enter + $('.upload_drop_zone').on('dragenter', function (e) { + e.stopPropagation(); + e.preventDefault(); + }); + + // Drag over + $('.upload_drop_zone').on('dragover', function (e) { + e.stopPropagation(); + e.preventDefault(); + }); + + // Drop + $('.upload_drop_zone').on('drop', function (e) { + e.stopPropagation(); + e.preventDefault(); + + ns.upload_status_dialog(); + + var object_type = $(e.target).data('object-type'); + var object_id = $(e.target).data('object-id'); + var file_type = $(e.target).data('file-type'); + var is_global = $(e.target).data('is-global'); + var maxsize = $(e.target).data('maxsize'); + var files = e.originalEvent.dataTransfer.files; + ns.upload_files(object_id, object_type, file_type, maxsize, is_global, files); + }); + + $('.thumbnail').on('mouseover', ns.add_enlarged_thumbnail); + $('.overlay_img').on('mouseout', ns.remove_enlarged_thumbnail); + $('.overlay_div img').on('click', ns.download); + }; + + ns.doc_tab_init = function(tabs_id, doc_tab_id, id, object_type) { + var url = 'controller.pl?action=File/list&file_type=document&object_type=' + object_type + '&object_id=' + $('#id').val(); + + $('#' + tabs_id).on('tabsbeforeactivate', function(e, ui) { + if (ui.newPanel.attr('id') !== doc_tab_id) return; + $('#' + doc_tab_id).html(kivi.t8('Loading...')); + $('#' + doc_tab_id).load(url); + }); + + $('#' + tabs_id).on('tabscreate', function(e, ui) { + if (ui.panel.attr('id') !== doc_tab_id) return; + $('#' + doc_tab_id).html(kivi.t8('Loading...')); + $('#' + doc_tab_id).load(url); + }); + }; });