• Модуль: wiki
  • Путь к файлу: ~/bitrix/modules/wiki/classes/general/wiki_utils.php
  • Класс: CWikiUtils
  • Вызов: CWikiUtils::getRightsLinks
static function getRightsLinks($arPage)
{
	global $arParams, $APPLICATION;
	if (!is_array($arPage))
		$arPage = array($arPage);

	$arLinks = array();
	$arParams['ELEMENT_NAME'] = htmlspecialcharsback($arParams['ELEMENT_NAME']);
	$arParams['ELEMENT_NAME'] = rawurlencode($arParams['ELEMENT_NAME']);

	if (in_array('categories', $arPage))
		return array();

	if (in_array('article', $arPage) && !in_array('add', $arPage))
	{
		$arLinks['article'] = array(
			'NAME' => GetMessage('PAGE_ARTICLE'),
			'TITLE' => GetMessage('PAGE_ARTICLE_TITLE'),
			'CURRENT' => in_array('article', $arPage),
			'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'],
				array(
					'wiki_name' => $arParams['ELEMENT_NAME'],
					'group_id' => CWikiSocnet::$iSocNetId
				)
			),
			'ID' => 'article',
			'TYPE' => 'page',
			'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'
		);
	}

	if (self::IsWriteable() &&
		((!in_array('history', $arPage) || in_array('history_diff', $arPage)) &&
		(!in_array('add', $arPage) && !in_array('edit', $arPage) && !in_array('delete', $arPage) && !in_array('rename', $arPage))))
	{
		if(IsModuleInstalled('bizproc'))
		{
			$arLinks['history'] = array(
				'NAME' => GetMessage('PAGE_HISTORY'),
				'TITLE' => GetMessage('PAGE_HISTORY_TITLE'),
				'CURRENT' => in_array('history', $arPage),
				'LINK' => CHTTP::urlAddParams(
					CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'],
						array(
							'wiki_name' => $arParams['ELEMENT_NAME'],
							'group_id' => CWikiSocnet::$iSocNetId
						)
					),
					$arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'history') : array()
				),
				'ID' => 'history',
				'TYPE' => 'page',
				'IS_RED' => 'N'
			);
		}
	}

	if ($arParams['USE_REVIEW'] == 'Y')
	{
		$arLinks['discussion'] = array(
			'NAME' => GetMessage('PAGE_DISCUSSION'),
			'TITLE' => GetMessage('PAGE_DISCUSSION_TITLE'),
			'CURRENT' => in_array('discussion', $arPage),
			'LINK' => CHTTP::urlAddParams(
				CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DISCUSSION'],
					array(
						'wiki_name' => $arParams['ELEMENT_NAME'],
						'group_id' => CWikiSocnet::$iSocNetId
					)
				),
				$arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'discussion') : array()
			),
			'ID' => 'discussion',
			'TYPE' => 'page',
			'IS_RED' => 'N'
		);
	}

	if (self::IsWriteable() && (!in_array('history', $arPage) && !in_array('history_diff', $arPage)))
	{
		$arLinks['add'] = array(
			'NAME' => GetMessage('PAGE_ADD'),
			'TITLE' => GetMessage('PAGE_ADD_TITLE'),
			'CURRENT' => in_array('add', $arPage),
			'LINK' => CHTTP::urlAddParams(
				CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
					array(
						'wiki_name' => GetMessage('WIKI_NEW_PAGE_TITLE'),
						'group_id' => CWikiSocnet::$iSocNetId
					)
				),
				array($arParams['OPER_VAR'] => 'add')
			),
			'ID' => 'add',
			'TYPE' => 'edit',
			'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'
		);

		if (!in_array('add', $arPage))
		{
			$arLinks['edit'] = array(
				'NAME' => GetMessage('PAGE_EDIT'),
				'TITLE' => GetMessage('PAGE_EDIT_TITLE'),
				'CURRENT' => in_array('edit', $arPage),
				'LINK' => CHTTP::urlAddParams(
					CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
						array(
							'wiki_name' => $arParams['ELEMENT_NAME'],
							'group_id' => CWikiSocnet::$iSocNetId
						)
					),
					$arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'edit') : array()
				),
				'ID' => 'edit',
				'TYPE' => 'edit',
				'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'
			);

			$url = $APPLICATION->GetPopupLink(
				array(
					'URL' => CHTTP::urlAddParams(
						CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
							array(
								'wiki_name' => rawurlencode($arParams['ELEMENT_NAME']),
								'group_id' => CWikiSocnet::$iSocNetId
							)
						),
						array($arParams['OPER_VAR'] => 'rename')
					),
					'PARAMS' => array(
						'width' => 400,
						'height' => 150,
						'resizable' => false
					)
				)
			);

			$arLinks['rename'] = array(
				'NAME' => GetMessage('WIKI_PAGE_RENAME'),
				'TITLE' => GetMessage('WIKI_PAGE_RENAME_TITLE'),
				'CURRENT' => in_array('rename', $arPage),
				'LINK' => 'javascript:'.$url,
				'ID' => 'rename',
				'TYPE' => 'page',
			);

			if (self::IsDeleteable())
			{
				$url = $APPLICATION->GetPopupLink(
					array(
						'URL' => CHTTP::urlAddParams(
							CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
								array(
									'wiki_name' => $arParams['ELEMENT_ID'],
									'group_id' => CWikiSocnet::$iSocNetId
								)
							),
							array($arParams['OPER_VAR'] => 'delete')
						),
						'PARAMS' => array(
							'width' => 400,
							'height' => 150,
							'resizable' => false
						)
					)
				);

				$arLinks['delete'] = array(
					'NAME' => GetMessage('PAGE_DELETE'),
					'TITLE' => GetMessage('PAGE_DELETE_TITLE'),
					'CURRENT' => in_array('delete', $arPage),
					'LINK' => 'javascript:'.$url,
					'ID' => 'delete',
					'TYPE' => 'edit',
					'IS_RED' => 'N'
				);
			}
		}


	/**	$arLinks['access'] = array(
			'NAME' => GetMessage('PAGE_ACCESS'),
			'TITLE' => GetMessage('PAGE_ACCESS_TITLE'),
			'CURRENT' => in_array('access', $arPage),
			'LINK' => CHTTP::urlAddParams(
				CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'],
					array(
						'wiki_name' => $arParams['ELEMENT_NAME'],
						'group_id' => CWikiSocnet::$iSocNetId
					)
				),
				array($arParams['OPER_VAR'] => 'access')
			),
			'ID' => 'access',
			'TYPE' => 'edit',
			'IS_RED' => 'N'
		); **/
	}

	return $arLinks;
}