%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/main.tree.selector/templates/iblockedit/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/main.tree.selector/templates/iblockedit/ajax.php |
<?
define("STOP_STATISTICS", true);
define("BX_SECURITY_SHOW_MESSAGE", true);
define('NO_AGENT_CHECK', true);
use Bitrix\Main\Localization\Loc;
if (isset($_REQUEST['admin']) && is_string($_REQUEST['admin']) && $_REQUEST['admin'] == 'Y')
define('ADMIN_SECTION', true);
if (isset($_REQUEST['site']) && !empty($_REQUEST['site']))
{
if (!is_string($_REQUEST['site']))
die();
if (preg_match('/^[a-z0-9_]{2}$/i', $_REQUEST['site']) === 1)
define('SITE_ID', $_REQUEST['site']);
}
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
Loc::loadMessages(__FILE__);
if(!CModule::IncludeModule('iblock'))
{
ShowError(Loc::getMessage("BT_COMP_MTS_AJAX_ERR_MODULE_ABSENT"));
die();
}
CUtil::JSPostUnescape();
$iblock_id = intval($_REQUEST["IBLOCK_ID"]);
if (!CIBlockRights::UserHasRightTo($iblock_id, $iblock_id, "iblock_admin_display"))
{
ShowError(Loc::getMessage('BT_COMP_MTS_AJAX_ERR_IBLOCK_ACCESS_DENIED'));
die();
}
$arIBlock = CIBlock::GetArrayByID($iblock_id);
$strBanSym = trim($_REQUEST['BAN_SYM']);
$arBanSym = str_split($strBanSym,1);
$strRepSym = trim($_REQUEST['REP_SYM']);
$arRepSym = array_fill(0,sizeof($arBanSym),$strRepSym);
if ($_REQUEST['MODE'] == 'section')
{
$arResult = array();
$SECTION_ID = intval($_REQUEST['SECTION_ID']);
$rsElements = CIBlockElement::GetList(
array('ID' => 'ASC'),
array(
'IBLOCK_ID' => $arIBlock["ID"],
'SECTION_ID' => $SECTION_ID,
'CHECK_PERMISSIONS' => 'N',
),
false,
false,
array("ID", "NAME", "IBLOCK_SECTION_ID")
);
while($arElement = $rsElements->Fetch())
{
$arResult[] = array(
"ID" => $arElement["ID"],
"NAME" => str_replace($arBanSym,$arRepSym,$arElement["NAME"]),
"SECTION_ID" => $arElement["IBLOCK_SECTION_ID"],
"CONTENT" => '<div class="mts-name">'.htmlspecialcharsex(str_replace($arBanSym,$arRepSym,$arElement["NAME"])).'</div>',
);
}
$APPLICATION->RestartBuffer();
Header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
echo CUtil::PhpToJsObject(array("SECTION_ID" => intval($SECTION_ID), "arElements" => $arResult));
die();
}
elseif ($_REQUEST['MODE'] == 'search')
{
$arResult = array();
$rsElements = CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => $arIBlock["ID"],
"%NAME" => $_REQUEST['search'],
'CHECK_PERMISSIONS' => 'N',
),
false,
array("nTopCount" => 20),
array("ID", "NAME", "IBLOCK_SECTION_ID")
);
while($arElement = $rsElements->Fetch())
{
$arResult[] = array(
"ID" => $arElement["ID"],
"NAME" => str_replace($arBanSym,$arRepSym,$arElement["NAME"]),
"SECTION_ID" => $arElement["IBLOCK_SECTION_ID"],
);
}
$APPLICATION->RestartBuffer();
Header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
echo CUtil::PhpToJsObject($arResult);
die();
}
else
{
$bMultiple = false;
if (isset($_REQUEST['multiple']) && $_REQUEST['multiple'] == 'Y')
$bMultiple = true;
if (isset($_REQUEST['win_id']))
{
$intCount = 0;
$arWinList = array();
$strWinTemplate = '/^[a-z][a-z0-9\.\,\:_\-]*$/i';
$intCount = preg_match($strWinTemplate,$_REQUEST['win_id'],$arWinList);
if (1 != $intCount || empty($arWinList))
{
ShowError(Loc::getMessage("BT_COMP_MTS_AJAX_ERR_WIN_ID_ABSENT"));
die();
}
else
{
$win_id = $arWinList[0];
}
}
else
{
ShowError(Loc::getMessage("BT_COMP_MTS_AJAX_ERR_WIN_ID_ABSENT"));
die();
}
$arOpenedSections = array();
$arValues = array();
if(isset($_REQUEST['value']))
{
$arTempo = array();
$arValues = explode(',', $_REQUEST['value']);
foreach($arValues as $value)
{
$value = intval($value);
if($value > 0)
$arTempo[] = $value;
}
$arValues = $arTempo;
if(count($arValues) > 0)
{
$rsElements = CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => $arIBlock["ID"],
"=ID" => $arValues,
'CHECK_PERMISSIONS' => 'N',
),
false,
false,
array("ID", "IBLOCK_SECTION_ID")
);
while($arElement = $rsElements->Fetch())
{
$arOpenedSections[] = $arElement['IBLOCK_SECTION_ID'];
}
}
}
?>
<div class="title">
<table cellspacing="0" width="100%">
<tr>
<td width="100%" class="title-text" onmousedown="jsFloatDiv.StartDrag(arguments[0], document.getElementById('<?echo $win_id?>'));"> </td>
<td width="0%"><a class="close" href="javascript:document.getElementById('<?echo $win_id?>').__object.CloseDialog();" title="<?=Loc::getMessage("CT_BMTS_WINDOW_CLOSE")?>"></a></td>
</tr>
</table>
</div>
<script>
var current_selected = <?echo CUtil::PhpToJsObject(array_values($arValues))?>;
</script>
<div class="content" id="_f_popup_content" style="height: 403px; overflow-x: hidden; oveflow-y: auto; padding: 0;"><input id="bx_emp_search_control" type="text" style="width: 99.99%" value="" autocomplete="off" />
<script>
document.getElementById('<?echo $win_id?>').__object.InitControl('bx_emp_search_control');
</script>
<div class="mts-section-list" id="mts_search_layout">
<?
function EmployeeDrawStructure($arStructure, $arSections, $key, $win_id)
{
foreach ($arStructure[$key] as $ID)
{
$arRes = $arSections[$ID];
echo '<div class="mts-section'.($key == 0 ? '-first' : '').'" style="padding-left: '.(($arRes['DEPTH_LEVEL']-1)*15).'px" onclick="document.getElementById(\''.$win_id.'\').__object.LoadSection(\''.$ID.'\')" id="mts_section_'.$ID.'">';
echo '<div class="mts-section-name mts-closed">'.$arRes['NAME'].'</div>';
echo '</div>';
echo '<div style="display: none" id="bx_children_'.$arRes['ID'].'">';
if (is_array($arStructure[$ID]))
{
EmployeeDrawStructure($arStructure, $arSections, $ID, $win_id);
}
echo '<div class="mts-list" id="mts_elements_'.$ID.'" style="margin-left: '.($arRes['DEPTH_LEVEL']*15).'px"><i>'.Loc::getMessage('CT_BMTS_WAIT').'</i></div>';
echo '</div>';
}
}
$dbRes = CIBlockSection::GetTreeList(array(
'IBLOCK_ID' => $arIBlock["ID"],
'CHECK_PERMISSIONS' => 'N',
));
$arStructure = array(0 => array());
$arSections = array();
while ($arRes = $dbRes->GetNext())
{
if (!$arRes['IBLOCK_SECTION_ID'])
$arStructure[0][] = $arRes['ID'];
elseif (!is_array($arStructure[$arRes['IBLOCK_SECTION_ID']]))
$arStructure[$arRes['IBLOCK_SECTION_ID']] = array($arRes['ID']);
else
$arStructure[$arRes['IBLOCK_SECTION_ID']][] = $arRes['ID'];
$arSections[$arRes['ID']] = $arRes;
}
EmployeeDrawStructure($arStructure, $arSections, 0, $win_id);
echo '<div style="display:none" id="mts_section_0">';
echo '<div class="mts-section-name mts-closed"></div>';
echo '</div>';
echo '<div style="display: none" id="bx_children_0">';
echo '<div class="mts-list" id="mts_elements_0" style="margin-left: '.($arRes['DEPTH_LEVEL']*15).'px"><i>'.Loc::getMessage('CT_BMTS_WAIT').'</i></div>';
echo '</div>';
if (count($arStructure[0]) <= 1 && count($arOpenedSections) <= 0)
{
$arOpenedSections[] = $arStructure[0][0];
}
?>
<script>
var WIN_ID = document.getElementById('<?echo $win_id?>');
<?
if (count($arOpenedSections) > 0)
{
$arSectionList = array();
foreach ($arOpenedSections as $opened_section)
{
while ($opened_section > 0)
{
if (in_array($opened_section, $arSectionList))
break;
$arSectionList[] = $opened_section;
?>
WIN_ID.__object.LoadSection('<?echo intval($opened_section)?>', true);
<?
$opened_section = $arSections[$opened_section]['IBLOCK_SECTION_ID'];
}
}
}
?>
WIN_ID.__object.LoadSection('0', true);
</script>
</div>
</div>
<div class="buttons">
<input type="button" id="submitbtn" value="<?echo Loc::getMessage('CT_BMTS_SUBMIT')?>" onclick="document.getElementById('<?echo $win_id?>').__object.ElementSet();" />
<input type="button" value="<?echo Loc::getMessage('CT_BMTS_CANCEL')?>" onclick="document.getElementById('<?echo $win_id?>').__object.CloseDialog();" />
</div>
<?
}
?>