Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

204 строки
5.3 KiB

  1. // ATTACHMENT - Deprecated!!!
  2. // ======================================================================================
  3. _f.Frm.prototype.setup_attach = function() {
  4. var me = this;
  5. this.attach_area = $a(this.layout ? this.layout.cur_row.wrapper : this.body, 'div', 'attach_area');
  6. $(this.attach_area)
  7. .css('-moz-border-radius','5px')
  8. .css('-webkit-border-radius','5px');
  9. if(!this.meta.max_attachments)
  10. this.meta.max_attachments = 10;
  11. var tab = $a($a(this.attach_area, 'div'), 'table');
  12. tab.insertRow(0);
  13. var label_area = tab.rows[0].insertCell(0);
  14. var main_area = tab.rows[0].insertCell(1);
  15. this.files_area = $a(main_area, 'div');
  16. this.btn_area = $a(main_area, 'div');
  17. $w(label_area, "33%");
  18. var d = $a(label_area, 'div');
  19. //var img = $a(d, 'img', '', {marginRight:'8px'}); img.src = 'images/icons/paperclip.gif';
  20. $a(d, 'span').innerHTML = '<h4>File Attachments:</h4>';
  21. // button
  22. var btn_add_attach = $btn(this.btn_area, '+ Add');
  23. btn_add_attach.onclick = function() {
  24. me.add_attachment();
  25. me.sync_attachments(me.docname);
  26. me.refresh_attachments();
  27. }
  28. }
  29. _f.Frm.prototype.refresh_attachments = function() {
  30. // render attachments
  31. var nattach = 0;
  32. for(var dn in this.attachments) {
  33. for(var i in this.attachments[dn]){
  34. var a = this.attachments[dn][i];
  35. if(a.docname!=this.docname)
  36. a.hide();
  37. else {
  38. a.show();
  39. nattach++;
  40. // show / hide delete button
  41. if(this.perm[0][WRITE] && this.editable && this.doc.docstatus < 1) { $ds(a.delbtn); }
  42. else { $dh(a.delbtn); }
  43. }
  44. }
  45. }
  46. // show / hide "Add" button
  47. if(this.perm[0][WRITE] && cint(this.doc.docstatus)==0) {
  48. if(nattach >= cint(this.meta.max_attachments))
  49. $dh(this.btn_area);
  50. else
  51. $ds(this.btn_area);
  52. } else {
  53. $dh(this.btn_area);
  54. }
  55. }
  56. _f.Frm.prototype.set_attachments = function() {
  57. //if(this.meta.issingle) /// why??
  58. // return;
  59. this.attachments[this.docname] = [];
  60. var atl = locals[this.doctype][this.docname].file_list;
  61. if(atl) {
  62. atl = atl.split('\n');
  63. // add new document attachments
  64. for(var i in atl) {
  65. var a = atl[i].split(',');
  66. var ff = this.add_attachment(a[0], a[1]);
  67. }
  68. }
  69. }
  70. _f.Frm.prototype.add_attachment = function(filename, fileid) {
  71. var at_id = this.attachments[this.docname].length;
  72. var ff = new _f.FileField(this.files_area, at_id, this);
  73. // set name and id if given
  74. if(filename)ff.filename = filename;
  75. if(fileid)ff.fileid = fileid;
  76. ff.docname = this.docname;
  77. this.attachments[this.docname][at_id] = ff;
  78. ff.refresh();
  79. return ff;
  80. }
  81. _f.Frm.prototype.sync_attachments = function(docname) {
  82. var fl = [];
  83. for(var i in this.attachments[docname]) {
  84. var a = this.attachments[docname][i];
  85. fl[fl.length] = a.filename + ',' + a.fileid;
  86. }
  87. locals[this.doctype][docname].file_list = fl.join('\n')
  88. }
  89. // Handling File field
  90. _f.FileField = function(parent, at_id, frm, addlink) {
  91. var me = this;
  92. this.at_id = at_id
  93. this.wrapper = $a(parent, 'div');
  94. var tab = $a(this.wrapper, 'table');
  95. tab.insertRow(0);
  96. var main_area = tab.rows[0].insertCell(0);
  97. var del_area = tab.rows[0].insertCell(1);
  98. // del button
  99. $w(del_area, '20%');
  100. this.delbtn = $a(del_area, 'div', 'link_type');
  101. this.delbtn.innerHTML = 'Remove';
  102. this.remove = function() {
  103. var yn = confirm("The document will be saved after the attachment is deleted for the changes to be permanent. Proceed?")
  104. if(yn) {
  105. var callback = function(r, rt) {
  106. me.wrapper.style.display = 'none';
  107. delete frm.attachments[frm.docname][me.at_id];
  108. frm.sync_attachments(frm.docname);
  109. var ret = frm.save('Save');
  110. if(ret=='Error')
  111. msgprint("error:The document was not saved. To make the removal permanent, you must save the document before closing.");
  112. }
  113. var fid = frm.attachments[frm.docname][me.at_id].fileid;
  114. if(fid) {
  115. $c('webnotes.widgets.form.remove_attach', args = {'fid': fid}, callback );
  116. }
  117. }
  118. }
  119. this.hide = function() { $dh(me.wrapper); }
  120. this.show = function() { $ds(me.wrapper); }
  121. this.delbtn.onclick = this.remove;
  122. // upload
  123. this.upload_div = $a(main_area, 'div');
  124. this.download_div = $a(main_area, 'div');
  125. this.uploader = new Uploader(this.upload_div,{from_form:1, doctype:frm.doctype, docname:frm.docname, at_id:at_id},_f.file_upload_done);
  126. // download
  127. this.download_link = $a(this.download_div, 'a', 'link_type');
  128. // fresh
  129. this.refresh = function() {
  130. if (this.filename) {
  131. $dh(this.upload_div);
  132. this.download_link.innerHTML = this.filename;
  133. this.download_link.href = outUrl + '?cmd=get_file&fname='+this.fileid;
  134. this.download_link.target = "_blank";
  135. $ds(this.download_div);
  136. } else {
  137. $ds(this.upload_div);
  138. $dh(this.download_div);
  139. }
  140. }
  141. }
  142. _f.file_upload_done = function(doctype, docname, fileid, filename, at_id) {
  143. var at_id = cint(at_id);
  144. // update file_list
  145. var frm = frms[doctype];
  146. var a = frm.attachments[docname][at_id];
  147. a.filename = filename;
  148. a.fileid = fileid;
  149. frm.sync_attachments(docname);
  150. a.refresh();
  151. var do_save = confirm('File Uploaded Sucessfully. You must save this document for the uploaded file to be registred. Save this document now?');
  152. if(do_save) {
  153. var ret = frm.save('Save');
  154. if(ret=='Error')msgprint("error:The document was not saved. To make the attachment permanent, you must save the document before closing.");
  155. } else {
  156. msgprint("error:The document was not saved. To make the attachment permanent, you must save the document before closing.");
  157. }
  158. }