function CheckPermission() { if (!CModule::IncludeModule('wiki') || !CWikiUtils::IsReadable()) { return false; } return true; }
function CanUserOperateDocument($operation, $userId, $documentId, $arParameters = array()) { if (CWikiSocnet::IsSocNet()) { return CWikiUtils::CheckAccess('write'); } else { return parent::CanUserOperateDocument($operation, $userId, $documentId, $arParameters); } }
$arHistory['USER_LOGIN'] = CWikiUtils::GetUserLogin($arHistory, $arParams["NAME_TEMPLATE"]); $arHistory['DISCUSSION_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DISCUSSION'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'discussion') : array()); $arHistory['SHOW_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array('oldid' => $arHistory['ID'])); $arHp = array('oldid' => $arHistory['ID'], 'sessid' => bitrix_sessid()); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') { $arHp[$arParams['OPER_VAR']] = 'history'; } $arHistory['CANCEL_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); if ($arHistoryFirst['ID'] != $arHistory['ID']) { $arHp = array('diffid' => $arHistoryFirst['ID'], 'oldid' => $arHistory['ID']); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') { $arHp[$arParams['OPER_VAR']] = 'history_diff'; } $arHistory['CUR_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY_DIFF'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); } if (CWikiUtils::IsDeleteable()) { $arHp = array('oldid' => $arHistory['ID'], 'sessid' => bitrix_sessid(), 'delete' => 1); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') { $arHp[$arParams['OPER_VAR']] = 'history'; } $arHistory['DELETE_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); } $arHistory['MODIFIED'] = FormatDateFromDB($arHistory['MODIFIED']); $arResult['HISTORY'][] = $arHistory; $iPrev = count($arResult['HISTORY']) - 2; if (isset($arResult['HISTORY'][$iPrev])) { $arHp = array('diffid' => $arResult['HISTORY'][$iPrev]['ID'], 'oldid' => $arHistory['ID']); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') { $arHp[$arParams['OPER_VAR']] = 'history_diff'; } $arResult['HISTORY'][$iPrev]['PREV_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY_DIFF'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp);
static function isCategoryVirtual($name) { $result = false; $sCatName = ''; if (CWikiUtils::IsCategoryPage($name, $sCatName)) { $result = self::isVirtualCategoryExist($sCatName); } return $result; }
$arResult['VERSION']['CANCEL_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); } } $CACHE_MANAGER->StartTagCache($this->GetCachePath()); $CACHE_MANAGER->RegisterTag('wiki_' . $arParams['ELEMENT_ID']); $CACHE_MANAGER->EndTagCache(); /*$arPages = array('article'); if (isset($arResult['WIKI_oper']) && $arResult['WIKI_oper'] == 'add') $arPages[] = 'add'; $arResult['TOPLINKS'] = CWikiUtils::getRightsLinks($arPages, $arParams);*/ $arCat = array(); $CWikiParser = new CWikiParser(); if ($arResult['REDIRECTED_FROM'] && CWikiUtils::IsWriteable()) { $redirUrl = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arResult['REDIRECTED_FROM']), 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => $arResult['WIKI_oper']) : array()); $redirUrl = (CMain::IsHTTPS() ? "https://" : "http://") . $_SERVER["HTTP_HOST"] . $redirUrl; $arResult['ELEMENT']['~DETAIL_TEXT'] = GetMessage("WIKI_REDIRECT_FROM") . "[" . $redirUrl . " " . $arResult['REDIRECTED_FROM'] . "]<br><br>" . $arResult['ELEMENT']['~DETAIL_TEXT']; } $arResult['ELEMENT']['DETAIL_TEXT'] = $CWikiParser->parseBeforeSave($arResult['ELEMENT']['~DETAIL_TEXT'], $arCat, $arParams["NAME_TEMPLATE"]); $arResult['ELEMENT']['DETAIL_TEXT'] = $CWikiParser->Parse($arResult['ELEMENT']['DETAIL_TEXT'], $arResult['ELEMENT']['DETAIL_TEXT_TYPE'], $arResult['ELEMENT']['IMAGES']); $arResult['ELEMENT']['DETAIL_TEXT'] = $CWikiParser->Clear($arResult['ELEMENT']['DETAIL_TEXT']); $SERVICE_PAGE_NAME = ''; $arResult['SERVICE_PAGE'] = CWikiUtils::CheckServicePage($arParams['ELEMENT_NAME'], $SERVICE_PAGE_NAME); if ($arResult['SERVICE_PAGE'] == 'category') { $this->AbortResultCache(); } $this->IncludeComponentTemplate(); } $arParams = $_arParams; include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; unset($GLOBALS['arParams']); return $arResult['ELEMENT']['ID'];
$arResult['CATEGORIES'][strtolower($arCat["NAME"])] = $arCat; } $arResult['DB_LIST'] =& $dbCatList; $arCatName = $categories->getItemsNames(); $arCatNameExists = array(); if (!empty($arCatName)) { // checking the category on the "red link" $arFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N', 'ACTIVE' => 'Y', 'NAME' => $arCatName); if (CWikiSocnet::IsSocNet()) { $arFilter['SUBSECTION'] = CWikiSocnet::$iCatId; } $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array()); while ($arElement = $rsElement->GetNext()) { $arCatNameExists[] = substr($arElement['NAME'], strpos($arElement['NAME'], ':') + 1); } if (!empty($arCatNameExists)) { foreach ($arCatNameExists as $sCatName) { $sCatNameLow = strtolower($sCatName); if (isset($arResult['CATEGORIES'][$sCatNameLow])) { $arResult['CATEGORIES'][$sCatNameLow]['IS_RED'] = 'N'; // exclude the very category page if (!CWikiUtils::isVirtualCategoryExist($sCatName)) { $arResult['CATEGORIES'][$sCatNameLow]['CNT']--; } } } } } include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; $this->IncludeComponentTemplate(); unset($GLOBALS['arParams']);
if (!CModule::IncludeModule('socialnetwork')) { ShowError(GetMessage('SOCNET_MODULE_NOT_INSTALLED')); return; } } if (CWikiSocnet::isEnabledSocnet() && !empty($arParams['SOCNET_GROUP_ID'])) { $iblock_id_tmp = CWikiSocnet::RecalcIBlockID($arParams["SOCNET_GROUP_ID"]); if ($iblock_id_tmp) { $arParams['IBLOCK_ID'] = $iblock_id_tmp; } if (!CWikiSocnet::Init($arParams['SOCNET_GROUP_ID'], $arParams['IBLOCK_ID'])) { ShowError(GetMessage('WIKI_SOCNET_INITIALIZING_FAILED')); return; } } if (!CWikiUtils::IsReadable()) { ShowError(GetMessage('WIKI_ACCESS_DENIED')); return; } //$arResult['TOPLINKS'] = CWikiUtils::getRightsLinks('service', $arParams); // looking for a page without categories /*$arFilter = array(); $arFilter = array( "IBLOCK_LID" => SITE_ID, "IBLOCK_ID" => $arParams['IBLOCK_ID'], "CHECK_PERMISSIONS" => 'N', "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "ACTIVE" => 'Y', "!NAME" => 'Category%', "SECTION_ID" => false );
} $arResult['VERSION_DIFF'] = array(); $arResult['VERSION_DIFF']['USER_ID'] = $arDiffResult['USER_ID']; $arResult['VERSION_DIFF']['USER_LOGIN'] = CWikiUtils::GetUserLogin($arUser, $arParams["NAME_TEMPLATE"]); $arResult['VERSION_DIFF']['MODIFIED'] = FormatDateFromDB($arDiffResult['MODIFIED']); $arResult['VERSION_DIFF']['ID'] = $arDiffResult['ID']; $arResult['VERSION_DIFF']['SHOW_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array('oldid' => $arDiffResult['ID'])); $arResult['VERSION_DIFF']['USER_LINK'] = ''; if (!empty($arParams["PATH_TO_USER"])) { $arResult['VERSION_DIFF']['USER_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId, 'user_id' => $arDiffResult['USER_ID'])), array()); } $rsUser = CUser::GetByID($arHistoryResult['USER_ID']); $arUser = $rsUser->Fetch(); $arResult['VERSION_OLD'] = array(); $arResult['VERSION_OLD']['USER_ID'] = $arHistoryResult['USER_ID']; $arResult['VERSION_OLD']['USER_LOGIN'] = CWikiUtils::GetUserLogin($arUser, $arParams["NAME_TEMPLATE"]); $arResult['VERSION_OLD']['MODIFIED'] = FormatDateFromDB($arHistoryResult['MODIFIED']); $arResult['VERSION_OLD']['ID'] = $arHistoryResult['ID']; $arResult['VERSION_OLD']['SHOW_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array('oldid' => $arHistoryResult['ID'])); $arResult['VERSION_OLD']['USER_LINK'] = ''; if (!empty($arParams['PATH_TO_USER'])) { $arResult['VERSION_OLD']['USER_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId, 'user_id' => $arHistoryResult['USER_ID'])), array()); } $arHp = array('oldid' => $arHistoryResult['ID'], 'sessid' => bitrix_sessid()); if ($arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N') { $arHp[$arParams["OPER_VAR"]] = 'history'; } $arResult['CANCEL_LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_HISTORY"], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arHp); /* erase if ($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT_TYPE'] == 'text') $arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT'] = nl2br($arHistoryResult['DOCUMENT']['FIELDS']['DETAIL_TEXT']);
function parseBeforeSave($text, &$arCat = array(), $nameTemplate = "") { $userLogin = CWikiUtils::GetUserLogin(array(), $nameTemplate); //$text = preg_replace_callback('/(<nowiki>(.*)<\/nowiki>)/isU'.BX_UTF_PCRE_MODIFIER, array(&$this, '_noWikiCallback'), $text); // Subscribe $text = preg_replace('/--~~~~*/' . BX_UTF_PCRE_MODIFIER, '\\1--' . $userLogin . ' ' . ConvertTimeStamp(false, 'FULL'), $text); // Category $matches = array(); if (preg_match_all('/\\[\\[(Category|' . GetMessage('CATEGORY_NAME') . '):(.+)\\]\\]/iU' . BX_UTF_PCRE_MODIFIER, $text, $matches)) { $arCat = array_unique($matches[2]); } //$text = preg_replace_callback('/(##NOWIKI(\d+)##)/isU'.BX_UTF_PCRE_MODIFIER, array(&$this, '_noWikiReturn2Callback'), $text); return $text; }
/** * <p>Возвращает Wiki-страницу по фильтру arFilter. Статичный метод.</p> * * * @param string $NAME Название Wiki-страницы * * @param array $arFilter <a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/getlist.php">GetList</a> * * @param arComponentParam $s = array() Необязательный. * * @return result_type <p>Возвращается массив, содержащий поля со значениями: </p> <table * width="100%" class="tnormal"><tbody> <tr> <th width="15%">Параметр</th> <th>Описание</th> </tr> <tr> * <td>NAME</td> <td>наименование страницы</td> </tr> <tr> <td>DETAIL_TEXT_TYPE</td> <td>тип * содержимого страницы</td> </tr> <tr> <td>DETAIL_TEXT</td> <td>текст содержимого * страницыы</td> </tr> <tr> <td>IMAGES</td> <td>массив изображений страницы</td> </tr> * <tr> <td>SECTIONS</td> <td>массив категорий страницы</td> </tr> <tr> <td>TAGS</td> * <td>массив тэгов страницы</td> </tr> </tbody></table> * * <h4>Example</h4> * <pre> * <?<br> * // Получим Wiki-страницу с названием "Тестовая страница" инфо.блока с идентификатором 2 * * $NAME = 'Тестовая страница'; * $arFilter = array( * 'ACTIVE' => 'Y', * 'CHECK_PERMISSIONS' => 'N', * 'IBLOCK_ID' => 2 * ); * $arElement = CWiki::GetElementByName($NAME, $arFilter); * if ($arElement == false) * echo 'Страница не найдена.'; * <br>?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetElementById.php">CWiki::GetElementById</a> * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetCategory.php">CWiki::GetCategory</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikiparser/parse.php">CWikiParser::Parse</a> </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwikisecurity/clear.php">CWikiSecurity::clear</a> </li> </ul><a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/GetElementByName.php * @author Bitrix */ public static function GetElementByName($NAME, $arFilter, $arComponentParams = array()) { global $CACHE_MANAGER; $iCatId = ""; if (CWikiSocnet::IsSocNet()) { $arFilter['SUBSECTION'] = CWikiSocnet::$iCatId; $iCatId = $arFilter['SUBSECTION']; } $cacheByNameID = self::GetIdForCacheByName($arFilter['IBLOCK_ID'], $iCatId, $NAME); $cacheTime = isset($arComponentParams['CACHE_TIME']) ? intval($arComponentParams['CACHE_TIME']) : CWiki::CWIKI_CACHE_TTL; if ($CACHE_MANAGER->Read($cacheTime, $cacheByNameID)) { $cachedElement = $CACHE_MANAGER->Get($cacheByNameID); if ($cachedElement) { //if cached element satisfied to filter's conditions $sameFilter = true; foreach ($arFilter as $key => $value) { if (isset($cachedElement[$key]) && $value != "" && $cachedElement[$key] != $value) { $sameFilter = false; break; } } if ($sameFilter) { return $cachedElement; } } } $NAME = CWikiUtils::UnlocalizeCategoryName($NAME); $NAME = CWikiUtils::htmlspecialcharsback($NAME); $arFilter['=XML_ID'] = $NAME; $rsElement = CIBlockElement::GetList(array(), $arFilter); $obElement = $rsElement->GetNextElement(); $arResult = false; if ($obElement !== false) { $arResult = $obElement->GetFields(); if (isset($arResult['NAME'])) { $arResult['NAME'] = htmlspecialcharsbx($arResult['NAME']); } $rsProperties = $obElement->GetProperties(array(), array('CODE' => 'IMAGES')); foreach ($rsProperties as $arProperty) { $arResult[$arProperty['CODE']] = $arProperty['VALUE']; } $rsProperties = $obElement->GetProperties(array(), array('CODE' => 'FORUM_TOPIC_ID')); foreach ($rsProperties as $arProperty) { $arResult[$arProperty['CODE']] = $arProperty['VALUE']; } $arResult['SECTIONS'] = self::GetCategory($arResult['XML_ID'], $arFilter['IBLOCK_ID']); if (!empty($arResult['TAGS'])) { $_arTAGS = explode(',', $arResult['TAGS']); $arResult['_TAGS'] = array(); foreach ($_arTAGS as $sTag) { $sTag = trim($sTag); $arTag = array('NAME' => $sTag); if (!empty($arComponentParams) && isset($arComponentParams['PATH_TO_SEARCH'])) { $arP = $arComponentParams['IN_COMPLEX'] == 'Y' && $arComponentParams['SEF_MODE'] == 'N' ? array($arComponentParams['OPER_VAR'] => 'search') : array(); $arP['tags'] = urlencode($sTag); $arTag['LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arComponentParams['PATH_TO_SEARCH'], array('wiki_name' => $arComponentParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arP); } $arResult['_TAGS'][] = $arTag; } } } if (!empty($arComponentParams)) { //Let's store only full page data with tag links $CACHE_MANAGER->Set($cacheByNameID, $arResult); } return $arResult; }
BX.WindowManager.Get().ClearButtons(); BX.WindowManager.Get().SetButtons(_BTN); </script> <?php } ?> </td></tr></table><?php die; } elseif ($arResult['WIKI_oper'] == 'rename') { ?> <table width="100%" height="100%"><tr><td align="center" valign="middle"><?php if (strlen($arResult['ERROR_MESSAGE']) <= 0) { $sCatName = ''; if (CWikiUtils::IsCategoryPage($arResult['ELEMENT']['NAME'], $sCatName)) { $catLocalName = CWikiUtils::UnlocalizeCategoryName($sPageName); } ?> <form action="<?php echo $arResult['PATH_TO_POST_EDIT']; ?> " name="rename_form" method="POST"> <?php echo bitrix_sessid_post(); ?> <input type="hidden" name="<?php echo $arResult['PAGE_VAR']; ?> " value="$arResult['ELEMENT']['NAME_LOCALIZE']?>"/> <input type="hidden" name="<?php echo $arResult['OPER_VAR'];
?> </div> <?php } ?> <div style="clear:both"></div> </div> <?php } ?> <?php if (!empty($arResult['ELEMENT']['_TAGS'])) { ?> <div id="wiki_category"> <?php echo GetMessage('WIKI_TAGS'); ?> : <?php echo CWikiUtils::GetTagsAsLinks($arResult['ELEMENT']['_TAGS']); ?> </div> <?php } ?> </div> <?php } ?> </div>
/** * Sets right search path for comments, likes etc. * http://jabber.bx/view.php?id=25340 * @param int $forumID - forum's ID were comments saving (for example $arParams['FORUM_ID']) * @param str $rightPath - wich path must leads to the comment ( for example: "/comment/#MESSAGE_ID#/" ) * @param str $urlRewriterPath - wich path leads to curent module (complex component) ( for example: "/services/wiki.php" ) * @return bool true|false */ static function SetCommentPath($forumID, $rightPath, $urlRewriterPath) { if (!$forumID || !CModule::IncludeModule('forum') || !$rightPath || !$urlRewriterPath) { return false; } $arRewriter = CUrlRewriter::GetList(array("PATH" => $urlRewriterPath)); //http://jabber.bx/view.php?id=25340 if (!is_array($arRewriter) || empty($arRewriter)) { return false; } $rewriteCondition = str_replace(array("#", "^"), "", $arRewriter[0]["CONDITION"]); $rightCommentsPath = $rewriteCondition . $rightPath; $arActualCommentsPath = CWikiUtils::GetCommentPath($forumID); if (!is_array($arActualCommentsPath)) { return false; } $arUpdateForum = array(); foreach ($arActualCommentsPath as $site => $path) { if ($path != $rightCommentsPath) { $arUpdateForum["SITES"][$site] = $rightCommentsPath; } } if (!empty($arUpdateForum)) { CForumNew::Update($forumID, $arUpdateForum); } return true; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $sPageName = $arResult['ELEMENT']['NAME'] = CWikiUtils::htmlspecialcharsback($arResult['ELEMENT']['NAME'], false); $sCatName = ''; if (CWikiUtils::IsCategoryPage($sPageName, $sCatName)) { $sPageName = preg_replace('/^category:/i' . BX_UTF_PCRE_MODIFIER, GetMessage('CATEGORY_NAME') . ':', $sPageName); } if (CWikiSocnet::IsSocNet()) { if (intval($arParams["SOCNET_GROUP_ID"]) > 0 && (empty($arParams['SET_TITLE']) || $arParams['SET_TITLE'] != 'N' || $this->GetParent()->arResult['SET_NAV_CHAIN'] == 'Y')) { $arGroup = CSocNetGroup::GetByID($arParams["SOCNET_GROUP_ID"]); $arActiveFeatures = CSocNetFeatures::GetActiveFeaturesNames(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"]); $sFeatureName = array_key_exists("wiki", $arActiveFeatures) && strlen($arActiveFeatures["wiki"]) > 0 ? $arActiveFeatures["wiki"] : GetMessage("WIKI_SOCNET_TAB"); } if (empty($arParams['SET_TITLE']) || $arParams['SET_TITLE'] != 'N') { $APPLICATION->SetTitle($arGroup["NAME"] . ": " . $sFeatureName . (!empty($sPageName) ? ": " . $sPageName : '')); } if ($this->GetParent()->arResult['SET_NAV_CHAIN'] == 'Y') { $APPLICATION->AddChainItem($arGroup["NAME"], CComponentEngine::MakePathFromTemplate($this->GetParent()->arResult['PATH_TO_GROUP'], array('group_id' => CWikiSocnet::$iSocNetId))); $APPLICATION->AddChainItem($sFeatureName, CComponentEngine::MakePathFromTemplate($this->GetParent()->arResult['PATH_TO_GROUP_WIKI_INDEX'], array('group_id' => CWikiSocnet::$iSocNetId, 'wiki_name' => urlencode($arResult['ELEMENT']['NAME'])))); } } else { if ($arParams['IN_COMPLEX'] == 'Y') { $sNavItem = $this->GetParent()->arParams['NAV_ITEM']; $sSefFolder = $this->GetParent()->arParams['SEF_FOLDER']; if (!empty($sNavItem)) { $APPLICATION->AddChainItem($sNavItem, $sSefFolder); } }
} //Anyone can build own pages list $rsHandlers = GetModuleEvents("wiki", "OnCategoryPagesListCreate"); while ($arHandler = $rsHandlers->Fetch()) { if ($handlRes = ExecuteModuleEventEx($arHandler, array($arParams['ELEMENT_NAME'], $arParams['IBLOCK_ID']))) { $rsPagesElement = $handlRes; break; } } if (isset($rsPagesElement) && $rsPagesElement) { $arResult['PAGES'] = array(); $arPageNameExists = array(); $rsPagesElement->NavStart($arParams['PAGES_COUNT'], false); $arResult['DB_LIST'] =& $rsPagesElement; while ($arPage = $rsPagesElement->GetNext()) { $sname = $arPage['NAME']; if (CWikiUtils::CheckServicePage($arPage['NAME'], $sname)) { continue; } $arResult['PAGES'][$arPage['NAME']] = array('TITLE' => $arPage['NAME'], 'NAME' => $sname, 'IS_RED' => $arPage['ACTIVE'] == 'Y' ? 'N' : 'Y', 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => urlencode($arPage['NAME']), 'group_id' => CWikiSocnet::$iSocNetId))); } $arResult['COLUMNS_COUNT'] = empty($arParams['COLUMNS_COUNT']) ? 1 : $arParams['COLUMNS_COUNT']; $arResult['PAGES_COUNT'] = empty($arParams['PAGES_COUNT']) ? 1 : $arParams['PAGES_COUNT']; } else { $arResult['COLUMNS_COUNT'] = 1; $arResult['PAGES_COUNT'] = 1; } } $this->IncludeComponentTemplate(); } unset($GLOBALS['arParams']);
if (!empty($arParams['ELEMENT_NAME']) && ($arResult['ELEMENT'] = CWiki::GetElementByName($arParams['ELEMENT_NAME'], $arFilter)) != false) { if ($arResult['ELEMENT']['ACTIVE'] == 'N') { $bNotEl = true; $arPages[] = 'add'; } $arParams['ELEMENT_ID'] = $arResult['ELEMENT']['ID']; } else { $bNotEl = true; if ($bNotPage || empty($arParams['ELEMENT_NAME'])) { $arResult['ELEMENT']['NAME'] = CWiki::GetDefaultPage($arParams['IBLOCK_ID']); //http://jabber.bx/view.php?id=28710 if (empty($arResult['ELEMENT']['NAME'])) { $arResult['ELEMENT']['NAME'] = GetMessage('WIKI_DEFAULT_PAGE_NAME'); } //todo: insert into CWiki::GetDefaultPage() $arParams['ELEMENT_NAME'] = $arResult['ELEMENT']['NAME']; } else { $arResult['ELEMENT']['NAME'] = $arParams["ELEMENT_NAME"]; } $arParams['ELEMENT_ID'] = 0; $arResult['ELEMENT']['ID'] = 0; $sServiceName = ''; $arPages[] = 'add'; } $arResult['TOPLINKS'] = CWikiUtils::getRightsLinks($arPages); if ($bNotEl && !empty($arResult['TOPLINKS'])) { $arResult['TOPLINKS']['add']['LINK'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arResult['ELEMENT']['NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array($arParams['OPER_VAR'] => 'add')); } $arResult['TYPE'] = $arParams['MENU_TYPE']; $this->IncludeComponentTemplate(); unset($GLOBALS['arParams']);
} } } // obtain a list of pictures page $arResult['IMAGES'] = array(); if (!empty($arResult['ELEMENT']['IMAGES'])) { foreach ($arResult['ELEMENT']['IMAGES'] as $_imgID) { $rsFile = CFile::GetByID($_imgID); $arFile = $rsFile->Fetch(); $aImg = array(); $aImg['ID'] = $_imgID; $aImg['ORIGINAL_NAME'] = $arFile['ORIGINAL_NAME']; $aImg['FILE_SHOW'] = CFile::ShowImage($_imgID, 100, 100, "id=\"{$_imgID}\" border=\"0\" style=\"cursor:pointer;\" onclick=\"doInsert('[File:" . CUtil::JSEscape(htmlspecialcharsbx($arFile['ORIGINAL_NAME'])) . "]','',false, '{$_imgID}')\" title='" . GetMessage('WIKI_IMAGE_INSERT') . "'"); $arResult['IMAGES'][] = $aImg; } } include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; $arResult['PATH_TO_POST_EDIT'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => $arResult['WIKI_oper']) : array()); $arResult['~PATH_TO_POST_EDIT'] = urldecode($arResult['PATH_TO_POST_EDIT']); //because it can change the page name, and hence the path for the parameter "Action" in tag "Form" if (strpos(POST_FORM_ACTION_URI, 'SEF_APPLICATION_CUR_PAGE_URL=') !== false) { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = CHTTP::urlAddParams(CHTTP::urlDeleteParams(POST_FORM_ACTION_URI, array('SEF_APPLICATION_CUR_PAGE_URL')), array('SEF_APPLICATION_CUR_PAGE_URL' => urlencode($arResult['~PATH_TO_POST_EDIT']))); } else { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = $arResult['PATH_TO_POST_EDIT']; } $sCatName = ''; $arResult["IS_CATEGORY_PAGE"] = CWikiUtils::IsCategoryPage($arResult['ELEMENT']['NAME_LOCALIZE'], $sCatName); } } $this->IncludeComponentTemplate(); unset($GLOBALS['arParams']);
static function isCategoryVirtual($name) { $result = false; $sCatName = ''; if (CWikiUtils::IsCategoryPage($name, $sCatName)) { if ($sCatName == GetMessage("WIKI_CATEGORY_NOCAT") || $sCatName == GetMessage("WIKI_CATEGORY_ALL")) { $result = true; } if (!$result) { $categories = new CWikiCategories(); $rsHandlers = GetModuleEvents("wiki", "OnCategoryListCreate"); while ($arHandler = $rsHandlers->Fetch()) { ExecuteModuleEventEx($arHandler, array(&$categories, '')); } $arCats = $categories->GetItems(); foreach ($arCats as $category) { if ($category["NAME"] == $sCatName) { $result = true; break; } } } } return $result; }