home_uploadpic.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. /*
  2. [Discuz!] (C)2001-2099 Comsenz Inc.
  3. This is NOT a freeware, use is subject to license terms
  4. $Id: home_uploadpic.js 32590 2013-02-22 09:42:48Z monkey $
  5. */
  6. var attachexts = new Array();
  7. var attachwh = new Array();
  8. var insertType = 1;
  9. var thumbwidth = parseInt(60);
  10. var thumbheight = parseInt(60);
  11. var extensions = 'jpg,jpeg,gif,png';
  12. var forms;
  13. var nowUid = 0;
  14. var albumid = 0;
  15. var uploadStat = 0;
  16. var picid = 0;
  17. var nowid = 0;
  18. var mainForm;
  19. var successState = false;
  20. function delAttach(id) {
  21. $('attachbody').removeChild($('attach_' + id).parentNode.parentNode.parentNode);
  22. if($('attachbody').innerHTML == '') {
  23. addAttach();
  24. }
  25. $('localimgpreview_' + id + '_menu') ? document.body.removeChild($('localimgpreview_' + id + '_menu')) : null;
  26. }
  27. function addAttach() {
  28. newnode = $('attachbodyhidden').rows[0].cloneNode(true);
  29. var id = nowid;
  30. var tags;
  31. tags = newnode.getElementsByTagName('form');
  32. for(i = 0;i < tags.length;i++) {
  33. if(tags[i].id == 'upload') {
  34. tags[i].id = 'upload_' + id;
  35. }
  36. }
  37. tags = newnode.getElementsByTagName('input');
  38. for(i = 0;i < tags.length;i++) {
  39. if(tags[i].name == 'attach') {
  40. tags[i].id = 'attach_' + id;
  41. tags[i].name = 'attach';
  42. tags[i].onchange = function() {insertAttach(id)};
  43. tags[i].unselectable = 'on';
  44. }
  45. if(tags[i].id == 'albumid') {
  46. tags[i].id = 'albumid_' + id;
  47. }
  48. }
  49. tags = newnode.getElementsByTagName('span');
  50. for(i = 0;i < tags.length;i++) {
  51. if(tags[i].id == 'localfile') {
  52. tags[i].id = 'localfile_' + id;
  53. }
  54. }
  55. nowid++;
  56. $('attachbody').appendChild(newnode);
  57. }
  58. addAttach();
  59. function insertAttach(id) {
  60. var localimgpreview = '';
  61. var path = $('attach_' + id).value;
  62. var ext = getExt(path);
  63. var re = new RegExp("(^|\\s|,)" + ext + "($|\\s|,)", "ig");
  64. var localfile = $('attach_' + id).value.substr($('attach_' + id).value.replace(/\\/g, '/').lastIndexOf('/') + 1);
  65. if(path == '') {
  66. return;
  67. }
  68. if(extensions != '' && (re.exec(extensions) == null || ext == '')) {
  69. alert('对不起,不支持上传此类扩展名的图片');
  70. return;
  71. }
  72. attachexts[id] = inArray(ext, ['gif', 'jpg', 'jpeg', 'png']) ? 2 : 1;
  73. var inhtml = '<table cellspacing="0" cellpadding="0" class="up_row"><tr>';
  74. if(typeof no_insert=='undefined') {
  75. localfile += '&nbsp;<a href="javascript:;" class="xi2" title="点击这里插入内容中当前光标的位置" onclick="insertAttachimgTag(' + id + ');return false;">[插入]</a>';
  76. }
  77. inhtml += '<td><strong>' + localfile +'</strong>';
  78. inhtml += '</td><td class="d">图片描述<br/><textarea name="pic_title" cols="40" rows="2" class="pt"></textarea>';
  79. inhtml += '</td><td class="o"><span id="showmsg' + id + '"><a href="javascript:;" onclick="delAttach(' + id + ');return false;" class="xi2">[删除]</a></span>';
  80. inhtml += '</td></tr></table>';
  81. $('localfile_' + id).innerHTML = inhtml;
  82. $('attach_' + id).style.display = 'none';
  83. addAttach();
  84. }
  85. function getPath(obj){
  86. if (obj) {
  87. if (BROWSER.ie && BROWSER.ie < 7) {
  88. obj.select();
  89. return document.selection.createRange().text;
  90. } else if(BROWSER.firefox) {
  91. if (obj.files) {
  92. return obj.files.item(0).getAsDataURL();
  93. }
  94. return obj.value;
  95. } else {
  96. return '';
  97. }
  98. return obj.value;
  99. }
  100. }
  101. function inArray(needle, haystack) {
  102. if(typeof needle == 'string') {
  103. for(var i in haystack) {
  104. if(haystack[i] == needle) {
  105. return true;
  106. }
  107. }
  108. }
  109. return false;
  110. }
  111. function insertAttachimgTag(id) {
  112. edit_insert('[imgid=' + id + ']');
  113. }
  114. function uploadSubmit(obj) {
  115. obj.disabled = true;
  116. mainForm = obj.form;
  117. forms = $('attachbody').getElementsByTagName("FORM");
  118. albumid = $('uploadalbum').value;
  119. upload();
  120. }
  121. function start_upload() {
  122. $('btnupload').disabled = true;
  123. mainForm = $('albumresultform');
  124. forms = $('attachbody').getElementsByTagName("FORM");
  125. upload();
  126. }
  127. function upload() {
  128. if(typeof(forms[nowUid]) == 'undefined') return false;
  129. var nid = forms[nowUid].id.split('_');
  130. nid = nid[1];
  131. if(nowUid>0) {
  132. var upobj = $('showmsg'+nowid);
  133. if(uploadStat==1) {
  134. upobj.innerHTML = '上传成功';
  135. successState = true;
  136. var InputNode;
  137. try {
  138. var InputNode = document.createElement("<input type=\"hidden\" id=\"picid_" + picid + "\" value=\""+ nowid +"\" name=\"picids["+picid+"]\">");
  139. } catch(e) {
  140. var InputNode = document.createElement("input");
  141. InputNode.setAttribute("name", "picids["+picid+"]");
  142. InputNode.setAttribute("type", "hidden");
  143. InputNode.setAttribute("id", "picid_" + picid);
  144. InputNode.setAttribute("value", nowid);
  145. }
  146. mainForm.appendChild(InputNode);
  147. } else {
  148. upobj.style.color = "#f00";
  149. upobj.innerHTML = '上传失败 '+uploadStat;
  150. }
  151. }
  152. if($('showmsg'+nid) != null) {
  153. $('showmsg'+nid).innerHTML = '上传中,请等待(<a href="javascript:;" onclick="forms[nowUid].submit();">重试</a>)';
  154. $('albumid_'+nid).value = albumid;
  155. forms[nowUid].submit();
  156. } else if(nowUid+1 == forms.length) {
  157. if(typeof (no_insert) != 'undefined') {
  158. var albumidcheck = parseInt(parent.albumid);
  159. $('opalbumid').value = isNaN(albumidcheck)? 0 : albumid;
  160. if(!successState) return false;
  161. }
  162. window.onbeforeunload = null;
  163. mainForm.submit();
  164. }
  165. nowid = nid;
  166. nowUid++;
  167. uploadStat = 0;
  168. }