ДИСК ПОЛЬЗОВАТЕЛЬСКИЕ ПОЛЯ
Добавлен результ_модифер для кастомных полей диска
/home/bitrix/www/bitrix/components/bitrix/disk.folder.list/templates/.default/ result_modifier.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if (!empty($arResult["GRID"]["ROWS"]) && $arResult["STORAGE"]["ID"]==14)
{
/* SET FILTERS */
$resPodr = CIBlockSection::GetList(array('left_margin'=>'asc'),array('IBLOCK_ID'=>5,'ACTIVE'=>'Y'),false,array('ID','IBLOCK_SECTION_ID','NAME','DEPTH_LEVEL'));
while($rowPodr = $resPodr->Fetch()){
if($rowPodr['DEPTH_LEVEL']>1){$pad=" . ";
if($rowPodr['DEPTH_LEVEL']>2){$pad=$pad." . ";
if($rowPodr['DEPTH_LEVEL']>3){$pad=$pad." . ";}
}
} else {$pad="";}
$filterPodr[$rowPodr['ID']]=$pad.$rowPodr['NAME'];
}
$resType = CUserFieldEnum::GetList(array(), array("USER_FIELD_ID" => 1013));
while($rowType = $resType->GetNext()){
$filterType[$rowType['VALUE']]=$rowType["VALUE"];
}
$arResult['FILTER']['FILTER'][]=['id' => 'UF_DEP', 'name' => 'Подразделение', 'type' => 'list', 'items' => $filterPodr, 'params' => ['multiple' => 'Y'], 'default' => true];
$arResult['FILTER']['FILTER'][]=['id' => 'UF_CREATE', 'name' => 'Дата регистрации', 'type'=>'text', 'default' => true];
$arResult['FILTER']['FILTER'][]=['id' => 'UF_TYPE', 'name' => 'Тип документа', 'type' => 'list', 'items' => $filterType, 'params' => ['multiple' => 'Y'], 'default' => true];
$arResult['FILTER']['FILTER'][]=['id' => 'UF_TAGS', 'name' => 'Тэги', 'type'=>'text', 'default' => true];
/* SET HEADERS */
$arResult['GRID']['HEADERS'][]=['id' => 'UF_DEP', 'name' => 'Подразделение', 'sort' => 'UF_DEP', 'default' => true];
$arResult['GRID']['HEADERS'][]=['id' => 'UF_CREATE', 'name' => 'Дата регистрации', 'sort' => 'UF_CREATE', 'default' => true];
$arResult['GRID']['HEADERS'][]=['id' => 'UF_TYPE', 'name' => 'Тип документа', 'sort' => 'UF_TYPE', 'default' => true];
$arResult['GRID']['HEADERS'][]=['id' => 'UF_TAGS', 'name' => 'Тэги', 'sort' => 'UF_TAGS', 'default' => true];
/* SET USER_FIELDS */
foreach ($arResult["GRID"]["ROWS"] as $key => &$row)
{
if ($row['object'] instanceof \Bitrix\Disk\File)
{
$userFieldsObject = \Bitrix\Disk\Driver::getInstance()->getUserFieldManager()->getFieldsForObject($row['object']);
if($userFieldsObject)
{
foreach ($userFieldsObject as $keyUsersFields => &$rowUsersFields)
{
if($keyUsersFields=="UF_DEP" && !empty($rowUsersFields['VALUE'])){$rowUsersFields['VALUE'] = '<a target="_blank" href="/company/structure.php?set_filter_structure=Y&structure_UF_DEPARTMENT='.$rowUsersFields['VALUE'].'">'.CIBlockSection::GetByID($rowUsersFields['VALUE'])->Fetch()['NAME']."</a><br>";}
if($keyUsersFields=="UF_TYPE" && !empty($rowUsersFields['VALUE'])){$rowUsersFields['VALUE'] = CUserFieldEnum::GetList(array(), array("ID" => $rowUsersFields['VALUE']))->GetNext()["VALUE"];}
if(!empty($rowUsersFields['VALUE'])){$arResult['GRID']['ROWS'][$key]['data'][$keyUsersFields] = $rowUsersFields['VALUE'];}
}
}
}
}
}
//echo "<pre>";print_r($arResult);echo "</pre>";
?>
Закастомлен полнотестовый индекс saveFullText
/home/bitrix/www/bitrix/modules/disk/lib/search/ indexmanager.php
$fulltextContent .= setDiskUserFieldsIndexSearch($object);
В init.php добавлены функции
function setDiskUserFieldsIndexSearch($object){
CModule::IncludeModule('disk');
$userFieldsObject = \Bitrix\Disk\Driver::getInstance()->getUserFieldManager()->getFieldsForObject($object);
if($userFieldsObject)
{
$userFieldContent = "";
foreach ($userFieldsObject as $keyUsersFields => &$rowUsersFields){
if($keyUsersFields=="UF_DEP" && !empty($rowUsersFields['VALUE'])){$userFieldContent .= " ".$rowUsersFields['VALUE']." ".CIBlockSection::GetByID($rowUsersFields['VALUE'])->Fetch()['NAME'];}
else if($keyUsersFields=="UF_TYPE" && !empty($rowUsersFields['VALUE'])){$userFieldContent .= " ".$rowUsersFields['VALUE']." ".CUserFieldEnum::GetList(array(), array("ID" => $rowUsersFields['VALUE']))->GetNext()["VALUE"];}
else if(!empty($rowUsersFields['VALUE'])){$userFieldContent .= " ".$rowUsersFields['VALUE'];}
}
return $userFieldContent;
}
}
function updateDiskUserFieldsReIndex($file){
CModule::IncludeModule('disk');
if($file instanceof \Bitrix\Disk\File){
$contentManager = new Bitrix\Disk\Search\ContentManager();
Bitrix\Disk\Driver::getInstance()->getIndexManager()->indexFile($file,array('content' => $contentManager->getFileContentFromIndex($file)));
}
}
В функцию сохранения юзерских полей, в функцию processActionSaveUserField, добавлено кастом событие реиндекса
/home/bitrix/www/bitrix/components/bitrix/disk.file.view/ ajax.php
updateDiskUserFieldsReIndex($file);
В функцию фильтра modifyByFilter добавлены кастомные поля
/home/bitrix/www/bitrix/components/bitrix/disk.folder.list/ class.php
if (!empty($filterData['UF_DEP']))
{
$filter["{$operation}SEARCH_INDEX"] = $filterData['UF_DEP'];
}
if (!empty($filterData['UF_CREATE']))
{
$filter["{$operation}SEARCH_INDEX"] = $filterData['UF_CREATE'];
}
if (!empty($filterData['UF_TYPE']))
{
$filter["{$operation}SEARCH_INDEX"] = $filterData['UF_TYPE'];
}
if (!empty($filterData['UF_TAGS']))
{
$filter["{$operation}SEARCH_INDEX"] = $filterData['UF_TAGS'];
}
|