1 namespace('kivi.File', function(ns) {
 
   3   ns.rename = function(id,type,file_type,checkbox_class,is_global) {
 
   4     var $dlg       = $('#rename_dialog_'+file_type);
 
   5     var parent_id  = $dlg.parent("div.ui-tabs-panel").attr('id');
 
   6     var checkboxes = $('.'+checkbox_class).filter(function () { return  $(this).prop('checked'); });
 
   8     if (checkboxes.size() === 0) {
 
   9       alert(kivi.t8("No file selected, please set one checkbox!"));
 
  12     if (checkboxes.size() > 1) {
 
  13       alert(kivi.t8("More than one file selected, please set only one checkbox!"));
 
  16     var file_id = checkboxes[0].value;
 
  17     $('#newfilename_id_'+file_type).val($('#filename_'+file_id).text());
 
  18     $('#next_ids_id_'+file_type).val('');
 
  19     $('#is_global_id_'+file_type).val(is_global);
 
  20     $('#rename_id_id_'+file_type).val(file_id);
 
  21     $('#sessionfile_id_'+file_type).val('');
 
  22     $('#rename_extra_text_'+file_type).html('');
 
  24                       id:     'rename_dialog_'+file_type,
 
  25                       dialog: { title: kivi.t8("Rename attachment")
 
  30                                  $dlg.remove().appendTo('#' + parent_id);
 
  37   ns.renameclose = function(file_type) {
 
  38     $("#rename_dialog_"+file_type).dialog('close');
 
  42   ns.renameaction = function(file_type) {
 
  43     $("#rename_dialog_"+file_type).dialog('close');
 
  45       action:          'File/ajax_rename',
 
  46       id:              $('#rename_id_id_'+file_type).val(),
 
  47       to:              $('#newfilename_id_'+file_type).val(),
 
  48       next_ids:        $('#next_ids_id_'+file_type).val(),
 
  49       is_global:       $('#is_global_id_'+file_type).val(),
 
  50       sessionfile:     $('#sessionfile_id_'+file_type).val(),
 
  52     $.post("controller.pl", data, kivi.eval_json_result);
 
  56   ns.askForRename = function(file_id,file_type,file_name,sessionfile,next_ids,is_global) {
 
  57     $('#newfilename_id_'+file_type).val(file_name);
 
  58     $('#rename_id_id_'+file_type).val(file_id);
 
  59     $('#is_global_id_'+file_type).val(is_global);
 
  60     $('#next_ids_id_'+file_type).val(next_ids);
 
  61     $('#sessionfile_id_'+file_type).val(sessionfile);
 
  62     $('#rename_extra_text_'+file_type).html(kivi.t8("The uploaded filename still exists.<br>If you not modify the name this is a new version of the file"));
 
  63     var $dlg       = $('#rename_dialog_'+file_type);
 
  64     var parent_id  = $dlg.parent("div.ui-tabs-panel").attr('id');
 
  67         id:     'rename_dialog_'+file_type,
 
  68         dialog: { title: kivi.t8("Rename attachment")
 
  73                     $dlg.remove().appendTo('#' + parent_id);
 
  79   ns.upload = function(id,type,filetype,upload_title,gl) {
 
  80     kivi.popup_dialog({ url:     'controller.pl',
 
  81                         data:    { action: 'File/ajax_upload',
 
  88                         dialog: { title: upload_title, width: 650, height: 240 } });
 
  92   ns.reset_upload_form = function() {
 
  93       $('#attachment_updfile').val('');
 
  94       $("#upload_result").html('');
 
  95       ns.allow_upload_submit();
 
  98   ns.allow_upload_submit = function() {
 
  99       $('#upload_selected_button').prop('disabled',$('#upload_files').val() === '');
 
 102   ns.upload_selected_files = function(id,type,filetype,maxsize,is_global) {
 
 103       var myform = document.getElementById("upload_form");
 
 105       var myfiles = document.getElementById("upload_files").files;
 
 106       for ( i=0; i < myfiles.length; i++ ) {
 
 109               filesize  += myfiles[i].size;
 
 110               fname = encodeURIComponent(myfiles[i].name);
 
 115                   fname = myfiles[i].name;
 
 117               catch(err2) { fname ='';}
 
 118               $("#upload_result").html(kivi.t8("filename has not uploadable characters ")+fname);
 
 122       if ( filesize > maxsize ) {
 
 123           $("#upload_result").html(kivi.t8("filesize too big: ")+
 
 124                                    filesize+ kivi.t8(" bytes, max=") + maxsize );
 
 128       myform.action ="controller.pl?action=File/ajax_files_uploaded&json=1&object_type="+
 
 129           type+'&object_id='+id+'&file_type='+filetype+'&is_global='+is_global;
 
 130       var oReq = new XMLHttpRequest();
 
 131       oReq.onload            = ns.attSuccess;
 
 132       oReq.upload.onprogress = ns.attProgress;
 
 133       oReq.upload.onerror    = ns.attFailed;
 
 134       oReq.upload.onabort    = ns.attCanceled;
 
 135       oReq.open("post",myform.action, true);
 
 136       $("#upload_result").html(kivi.t8("start upload"));
 
 137       oReq.send(new FormData(myform));
 
 140   ns.attProgress = function(oEvent) {
 
 141       if (oEvent.lengthComputable) {
 
 142           var percentComplete = (oEvent.loaded / oEvent.total) * 100;
 
 143           $("#upload_result").html(percentComplete+" % "+ kivi.t8("uploaded"));
 
 147   ns.attFailed = function(evt) {
 
 148       $('#files_upload').dialog('close');
 
 149       $("#upload_result").html(kivi.t8("An error occurred while transferring the file."));
 
 152   ns.attCanceled = function(evt) {
 
 153       $('#files_upload').dialog('close');
 
 154       $("#upload_result").html(kivi.t8("The transfer has been canceled by the user."));
 
 157   ns.attSuccess = function() {
 
 158       $('#files_upload').dialog('close');
 
 159       kivi.eval_json_result(jQuery.parseJSON(this.response));
 
 162   ns.delete = function(id,type,file_type,checkbox_class,is_global) {
 
 163     var checkboxes = $('.'+checkbox_class).filter(function () { return  $(this).prop('checked'); });
 
 165     if ((checkboxes.size() === 0) ||
 
 166         !confirm(kivi.t8('Do you really want to delete the selected documents?')))
 
 169       action     :  'File/ajax_delete',
 
 172       file_type  :  file_type,
 
 173       ids        :  checkbox_class,
 
 174       is_global  :  is_global,
 
 176     $.post("controller.pl?" + checkboxes.serialize(), data, kivi.eval_json_result);
 
 180   ns.delete_file = function(id,controller_action) {
 
 181     $.post('controller.pl', { action: controller_action, id: id }, function(data) {
 
 182       kivi.eval_json_result(data);
 
 186   ns.unimport = function(id,type,file_type,checkbox_class) {
 
 187     var checkboxes = $('.'+checkbox_class).filter(function () { return  $(this).prop('checked'); });
 
 189     if ((checkboxes.size() === 0) ||
 
 190         !confirm(kivi.t8('Do you really want to unimport the selected documents?')))
 
 193       action     :  'File/ajax_unimport',
 
 196       file_type  :  file_type,
 
 197       ids        :  checkbox_class,
 
 199     $.post("controller.pl?" + checkboxes.serialize(), data, kivi.eval_json_result);
 
 203   ns.update = function(id,type,file_type,is_global) {
 
 209       file_type:    file_type,
 
 213     $.post("controller.pl", data, kivi.eval_json_result);
 
 217   ns.import = function (id,type,file_type,fromwhere,frompath) {
 
 218     kivi.popup_dialog({ url:     'controller.pl',
 
 219                         data:    { action      : 'File/ajax_importdialog',
 
 223                                    file_type   : file_type,
 
 227                         dialog: { title: kivi.t8('Import documents from #1',[fromwhere]), width: 420, height: 540 }
 
 232   ns.importclose = function() {
 
 233     $("#import_dialog").dialog('close');
 
 237   ns.importaction = function(id,type,file_type,fromwhere,frompath,checkbox_class) {
 
 238     var checkboxes = $('.'+checkbox_class).filter(function () { return  $(this).prop('checked'); });
 
 240     $("#import_dialog").dialog('close');
 
 241     if (checkboxes.size() === 0) {
 
 245         action     : 'File/ajax_import',
 
 248         file_type  : file_type,
 
 253     $.post("controller.pl?" + checkboxes.serialize(), data, kivi.eval_json_result);
 
 257   ns.downloadOrderitemsFiles = function(type,id) {
 
 259       action:       'DownloadZip/download_orderitems_files',
 
 262       element_type: 'part',
 
 263       zipname:      'Order_Files_'+id,
 
 265     $.download("controller.pl", data);
 
 269   ns.init = function() {