%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/bizproc.automation/templates/.default/
Upload File :
Create Path :
Current File : //home/bitrix/www/bitrix/components/bitrix/bizproc.automation/templates/.default/disk_uploader.js

;if (!BX.getClass('BX.Bizproc.Automation.DiskUploader')) (function(BX)
{
	'use strict';
	BX.namespace('BX.Bizproc.Automation');
	var DiskUploader = function()
	{
		this._id = "";
		this._settings = {};
		this._messages = {};
		this._agent = null;
		this._form = this._wrapper = this._switchContainer = this._container = this._fileInput = this._fileSelector = this._label = this._dropZoneWrapper = this._dropZone = this._itemContainer = null;
		this._mode = DiskUploader.InterfaceMode.edit;
		this._items = [];

		this._fileUploadStartHandler = BX.delegate(this._onFileUploadStart, this);
		this._fileUploadProgressHandler = BX.delegate(this._onFileUploadProgress, this);
		this._fileUploadCompleteHandler = BX.delegate(this._onFileUploadComplete, this);
		this._fileUploadErrorHandler = BX.delegate(this._onFileUploadError, this);

		this._fileSelectButtonClickHandler = BX.delegate(this._onFileSelectButtonClick, this);
		this._fileDialogInitHandler = BX.delegate(this._onFileDialogInit, this);
		this._dropZoneMouseOverHandler = BX.delegate(this._onDropZoneMouseOver, this);
		this._dropZoneMouseOutHandler = BX.delegate(this._onDropZoneMouseOut, this);

		this._agentErrorHandler = BX.delegate(this._onAgentError, this);
		this._agentFileInputReinitHandler = BX.delegate(this._onAgentFileInputReinit, this);
		this._agentFileInitHandler = BX.delegate(this._onAgentFileInit, this);

		this._uploadFileUrl = "/bitrix/tools/disk/uf.php?action=uploadfile";
		this._selectFileUrl = "/bitrix/tools/disk/uf.php?action=selectFile";

		this._isShown = false;
		this._hasLayout = false;
	};

	DiskUploader.InterfaceMode = { edit: 1, view: 2 };

	DiskUploader.prototype =
		{
			initialize: function(id, settings)
			{
				this._id = id;
				this._settings = settings ? settings : {};
				this._messages = this.getSetting("msg", {});
			},
			getId: function()
			{
				return this._id;
			},
			getSetting: function(name, defaultval)
			{
				return typeof(this._settings[name]) != "undefined" ? this._settings[name] : defaultval;
			},
			getMessages: function()
			{
				return this.getSetting("msg", {});
			},
			getMessage: function(name, defaultval)
			{
				if (typeof(defaultval) === "undefined")
				{
					defaultval = "";
				}

				return this._messages.hasOwnProperty(name) ? this._messages[name] : defaultval;
			},
			getFileInputName: function()
			{
				return this._fileInput;
			},
			getPlaceHolder: function()
			{
				return this._itemContainer;
			},
			getMode: function()
			{
				return this._mode;
			},
			setMode: function(mode)
			{
				if (this._mode === mode)
				{
					return;
				}

				if (this._hasLayout)
				{
					throw "Could not set mode while control has layout.";
				}

				this._mode = mode;
			},
			getAgent: function()
			{
				return this._agent;
			},
			getItems: function()
			{
				return this._items;
			},
			getItem: function(id)
			{
				for (var i = 0; i < this._items.length; i++)
				{
					var item = this._items[i];
					if (item.getId() === id)
					{
						return item;
					}
				}
				return null;
			},
			hasItems: function()
			{
				return this._items.length > 0;
			},
			getFileIds: function()
			{
				var result = [];
				for (var i = 0; i < this._items.length; i++)
				{
					var fileId = this._items[i].getFileId();
					if (fileId > 0)
					{
						result.push(fileId);
					}
				}
				return result;
			},
			getValues: function()
			{
				return this.getFileIds();
			},
			setValues: function(vals)
			{
				for (var i = 0; i < vals.length; i++)
				{
					var datum = vals[i];
					var fileId = typeof(datum["ID"]) !== "undefined" ? parseInt(datum["ID"]) : 0;
					var item = this.addItem(fileId.toString(),
						{
							fileId: fileId,
							name: datum["NAME"],
							size: datum["SIZE"],
							viewUrl: BX.type.isNotEmptyString(datum["VIEW_URL"]) ? datum["VIEW_URL"] : "",
							progress: 100

						}
					);
					if (this._hasLayout)
					{
						item.setContainer(this._itemContainer);
						item.layout();
					}
				}

				if (this.hasItems())
				{
					this.show(true);
				}
			},
			clearValues: function()
			{
				this.removeAllItems();
			},
			removeItem: function(item)
			{
				for (var i = 0; i < this._items.length; i++)
				{
					if (this._items[i] === item)
					{
						item.cleanLayout();
						this._items.splice(i, 1);
						return;
					}
				}
			},
			removeAllItems: function()
			{
				for (var i = 0; i < this._items.length; i++)
				{
					this._items[i].cleanLayout();
				}
				this._items = [];
			},
			layout: function(parent)
			{
				var mode = this._mode;
				if (mode === DiskUploader.InterfaceMode.edit)
				{
					this.prepareEditLayout(parent);
					this._agent = BX.Uploader.getInstance(
						{
							id: this._id,
							allowUpload: "A",
							uploadMethod: "immediate",
							uploadFileUrl: this._uploadFileUrl,
							deleteFileOnServer: true,
							filesInputMultiple: true,
							filesInputName: this.getFileInputName(),
							input: this._fileInput,
							dropZone: this._dropZone,
							showImage: false,
							fields: {preview: {params: {width: 212, height: 119}}}
						}
					);

					BX.addCustomEvent(this._agent, "onError", this._agentErrorHandler);
					BX.addCustomEvent(this._agent, "onFileinputIsReinited", this._agentFileInputReinitHandler);
					BX.addCustomEvent(this._agent, "onFileIsInited", this._agentFileInitHandler);

					this._container.style.display = this._isShown ? "block" : "none";
					this._switchContainer.style.display = this._isShown ? "none" : "block";
					this._label.style.display = this.hasItems() ? "" : "none";
				}
				else if (mode === DiskUploader.InterfaceMode.view)
				{
					this._prepareViewLayout(parent);
				}

				for (var i = 0; i < this._items.length; i++)
				{
					var item = this._items[i];
					item.setContainer(this._itemContainer);
					item.layout();

				}
				this._hasLayout = true;
			},
			cleanLayout: function()
			{
				if (!this._hasLayout)
				{
					return;
				}

				if (this._agent)
				{
					BX.removeCustomEvent(this._agent, "onError", this._agentErrorHandler);
					BX.removeCustomEvent(this._agent, "onFileinputIsReinited", this._agentFileInputReinitHandler);
					BX.removeCustomEvent(this._agent, "onFileIsInited", this._agentFileInitHandler);
				}

				if (this._dropZoneWrapper)
				{
					BX.unbind(this._dropZoneWrapper, "mouseover", this._dropZoneMouseOverHandler);
					BX.unbind(this._dropZoneWrapper, "mouseout", this._dropZoneMouseOutHandler);
				}

				if (this._fileSelector)
				{
					BX.unbind(this._fileSelector, "click", this._fileSelectButtonClickHandler);
				}

				if (this._wrapper)
				{
					BX.cleanNode(this._wrapper, true);
				}

				for (var i = 0; i < this._items.length; i++)
				{
					var item = this._items[i];
					item.cleanLayout();
					item.setContainer(null);
				}

				this._form = this._wrapper = this._switchContainer = this._container = this._fileInput = this._label = this._dropZone = this._itemContainer = null;
				this._hasLayout = false;
			},
			show: function(show)
			{
				show = !!show;

				if (this._isShown === show)
				{
					return;
				}

				this._isShown = show;

				if (this._hasLayout)
				{
					this._container.style.display = show ? "block" : "none";
					this._switchContainer.style.display = show ? "none" : "block";
				}
			},
			showLabel: function(show)
			{
				if (this._hasLayout)
				{
					this._label.style.display = !!show ? "" : "none";
				}
			},
			prepareEditLayout: function(parent)
			{
				if (!BX.type.isElementNode(parent))
				{
					return;
				}

				this._form = BX.create("FORM", {});
				parent.appendChild(this._form);

				this._form.appendChild(
					BX.create("INPUT",
						{props: {type: "hidden", name: "sessid", value: BX.bitrix_sessid()}}
					)
				);

				this._switchContainer = BX.create("DIV",
					{
						attrs: {className: "bx-crm-add-file-link"},
						children:
							[
								BX.create("SPAN",
									{
										attrs: {className: "bx-crm-add-file-link-text"},
										text: this.getMessage("diskAttachFiles"),
										events: {click: BX.delegate(this._onSwitchButtonClick, this)}
									}
								)
							]
					}
				);
				this._form.appendChild(this._switchContainer);

				this._container = BX.create("DIV", {attrs: {className: "bx-crm-dialog-activity-diskuf-container"}});
				this._form.appendChild(this._container);
				this._container.style.height = "auto";

				this._innerContainer = BX.create("DIV", {attrs: {className: "bx-crm-dialog-activity-diskuf-container-inner"}});
				this._container.appendChild(this._innerContainer);

				this._wrapper = BX.create("DIV", {attrs: {className: "diskuf-selectdialog"}});
				this._innerContainer.appendChild(this._wrapper);
				this._wrapper.style.display = "block";
				this._wrapper.style.opacity = "1";

				var fileWrapper = BX.create("DIV", {attrs: {className: "diskuf-files-block"}});
				fileWrapper.style.display = "block";
				this._wrapper.appendChild(fileWrapper);

				this._label = BX.create("DIV",
					{
						attrs: {className: "diskuf-label"},
						children:
							[
								BX.create("SPAN", {text: this.getMessage("diskAttachedFiles") + ":"}),
								BX.create("SPAN", {attrs: {className: "diskuf-label-icon"}})
							]
					}
				);
				fileWrapper.appendChild(this._label);

				var itemPlaceHolder = BX.create("DIV", {attrs: {className: "diskuf-placeholder"}});
				fileWrapper.appendChild(itemPlaceHolder);

				this._itemContainer = BX.create("TABLE", {
					attrs: {
						className: "files-list",
						"cellspacing": "0",
						"cellpadding": "0",
						"border": "0"
					}
				});
				itemPlaceHolder.appendChild(this._itemContainer);

				var actionWrapper = BX.create("DIV", {attrs: {className: "diskuf-extended"}});
				actionWrapper.style.display = "block";
				this._wrapper.appendChild(actionWrapper);

				var actionTable = BX.create("TABLE", {
					attrs: {
						className: "diskuf-selector-table wd-fa-add-file-light-table",
						"cellspacing": "0",
						"cellpadding": "0",
						"border": "0"
					}
				});
				actionWrapper.appendChild(actionTable);

				var actionRow = actionTable.insertRow(-1);
				var cell = actionRow.insertCell(-1);
				cell.className = "wd-fa-add-file-light-cell";

				this._fileSelector = BX.create("DIV",
					{
						attrs: {className: "wd-fa-add-file-light-title-text diskuf-selector-link"},
						text: this.getMessage("diskSelectFile")
					}
				);
				BX.bind(this._fileSelector, "click", this._fileSelectButtonClickHandler);

				cell.appendChild(
					BX.create("SPAN",
						{
							attrs: {className: "wd-fa-add-file-light"},
							children:
								[
									BX.create("SPAN",
										{
											attrs: {className: "wd-fa-add-file-light-text"},
											children:
												[
													BX.create("SPAN",
														{
															attrs: {className: "wd-fa-add-file-light-title"},
															children: [this._fileSelector]
														}
													),
													BX.create("SPAN",
														{
															attrs: {className: "wd-fa-add-file-light-descript"},
															text: this.getMessage("diskSelectFileLegend")
														}
													)
												]
										}
									)
								]
						}
					)
				);

				cell = actionRow.insertCell(-1);
				cell.className = "wd-fa-add-file-form-light-separate-cell";

				cell.appendChild(BX.create("DIV", {attrs: {className: "wd-fa-add-file-form-light-spacer"}}));

				cell = this._dropZoneWrapper = actionRow.insertCell(-1);
				cell.className = "diskuf-selector wd-fa-add-file-light-cell wd-fa-add-file-from-main";

				this._fileInput = BX.create("INPUT",
					{
						attrs: {className: "diskuf-fileUploader wd-test-file-light-inp "},
						props: {type: "file", size: 1, multiple: "multiple", name: this.getFileInputName()}
					}
				);

				if (BX.browser.IsIE())
				{
					this._dropZone = BX.create("DIV",
						{
							attrs: {className: "wduf-selector"},
							children:
								[
									BX.create("SPAN",
										{
											attrs: {className: "wduf-uploader"},
											children:
												[
													BX.create("SPAN", {attrs: {className: "wduf-uploader-left"}}),
													BX.create("SPAN", {
														attrs: {className: "wduf-but-text"},
														text: this.getMessage("loadFiles")
													}),
													BX.create("SPAN", {attrs: {className: "wduf-uploader-right"}}),
													this._fileInput
												]
										}
									)
								]
						}
					);
				}
				else
				{
					this._dropZone = BX.create("DIV",
						{
							attrs: {className: "diskuf-uploader"},
							children:
								[
									BX.create("SPAN",
										{
											attrs: {className: "wd-fa-add-file-light"},
											children:
												[
													BX.create("SPAN",
														{
															attrs: {className: "wd-fa-add-file-light-text"},
															children:
																[
																	BX.create("SPAN",
																		{
																			attrs: {className: "wd-fa-add-file-light-title"},
																			children:
																				[
																					BX.create("SPAN",
																						{
																							attrs: {className: "wd-fa-add-file-light-title-text"},
																							text: this.getMessage("diskUploadFile")
																						}
																					)
																				]
																		}
																	),
																	BX.create("SPAN",
																		{
																			attrs: {className: "wd-fa-add-file-light-descript"},
																			text: this.getMessage("diskUploadFileLegend")
																		}
																	)
																]
														}
													)
												]
										}
									),
									this._fileInput
								]
						}
					);
				}

				cell.appendChild(this._dropZone);

				BX.bind(cell, "mouseover", this._dropZoneMouseOverHandler);
				BX.bind(cell, "mouseout", this._dropZoneMouseOutHandler);
			},
			_prepareViewLayout: function(parent)
			{
				if (!BX.type.isElementNode(parent))
				{
					return;
				}

				this._form = BX.create("FORM", {});
				parent.appendChild(this._form);

				this._form.appendChild(
					BX.create("INPUT",
						{props: {type: "hidden", name: "sessid", value: BX.bitrix_sessid()}}
					)
				);

				this._container = BX.create("DIV", {attrs: {className: "bx-crm-dialog-activity-diskuf-container"}});
				this._form.appendChild(this._container);
				this._container.style.height = "auto";

				this._innerContainer = BX.create("DIV", {attrs: {className: "bx-crm-dialog-activity-diskuf-container-inner"}});
				this._container.appendChild(this._innerContainer);

				this._wrapper = BX.create("DIV", {attrs: {className: "diskuf-selectdialog"}});
				this._innerContainer.appendChild(this._wrapper);
				this._wrapper.style.display = "block";
				this._wrapper.style.opacity = "1";

				var fileWrapper = BX.create("DIV", {attrs: {className: "diskuf-files-block"}});
				fileWrapper.style.display = "block";
				this._wrapper.appendChild(fileWrapper);

				this._label = BX.create("DIV",
					{
						attrs: {className: "diskuf-label"},
						children:
							[
								BX.create("SPAN", {text: this.getMessage("diskAttachedFiles") + ":"}),
								BX.create("SPAN", {attrs: {className: "diskuf-label-icon"}})
							]
					}
				);
				fileWrapper.appendChild(this._label);

				var itemPlaceHolder = BX.create("DIV", {attrs: {className: "diskuf-placeholder"}});
				fileWrapper.appendChild(itemPlaceHolder);

				this._itemContainer = BX.create("TABLE", {
					attrs: {
						className: "files-list",
						"cellspacing": "0",
						"cellpadding": "0",
						"border": "0"
					}
				});
				itemPlaceHolder.appendChild(this._itemContainer);
			},
			processItemDeletion: function(item)
			{
				this.removeItem(item);
				if (!this.hasItems())
				{
					this.showLabel(false);
				}
			},
			_onSwitchButtonClick: function(e)
			{
				this.show(true);
				return BX.PreventDefault(e);
			},
			_onAgentFileInputReinit: function(input)
			{
				if (input || this._agent.fileInput)
				{
					this._fileInput = input ? input : this._agent.fileInput;
				}
			},
			_onAgentError: function(stream, pIndex, data)
			{
			},
			_onAgentFileInit: function(id, queueItem, agent)
			{
				BX.addCustomEvent(queueItem, "onUploadStart", this._fileUploadStartHandler);
				BX.addCustomEvent(queueItem, 'onUploadProgress', this._fileUploadProgressHandler);
				BX.addCustomEvent(queueItem, 'onUploadDone', this._fileUploadCompleteHandler);
				BX.addCustomEvent(queueItem, 'onUploadError', this._fileUploadErrorHandler);
			},
			addItem: function(id, info)
			{
				var item = DiskUploaderItem.create(id,
					{
						uploader: this,
						container: this._itemContainer,
						name: BX.type.isNotEmptyString(info.name) ? info.name : "",
						size: BX.type.isNotEmptyString(info.size) ? info.size : "",
						fileId: BX.type.isNumber(info.fileId) ? info.fileId : 0,
						viewUrl: BX.type.isNotEmptyString(info.viewUrl) ? info.viewUrl : "",
						progress: BX.type.isNumber(info.progress) ? info.progress : 0
					}
				);
				this._items.push(item);
				return item;
			},
			_onFileUploadStart: function(queueItem, percent, agent, pIndex)
			{
				var item = this.addItem(queueItem.id,
					{
						name: queueItem.name,
						size: queueItem.size,
						fileId: 0,
						progress: parseInt(percent)
					}
				);
				item.layout();
			},
			_onFileUploadProgress: function(queueItem, percent, agent, pIndex)
			{
				var item = this.getItem(queueItem.id);
				if (item)
				{
					if (percent >= 100)
						percent = 99;
					item.setProgress(percent);
				}
			},
			_onFileUploadComplete: function(queueItem, params, agent, pIndex)
			{
				var item = this.getItem(queueItem.id);
				if (!item)
				{
					return;
				}

				item.setProgress(100);

				BX.removeCustomEvent(queueItem, "onUploadStart", this._fileUploadStartHandler);
				BX.removeCustomEvent(queueItem, "onUploadProgress", this._fileUploadProgressHandler);
				BX.removeCustomEvent(queueItem, "onUploadDone", this._fileUploadCompleteHandler);
				BX.removeCustomEvent(queueItem, "onUploadError", this._fileUploadErrorHandler);

				var fileId = 0;
				if (typeof(params.file) !== "undefined")
				{
					if (typeof(params.file["fileId"]) !== "undefined")
					{
						fileId = parseInt(params.file["fileId"]);
					}
					else if (typeof(params.file["originalId"]) !== "undefined")
					{
						fileId = parseInt(params.file["originalId"]);
					}
				}

				if (fileId > 0)
				{
					item.setFileId(fileId);
				}

				this.showLabel(true);
			},
			_onFileUploadError: function(queueItem, params, agent, pIndex)
			{
				var item = this.getItem(queueItem.id);
				if (item)
				{
					item.remove();
				}

				BX.removeCustomEvent(queueItem, "onUploadStart", this._fileUploadStartHandler);
				BX.removeCustomEvent(queueItem, "onUploadProgress", this._fileUploadProgressHandler);
				BX.removeCustomEvent(queueItem, "onUploadDone", this._fileUploadCompleteHandler);
				BX.removeCustomEvent(queueItem, "onUploadError", this._fileUploadErrorHandler);
			},
			_onFileSelectButtonClick: function(e)
			{
				BX.addCustomEvent(BX.DiskFileDialog, "inited", this._fileDialogInitHandler);
				BX.ajax(
					{
						url: this._selectFileUrl,
						method: "GET",
						timeout: 30
					}
				);
				return BX.PreventDefault(e);
			},
			_onFileDialogInit: function(name)
			{
				BX.removeCustomEvent(BX.DiskFileDialog, "inited", this._fileDialogInitHandler);
				this.flagFileDialogInited = true;
				BX.DiskFileDialog.obCallback[name] = {'saveButton': BX.delegate(this._onFileSelect, this)};
				BX.DiskFileDialog.openDialog(name);
			},
			_onFileSelect: function(tab, path, selected)
			{
				for (var key in selected)
				{
					if (!selected.hasOwnProperty(key))
					{
						return;
					}

					var info = selected[key];
					var type = BX.type.isNotEmptyString(info["type"]) ? info["type"] : "";
					if (type !== "file")
					{
						continue;
					}

					var id = BX.type.isNotEmptyString(info["id"]) ? info["id"] : "";
					if (id === "")
					{
						continue;
					}

					var re = /^n(\d+)$/;
					var m = re.exec(id);
					if (m && m.length > 1)
					{
						var fileId = parseInt(m[1]);
						if (fileId > 0)
						{
							var name = BX.type.isNotEmptyString(info["name"]) ? info["name"] : id;
							var size = BX.type.isNotEmptyString(info["size"]) ? info["size"] : 0;
							this.addItem(id, {fileId: fileId, name: name, size: size, progress: 100}).layout();
						}
					}
				}
			},
			_onDropZoneMouseOver: function(e)
			{
				BX.addClass(this._dropZoneWrapper, "wd-fa-add-file-light-hover");
			},
			_onDropZoneMouseOut: function(e)
			{
				BX.removeClass(this._dropZoneWrapper, "wd-fa-add-file-light-hover");
			}
		};

	DiskUploader.items = {};
	DiskUploader.create = function(id, settings)
	{
		if (!BX.type.isNotEmptyString(id))
		{
			id = 'BX_BP_ATM_FILEUPLOADER_' + Math.random();
		}

		var self = new DiskUploader();
		self.initialize(id, settings);
		this.items[id] = self;
		return self;
	};

	var DiskUploaderItem = function()
	{
		this._id = "";
		this._settings = {};
		this._fileId = 0;
		this._name = "";
		this._size = "";
		this._viewUrl = "";
		this._progress = 0;

		this._uploader = this._container = this._wrapper = null;
		this._progressContainer = this._progressWrap = this._progressTerminateBtn = this._progressBar = this._progressText = this._deleteButton = null;
		this._deleteButtonClickHandler = BX.delegate(this._onDeleteButtonClick, this);

		this._hasLayout = false;
	};

	DiskUploaderItem.prototype =
		{
			initialize: function(id, settings)
			{
				this._id = id;
				this._settings = settings ? settings : {};

				this._uploader = this.getSetting("uploader");
				this._container = this.getSetting("container");

				this._fileId = parseInt(this.getSetting("fileId", 0));
				this._name = this.getSetting("name", "");
				this._size = this.getSetting("size", "");
				this._viewUrl = this.getSetting("viewUrl", "");
				this.setProgress(this.getSetting("progress", 0));
			},
			getId: function()
			{
				return this._id;
			},
			getSetting: function(name, defaultval)
			{
				return typeof(this._settings[name]) != "undefined" ? this._settings[name] : defaultval;
			},
			getFileId: function()
			{
				return this._fileId;
			},
			setFileId: function(fileId)
			{
				this._fileId = fileId;
			},
			getName: function()
			{
				return this._name;
			},
			getSize: function()
			{
				return this._size;
			},
			getProgress: function()
			{
				return this._progress;
			},
			setProgress: function(progress)
			{
				progress = parseInt(progress);
				if (isNaN(progress) || progress < 0)
				{
					progress = 0;
				}

				if (progress > 100)
				{
					progress = 100;
				}

				if (this._progress === progress)
				{
					return;
				}

				this._progress = progress;
				if (this._hasLayout)
				{
					this._progressBar.style.width = this._progress + "%";
					this._progressText.innerHTML = this._progress + "%";
					this._progressWrap.style.display = progress < 100 ? "" : "none";
				}
			},
			getContainer: function()
			{
				return this._container;
			},
			setContainer: function(container)
			{
				this._container = container;
			},
			layout: function()
			{
				if (this._hasLayout)
				{
					return;
				}

				if (!this._container)
				{
					throw "Error: Could not find container.";
				}

				var row = this._wrapper = this._container.insertRow(-1);
				var cell = row.insertCell(-1);
				cell.className = "files-name";

				if (this._viewUrl !== "")
				{
					cell.appendChild(BX.create("A", {
						attrs: {className: "files-text", href: this._viewUrl},
						text: this._name
					}));
				}
				else
				{
					cell.appendChild(BX.create("SPAN", {attrs: {className: "files-text"}, text: this._name}));
				}

				cell = row.insertCell(-1);
				cell.className = "files-size";
				cell.innerHTML = this._size;

				cell = this._progressContainer = row.insertCell(-1);
				cell.className = "files-storage";

				this._progressWrap = BX.create("SPAN", {attrs: {className: "feed-add-post-loading-wrap"}});
				cell.appendChild(this._progressWrap);

				this._progressTerminateBtn = BX.create("SPAN", {attrs: {className: "feed-add-post-loading-cancel del-but"}});
				BX.bind(this._progressTerminateBtn, "click", this._deleteButtonClickHandler);
				this._progressWrap.appendChild(
					BX.create("SPAN", {
						attrs: {className: "feed-add-post-loading"},
						children: [this._progressTerminateBtn]
					})
				);

				this._progressBar = BX.create("SPAN", {
					attrs: {className: "feed-add-post-load-indicator"},
					style: {width: (this._progress + "%")}
				});
				this._progressWrap.appendChild(this._progressBar);

				this._progressText = BX.create("SPAN", {
					attrs: {className: "feed-add-post-load-number"},
					text: (this._progress + "%")
				});
				this._progressBar.appendChild(this._progressText);

				if (this._progress === 100)
				{
					this._progressWrap.style.display = "none";
				}

				//cell = row.insertCell(-1);
				//cell.className = "files-info";

				cell = row.insertCell(-1);
				cell.className = "files-del-btn";

				if (this._uploader.getMode() === DiskUploader.InterfaceMode.edit)
				{
					this._deleteButton = BX.create("SPAN", {attrs: {className: "del-but"}});
					BX.bind(this._deleteButton, "click", this._deleteButtonClickHandler);
					cell.appendChild(this._deleteButton);
				}

				this._hasLayout = true;
			},
			cleanLayout: function()
			{
				if (!this._hasLayout)
				{
					return;
				}

				BX.unbind(this._progressTerminateBtn, "click", this._deleteButtonClickHandler);
				if (this._deleteButton)
				{
					BX.unbind(this._deleteButton, "click", this._deleteButtonClickHandler);
				}

				this._container.deleteRow(this._wrapper.rowIndex);
				this._wrapper = this._progressContainer = this._progressWrap = this._progressTerminateBtn = this._progressBar = this._progressText = this._deleteButton = null;
				this._hasLayout = false;
			},
			remove: function()
			{
				if (this._uploader.getMode() !== DiskUploader.InterfaceMode.edit)
				{
					return;
				}

				var agent = this._uploader.getAgent();
				if (agent)
				{
					var item = agent.queue.items.getItem(this._id);
					if (item)
					{
						item.deleteFile();
					}
				}

				this._uploader.processItemDeletion(this);
			},
			_onDeleteButtonClick: function(e)
			{
				this.remove();
			}
		};

	DiskUploaderItem.create = function(id, settings)
	{
		var self = new DiskUploaderItem();
		self.initialize(id, settings);
		return self;
	};

	BX.Bizproc.Automation.DiskUploader = DiskUploader;
})(window.BX || window.top.BX);

Zerion Mini Shell 1.0