1(function() { 2if (window.BlogBFileDialog) 3 return; 4window.BlogBFileDialogUniqueID = []; 5window.BlogBFileDialog = function(arParams) 6{ 7 this.dialogName = 'AttachmentsDialog'; 8 this.agent = false; 9 this.uploadFileUrl = arParams.upload_path; // from file.input php 10 11 this.id = (!!arParams["id"] ? arParams["id"] : this.getID()); 12 this.controlID = arParams["id"]; 13 this.enabled = true; 14 15 this.controller = (!! arParams.controller ) ? arParams.controller : null; 16 this.fileInput = arParams.fileInput; 17 arParams.hAttachEvents = BX.delegate(this.InitAgent, this); 18 19 this.msg = arParams.msg; 20 this.dropAutoUpload = arParams.dropAutoUpload; 21 this.CID = arParams.CID; 22 this.multiple = !!arParams.multiple; 23 24 arParams.caller = this; 25 arParams.classes = { 26 'uploaderParent' : 'file-uploader', 27 'uploader' : 'file-fileUploader', 28 'tpl_simple' : 'file-simple', 29 'tpl_extended' : 'file-extended', 30 'selector' : 'file-selector', 31 'selector_active' : 'file-selector-active' 32 }; 33 arParams.doc_prefix = 'wd-doc'; 34 arParams.placeholder = BX.findChild(this.controller, {'className': 'file-placeholder-tbody'}, true); 35 this.doc_prefix = arParams.doc_prefix; 36 this.values = (arParams["values"] || []); 37 38 if (!!BX.FileUploadAgent) { 39 this.agent = new BX.FileUploadAgent(arParams); 40 BX.addCustomEvent(this, 'ShowUploadedFile', BX.delegate(this.ShowUploadedFile, this)); 41 BX.addCustomEvent(this, 'StopUpload', this.StopUpload.bind(this)); 42 BX.onCustomEvent(BX(this.controller.parentNode), "BFileDLoadFormControllerInit", [this]); 43 } else { 44 BX.debug('/bitrix/components/bitrix/main.file.input/templates/drag_n_drop/script.js: BX.FileUploadAgent is not defined.' + 45 ' You need to load /bitrix/js/main/file_upload_agent.js'); 46 } 47} 48 49window.BlogBFileDialog.prototype.getID = function() { 50 return '' + new Date().getTime(); 51} 52 53window.BlogBFileDialog.prototype.InitAgent = function(agent) 54{ 55 if (this.controller) { 56 agent.placeholder = BX.findChild(this.controller, {'className': 'file-placeholder-tbody'}, true); 57 } 58} 59 60window.BlogBFileDialog.prototype.ShowUploadedFile = function(agent) // event 61{ 62 this.agent = agent; 63 var uploadResult = agent.uploadResult; 64 if (uploadResult && (uploadResult.element_id > 0)) { 65 var node = this.CreateFileRow(uploadResult); 66 if (!!agent.inputName && agent.inputName.length > 0) { 67 var hidden = BX.create('INPUT', { 68 props: { 69 'id': 'file-doc'+uploadResult.element_id, 70 'type': 'hidden', 71 'name': agent.inputName + (this.multiple ? '[]' : ''), 72 'value': uploadResult.element_id 73 } 74 }); 75 node.appendChild(hidden); 76 } 77 this.values.push(node); 78 agent._clearPlace(); 79 80 if (this.controller && this.controller.parentNode) 81 {
82 const securityNode = (this.controller.closest('form') || this.controller.parentNode).querySelector('#upload-cid'); 83 if (securityNode) 84 { 85 securityNode.value = this.CID; 86 } 87 BX.onCustomEvent(this.controller.parentNode, 'OnFileUploadSuccess', [uploadResult, this]); 88 } 89 90 } else { 91 var text = (uploadResult && uploadResult["error"] ? uploadResult["error"] : this.msg.upload_error); 92 agent.ShowUploadError(text); 93 94 if (this.controller && this.controller.parentNode) 95 BX.onCustomEvent(this.controller.parentNode, 'OnFileUploadFail'); 96 } 97} 98 99window.BlogBFileDialog.prototype.CreateFileRow = function(result) 100{ 101 var res = result; 102 var mode = 'file'; 103 if (!! res.element_content_type && (res.element_content_type.indexOf('image/') == 0) && 104 !!res.element_image && (res.element_image.length > 0) && 105 !!res.element_thumbnail && (res.element_thumbnail.length > 0) ) { 106 mode = 'image'; 107 } 108 109 var newNode = BX.clone(BX("file-" + mode + "-template")); 110 111 BX.template(newNode, BX.delegate(function(node) { 112 this.tplFileRow(node, res); 113 }, this)); 114 115 if (mode == 'image') { 116 var span = null; 117 for (i=0;i<newNode.children.length;i++) 118 { 119 span = newNode.children[i]; 120 if (span.nodeType == 1) 121 break; 122 } 123 124 span.setAttribute('id', this.doc_prefix + result.element_id); 125 var closeControl = BX.findChild(span, {'className': 'feed-add-post-del-but'}, true); 126 BX.bind(closeControl, 'click', BX.delegate( 127 function() { 128 var control = closeControl; 129 var parent = control.parentNode; 130 this.agent.StopUpload(parent); 131 BX.cleanNode(parent, true); 132 }, this)); 133 this.agent.AddNodeToPlaceholder(span); 134 newNode = span; 135 } else { 136 newNode.setAttribute('id', this.doc_prefix + result.element_id); 137 this.agent.AddRowToPlaceholder(newNode); 138 newNode = this.agent.placeholder.querySelector('#' + this.doc_prefix + result.element_id); 139 } 140 return newNode; 141} 142 143window.BlogBFileDialog.prototype.GetUploadDialog = function(agent) 144{ 145 return new BlogBFileDialogUploader(this, agent); 146} 147 148window.BlogBFileDialog.prototype.tplFileRow = function(nodes, res) 149{ 150 for (id in nodes) 151 { 152 if (! nodes.hasOwnProperty(id)) 153 continue; 154 155 var node = nodes[id]; 156 157 if ((id == 'image') && 158 !!res.element_image && (res.element_image.length > 0) && 159 !!res.element_thumbnail && (res.element_thumbnail.length > 0)) 160 { 161 node.setAttribute('src', res.element_image); 162 node.setAttribute('rel', res.element_thumbnail); 163 } 164 else 165 { 166 if (!! res['element_'+id]) 167 node.innerHTML = res['element_'+id]; 168 } 169 } 170} 171 172window.BlogBFileDialog.prototype._addUrlParam = function(url, param) 173{ 174 if (!url) 175 return null; 176 if (url.indexOf(param) == -1) 177 url += ((url.indexOf('?') == -1) ? '?' : '&') + param ; 178 return url; 179} 180 181window.BlogBFileDialog.prototype.LoadDialogs = function(dialogs) 182{ 183 if (!!this.agent) 184 this.agent.LoadDialogs(dialogs); 185 else { 186 var dlgs = dialogs; 187 setTimeout(BX.delegate(function() {this.LoadDialogs(dlgs);}, this), 100); 188 } 189} 190 191window.BlogBFileDialog.prototype.StopUpload = function(agent, parent) 192{ 193 this.agent = agent; 194 var id = 0; 195 var regExp = new RegExp(this.doc_prefix + '(\\d+)'); 196 if (regExp.test(parent.id)) 197 { 198 var buf = parent.id.match(regExp); 199 id = buf[1]; 200 } 201 if (this.controller && this.controller.parentNode) 202 { 203 BX.onCustomEvent(this.controller.parentNode, 'OnFileUploadRemove', [id, this]); 204 } 205 206 var data = { 207 fileID : id, 208 sessid : BX.bitrix_sessid(), 209 cid : this.CID, 210 controlID : this.controlID, 211 mfi_mode : "delete", 212 }; 213 214 BX.ajax({ 215 'method': 'POST', 216 'dataType': 'html', 217 'url': this.uploadFileUrl, 218 'processData': false, 219 'data': BX.ajax.prepareData(data), 220 'onsuccess': function() {} 221 }); 222} 223 224window.BlogBFileDialogDispatcher = function(controller) 225{ 226 this.id = this.getID(); 227 this.controller = controller; 228 BX.loadScript('/bitrix/js/main/core/core_dd.js', BX.delegate(function() { 229 if (BX.type.isElementNode(this.controller) && this.controller.parentNode && this.controller.parentNode.parentNode) 230 { 231 var target = this.controller.parentNode.parentNode; 232 this.dropbox = new BX.DD.dropFiles(target); 233 if (this.dropbox && this.dropbox.supported() && BX.ajax.FormData.isSupported()) { 234 this.hExpandUploader = BX.proxy(this.ExpandUploader, this); 235 BX.addCustomEvent(this.dropbox, 'dragEnter', this.hExpandUploader);
236 BX.addCustomEvent(target, "UnbindDndDispatcher", BX.delegate(this.Unbind, this)); 237 } 238 } 239 }, this)); 240} 241 242window.BlogBFileDialogDispatcher.prototype.getID = function() { 243 return '' + new Date().getTime(); 244} 245 246window.BlogBFileDialogDispatcher.prototype.ExpandUploader = function() 247{ 248 BX.onCustomEvent(BX(this.controller.parentNode), "BFileDLoadFormController", ['show']); 249// this.Unbind(); 250} 251 252window.BlogBFileDialogDispatcher.prototype.Unbind = function() 253{ 254 BX.removeCustomEvent(this.dropbox, 'dragEnter', this.hExpandUploader); 255} 256 257// upoader section 258window.BlogBFileDialogUploader = function(arParams, agent) 259{ 260 this.WDUploaded = false; 261 this.WDUploadInProgress = false; 262 this.documentExists = false; 263 this.fileDropped = false; 264 265 this.caller = arParams; 266 this.agent = agent; 267 this.parentID = this.agent.id; 268 this.id = this.caller.getID(); 269 270 this.msg = arParams.msg; 271 this.dropAutoUpload = arParams.dropAutoUpload; 272 this.uploadFileUrl = arParams.uploadFileUrl; // from file.input php 273 this.CID = arParams.CID; 274 this.controlID = arParams.controlID; 275 276 this.CreateElements(); 277 this.fileInput = (!!agent.fileInput ? agent.fileInput : ((BX.type.isDomNode(agent.fileInputID)) ? agent.fileInputID : BX(arParams.fileInput))); 278 if (BX.type.isDomNode(this.fileInput)) { 279 this.fileInput.name = 'mfi_files[]'; 280 this.fileInput.accept = agent.parent?.accept || ''; 281 } 282 this.fileList = this.__form; 283 284 BX.loadScript('/bitrix/js/main/core/core_dd.js', BX.delegate( 285 function() { 286 var dropbox = new BX.DD.dropFiles(); 287 if (dropbox && dropbox.supported() && BX.ajax.FormData.isSupported()) 288 { 289 this.dropbox = dropbox; 290 } 291 this.agent.BindUploadEvents(this); 292 }, this)); 293} 294 295window.BlogBFileDialogUploader.prototype.CreateElements = function() 296{ 297 var uniqueID; 298 do { 299 uniqueID = Math.floor(Math.random() * 99999); 300 } while(BX("iframe-" + uniqueID)); 301 302 var iframeName = "iframe-" + this.id; 303 var iframe = BX.create("IFRAME", { 304 props: {name: iframeName, id: iframeName}, 305 style: {display: "none"} 306 }); 307 document.body.appendChild(iframe); 308 this.iframeUpload = iframe; 309 310 var form = BX.create("FORM", { 311 props: { 312 id: "form-" + uniqueID, 313 method: "POST", 314 action: this.uploadFileUrl, 315 enctype: "multipart/form-data", 316 encoding: "multipart/form-data", 317 target: iframeName 318 }, 319 style: {display: "none"}, 320 children: [ 321 BX.create("INPUT", { 322 props: { 323 type: "hidden", 324 name: "sessid", 325 value: BX.bitrix_sessid() 326 } 327 }), 328 BX.create("INPUT", { 329 props: { 330 type: "hidden", 331 name: "uniqueID", 332 value: uniqueID 333 } 334 }), 335 BX.create("INPUT", { 336 props: { 337 type: "hidden", 338 name: "cid", 339 value: this.CID 340 } 341 }), 342 BX.create("INPUT", { 343 props: { 344 type: "hidden", 345 name: "controlID", 346 value: (!!this.controlID ? this.controlID : '') 347 } 348 }), 349 BX.create("INPUT", { 350 props: { 351 type: "hidden", 352 name: "mfi_mode", 353 value: "upload" 354 } 355 }) 356 ] 357 }); 358 document.body.appendChild(form); 359 this.__form = form; 360 361 window['FILE_UPLOADER_CALLBACK_' + uniqueID] = BX.proxy(this.Callback, this); 362} 363 364window.BlogBFileDialogUploader.prototype.GetUploadFileName = function() 365{ 366 var fileName = ''; 367 if (this.fileInput && (this.fileInput.value.length > 0)) { 368 var fileName = this.fileInput.value; 369 if (fileName.indexOf('\\') > -1) // deal with Chrome fakepath 370 fileName = fileName.substr(fileName.lastIndexOf('\\')+1); 371 } else { 372 var fileNode = this.fileList; 373 if (fileNode.file) 374 fileName = fileNode.file.fileName || fileNode.file.name; 375 } 376 return fileName; 377} 378 379window.BlogBFileDialogUploader.prototype.Callback = function(files, uniqueID) 380{ 381 if (BX.type.isArray(files)) 382 { 383 files.forEach((function(file) { 384 var result = { 385 success: true, 386 storage: 'bfile', 387 element_id: file.fileID, 388 element_name: file.fileName, 389 element_size: file.fileSize, 390 element_url: file.fileURL,
391 element_content_type: file.content_type || file.fileContentType, 392 element_image: file.img_thumb_src || file.fileSrc, 393 element_thumbnail: file.img_source_src || file.fileSrc, 394 }; 395 if (!!result.element_image) 396 result.element_image = result.element_image.replace(/\/([^\/]+)$/, function(str, name) { return "/" + BX.util.urlencode(name); } ); 397 if (!!result.element_thumbnail) 398 result.element_thumbnail = result.element_thumbnail.replace(/\/([^\/]+)$/, function(str, name) { return "/" + BX.util.urlencode(name); } ); 399 400 if (file['error'] || file['status'] === 'error') 401 { 402 result['error'] = file['error'] || file['message']; 403 } 404 405 BX.onCustomEvent(this, 'uploadFinish', [result]); 406 }).bind(this)); 407 } else { 408 BX.onCustomEvent(this, 'uploadFinish', [{ 409 success: false, 410 messages: BX.type.isNotEmptyString(files) ? files : this.msg.upload_error 411 }]); 412 } 413 window['FILE_UPLOADER_CALLBACK_' + uniqueID] = BX.DoNothing; 414 BX.cleanNode(BX("iframe-" + uniqueID), true); 415 BX.cleanNode(BX("form-" + uniqueID), true); 416 this.agent.uploadDialog = null; 417} 418 419window.BlogBFileDialogUploader.prototype.UploadResponse = function(evt, responseJSONStr) 420{ 421 this.WDUploadInProgress = false; 422 BX.unbind(window, 'beforeunload', BX.proxy(this.UploadLeave, this)); 423 424 if (! responseJSONStr 425 || responseJSONStr.length <= 0) 426 { 427 this.onError(); 428 } 429} 430 431window.BlogBFileDialogUploader.prototype.UploadResponseIframe = function(evt, responseJSONStr) 432{ 433 this.WDUploadInProgress = false; 434 BX.unbind(window, 'beforeunload', BX.proxy(this.UploadLeave, this)); 435} 436 437window.BlogBFileDialogUploader.prototype.UploadLeave = function(e) 438{ 439 var e = e || window.event; 440 var msg = ''; 441 if (this.WDUploadInProgress) 442 msg = this.msg.UploadInterrupt; 443 else if (((!this.WDUploaded) && this.fileInput && (this.fileInput.value.length > 0))) 444 msg = this.msg.UploadNotDone; 445 if (msg != '') 446 { 447 if (e) 448 e.returnValue = msg; 449 return msg; // safari & chrome 450 } 451 return; 452} 453 454window.BlogBFileDialogUploader.prototype.UpdateListFiles = function(files) 455{ 456 if (this && files) 457 { 458 if (files.length < 1) 459 return; 460 var fileNode = this.fileList; 461 fileNode.file = files[0]; 462 463 this.WDUploadInProgress = true; 464 this.fileDropped = true; 465 this.CallSubmit(); 466 } 467} 468 469window.BlogBFileDialogUploader.prototype.GetInputData = function(parentNode) 470{ 471 var elements = []; 472 var data = {}; 473 elements = elements.concat( 474 BX.findChildren(parentNode, {'tag': 'input'}, true), 475 BX.findChildren(parentNode, {'tag': 'textarea'}, true), 476 BX.findChildren(parentNode, {'tag': 'select'}, true)); 477 478 for(var i=0; i<elements.length; i++) 479 { 480 var el = elements[i]; 481 if (!el || el.disabled || el.name.length < 1) 482 continue; 483 switch(el.type.toLowerCase()) 484 { 485 case 'text': 486 case 'textarea': 487 case 'password': 488 case 'hidden': 489 case 'select-one': 490 data[el.name] = el.value; 491 break; 492 case 'radio': 493 if(el.checked) 494 data[el.name] = el.value; 495 break; 496 case 'checkbox': 497 data[el.name] = (el.checked ? 'Y':'N'); 498 break; 499 case 'select-multiple': 500 var l = el.options.length; 501 if (l > 0) data[el.name] = new Array(); 502 for (j=0; j<l; j++) 503 if (el.options[j].selected) 504 data[el.name].push(el.options[j].value); 505 break; 506 default: 507 break; 508 } 509 } 510 return data; 511} 512 513window.BlogBFileDialogUploader.prototype.SetFileInput = function(fileInput) 514{ 515 if (!! this.__form.mfi_save) 516 return; 517 if (this.fileInput && this.fileInput != fileInput) 518 BX.remove(this.fileInput); 519 this.__form.appendChild(fileInput); 520 this.fileInput = fileInput; 521} 522 523window.BlogBFileDialogUploader.prototype.CallSubmit = function() 524{ 525 if (!! this.__form.mfi_save) 526 return; 527 BX.onCustomEvent(this, 'uploadStart', [this]); 528 529 BX.bind(window, 'beforeunload', BX.proxy(this.UploadLeave, this)); 530 BX.bind(this.iframeUpload, 'load', BX.delegate(this.UploadResponseIframe, this)); 531 532 if (this.dropbox) { 533 this.onProgress(0.15); 534 if (this.fileInput && (this.fileInput.files.length > 0)) { 535 var fileNode = this.fileList; 536 fileNode.file = this.fileInput.files[0]; 537 } 538 539 var arConstParams = this.GetInputData(this.__form); 540 this.fileNodes = [this.fileList]; 541 for (i in this.fileNodes) { 542 if (this.fileNodes[i].file) {
543 var fd = new BX.ajax.FormData(); 544 545 for (item in this.fileNodes[i].data) 546 { 547 fd.append(item, this.fileNodes[i].data[item]); 548 } 549 550 if (!! Object && !! Object.keys) // for IE 10 .... 551 { 552 var keys = Object.keys(arConstParams); 553 for (var k in keys) 554 { 555 var key = keys[k] 556 var cons = arConstParams[key] 557 fd.append(key, cons); 558 } 559 } 560 else 561 { 562 for (item in arConstParams) 563 { 564 fd.append(item, arConstParams[item]); 565 } 566 } 567 568 fd.append('mfi_files[]', this.fileNodes[i].file); 569 570 fd.send( 571 this.uploadFileUrl, 572 BX.delegate(function(ajaxdata) { 573 this.UploadResponse(null, ajaxdata); 574 }, this), 575 BX.delegate(this.onProgress, this) 576 ); 577 } 578 } 579 } else { 580 this.onProgress(0.15); 581 this.WDUploadInProgress = true; 582 var fid = this.__form.id; 583 BX.submit(this.__form, 'mfi_save', 'Y'); 584 } 585} 586 587window.BlogBFileDialogUploader.prototype.onProgress = function(percent) 588{ 589 if (isNaN(percent)) 590 return; 591 BX.onCustomEvent(this, 'progress', [percent]); 592} 593 594window.BlogBFileDialogUploader.prototype.onError = function() 595{ 596 BX.onCustomEvent(this, 'uploadFinish', [{success: false, messages: this.msg.upload_error}]); 597} 598 599top.BlogBFileDialog = window.BlogBFileDialog; 600top.BlogBFileDialogUploader = window.BlogBFileDialogUploader; 601top.BlogBFileDialogDispatcher = window.BlogBFileDialogDispatcher; 602 603window.MFIDD = function(params){ 604 var status = (params["status"] === 'show' ? 'show' : (params["status"] === 'hide' ? 'hide' : 'switch')); 605 if (status == 'switch') 606 status = (params['controller'].style.display != 'none' ? 'hide' : 'show'); 607 var showControl = function(status) 608 { 609 if (status == "show") 610 { 611 BX.fx.show(params['controller'], 'fade', {time:0.2}); 612 if (params['switcher'] && params['switcher'].style.display != 'none') 613 BX.fx.hide(params['switcher'], 'fade', {time:0.1}); 614 if (!! window['BfileUnbindDispatcher' + params['uid']]) 615 window['BfileUnbindDispatcher' + params['uid']](); 616 } 617 else if (params['controller'].style.display !== "none") 618 { 619 BX.fx.hide(params['controller'], 'fade', {time:0.2}); 620 } 621 }; 622 if (! params['controller'].loaded) 623 { 624 params['controller'].loaded = true; 625 var dropbox = new BX.DD.dropFiles(), 626 variant = (dropbox && dropbox.supported() && BX.ajax.FormData.isSupported() ? 'extended' : 'simple'); 627 628 top['BfileFD' + params['uid']] = window['BfileFD' + params['uid']] = new BlogBFileDialog({ 629 'mode' : variant, 630 'CID' : params['CID'], 631 'id' : params['id'], 632 'upload_path' : params['upload_path'], 633 'multiple' : params['multiple'], 634 'controller': params['controller'], 635 'inputName' : params['inputName'], 636 'fileInput' : ("file-fileUploader-" + params['uid']), 637 'fileInputName' : "mfi_files[]", 638 'accept': params.accept, 639 'values' : BX.findChildren(BX('file-selectdialog-' + params['uid']), {"className" : "file-inline-file"}, true), 640 'msg' : { 641 'loading' : BX.message('loading'), 642 'file_exists' : BX.message('file_exists'), 643 'upload_error' : BX.message('upload_error'), 644 'access_denied' : BX.message('access_denied') 645 }, 646 }); 647 showControl(status); 648 window['BfileFD' + params['uid']].LoadDialogs('DropInterface'); 649 BX.onCustomEvent('BFileDSelectFileDialogLoaded', [window['BfileFD' + params['uid']]]); 650 } 651 else 652 showControl(status); 653} 654window.BlogBFileJustDialog = function(arParams) 655{ 656 this.dialogName = 'AttachmentsDialog'; 657 this.agent = false; 658 659 this.id = (!!arParams["id"] ? arParams["id"] : this.getID()); 660 this.controlID = arParams["id"]; 661 this.enabled = true; 662 this.uploadFileUrl = arParams.upload_path; // from file.input php 663 664 this.controller = (!! arParams.controller ) ? arParams.controller : null; 665 this.CID = arParams.CID; 666 667 arParams.caller = this; 668 arParams.doc_prefix = 'wd-doc'; 669 arParams._mkFileInput = BX.DoNothing 670 arParams.mode = 'extended'; 671 arParams.classes = { 672 'tpl_simple' : 'file-simple', 673 'tpl_extended' : 'file-extended' 674 }; 675 676 this.doc_prefix = arParams.doc_prefix; 677 678 if (!!BX.FileUploadAgent) { 679 this.agent = new BX.FileUploadAgent(arParams); 680 BX.addCustomEvent(this, 'StopUpload', BX.delegate(this.StopUpload, this)); 681 BX.onCustomEvent(BX(this.controller.parentNode), "BFileDLoadFormControllerInit", [this]); 682 } else { 683 BX.debug('/bitrix/components/bitrix/main.file.input/templates/drag_n_drop/script.
683js: BX.FileUploadAgent is not defined.' + 684 ' You need to load /bitrix/js/main/file_upload_agent.js'); 685 } 686} 687window.BlogBFileJustDialog.prototype.StopUpload = function(agent, parent) 688{ 689 this.agent = agent; 690 id = false; 691 mID = parent.id.match(new RegExp(this.doc_prefix + '(\\d+)')); 692 if (!!mID) { 693 id = mID[1]; 694 } 695 696 if (this.controller && this.controller.parentNode) 697 BX.onCustomEvent(this.controller.parentNode, 'OnFileUploadRemove', [id, this]); 698 699 var data = { 700 fileID : id, 701 sessid : BX.bitrix_sessid(), 702 cid : this.CID, 703 controlID : this.controlID, 704 mfi_mode : "delete" 705 }; 706 BX.ajax.post(this.uploadFileUrl, data); 707} 708 709 710window.MFIS = function(params) 711{ 712 if (! params['controller'].loaded) 713 { 714 params['controller'].loaded = true; 715 top['BfileFD' + params['uid']] = window['BfileFD' + params['uid']] = new BlogBFileJustDialog({ 716 'CID' : params['CID'], 717 'id' : params['id'], 718 'upload_path' : params['upload_path'], 719 'controller': params['controller'], 720 'values' : BX.findChildren(BX('file-selectdialog-' + params['uid']), {"className" : "file-inline-file"}, true) 721 }); 722 BX.fx.show(params['controller'], 'fade', {time:0.2}); 723 BX.onCustomEvent('BFileDSelectFileDialogLoaded', [window['BfileFD' + params['uid']]]); 724 } 725} 726 727})(window);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.