403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/sidepanel-content/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/sidepanel-content/src/index.js
import { Dom, Loc, Tag, Text, Event } from 'main.core';
import { SidePanel } from 'main.sidepanel';
import { Layout } from 'ui.sidepanel.layout';
import 'ui.helper';

export const StubType = Object.freeze({
	notAvailable: 'notAvailable',
	noAccess: 'noAccess',
	noConnection: 'noConnection',
});

export const StubLinkType = Object.freeze({
	helpdesk: 'helpdesk',
	href: 'href',
});

type StubNotAvailableOptions = {
	title: string | null,
	desc: string | null,
	type: $Keys<typeof StubType> | null,
	link?: LinkOptions | null,
}

type LinkOptions = {
	text: string,
	value: string,
	type: $Keys<typeof StubLinkType> | null
}

export class StubNotAvailable
{
	#options: StubNotAvailableOptions = {};

	constructor(options?: StubNotAvailableOptions)
	{
		this.#options.title = options?.title || null;
		this.#options.desc = options?.desc || null;

		if (options?.type === StubType.noAccess)
		{
			if (!this.#options.title)
			{
				this.#options.title = Loc.getMessage('UI_SIDEPANEL_CONTENT_NO_ACCESS_TITLE');
			}

			if (!this.#options.desc)
			{
				this.#options.desc = Loc.getMessage('UI_SIDEPANEL_CONTENT_NO_ACCESS_DESC');
			}
		}

		this.#options = {
			title: Text.encode(this.#options.title || Loc.getMessage('UI_SIDEPANEL_CONTENT_TITLE')),
			desc: Text.encode(this.#options.desc || Loc.getMessage('UI_SIDEPANEL_CONTENT_DESC')),
			type: options?.type || StubType.notAvailable,
			link: options?.link || null,
		};
	}

	openSlider(): void
	{
		const noSectionTypes = new Set([StubType.noAccess]);
		SidePanel.Instance.open(
			'sign:stub-no-connection',
			{
				width: 590,
				cacheable: false,
				contentCallback: () => {
					return Layout.createContent({
						design: {
							section: !noSectionTypes.has(this.#options.type),
						},
						content: () => this.render(),
					});
				},
			},
		);
	}

	render(): HTMLElement
	{
		if (this.#options.type === StubType.noAccess)
		{
			return this.#renderNoAccess();
		}

		if (this.#options.type === StubType.notAvailable)
		{
			return this.#renderNotAvailable();
		}

		if (this.#options.type === StubType.noConnection)
		{
			return this.#renderNoConection();
		}

		throw new Error('wrong stub type');
	}

	#renderNoAccess(): HTMLElement
	{
		return Tag.render`
			<div class="ui-slider-no-access">
				<div class="ui-slider-no-access-inner">
					<div class="ui-slider-no-access-title">${this.#options.title}</div>
					<div class="ui-slider-no-access-subtitle">${this.#options.desc}</div>
					<div class="ui-slider-no-access-img">
						<div class="ui-slider-no-access-img-inner"></div>
					</div>
					${this.#renderLinkElement()}
				</div>
			</div>
		`;
	}

	#renderNotAvailable(): HTMLElement
	{
		return Tag.render`
			<div class="ui-sidepanel-content-404-container">
				<div class="ui-sidepanel-content-404-image">
					<img alt="" src="/bitrix/components/bitrix/ui.sidepanel.content/templates/.default/images/stub-not-available.svg">
				</div>
				<div class="ui-sidepanel-content-404-title">${this.#options.title}</div>
				<div class="ui-sidepanel-content-404-description">
					<p>${this.#options.desc}</p>
				</div>
			</div>
		`;
	}

	#renderNoConection(): HTMLElement
	{
		return Tag.render`
			<div class="ui-slider-no-connection">
				<div class="ui-slider-no-connection-inner">
					<div class="ui-slider-no-connection-title">${this.#options.title}</div>
					<div class="ui-slider-no-connection-subtitle">${this.#options.desc}</div>
					<div class="ui-sidepanel-content-no-connection-image"></div>
					${this.#renderLinkElement()}
				</div>
			</div>
		`;
	}

	renderTo(container: HTMLElement): void
	{
		Dom.append(this.render(), container);
	}

	#renderLinkElement(): HTMLElement | null
	{
		if (!this.#options.link)
		{
			return null;
		}

		const linkElement = Tag.render`
			<a href="javascript:void(0);" class="ui-sidepanel-content-link-href">${Text.encode(this.#options.link.text)}</a>
		`;

		if (this.#options.link.type === StubLinkType.helpdesk)
		{
			Event.bind(linkElement, 'click', (event) => {
				event.preventDefault();
				top.BX.Helper.show(`redirect=detail&code=${Text.encode(this.#options.link.value)}`);
			});
		}

		if (this.#options.link.type === StubLinkType.href)
		{
			Dom.attr(linkElement, 'href', Text.encode(this.#options.link.value));
		}

		return linkElement;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit