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/socialnetwork/common/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/socialnetwork/common/src/common.js
import { Type, Loc, ajax, Runtime, Extension } from 'main.core';
import { BaseEvent } from 'main.core.events';
import { MenuManager } from 'main.popup';
import { Messenger } from 'im.public';
import { Waiter } from './waiter.js';
import { SonetGroupMenu } from './sonetgroupmenu.js';
import { RecallJoinRequest } from './recalljoinrequest.js';

import type { Converter } from 'socialnetwork.collab.converter';

class Common
{
	static showGroupMenuPopup(params)
	{
		let bindElement = params.bindElement;
		if (Type.isStringFilled(bindElement))
		{
			bindElement = document.getElementById(bindElement);
		}

		const currentUserId = parseInt(Loc.getMessage('USER_ID'));
		const sonetGroupMenu = SonetGroupMenu.getInstance();

		if (bindElement.tagName === 'BUTTON')
		{
			bindElement.classList.add('ui-btn-active');
		}

		const menu = [];
		let itemTitle = '';

		if (currentUserId > 0)
		{
			menu.push({
				text: (!!sonetGroupMenu.favoritesValue ? Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FAVORITES_REMOVE') : Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FAVORITES_ADD')),
				title: (!!sonetGroupMenu.favoritesValue ? Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FAVORITES_REMOVE') : Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FAVORITES_ADD')),
				id: 'set-group-favorite',
				onclick: () => {

					const favoritesValue = sonetGroupMenu.favoritesValue;

					sonetGroupMenu.setItemTitle(!favoritesValue);
					sonetGroupMenu.favoritesValue = !favoritesValue;

					this.setFavoritesAjax({
						groupId: params.groupId,
						favoritesValue: favoritesValue,
						callback: {
							success: (data) => {

								BX.onCustomEvent(window, 'BX.Socialnetwork.WorkgroupFavorites:onSet', [{
									id: params.groupId,
									name: data.NAME,
									url: data.URL,
									extranet: (!Type.isUndefined(data.EXTRANET) ? data.EXTRANET : 'N'),
								}, !favoritesValue]);

								BX.onCustomEvent(window, 'BX.Socialnetwork.WorkgroupMenu:onSetFavorites', [{
									groupId: params.groupId,
									value: !favoritesValue,
								}]);

								window.top.BX.SidePanel.Instance.postMessageAll(window, 'sonetGroupEvent', {
									code: 'afterSetFavorites',
									data: {
										groupId: data.ID,
										value: (data.RESULT === 'Y')
									}
								});
							},
							failure: () => {
								sonetGroupMenu.favoritesValue = favoritesValue;
								sonetGroupMenu.setItemTitle(favoritesValue);
							}
						}
					});
				}
			});

			if (params.perms.canInitiate)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQU');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQU_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQU_PROJECT');
				}
				menu.push({
					text: itemTitle,
					title: itemTitle,
					href: params.urls.requestUser,
				});
			}

			if (params.perms.canModify)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EDIT');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EDIT_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EDIT_PROJECT');
				}
				menu.push({
					text: itemTitle,
					title: itemTitle,
					href: params.urls.edit,
				});

				if (!params.hideArchiveLinks)
				{
					const featuresItem = {
						text: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FEAT'),
						title: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_FEAT'),
					};

					if (params.editFeaturesAllowed)
					{
						featuresItem.href = params.urls.features;
					}
					else
					{
						featuresItem.className = 'menu-popup-item menu-popup-no-icon sonet-common-tariff-lock';

						featuresItem.onclick = () => {
							Runtime.loadExtension('socialnetwork.limit').then((exports) => {
								const { Limit } = exports;
								Limit.showInstance({
									featureId: 'socialnetwork_projects_access_permissions',
								});
							});
						};
					}
					menu.push(featuresItem);
				}

				const isCollabConverterEnabled = Extension.getSettings('socialnetwork.common').isCollabConverterEnabled;
				if (
					isCollabConverterEnabled
					&& params.userRole === Loc.getMessage('USER_TO_GROUP_ROLE_OWNER')
					&& !params.isProject
					&& !params.isScrumProject
				)
				{
					menu.push({
						text: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_CONVERT_TO_COLLAB'),
						title: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_CONVERT_TO_COLLAB'),
						onclick: (event, menuItem) => {
							menuItem.getMenuWindow().close();
							Runtime.loadExtension('socialnetwork.collab.converter').then((exports) => {
								const ConverterClass: Converter = exports.Converter;
								const id = parseInt(Type.isUndefined(params.groupId) ? 0 : params.groupId, 10);

								(new ConverterClass({
									redirectAfterSuccess: true,
								})).convertToCollab(id);
							}).catch((error) => {
								console.error(error);
							});
						},
					});
				}

				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_DELETE');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_DELETE_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_DELETE_PROJECT');
				}
				menu.push({
					text: itemTitle,
					title: itemTitle,
					href: params.urls.delete,
				});
			}

			menu.push({
				text: (params.perms.canModerate ? Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_MEMBERS_EDIT') : Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_MEMBERS_VIEW')),
				title: (params.perms.canModerate ? Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_MEMBERS_EDIT') : Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_MEMBERS_VIEW')),
				href: params.urls.members,
			});

			if (params.perms.canInitiate)
			{
				if (params.perms.canProcessRequestsIn)
				{
					menu.push({
						text: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQ_IN'),
						title: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQ_IN'),
						href: params.urls.requests,
					});
				}

				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQ_OUT');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQ_OUT_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_REQ_OUT_PROJECT');
				}
				menu.push({
					text: itemTitle,
					title: itemTitle,
					href: params.urls.requestsOut,
				});
			}

			if (params.perms.canCreate)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_COPY');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_COPY_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_COPY_PROJECT');
				}
				const copyGroupItem = {
					text: itemTitle,
					title: itemTitle,
				}
				if (params.copyFeatureAllowed)
				{
					copyGroupItem.href = params.urls.copy;
				}
				else
				{
					copyGroupItem.className = 'menu-popup-item menu-popup-no-icon sonet-common-tariff-lock';

					copyGroupItem.onclick = () => {
						Runtime.loadExtension('socialnetwork.limit').then((exports) => {
							const { Limit } = exports;
							Limit.showInstance({
								featureId: 'socialnetwork_copy_project',
								limitAnalyticsLabels: {
									module: 'socialnetwork',
									source: 'projectCardActions',
								},
							});
						});
					};
				}

				if (!params.isScrumProject) // todo remove after scrum copy will done
				{
					menu.push(copyGroupItem);
				}
			}

			if (
				(
					!Type.isStringFilled(params.userRole)
					|| (
						params.userRole === Loc.getMessage('USER_TO_GROUP_ROLE_REQUEST')
						&& params.initiatedByType === Loc.getMessage('USER_TO_GROUP_INITIATED_BY_GROUP')
					)
				)
				&& !params.hideArchiveLinks
			)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_JOIN');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_JOIN_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_JOIN_PROJECT');
				}
				const userRequestItem = {
					text: itemTitle,
					title: itemTitle,
				};

				if (!!params.isOpened)
				{
					userRequestItem.onclick = () => {
						this.sendJoinRequest(params);
					};
				}
				else
				{
					userRequestItem.href = params.urls.userRequestGroup;
				}
				menu.push(userRequestItem);
			}

			if (
				Type.isStringFilled(params.userRole)
				&& params.userRole === Loc.getMessage('USER_TO_GROUP_ROLE_REQUEST')
				&& params.initiatedByType === Loc.getMessage('USER_TO_GROUP_INITIATED_BY_USER')
				&& parseInt(params.initiatedByUserId) === currentUserId
			)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_DELETE_REQUEST');

				menu.push({
					text: itemTitle,
					title: itemTitle,
					onclick: () => {
						this.cancelIncomingRequest(params);
					},
				});
			}

			if (
				(
					Type.isBoolean(params.perms.canLeave)
					&& params.perms.canLeave
				)
				||
				(
					!Type.isBoolean(params.perms.canLeave)
					&& params.userIsMember
					&& !params.userIsAutoMember
					&& params.userRole !== Loc.getMessage('USER_TO_GROUP_ROLE_OWNER')
				)
			)
			{
				itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EXIT');
				if (!!params.isScrumProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EXIT_SCRUM');
				}
				else if (!!params.isProject)
				{
					itemTitle = Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_EXIT_PROJECT');
				}
				menu.push({
					text: itemTitle,
					title: itemTitle,
					href: params.urls.userLeaveGroup
				});
			}

			if (params.canPickTheme)
			{
				menu.push({
					text: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_THEME_DIALOG'),
					title: Loc.getMessage('SONET_EXT_COMMON_GROUP_MENU_THEME_DIALOG'),
					onclick: () => {
						BX.Intranet.Bitrix24.ThemePicker.Singleton.showDialog(false);
					},
				});
			}
		}

		const popup = MenuManager.create('group-profile-menu', bindElement, menu, {
			offsetTop: 5,
			offsetLeft : (bindElement.offsetWidth - 18),
			angle : true,
			events : {
				onPopupClose: () => {
					if (bindElement.tagName === 'BUTTON')
					{
						bindElement.classList.remove('ui-btn-active');
					}
				}
			}
		});

		const item = popup.getMenuItem('set-group-favorite');
		if (item)
		{
			sonetGroupMenu.menuItem = item.layout.text;
		}

		popup.popupWindow.show();
		sonetGroupMenu.menuPopup = popup;
	}

	static sendJoinRequest(params)
	{
		Waiter.getInstance().show();

		if (
			SonetGroupMenu.getInstance()
			&& SonetGroupMenu.getInstance().menuPopup
		)
		{
			SonetGroupMenu.getInstance().menuPopup.close();
		}

		ajax({
			url: params.urls.userRequestGroup,
			method: 'POST',
			dataType: 'json',
			data: {
				groupID: params.groupId,
				MESSAGE: '',
				ajax_request: 'Y',
				save: 'Y',
				sessid: Loc.getMessage('bitrix_sessid'),
			},
			onsuccess: (responseData) => {
				Waiter.getInstance().hide();
				if (
					Type.isStringFilled(responseData.MESSAGE)
					&& responseData.MESSAGE === 'SUCCESS'
					&& Type.isStringFilled(responseData.URL)
				)
				{
					BX.onCustomEvent(window.top, 'sonetGroupEvent', [ {
						code: 'afterJoinRequestSend',
						data: {
							groupId: params.groupId
						}
					} ]);
					top.location.href = responseData.URL;
				}
			},
			onfailure: () => {
				Waiter.getInstance().hide();
			},
		});
	}

	static cancelIncomingRequest(params)
	{
		Waiter.getInstance().show();

		if (
			SonetGroupMenu.getInstance()
			&& SonetGroupMenu.getInstance().menuPopup
		)
		{
			SonetGroupMenu.getInstance().menuPopup.close();
		}

		ajax.runAction('socialnetwork.api.usertogroup.cancelIncomingRequest', {
			data: {
				groupId: params.groupId,
				userId: parseInt(Loc.getMessage('USER_ID')),
			},
		}).then((response) => {
			Waiter.getInstance().hide();

			window.top.BX.SidePanel.Instance.postMessageAll(window, 'sonetGroupEvent', {
				code: 'afterIncomingRequestCancel',
				data: {
					groupId: params.groupId,
				}
			});

			this.reload();
		}).catch((response) => {
			Waiter.getInstance().hide();
		});
	}

	static setFavoritesAjax(params)
	{
		ajax.runAction('socialnetwork.api.workgroup.setFavorites', {
			data: {
				params: {
					groupId: params.groupId,
					value: (params.favoritesValue === false ? 'Y' : 'N'),
					getAdditionalResultData: true,
				}
			},
			analyticsLabel: {
				b24statAction: (params.favoritesValue ? 'removeFavSonetGroup' : 'addFavSonetGroup')
			}
		}).then((response) => {
			params.callback.success(response.data);
		}).catch((response) => {
			params.callback.failure({
				ERROR: response.errors[0].message,
			});
		});
	}

	static reload()
	{
		if (top !== window) // current page in slider
		{
			if (!Type.isUndefined(top.BX.SidePanel))
			{
				top.BX.SidePanel.Instance.getSliderByWindow(window).showLoader();
			}
			window.location.reload();
		}
		else if (
			!Type.isUndefined(top.BX.SidePanel)
			&& top.BX.SidePanel.Instance.isOpen()
		) // there's an open slider
		{
			top.location.href = top.BX.SidePanel.Instance.getPageUrl();
		}
		else
		{
			top.location.reload();
		}
	}

	static reloadBlock(params)
	{
		if (
			!Type.isPlainObject(params)
			|| !Type.isStringFilled(params.blockId)
			|| !document.getElementById(params.blockId)
		)
		{
			return;
		}

		let url = '';

		if (
			!Type.isUndefined(top.BX.SidePanel)
			&& top.BX.SidePanel.Instance.isOpen()
		) // there's an open slider
		{
			url = top.BX.SidePanel.Instance.getPageUrl();
		}
		else
		{
			url = window.location.href;
		}

		ajax.promise({
			url: url,
			method: 'POST',
			dataType: 'json',
			data: {
				BLOCK_RELOAD: 'Y',
				BLOCK_ID: params.blockId
			}
		}).then((data) => {
			if (!Type.isUndefined(data.CONTENT))
			{
				document.getElementById(params.blockId).innerHTML = data.CONTENT;
				setTimeout(() => {
					ajax.processRequestData(data.CONTENT, {
						dataType: 'HTML'
					});
				}, 0);
			}
		});
	}

	static closeGroupCardMenu(node)
	{
		if (!node)
		{
			return;
		}

		const doc = node.ownerDocument;
		const win = doc.defaultView || doc.parentWindow;

		if (
			!win
			|| Type.isUndefined(win.BX.Socialnetwork.UIGroupMenu)
			|| !win.BX.Socialnetwork.UIGroupMenu.getInstance().menuPopup
		)
		{
			return;
		}

		win.BX.Socialnetwork.UIGroupMenu.getInstance().menuPopup.close();
	}

	static openMessenger(groupId: number): Promise
	{
		return ajax.runAction('socialnetwork.api.workgroup.getChatId', {
			data: {
				groupId: parseInt(groupId, 10),
			},
		}).then((response) => {
			if (response.data)
			{
				Messenger.openChat(`chat${parseInt(response.data, 10)}`);
			}
		}).catch(() => {});
	}

	static showError = RecallJoinRequest.showError;
	static hideError = RecallJoinRequest.hideError;
	static showButtonWait = RecallJoinRequest.showButtonWait;
	static hideButtonWait = RecallJoinRequest.hideButtonWait;
}

export {
	Common,
	RecallJoinRequest,
}


Youez - 2016 - github.com/yon3zu
LinuXploit