Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Файл - upload.js (Старый размер - 40123 | Новый - 0):
- 0. - if (!window.jsonpManager) {
- 1. - window.jsonpManager = window.__jsp = {
- 2. - c: 1,
- 3. - h: {},
- 4. - reg: function(h) {
- 5. - __jsp.h[__jsp.c] = isFunction(h) ? h : function(){};
- 6. - return __jsp.c++;
- 7. - }
- 8. - }
- 9. - }
- 10. -
- 11. - if (!window.Upload) {
- 12. - var Upload = {
- 13. -
- 14. - init: function(obj, uploadUrl, vars, options) {
- 15. - window.uploadInterface = (window.uploadInterface != undefined) ? uploadInterface + 1 : 0;
- 16. - var iUpload = uploadInterface;
- 17. -
- 18. - each(['obj', 'dropbox', 'options', 'vars', 'types', 'uploadUrls', 'callbacks', 'checks'], function(i, v) {
- 19. - if (!Upload[v]) Upload[v] = {};
- 20. - });
- 21. -
- 22. - this.obj[iUpload] = ge(obj);
- 23. - if (options.dropbox) {
- 24. - this.dropbox[iUpload] = ge(options.dropbox);
- 25. - }
- 26. - this.vars[iUpload] = vars;
- 27. - options.file_input = ge(options.file_input);
- 28. - this.options[iUpload] = options;
- 29. - if (options.clear) {
- 30. - cur.destroy.push(Upload.deinit.pbind(iUpload));
- 31. - }
- 32. -
- 33. - this.uploadUrls[iUpload] = uploadUrl;
- 34. - if (options.flash_lite && !browser.flash && !this.checkFileApi()) {
- 35. - this.obj[iUpload] = ge(options.fieldEl) || this.obj[iUpload].parentNode.firstChild;
- 36. - } else {
- 37. - if (options.customShowProgress) {
- 38. - options.customShowProgress();
- 39. - } else {
- 40. - if (this.obj[iUpload].tagName == 'INPUT' && !this.checkFileApi()) {
- 41. - this.obj[iUpload] = ge(options.fieldEl) || this.obj[iUpload].parentNode.firstChild;
- 42. - } else if (!options.flash_lite) {
- 43. - this.obj[iUpload].innerHTML = '<div class="loading"><img src="/images/upload.gif" /></div>';
- 44. - }
- 45. - }
- 46. - }
- 47. - if (options.noCheck) {
- 48. - this.embed(iUpload);
- 49. - } else {
- 50. - this.check(iUpload);
- 51. - }
- 52. -
- 53. - return iUpload;
- 54. - },
- 55. - deinit: function(iUpload) {
- 56. - if (!Upload.obj[iUpload]) return;
- 57. -
- 58. - var options = Upload.options[iUpload] || {}, dragEl = options.dragEvObj;
- 59. - if (dragEl) {
- 60. - removeEvent(dragEl, 'dragenter');
- 61. - removeEvent(dragEl, 'dragover');
- 62. - removeEvent(dragEl, 'dragleave');
- 63. - }
- 64. - each(['obj', 'dropbox', 'options', 'vars', 'types', 'uploadUrls', 'callbacks'], function(i, v) {if (Upload[v]) delete Upload[v][iUpload]});
- 65. - if (Upload.callbacks) {
- 66. - if (Upload.callbacks['oncheck'+iUpload]) delete Upload.callbacks['oncheck'+iUpload];
- 67. - if (Upload.callbacks['ondone'+iUpload]) delete Upload.callbacks['ondone'+iUpload];
- 68. - if (Upload.callbacks['onfail'+iUpload]) delete Upload.callbacks['onfail'+iUpload];
- 69. - }
- 70. - clearTimeout(Upload.checks['timer'+iUpload]);
- 71. - },
- 72. -
- 73. - check: function(iUpload) {
- 74. - var obj = this.obj[iUpload], vars = this.vars[iUpload], options = this.options[iUpload];
- 75. - var check_url = options.check_url ? options.check_url : this.uploadUrls[iUpload], check_vars = {};
- 76. - if (options.signed) {
- 77. - if (!check_url) return Upload.onCheckComplete(iUpload);
- 78. - extend(check_vars, {_jsonp: jsonpManager.reg(function(r) { Upload.onCheckComplete(iUpload, r); })});
- 79. - } else {
- 80. - if (!options.check_hash && !options.server) {
- 81. - return Upload.onCheckComplete(iUpload);
- 82. - }
- 83. -
- 84. - this.callbacks['oncheck'+iUpload] = Upload.onCheckComplete.pbind(iUpload);
- 85. - var t = ['mid', 'aid', 'gid', 'hash', 'rhash'];
- 86. - for (var i in t) {
- 87. - check_vars[t[i]] = vars[t[i]];
- 88. - }
- 89. - if (options.check_hash) {
- 90. - check_vars.hash = options.check_hash;
- 91. - }
- 92. - if (options.check_rhash) {
- 93. - check_vars.rhash = options.check_rhash;
- 94. - }
- 95. - if (vars.https_resp) {
- 96. - check_vars.https_resp = vars.https_resp;
- 97. - }
- 98. - extend(check_vars, {al: 1, act: 'check_upload', type: options.type, ondone: "Upload.callbacks.oncheck"+iUpload});
- 99. - }
- 100. - var html = '<form action="' + check_url + '" enctype="multipart/form-data" method="post" id="check_upload_form' + iUpload + '" target="check_iframe' + iUpload + '">';
- 101. - for (var i in check_vars) {
- 102. - html += '<input type="hidden" name="' + i + '" value="' + check_vars[i] + '" />';
- 103. - }
- 104. - html += '</form><iframe style="visibility: hidden; width: 1px; height: 1px;" id="check_iframe' + iUpload + '" name="check_iframe' + iUpload + '"></iframe>';
- 105. - var check = ce('div', {id: 'check_upload_'+iUpload, innerHTML: html, className: options.checkClass || ''}, {display: 'none'});
- 106. - if (ge('check_upload_'+iUpload)) re('check_upload_'+iUpload);
- 107. - obj.appendChild(check);
- 108. - var form = ge('check_upload_form' + iUpload);
- 109. - try {
- 110. - form && form.submit();
- 111. - } catch(e) {
- 112. - Upload.serverFail(iUpload);
- 113. - }
- 114. - clearTimeout(Upload.checks['timer'+iUpload]);
- 115. - this.checks['timer'+iUpload] = setTimeout(Upload.serverFail.pbind(iUpload), 10000);
- 116. - },
- 117. -
- 118. - onCheckComplete: function(i, res) {
- 119. - clearTimeout(Upload.checks['timer' + i]);
- 120. - delete Upload.checks['timer' + i];
- 121. -
- 122. - var obj = {}, options = Upload.options[i], data = res;
- 123. - if (options.signed) {
- 124. - obj = parseJSON(res || '{}');
- 125. - } else {
- 126. - res = res || '';
- 127. - res = res.split('&');
- 128. - for (var j in res) {
- 129. - var t = res[j].split('=');
- 130. - obj[t[0]] = t[1];
- 131. - }
- 132. - data = obj;
- 133. - }
- 134. - if (options.customHideProgress) {
- 135. - options.customHideProgress();
- 136. - }
- 137. - if (!obj.error && !obj.fail) {
- 138. - options.noCheck = 1;
- 139. - if (options.onCheckComplete) {
- 140. - options.onCheckComplete(i);
- 141. - } else if (options.flash_lite && browser.flash) {
- 142. - Upload.initFlash(i, Upload.obj[i]);
- 143. - } else {
- 144. - Upload.embed(i);
- 145. - }
- 146. - Upload.serverSuccess(i, data);
- 147. - } else {
- 148. - Upload.serverFail(i, data);
- 149. - }
- 150. - },
- 151. -
- 152. - serverFail: function(i, err_obj) {
- 153. - var obj = Upload.obj[i], options = Upload.options[i], vars = Upload.vars[i];
- 154. - if (!obj) return;
- 155. - if (!options.signed && !options.server) return;
- 156. -
- 157. - if (!Upload.fails) Upload.fails = {};
- 158. - Upload.fails[i] = Upload.fails[i] ? Upload.fails[i] + 1 : 1;
- 159. - if (options.signed) {
- 160. - var parts = Upload.uploadUrls[i].split('?'), tmp = q2ajx(parts[1]), q = extend({
- 161. - act: 'check_result',
- 162. - _resign: tmp._query || parts[1]
- 163. - }, err_obj ? {_query: err_obj} : {_check: options.check_url.split('?')[1]});
- 164. - ajax.post('upload_fails.php', q, {
- 165. - onDone: function(url, check_url, base_url, static_url) {
- 166. - if (Upload.fails[i] < options.max_attempts) {
- 167. - Upload.uploadUrls[i] = url;
- 168. - extend(Upload.options[i], {
- 169. - check_url: check_url,
- 170. - base_url: base_url,
- 171. - static_url: static_url
- 172. - });
- 173. - Upload.check(i);
- 174. - } else {
- 175. - obj.innerHTML = '';
- 176. - if (options.lang && options.lang.cannot_upload_title && options.lang.cannot_upload_text) {
- 177. - showFastBox({title: options.lang.cannot_upload_title, width: 430}, options.lang.cannot_upload_text);
- 178. - }
- 179. - }
- 180. - }
- 181. - });
- 182. - return;
- 183. - }
- 184. - var query = extend({
- 185. - act: 'fail',
- 186. - role: options.type,
- 187. - mid: vars.mid,
- 188. - oid: vars.oid,
- 189. - gid: vars.gid,
- 190. - aid: vars.aid,
- 191. - server: options.server,
- 192. - error: options.error,
- 193. - hash: options.error_hash
- 194. - }, err_obj);
- 195. - if (options.custom_hash) {
- 196. - extend(query, {custom_hash: options.custom_hash, photo_hash: vars.photo_hash, size: vars.size, fid: vars.fid, vid: vars.vid, tag: vars.tag});
- 197. - }
- 198. - if (window.ajax) {
- 199. - ajax.post('upload_fails.php', query, {
- 200. - onDone: function(url, new_vars, opts) {
- 201. - if (Upload.fails[i] < options.max_attempts) {
- 202. - Upload.uploadUrls[i] = url;
- 203. - extend(Upload.options[i], opts);
- 204. - extend(Upload.vars[i], new_vars);
- 205. - Upload.check(i);
- 206. - } else {
- 207. - obj.innerHTML = '';
- 208. - if (options.lang && options.lang.cannot_upload_title && options.lang.cannot_upload_text) {
- 209. - showFastBox({title: options.lang.cannot_upload_title, width: 430}, options.lang.cannot_upload_text);
- 210. - }
- 211. - }
- 212. - }
- 213. - });
- 214. - } else {
- 215. - if (options.server != 100000) return;
- 216. - Ajax.Send('/upload_fails.php', query, function(ajaxObj, response) {
- 217. - try {
- 218. - response = eval('(' + response + ')');
- 219. - } catch (e) {
- 220. - response = null;
- 221. - }
- 222. - var opts = response.options, new_vars = response.vars, url = response.upload_url;
- 223. - if (Upload.fails[i] < options.max_attempts) {
- 224. - Upload.uploadUrls[i] = url;
- 225. - extend(Upload.options[i], opts);
- 226. - extend(Upload.vars[i], new_vars);
- 227. - Upload.check(i);
- 228. - } else {
- 229. - obj.innerHTML = '';
- 230. - if (options.lang && options.lang.cannot_upload_title && options.lang.cannot_upload_text) {
- 231. - showFastBox({title: options.lang.cannot_upload_title, width: 430}, options.lang.cannot_upload_text);
- 232. - }
- 233. - options.onCheckServerFailed && options.onCheckServerFailed();
- 234. - }
- 235. - });
- 236. - }
- 237. - },
- 238. -
- 239. - serverSuccess: function(i, err_obj) {
- 240. - var options = Upload.options[i], vars = Upload.vars[i];
- 241. - Upload.checked = Upload.checked || {};
- 242. - Upload.checked[i] = 1;
- 243. - if (options.signed) {
- 244. - ajax.post('upload_fails.php', {act: 'check_result', _query: err_obj});
- 245. - return;
- 246. - }
- 247. - if (!options.server && !options.error_hash) return;
- 248. - var query = extend({
- 249. - act: 'success',
- 250. - mid: vars.mid,
- 251. - oid: vars.oid,
- 252. - gid: vars.gid,
- 253. - aid: vars.aid,
- 254. - server: options.server,
- 255. - error: options.error,
- 256. - hash: options.error_hash
- 257. - }, err_obj);
- 258. - if (window.ajax) {
- 259. - ajax.post('upload_fails.php', query);
- 260. - } else {
- 261. - Ajax.Send('/upload_fails.php', query);
- 262. - }
- 263. - },
- 264. -
- 265. - embed: function(iUpload) {
- 266. - var i = iUpload.num != undefined ? iUpload.num : iUpload, obj = this.obj[i], dropbox = this.dropbox[i], options = this.options[i];
- 267. - if (options.noEmbed) {
- 268. - re('check_upload_'+iUpload);
- 269. - return;
- 270. - }
- 271. - if (!options.noCheck) return;
- 272. -
- 273. - if (browser.flash > 9 && options.forceFlash) {
- 274. - this.initFlash(i, obj);
- 275. - } else if (this.checkFileApi() && !options.flash_lite) {
- 276. - this.initFileApi(i, obj, dropbox);
- 277. - } else if (browser.flash > 9 && !options.noFlash) {
- 278. - this.initFlash(i, obj);
- 279. - } else if (!options.noForm) {
- 280. - this.initForm(i, obj);
- 281. - }
- 282. - },
- 283. -
- 284. - checkFileApi: function() {
- 285. - return (window.XMLHttpRequest || window.XDomainRequest) && (window.FormData || window.FileReader && (window.XMLHttpRequest && XMLHttpRequest.sendAsBinary || window.ArrayBuffer && window.Uint8Array && (window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)));
- 286. - },
- 287. -
- 288. - initFlash: function(iUpload, obj) {
- 289. - var postData = [], vars = Upload.vars[iUpload], options = Upload.options[iUpload];
- 290. - var opts = {
- 291. - url: options.flashPath || '/swf/uploader_lite.swf',
- 292. - id: 'uploader_lite'+iUpload,
- 293. - preventhide: true,
- 294. - width: '100%',
- 295. - height: browser.safari || browser.msie || browser.chrome && intval(browser.version) < 17 ? (options.flashHeight ? options.flashHeight + 'px' : (cur.flash_lite && !isVisible('photos_flash_add_button') ? '67px' : '25px')) : '100%'
- 296. - };
- 297. - var params = {
- 298. - swliveconnect: 'true',
- 299. - allowscriptaccess: 'always',
- 300. - wmode: browser.msie ? 'opaque' : 'transparent'
- 301. - }
- 302. - Upload.types[iUpload] = 'flash';
- 303. - for (var i in vars) {
- 304. - postData.push(i+'='+vars[i]);
- 305. - }
- 306. - if (!options.signed && !vars['ajx']) {
- 307. - postData.push('ajx=1');
- 308. - }
- 309. -
- 310. - var flashVars = clone(vars)
- 311. - extend(flashVars, {
- 312. - 'upload_url': Upload.uploadUrls[iUpload],
- 313. - 'file_size_limit': options.file_size_limit,
- 314. - 'file_types_description': options.file_types_description,
- 315. - 'file_types': options.file_types,
- 316. - 'file_name': options.file_name,
- 317. - 'post_data': escape(postData.join('&')),
- 318. - 'onUploadStart': "Upload.onUploadStart.pbind("+iUpload+")",
- 319. - 'onUploadProgress': "Upload.onUploadProgress.pbind("+iUpload+")",
- 320. - 'onUploadSuccess': "Upload.onUploadComplete.pbind("+iUpload+")",
- 321. - 'onUploadComplete': "Upload.onUploadCompleteAll.pbind("+iUpload+")",
- 322. - 'onUploadError': "Upload.onUploadError.pbind("+iUpload+")",
- 323. - 'onDebug': "Upload.onDebug.pbind("+iUpload+")",
- 324. - 'onMouseDown': "Upload.buttonDown.pbind("+iUpload+")",
- 325. - 'onMouseUp': "Upload.buttonUp.pbind("+iUpload+")",
- 326. - 'onMouseOver': "Upload.buttonOver.pbind("+iUpload+")",
- 327. - 'onMouseOut': "Upload.buttonOut.pbind("+iUpload+")",
- 328. - 'onSelectClick': "Upload.onSelectClick.pbind("+iUpload+")"
- 329. - });
- 330. -
- 331. - if (!options.flash_lite) {
- 332. - if (!options.lang['button_browse']) {
- 333. - options.lang['button_browse'] = '������� ����';
- 334. - }
- 335. - obj.innerHTML = '<div id="uploader'+iUpload+'" class="button_blue" style="position: relative;"><div id="lite_upload' + iUpload + '" style="position: absolute; height: 100%; width: 100%; z-index: 10000; cursor: pointer;"></div><button class="upload_btn">' + options.lang['button_browse'] + '</button></div>';
- 336. - } else {
- 337. - obj.innerHTML = '<div class="lite_upload" id="lite_upload' + iUpload + '" style="z-index:10000; width: 100%; height: 100%; cursor: pointer;"></div>';
- 338. - }
- 339. - renderFlash(ge('lite_upload'+iUpload), opts, params, flashVars);
- 340. - if (browser.msie) setStyle(ge('lite_upload'+iUpload), {opacity: 0, cursor: 'pointer'});
- 341. -
- 342. - if (options.lang.switch_mode) {
- 343. - var text = options.lang.switch_mode.replace('{link}', '<a onclick="Upload.switchMode('+iUpload+');">');
- 344. - text = text.replace('{/link}', '</a>');
- 345. - obj.appendChild(ce('div', {
- 346. - innerHTML: text,
- 347. - align: 'left'
- 348. - }, {
- 349. - marginTop: '15px'
- 350. - }));
- 351. - }
- 352. - },
- 353. -
- 354. - initForm: function(iUpload, obj) {
- 355. - var _iu = iUpload, vars = this.vars[_iu], options = this.options[_iu];
- 356. - this.types[_iu] = 'form';
- 357. -
- 358. - // setTimeout is needed at least for Opera to allow to do ajax requests in this callbacks. Otherwise it hangs up on XHR.open() call.
- 359. -
- 360. - var html = '<form action="' + this.uploadUrls[_iu] + '" enctype="multipart/form-data" method="post" id="file_uploader_form' + _iu + '" target="upload_iframe' + _iu + '" style="text-align: center; width: 100%;">';
- 361. - if (options.signed) {
- 362. - extend(vars, {_jsonp: jsonpManager.reg(function(r) { Upload.onUploadComplete(_iu, r); })});
- 363. - } else {
- 364. - var onDoneCallback = Upload.onUploadComplete.pbind(_iu);
- 365. - var onFailCallback = Upload.onUploadError.pbind(_iu);
- 366. - this.callbacks['ondone'+_iu] = function() { var callback = onDoneCallback.pbind.apply(onDoneCallback, arguments); setTimeout(function(){ callback(); }, 1); };
- 367. - this.callbacks['onfail'+_iu] = function() { var callback = onFailCallback.pbind.apply(onFailCallback, arguments); setTimeout(function(){ callback(); }, 1); };
- 368. - extend(vars, {al: 1, ondone: "Upload.callbacks.ondone"+_iu, onfail: "Upload.callbacks.onfail"+_iu});
- 369. - }
- 370. - for (var i in vars) {
- 371. - html += '<input type="hidden" name="' + i + '" value="' + vars[i] + '" />';
- 372. - }
- 373. - var input = '<input type="file" class="file" size="28" onchange="Upload.onUploadStart(' + _iu + ');" name="' + options['file_name'] + '" style="cursor: pointer;"' + (options.accept ? ' accept="' + options.accept + '"' : '') + '/>\
- 374. - \
- 375. - </form><iframe style="position: absolute; visibility: hidden; width: 1px; height: 1px;" id="upload_iframe' + _iu + '" name="upload_iframe' + _iu + '"></iframe>';
- 376. - if (options.label) {
- 377. - html += options.label.split('{file}').join(input);
- 378. - } else {
- 379. - html += input;
- 380. - }
- 381. - obj.innerHTML = html;
- 382. - var nfile = options.file_input,
- 383. - cfile = geByClass1('file', obj, 'input');
- 384. -
- 385. - delete options.file_input;
- 386. - if (nfile && cfile) {
- 387. - cfile.parentNode.replaceChild(nfile, cfile);
- 388. - nfile.onchange = function () {Upload.onUploadStart(_iu)};
- 389. - if (data(nfile, 'changed')) {
- 390. - data(nfile, 'changed', false);
- 391. - nfile.onchange();
- 392. - }
- 393. - }
- 394. - },
- 395. -
- 396. - buttonOver: function(iUpload) {
- 397. - var options = Upload.options[iUpload];
- 398. - if (options.flash_lite) {
- 399. - if (options.hoverEl) {
- 400. - addClass(options.hoverEl, 'hover');
- 401. - } else if (isVisible('photos_flash_add_button')) {
- 402. - addClass(ge('photos_flash_add_button'), 'hover');
- 403. - } else {
- 404. - addClass(ge('photos_upload_area'), 'hover');
- 405. - }
- 406. - } else {
- 407. - addClass(ge('lite_upload'+iUpload).nextSibling, 'hover');
- 408. - }
- 409. - },
- 410. - buttonOut: function(iUpload) {
- 411. - var options = Upload.options[iUpload];
- 412. - if (options.flash_lite) {
- 413. - if (options.hoverEl) {
- 414. - removeClass(options.hoverEl, 'hover');
- 415. - } else if (isVisible('photos_flash_add_button')) {
- 416. - removeClass(ge('photos_flash_add_button'), 'hover');
- 417. - removeClass(ge('photos_flash_add_button'), 'active');
- 418. - } else {
- 419. - removeClass(ge('photos_upload_area'), 'hover');
- 420. - }
- 421. - } else {
- 422. - removeClass(ge('lite_upload'+iUpload).nextSibling, 'hover');
- 423. - removeClass(ge('lite_upload'+iUpload).nextSibling, 'active');
- 424. - }
- 425. - },
- 426. - buttonDown: function(iUpload) {
- 427. - if (Upload.options[iUpload].flash_lite) {
- 428. - if (isVisible('photos_flash_add_button')) {
- 429. - addClass(ge('photos_flash_add_button'), 'active');
- 430. - }
- 431. - } else {
- 432. - addClass(ge('lite_upload'+iUpload).nextSibling, 'active');
- 433. - }
- 434. - },
- 435. - buttonUp: function(iUpload) {
- 436. - if (Upload.options[iUpload].flash_lite) {
- 437. - if (isVisible('photos_flash_add_button')) {
- 438. - removeClass(ge('photos_flash_add_button'), 'active');
- 439. - }
- 440. - } else {
- 441. - removeClass(ge('lite_upload'+iUpload).nextSibling, 'active');
- 442. - }
- 443. - },
- 444. -
- 445. - initFileApi: function(iUpload, obj, dropbox) {
- 446. - var options = this.options[iUpload], input,
- 447. - dragEl = options && options.dragEl || window.boxLayerWrap;
- 448. - if (dropbox && dragEl) {
- 449. - if (!Upload.addedDocEvent) {
- 450. - addEvent(document, 'drop', Upload.drop);
- 451. - Upload.addedDocEvent = true;
- 452. - }
- 453. - options.dragEvObj = dragEl;
- 454. - addEvent(dragEl, 'dragenter', Upload.dragEnter.pbind(iUpload));
- 455. - addEvent(dragEl, 'dragover', Upload.dragOver.pbind(iUpload));
- 456. - addEvent(dragEl, 'dragleave', Upload.dragOut.pbind(iUpload));
- 457. - }
- 458. - this.types[iUpload] = 'fileApi';
- 459. - if (options.chooseBox) {
- 460. - input = '<input class="file" type="file" size="28" onchange="Upload.onFileApiSend('+iUpload+', this.files);"' + (options.multiple ? ' multiple="true"' : '') + (options.accept ? ' accept="' + options.accept + '"' : '') + ' name="' + options['file_name'] + '" style="cursor: pointer;"/>';
- 461. - } else {
- 462. - if (!options.lang['button_browse']) {
- 463. - options.lang['button_browse'] = '������� ����';
- 464. - }
- 465. - input = '<div class="button_blue"><button class="upload_btn" onclick="this.parentNode.nextSibling.click()">' + options.lang['button_browse'] + '</button></div><input class="file" type="file" size="28" onchange="Upload.onFileApiSend('+iUpload+', this.files);"' + (options.multiple ? ' multiple="true"' : '') + (options.accept ? ' accept="' + options.accept + '"' : '') + ' name="' + options['file_name'] + '" style="visibility: hidden; position: absolute;"/>';
- 466. - }
- 467. - if (options.label) {
- 468. - obj.innerHTML = options.label.split('{file}').join(input);
- 469. - } else {
- 470. - obj.innerHTML = input;
- 471. - }
- 472. - var nfile = options.file_input,
- 473. - cfile = geByClass1('file', obj, 'input');
- 474. - if (nfile && cfile) {
- 475. - cfile.parentNode.replaceChild(nfile, cfile);
- 476. - nfile.onchange = function () {Upload.onFileApiSend(iUpload, this.files);};
- 477. - if (data(nfile, 'changed')) {
- 478. - data(nfile, 'changed', false);
- 479. - setTimeout(nfile.onchange.bind(nfile), 0);
- 480. - }
- 481. - }
- 482. - },
- 483. -
- 484. - switchMode: function(i) {
- 485. - Upload.options[i].noFlash = Upload.options[i].noCheck = 1;
- 486. - Upload.embed(i);
- 487. - },
- 488. -
- 489. - onUploadStart: function(info, result) {
- 490. - cur.fileApiUploadStarted = true;
- 491. - var i = info.ind !== undefined ? info.ind : info;
- 492. - if (Upload.types[i] == 'form') {
- 493. - var form = ge('file_uploader_form' + i);
- 494. - form.submit();
- 495. - var file = geByClass1('file', Upload.obj[i]);
- 496. - file.disabled = true;
- 497. - }
- 498. -
- 499. - var options = Upload.options[i];
- 500. - if (options.onUploadStart) {
- 501. - options.onUploadStart(info, result);
- 502. - };
- 503. - },
- 504. -
- 505. - getErrorAdditional: function(obj) {
- 506. - if (obj.error && obj.server !== undefined && obj.bwact !== undefined) {
- 507. - return ((obj.error.indexOf(':') !== -1) ? ',' : ':') + ' from upl_' + intval(obj.server) + '?act=' + obj.bwact.replace(/[^a-zA-Z_0-9]/g, '');
- 508. - }
- 509. - return '';
- 510. - },
- 511. - onUploadComplete: function(info, result, extra_info) {
- 512. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i], obj;
- 513. - if (extra_info !== undefined && i === info) {
- 514. - info = extra_info;
- 515. - }
- 516. - info.ind = i;
- 517. - if (Upload.types[i] == 'form') {
- 518. - var file = geByClass1('file', Upload.obj[i]);
- 519. - file.disabled = false;
- 520. - }
- 521. - if (options.onUploadComplete) {
- 522. - var errorAdd = '';
- 523. - if (options.signed) {
- 524. - var obj = parseJSON(result);
- 525. - if (!obj) {
- 526. - result = '{"error":"ERR_CLIENT_UPLOAD_FAIL: upload request bad result, url \\"' + Upload.uploadUrls[i] + '\\""}';
- 527. - } else {
- 528. - errorAdd = Upload.getErrorAdditional(obj);
- 529. - }
- 530. - }
- 531. - options.onUploadComplete(info, result, errorAdd);
- 532. - }
- 533. - if (Upload.types[i] == 'form') {
- 534. - Upload.onUploadCompleteAll(info, result);
- 535. - }
- 536. - },
- 537. -
- 538. - onUploadCompleteAll: function(info, result, extra_info) {
- 539. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 540. - if (extra_info !== undefined && i === info) {
- 541. - info = extra_info;
- 542. - }
- 543. - if (Upload.types[i] == 'fileApi') {
- 544. - var cfile = geByClass1('file', Upload.obj[i], 'input');
- 545. - if (cfile) {
- 546. - cfile.value = '';
- 547. - }
- 548. - }
- 549. -
- 550. - if (options.onUploadCompleteAll) {
- 551. - options.onUploadCompleteAll(info, result);
- 552. - }
- 553. - },
- 554. -
- 555. - onUploadError: function(info, result) {
- 556. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 557. - if (Upload.types[i] == 'form') {
- 558. - var file = geByClass1('file', Upload.obj[i]);
- 559. - file.disabled = false;
- 560. - }
- 561. - if (options.signed) {
- 562. - if (options.onUploadComplete) {
- 563. - options.onUploadComplete('{"error":"ERR_CLIENT_UPLOAD_FAIL: upload request fail, code \\"' + result.replace(/([\\\"])/g, '\\$1').replace(/\n/g, '\\n') + '\\", url \\"' + Upload.uploadUrls[i] + '\\""}');
- 564. - }
- 565. - } else if (options.onUploadError) {
- 566. - options.onUploadError(info, result);
- 567. - };
- 568. - },
- 569. -
- 570. - onUploadProgress: function(info, bytesLoaded, bytesTotal) {
- 571. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 572. - if (options.onUploadProgress) {
- 573. - options.onUploadProgress(info, bytesLoaded, bytesTotal);
- 574. - };
- 575. - },
- 576. -
- 577. - onDebug: function(info, result) {
- 578. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 579. - if (options.onDebug) {
- 580. - options.onDebug(info, result);
- 581. - }
- 582. - },
- 583. -
- 584. - onSelectClick: function(info, result) {
- 585. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 586. - if (options.onSelectClick) {
- 587. - options.onSelectClick(info, result);
- 588. - }
- 589. - },
- 590. -
- 591. - onFileApiSend: function(i, files, force) {
- 592. - if (!files || !files.length) return;
- 593. -
- 594. - var options = this.options[i];
- 595. - if (options.reverse_files) {
- 596. - files = Array.prototype.slice.call(files).reverse();
- 597. - }
- 598. -
- 599. - if (!options.multiple && files.length > 1) {
- 600. - files = [files[0]]
- 601. - }
- 602. -
- 603. - if (options.photoBox && !force) {
- 604. - return Upload.onPhotoAdd(i, files);
- 605. - }
- 606. -
- 607. - if (options.beforeUpload) options.beforeUpload(i);
- 608. -
- 609. - cur.notStarted = cur.fileApiUploadStarted = true;
- 610. - if (!options.multi_progress) this.onUploadStart(i);
- 611. - var max_files = files.length;
- 612. - if (options.max_files) {
- 613. - var attachCount = cur.attachCount;
- 614. - if (!attachCount && cur.addMedia) {
- 615. - var maxIndex = -1;
- 616. - for (var j in cur.addMedia) {
- 617. - if (j > maxIndex) maxIndex = j;
- 618. - }
- 619. - if (maxIndex >= 0 && cur.addMedia[maxIndex] && cur.addMedia[maxIndex].attachCount) {
- 620. - attachCount = cur.addMedia[maxIndex].attachCount;
- 621. - }
- 622. - }
- 623. - var curCount = attachCount ? attachCount() : 0;
- 624. - if (options.max_files - curCount < files.length && options.lang && options.lang.max_files_warning) {
- 625. - max_files = options.max_files - curCount;
- 626. - showFastBox({
- 627. - title: getLang('global_error'),
- 628. - width: 430,
- 629. - onHide: function() {
- 630. - Upload.embed(i);
- 631. - delete cur.notStarted;
- 632. - }
- 633. - }, options.lang.max_files_warning, getLang('global_continue'), function() {
- 634. - Upload.uploadFiles(i, files, max_files);
- 635. - if (options.max_files_hide_last) {
- 636. - curBox().hide();
- 637. - } else {
- 638. - boxQueue.hideAll();
- 639. - }
- 640. - }, getLang('global_cancel'));
- 641. - } else {
- 642. - if (options.force_max_files) {
- 643. - max_files = Math.min(max_files, options.max_files - (cur.savedPhotos || []).length);
- 644. - }
- 645. - this.uploadFiles(i, files, max_files);
- 646. - }
- 647. - } else {
- 648. - this.uploadFiles(i, files, max_files);
- 649. - }
- 650. - },
- 651. -
- 652. - onPhotoAdd: function(i, files) {
- 653. - var needFire = 0, count = 0;
- 654. - Upload.fileList = Upload.fileList || {};
- 655. - if (!Upload.fileList[i]) {
- 656. - Upload.fileList[i] = [];
- 657. - if (Upload.options[i].onPhotoBox) {
- 658. - needFire = true;
- 659. - }
- 660. - }
- 661. - each(files, function(n, file) {
- 662. - count++;
- 663. - var preview = Upload.options[i].photoBox;
- 664. - var imageType = new RegExp('image.*')
- 665. - if (!file.type.match(imageType)) {
- 666. - //return false;
- 667. - }
- 668. - cur.uploaderPhotoId = (cur.uploaderPhotoId || 0) + 1;
- 669. - var photoId = cur.uploaderPhotoId;
- 670. - Upload.fileList[i][photoId] = file;
- 671. -
- 672. - var img = ce('img');
- 673. - var photo = ce('div', {
- 674. - id: 'photos_add_item'+photoId,
- 675. - className: 'photos_add_item',
- 676. - innerHTML: '<span class="photos_add_img photos_add_wait" id="photos_add_cont'+photoId+'" onmouseover="PhotosAdd.thumbOver('+photoId+', this);" onmouseout="PhotosAdd.thumbOut('+photoId+');"><span class="photos_add_s" id="photos_add_s'+photoId+'"> </span></span><span class="bg"> </span>'
- 677. - });
- 678. - preview.appendChild(photo);
- 679. -
- 680. - var reader = new FileReader();
- 681. - reader.onload = function(e) {
- 682. - img.src = e.target.result;
- 683. - img.onload = function() {
- 684. - img.onload = false;
- 685. - var size = {w: img.width, h: img.height}, dx, dy;
- 686. - if (size.w > 130) {
- 687. - dx = 130 / size.w;
- 688. - size.w = 130;
- 689. - size.h = parseInt(size.h * dx);
- 690. - }
- 691. -
- 692. -
- 693. - if (size.h > 130) {
- 694. - dy = 130 / size.h;
- 695. - size.h = 130;
- 696. - size.w = parseInt(size.w * dy);
- 697. - }
- 698. -
- 699. - var cnv = ce('canvas', {
- 700. - width: size.w,
- 701. - height: size.h
- 702. - });
- 703. - var ctx = cnv.getContext('2d');
- 704. - ctx.drawImage(img, 0, 0, size.w, size.h);
- 705. - delete img;
- 706. - var dataURL = cnv.toDataURL("image/jpeg");
- 707. - img.src = dataURL;
- 708. - var thumbCont = ge('photos_add_s'+photoId);
- 709. - var tw = Math.max(size.w, 80);
- 710. - var th = Math.min(size.h, 98);
- 711. - setStyle(thumbCont, {
- 712. - width: tw,
- 713. - height: th,
- 714. - //marginTop: Math.ceil((98 - th) / 2),
- 715. - marginLeft: Math.ceil((130 - tw) / 2)
- 716. - });
- 717. - thumbCont.innerHTML = '';
- 718. - thumbCont.appendChild(img);
- 719. - img.onload = function() {
- 720. - setTimeout(function() {
- 721. - thumbCont.parentNode.className = 'photos_add_img';
- 722. - }, 0);
- 723. - img.onload = false;
- 724. - }
- 725. - Upload.finishTask();
- 726. - }
- 727. - }
- 728. - Upload.taskToQ(function() {
- 729. - reader.readAsDataURL(file);
- 730. - });
- 731. - });
- 732. - if (needFire && count) {
- 733. - Upload.options[i].onPhotoBox();
- 734. - }
- 735. - if (Upload.options[i].onPhotoAdd && count) {
- 736. - Upload.options[i].onPhotoAdd();
- 737. - }
- 738. - },
- 739. -
- 740. - uploadPhotos: function(uplId) {
- 741. - var files = [], flist = Upload.fileList[uplId];
- 742. - for (var i in flist) {
- 743. - if (flist[i]) {
- 744. - files.push(extend(flist[i], {
- 745. - fileRef: i
- 746. - }));
- 747. - }
- 748. - }
- 749. - if (Upload.options[uplId].onUploadStart) Upload.options[uplId].onUploadStart();
- 750. - if (files.length) {
- 751. - cur.uploadCount = Math.min(500, files.length);
- 752. - Upload.uploadFiles(uplId, files, cur.uploadCount);
- 753. - return true;
- 754. - } else {
- 755. - return false;
- 756. - }
- 757. - },
- 758. -
- 759. - taskToQ: function(task) {
- 760. - if (!Upload.previewFileQ) {
- 761. - Upload.previewFileQ = [];
- 762. - }
- 763. - if (task) {
- 764. - Upload.previewFileQ.push(task);
- 765. - }
- 766. -
- 767. - if (Upload.doingQ) {
- 768. - return;
- 769. - }
- 770. - var newTask = Upload.previewFileQ.shift();
- 771. - if (newTask) {
- 772. - Upload.doingQ = true;
- 773. - newTask();
- 774. - }
- 775. - },
- 776. -
- 777. - finishTask: function() {
- 778. - setTimeout(function() {
- 779. - Upload.doingQ = false;
- 780. - Upload.taskToQ();
- 781. -
- 782. - }, 100);
- 783. - },
- 784. -
- 785. - uploadFiles: function(i, files, max_files) {
- 786. - if (max_files <= 0) return;
- 787. - var options = this.options[i],
- 788. - vars = options.signed ? this.vars[i] : extend(this.vars[i], {ajx: 1}),
- 789. - params = [],
- 790. - totalSize = 0,
- 791. - totalCount = 0,
- 792. - loadedSize = 0,
- 793. - loadedCount = 0,
- 794. - filesQueue = [],
- 795. - re;
- 796. -
- 797. - if (options.uploading) {
- 798. - totalSize = options.filesTotalSize || 0;
- 799. - totalCount = options.filesTotalCount || 0;
- 800. - loadedCount = options.filesLoadedCount || 0;
- 801. - loadedSize = options.filesLoadedSize || 0;
- 802. - filesQueue = options.filesQueue;
- 803. - }
- 804. -
- 805. - if (options.file_match) re = new RegExp(options.file_match, "i");
- 806. - for (var j in vars) {
- 807. - params.push(j + "=" + vars[j]);
- 808. - }
- 809. - var uploadUrl = this.uploadUrls[i] + (this.uploadUrls[i].match(/\?/) ? '&' : '?') + params.join('&'),
- 810. - fileName;
- 811. -
- 812. - var errors = false;
- 813. - for (var j = 0; j < max_files; j++) {
- 814. - fileName = files[j].fileName || files[j].name || '';
- 815. - if (options.file_match) {
- 816. - if (!fileName.match(re)) {
- 817. - errors = true;
- 818. - continue;
- 819. - }
- 820. - }
- 821. - if (options.multi_progress && !options.multi_sequence) {
- 822. - this.onUploadStart({ind: i, fileName: fileName});
- 823. - }
- 824. - totalSize += files[j].size;
- 825. - totalCount += 1;
- 826. - filesQueue.push(files[j]);
- 827. - }
- 828. - filesQueue.reverse();
- 829. -
- 830. - extend(options, {
- 831. - filesQueue: filesQueue,
- 832. - filesTotalSize: totalSize,
- 833. - filesLoadedSize: loadedSize,
- 834. - filesLoadedCount: loadedCount,
- 835. - filesTotalCount: totalCount
- 836. - });
- 837. -
- 838. - // if (options.multi_sequence && options.onUploadProgress) {
- 839. - // options.onUploadProgress(Upload.getFileInfo(i, options, false));
- 840. - // }
- 841. -
- 842. - if (filesQueue.length > 0) {
- 843. - if (cur.multiProgressIndex !== undefined) {
- 844. - if (!cur.nextQueues) cur.nextQueues = [];
- 845. - cur.nextQueues.push(i);
- 846. - } else {
- 847. - this.uploadFile(i, filesQueue.pop(), uploadUrl);
- 848. - if (options.multi_progress) cur.multiProgressIndex = i;
- 849. - }
- 850. - } else if (errors) {
- 851. - Upload.onUploadError(i, 'file type not supported');
- 852. - }
- 853. - },
- 854. -
- 855. - getFileInfo: function(i, options, file) {
- 856. - return options.multi_progress ? {
- 857. - ind: i,
- 858. - fileName: (file) ? file.fileName || file.name || '' : '',
- 859. - num: options.filesLoadedCount,
- 860. - totalSize: options.filesTotalSize,
- 861. - loadedSize: options.filesLoadedSize,
- 862. - totalCount: options.filesTotalCount,
- 863. - file: file
- 864. - } : i;
- 865. - },
- 866. -
- 867. - uploadFile: function(uplId, file, url) {
- 868. - var options = this.options[uplId];
- 869. - var XHR = (browser.msie && intval(browser.version) < 10) ? window.XDomainRequest : window.XMLHttpRequest;
- 870. -
- 871. - var info = Upload.getFileInfo(uplId, options, file);
- 872. -
- 873. - if (options.multi_sequence) {
- 874. - this.onUploadStart(info);
- 875. - }
- 876. -
- 877. - options.uploading = true;
- 878. -
- 879. - if (window.FormData) {
- 880. - var formData = new FormData();
- 881. - formData.append(options.file_name, file);
- 882. -
- 883. - var xhr = new XHR(), fastFail = true;
- 884. - xhr.open('POST', url, true);
- 885. - xhr.onload = function(e) {
- 886. - extend(info, Upload.getFileInfo(uplId, options, file)); // can be extended
- 887. - Upload.options[uplId].filesLoadedSize += file.size;
- 888. - Upload.options[uplId].filesLoadedCount += 1;
- 889. - Upload.onUploadComplete(info, e.target.responseText);
- 890. - if (Upload.options[uplId].filesQueue && Upload.options[uplId].filesQueue.length > 0) {
- 891. - Upload.uploadFile(uplId, Upload.options[uplId].filesQueue.pop(), url);
- 892. - } else {
- 893. - Upload.startNextQueue(uplId);
- 894. - Upload.onUploadCompleteAll(info, e.target.responseText);
- 895. - options.uploading = false;
- 896. - }
- 897. - };
- 898. - xhr.onerror = function(e) {
- 899. - if (false && !e.target.responseText && fastFail) { // Disabled. Replace it by layer to prevent losing unsaved changes on the page.
- 900. - return nav.go('/login?act=upload_fail', false, {nocur: true, params: {context: 0, name: file.fileName || file.name || ''}});
- 901. - }
- 902. - extend(info, Upload.getFileInfo(uplId, options, file));
- 903. - Upload.options[uplId].filesTotalSize -= file.size;
- 904. - Upload.options[uplId].filesTotalCount -= 1;
- 905. - Upload.onUploadError(info, e.target.responseText);
- 906. - if (Upload.options[uplId].filesQueue.length > 0) {
- 907. - Upload.uploadFile(uplId, Upload.options[uplId].filesQueue.pop(), url);
- 908. - } else {
- 909. - Upload.startNextQueue(uplId);
- 910. - Upload.onUploadCompleteAll(info, e.target.responseText);
- 911. - options.uploading = false;
- 912. - }
- 913. - };
- 914. - xhr.upload.onprogress = function(e) {
- 915. - fastFail = false;
- 916. - extend(info, Upload.getFileInfo(uplId, options, file));
- 917. - if (e.lengthComputable) {
- 918. - if (!options.multi_progress) {
- 919. - Upload.onUploadProgress(uplId, Math.min(e.loaded + options.filesLoadedSize, options.filesTotalSize), options.filesTotalSize);
- 920. - } else {
- 921. - Upload.onUploadProgress(info, e.loaded, e.total);
- 922. - }
- 923. - }
- 924. - };
- 925. - xhr.send(formData);
- 926. - } else try {
- 927. - if (XHR && !XHR.prototype.sendAsBinary && window.ArrayBuffer && window.Uint8Array) {
- 928. - var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder;
- 929. - if (BlobBuilder) {
- 930. - XHR.prototype.sendAsBinary = function(text){
- 931. - var data = new ArrayBuffer(text.length);
- 932. - var ui8a = new Uint8Array(data, 0);
- 933. - for (var i = 0; i < text.length; i++) ui8a[i] = (text.charCodeAt(i) & 0xff);
- 934. - var bb = new BlobBuilder();
- 935. - bb.append(data);
- 936. - var blob = bb.getBlob();
- 937. - this.send(blob);
- 938. - }
- 939. - }
- 940. - }
- 941. -
- 942. - var reader = new FileReader();
- 943. -
- 944. - reader.onload = function() {
- 945. - var xhr = new XHR(), fastFail = true;
- 946. -
- 947. - xhr.onload = function(e) {
- 948. - extend(info, Upload.getFileInfo(uplId, options, file));
- 949. - Upload.options[uplId].filesLoadedSize += file.size;
- 950. - Upload.options[uplId].filesLoadedCount += 1;
- 951. - Upload.onUploadComplete(info, e.target.responseText);
- 952. - if (Upload.options[uplId].filesQueue.length > 0) {
- 953. - Upload.uploadFile(uplId, Upload.options[uplId].filesQueue.pop(), url);
- 954. - } else {
- 955. - Upload.startNextQueue(uplId);
- 956. - Upload.onUploadCompleteAll(info, e.target.responseText);
- 957. - }
- 958. - };
- 959. - xhr.onerror = function(e) {
- 960. - if (false && !e.target.responseText && fastFail) { // Disabled. Replace it by layer to prevent losing unsaved changes on the page.
- 961. - return nav.go('/login?act=upload_fail', false, {nocur: true, params: {context: 1, name: file.fileName || file.name || ''}});
- 962. - }
- 963. - extend(info, Upload.getFileInfo(uplId, options, file));
- 964. - Upload.options[uplId].filesTotalSize -= file.size;
- 965. - Upload.options[uplId].filesTotalCount -= 1;
- 966. - Upload.onUploadError(info, e.target.responseText);
- 967. - if (Upload.options[uplId].filesQueue.length > 0) {
- 968. - Upload.uploadFile(uplId, Upload.options[uplId].filesQueue.pop(), url);
- 969. - } else {
- 970. - Upload.startNextQueue(uplId);
- 971. - Upload.onUploadCompleteAll(info, e.target.responseText);
- 972. - options.uploading = false;
- 973. - }
- 974. - };
- 975. - xhr.upload.onprogress = function(e) {
- 976. - fastFail = false;
- 977. - extend(info, Upload.getFileInfo(uplId, options, file));
- 978. - if (e.lengthComputable) {
- 979. - if (!options.multi_progress) {
- 980. - Upload.onUploadProgress(uplId, Math.min(e.loaded + options.filesLoadedSize, options.filesTotalSize), options.filesTotalSize);
- 981. - } else {
- 982. - Upload.onUploadProgress(info, e.loaded, e.total);
- 983. - options.uploading = false;
- 984. - }
- 985. - }
- 986. - };
- 987. -
- 988. - xhr.open('POST', url, true);
- 989. - var boundary = '---------' + irand(1111111111, 9999999999);
- 990. - xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary=" + boundary);
- 991. - var body = '--' + boundary + "\r\n";
- 992. - body += "Content-Disposition: form-data; name='" + options.file_name + "'; filename='" + file.name + "'\r\n";
- 993. - body += "Content-Type: application/octet-stream\r\n\r\n";
- 994. - body += reader.result + "\r\n";
- 995. - body += '--' + boundary + '--';
- 996. -
- 997. - xhr.sendAsBinary(body);
- 998. - };
- 999. - reader.readAsBinaryString(file);
- 1000. - } catch (e) {
- 1001. - try { console.error(e); } catch (e2) {}
- 1002. - }
- 1003. - Upload.options[uplId].xhr = xhr;
- 1004. - },
- 1005. -
- 1006. - terminateUpload: function(i, name) {
- 1007. - try {
- 1008. - var vars = Upload.vars[i],
- 1009. - options = Upload.options[i],
- 1010. - params = [],
- 1011. - queue = options.filesQueue;
- 1012. - inQueue = false,
- 1013. - info = options.multi_progress ? {ind: i, fileName: name} : i,
- 1014. - ind = name ? i + '_' + name : i;
- 1015. -
- 1016. - for (var j in vars) {
- 1017. - params.push(j + "=" + vars[j]);
- 1018. - }
- 1019. - for (var j in queue) {
- 1020. - if (name == (queue[j].fileName || queue[j].name || '')) {
- 1021. - queue.splice(j, 1);
- 1022. - inQueue = true;
- 1023. - break;
- 1024. - }
- 1025. - }
- 1026. - re('upload' + ind + '_progress_wrap');
- 1027. - Upload.onUploadComplete(info, '');
- 1028. - if (!inQueue && options.xhr) options.xhr.abort();
- 1029. - var url = this.uploadUrls[i] + (this.uploadUrls[i].match(/\?/) ? '&' : '?') + params.join('&');
- 1030. - if (!inQueue) {
- 1031. - if (queue.length > 0) {
- 1032. - Upload.uploadFile(i, queue.pop(), url);
- 1033. - } else {
- 1034. - Upload.startNextQueue(i);
- 1035. - Upload.onUploadCompleteAll(info, '');
- 1036. - }
- 1037. - }
- 1038. - } catch (e) {
- 1039. - try { console.error(e); } catch (e2) {}
- 1040. - }
- 1041. - },
- 1042. -
- 1043. - startNextQueue: function(i) {
- 1044. - if (cur.multiProgressIndex === undefined) {
- 1045. - setTimeout(function() {delete cur.fileApiUploadStarted;}, 1000);
- 1046. - }
- 1047. - if (i != cur.multiProgressIndex) return;
- 1048. - var options = this.options[i];
- 1049. - if (options.multi_progress && cur.nextQueues && cur.nextQueues.length) {
- 1050. - var next = cur.nextQueues[0],
- 1051. - queue = Upload.options[next].filesQueue;
- 1052. - cur.nextQueues.splice(0, 1);
- 1053. - while (queue.length == 0 && cur.nextQueues.length > 0) {
- 1054. - next = cur.nextQueues[0];
- 1055. - cur.nextQueues.splice(0, 1);
- 1056. - queue = Upload.options[next].filesQueue;
- 1057. - }
- 1058. - if (queue.length > 0) {
- 1059. - var vars = Upload.vars[next], params = [];
- 1060. - for (var j in vars) {
- 1061. - params.push(j + "=" + vars[j]);
- 1062. - }
- 1063. - var url = Upload.uploadUrls[next] + (Upload.uploadUrls[next].match(/\?/) ? '&' : '?') + params.join('&');
- 1064. - Upload.uploadFile(next, queue.pop(), url);
- 1065. - cur.multiProgressIndex = next;
- 1066. - } else {
- 1067. - delete cur.multiProgressIndex;
- 1068. - setTimeout(function() {delete cur.fileApiUploadStarted;}, 1000);
- 1069. - }
- 1070. - } else {
- 1071. - delete cur.multiProgressIndex;
- 1072. - setTimeout(function() {delete cur.fileApiUploadStarted;}, 1000);
- 1073. - }
- 1074. - },
- 1075. -
- 1076. - isFileDrag: function(e) {
- 1077. - if (!e || e.target && (e.target.tagName == 'IMG' || e.target.tagName == 'A')) return false;
- 1078. - if (e.dataTransfer.types) {
- 1079. - for (var i = 0; i < e.dataTransfer.types.length; i++) {
- 1080. - if (e.dataTransfer.types[i] == "Files") {
- 1081. - return true;
- 1082. - }
- 1083. - }
- 1084. - } else {
- 1085. - return true;
- 1086. - }
- 1087. - return false;
- 1088. - },
- 1089. -
- 1090. - dragEnter: function(i, e) {
- 1091. - if (!cur.uploadDragStarted || cur.uploadDragStarted == 1) {
- 1092. - cur.uploadDragStarted = Upload.isFileDrag(e) ? 2 : 1;
- 1093. - }
- 1094. - if (cur.uploadDragStarted == 1 || !Upload.dropbox[i]) {
- 1095. - cancelEvent(e);
- 1096. - return;
- 1097. - }
- 1098. - setTimeout(function() {
- 1099. - clearTimeout(cur.dragTimer);
- 1100. - delete cur.dragTimer;
- 1101. - }, 0);
- 1102. - if (Upload.options[i].onDragEnter) {
- 1103. - Upload.options[i].onDragEnter();
- 1104. - }
- 1105. - show(Upload.dropbox[i]);
- 1106. - cancelEvent(e);
- 1107. - },
- 1108. -
- 1109. - dragOut: function(i, e) {
- 1110. - if (cur.uploadDragStarted == 1 || !Upload.dropbox[i]) {
- 1111. - cancelEvent(e);
- 1112. - return;
- 1113. - }
- 1114. - if (cur.dragTimer) {
- 1115. - clearTimeout(cur.dragTimer);
- 1116. - delete cur.dragTimer;
- 1117. - }
- 1118. - cur.dragTimer = setTimeout(function() {
- 1119. - if (!Upload.options[i].visibleDropbox) {
- 1120. - hide(Upload.dropbox[i]);
- 1121. - }
- 1122. - removeClass(Upload.dropbox[i], 'dropbox_over');
- 1123. - }, 100);
- 1124. - cancelEvent(e);
- 1125. - },
- 1126. -
- 1127. - dragOver: function(i, e) {
- 1128. - if (cur.uploadDragStarted == 1 || !Upload.dropbox[i]) {
- 1129. - cancelEvent(e);
- 1130. - return;
- 1131. - }
- 1132. - if (browser.mozilla && intval(browser.version) > 3 && !Upload.options[i].visibleDropbox) {
- 1133. - if (cur.dragOverTimer) {
- 1134. - clearTimeout(cur.dragOverTimer);
- 1135. - delete cur.dragOverTimer;
- 1136. - }
- 1137. - cur.dragOverTimer = setTimeout(function() {
- 1138. - hide(Upload.dropbox[i]);
- 1139. - }, 100);
- 1140. - }
- 1141. - var inside = Upload.insideDropbox(i, e);
- 1142. - if (e.dataTransfer) {
- 1143. - e.dataTransfer.dropEffect = inside ? 'copy' : 'none';
- 1144. - }
- 1145. - toggleClass(Upload.dropbox[i], 'dropbox_over', inside);
- 1146. - cancelEvent(e);
- 1147. - },
- 1148. -
- 1149. - drop: function(e) {
- 1150. - each (Upload.dropbox, function (i, dropbox) {
- 1151. - if (!dropbox) {return;}
- 1152. - if (Upload.insideDropbox(i, e)) {
- 1153. - Upload.onFileApiSend(i, e.dataTransfer.files);
- 1154. - }
- 1155. - if (!Upload.options[i].visibleDropbox) {
- 1156. - hide(dropbox);
- 1157. - }
- 1158. - removeClass(dropbox, 'dropbox_over');
- 1159. - });
- 1160. - delete cur.uploadDragStarted;
- 1161. - cancelEvent(e);
- 1162. - return false;
- 1163. - },
- 1164. -
- 1165. - insideDropbox: function(i, e) {
- 1166. - var el = e.target;
- 1167. - while (el.parentNode) {
- 1168. - if (el == Upload.dropbox[i]) return true;
- 1169. - el = el.parentNode;
- 1170. - }
- 1171. - return false;
- 1172. - },
- 1173. -
- 1174. - _eof: 1};
- 1175. -
- 1176. - }
- 1177. -
- 1178. - try{stManager.done('upload.js');}catch(e){}
- ------
Advertisement
Add Comment
Please, Sign In to add comment