• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/helper/ui/grid/workgroup/actions.php
  • Класс: BitrixSocialnetworkHelperUIGridWorkgroupActions
  • Вызов: Actions::getActions
static function getActions(
	?EO_Workgroup $group,
	?EO_UserToGroup $currentUserRelationItem,
	array $actions = [],
	array $params = []
): array
{
	$result = [];

	$isProject = (bool)$group->get('PROJECT');
	$isScrum = ($isProject && $group->get('SCRUM_MASTER_ID') > 0);

	if (in_array(WorkgroupList::AVAILABLE_ACTION_VIEW, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_VIEW');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_VIEW_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_VIEW_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_VIEW_TITLE_PROJECT');
		}

		$groupUrl = str_replace(
			[ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ],
			$group->getId(),
			$params['PATH_TO_GROUP']
		);
		if ($isScrum)
		{
			$groupUrl = (new Uri($groupUrl))
				->addParams(['scrum' => 'Y'])
				->getUri()
			;
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'href' => $groupUrl,
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_ADD_TO_FAVORITES, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_FAVORITES');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_FAVORITES_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_FAVORITES_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_FAVORITES_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'onclick' => 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_ADD_TO_FAVORITES . '",
				groupId: "' . $group->getId() . '",
			})',
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_REMOVE_FROM_FAVORITES, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_FAVORITES');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_FAVORITES_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_FAVORITES_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_FAVORITES_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'onclick' => 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_REMOVE_FROM_FAVORITES . '",
				groupId: "' . $group->getId() . '",
			})',
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_EDIT, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_EDIT');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_EDIT_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_EDIT_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_EDIT_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'href' => str_replace([ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ], $group->getId(), $params['PATH_TO_GROUP_EDIT']),
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_JOIN, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_JOIN');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_JOIN_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_JOIN_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_JOIN_TITLE_PROJECT');
		}

		$menuItem = [
			'text' => $text,
			'title' => $title,
		];

		if (
			$group->getOpened()
			|| (
				$currentUserRelationItem
				&& $currentUserRelationItem->get('ROLE') === UserToGroupTable::ROLE_REQUEST
				&& $currentUserRelationItem->get('INITIATED_BY_TYPE') === UserToGroupTable::INITIATED_BY_GROUP
			)
		)
		{
			$menuItem['onclick'] = 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_JOIN . '",
				groupId: "' . $group->getId() . '",
			})';
		}
		else
		{
			$menuItem['href'] = str_replace([ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ], $group->getId(), $params['PATH_TO_JOIN_GROUP']);
		}

		$result[] = $menuItem;
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_LEAVE, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_LEAVE');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_LEAVE_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_LEAVE_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_LEAVE_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'href' => str_replace([ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ], $group->getId(), $params['PATH_TO_LEAVE_GROUP']),
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_DELETE_INCOMING_REQUEST, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_INCOMING_REQUEST');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_INCOMING_REQUEST_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_INCOMING_REQUEST_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_INCOMING_REQUEST_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'onclick' => 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_DELETE_INCOMING_REQUEST . '",
				groupId: "' . $group->getId() . '",
			})',
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_ADD_TO_ARCHIVE, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_ARCHIVE');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_ARCHIVE_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_ARCHIVE_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_ADD_TO_ARCHIVE_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'onclick' => 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_ADD_TO_ARCHIVE . '",
				groupId: "' . $group->getId() . '",
			})',
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_REMOVE_FROM_ARCHIVE, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_ARCHIVE');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_ARCHIVE_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_ARCHIVE_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_REMOVE_FROM_ARCHIVE_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'onclick' => 'BX.Socialnetwork.WorkgroupList.Manager.getById("' . $params['GRID_ID'] . '").getActionManager().act({
				action: "' . WorkgroupList::AJAX_ACTION_REMOVE_FROM_ARCHIVE . '",
				groupId: "' . $group->getId() . '",
			})',
		];
	}

	if (in_array(WorkgroupList::AVAILABLE_ACTION_DELETE, $actions, true))
	{
		$text = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE');
		$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_TITLE');
		if ($isScrum)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_TITLE_SCRUM');
		}
		elseif ($isProject)
		{
			$title = Loc::getMessage('SOCIALNETWORK_HELPER_UI_GRID_ACTION_DELETE_TITLE_PROJECT');
		}

		$result[] = [
			'text' => $text,
			'title' => $title,
			'href' => str_replace([ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ], $group->getId(), $params['PATH_TO_GROUP_DELETE']),
		];
	}

	return $result;
}