| Current Path : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/public/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/public/component_props2.php |
<?
if (!array_key_exists("component_name", $_GET))
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/public/component_props.php");
die();
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php");
function PageParams()
{
return
'component_name='.urlencode(CUtil::addslashes($_GET["component_name"])).
'&component_template='.urlencode(CUtil::addslashes($_GET["component_template"])).
'&template_id='.urlencode(CUtil::addslashes($_GET["template_id"])).
'&lang='.urlencode(CUtil::addslashes(LANGUAGE_ID)).
'&src_path='.urlencode(CUtil::addslashes($_GET["src_path"])).
'&src_line='.intval($_GET["src_line"]).
'&src_page='.urlencode(CUtil::addslashes($_GET["src_page"])).
'&src_site='.urlencode(CUtil::addslashes($_GET["src_site"]));
}
$src_path = Rel2Abs("/", $_GET["src_path"]);
$src_line = intval($_GET["src_line"]);
if(!$USER->CanDoOperation('edit_php') && !$USER->CanDoFileOperation('fm_lpa', array($_GET["src_site"], $src_path)))
die(GetMessage("ACCESS_DENIED"));
$bLimitPhpAccess = !$USER->CanDoOperation('edit_php');
IncludeModuleLangFile(__FILE__);
CUtil::JSPostUnescape();
$obJSPopup = new CJSPopup('',
array(
'TITLE' => GetMessage("comp_prop_title")
)
);
$obJSPopup->ShowTitlebar();
$strWarning = "";
$arValues = array();
$arTemplate = false;
$arComponent = false;
if($_SERVER["REQUEST_METHOD"] == "POST" && $_GET["action"] == "refresh")
{
// parameters were changed by "ok" button
// we need to refresh the component description with new values
$arValues = $_POST;
}
else
{
// try to read parameters from script file
/* Try to open script containing the component call */
if(!$src_path || $src_line <= 0)
$strWarning .= GetMessage("comp_prop_err_param")."<br>";
else
{
$abs_path = $_SERVER["DOCUMENT_ROOT"].$src_path;
$filesrc = $APPLICATION->GetFileContent($abs_path);
if(!$filesrc || $filesrc == "")
$strWarning .= GetMessage("comp_prop_err_open")."<br>";
}
if($strWarning == "")
{
$arComponent = PHPParser::FindComponent($_GET["component_name"], $filesrc, $src_line);
if ($arComponent === false)
$strWarning .= GetMessage("comp_prop_err_comp")."<br>";
else
$arValues = $arComponent["DATA"]["PARAMS"];
}
} //$_SERVER["REQUEST_METHOD"] == "POST" && $_GET["action"] == "refresh"
if($strWarning == "")
{
$curTemplate = (isset($_POST["NEW_COMPONENT_TEMPLATE"])) ? $_POST["NEW_COMPONENT_TEMPLATE"] : $_GET["component_template"];
$arComponentDescription = CComponentUtil::GetComponentDescr($_GET["component_name"]);
$arComponentParameters = CComponentUtil::GetComponentProps($_GET["component_name"], $arValues);
$arTemplateParameters = CComponentUtil::GetTemplateProps($_GET["component_name"], $curTemplate, $_GET["template_id"], $arValues);
$arParameterGroups = array();
if (isset($arComponentParameters["GROUPS"]) && is_array($arComponentParameters["GROUPS"]))
$arParameterGroups = $arParameterGroups + $arComponentParameters["GROUPS"];
$arParameters = array();
if (isset($arComponentParameters["PARAMETERS"]) && is_array($arComponentParameters["PARAMETERS"]))
$arParameters = $arParameters + $arComponentParameters["PARAMETERS"];
if (isset($arTemplateParameters) && is_array($arTemplateParameters))
$arParameters = $arParameters + $arTemplateParameters;
$arComponentTemplates = CComponentUtil::GetTemplatesList($_GET["component_name"], $_GET["template_id"]);
/* save parameters to file */
if($_SERVER["REQUEST_METHOD"] == "POST" && $_GET["action"] == "save" && $arComponent !== false && $arComponentDescription !== false)
{
if (!check_bitrix_sessid())
{
$strWarning .= GetMessage("comp_prop_err_save")."<br>";
}
else
{
$aPostValues = $_POST;
unset($aPostValues["__closed_sections"]);
unset($aPostValues["sessid"]);
unset($aPostValues["bxpiheight"]);
unset($aPostValues["bxpiwidth"]);
CComponentUtil::PrepareVariables($aPostValues);
foreach($aPostValues as $name => $value)
{
if(is_array($value) && count($value) == 1 && isset($value[0]) && $value[0] == "")
$aPostValues[$name] = array();
elseif($bLimitPhpAccess && substr($value, 0, 2) == '={' && substr($value, -1) == '}')
$aPostValues[$name] = $arValues[$name];
}
//check template name
$sTemplateName = "";
foreach($arComponentTemplates as $templ)
{
if($templ["NAME"] == $_POST["NEW_COMPONENT_TEMPLATE"])
{
$sTemplateName = $templ["NAME"];
break;
}
}
$code = ($arComponent["DATA"]["VARIABLE"]? $arComponent["DATA"]["VARIABLE"]."=":"").
"\$APPLICATION->IncludeComponent(\"".$arComponent["DATA"]["COMPONENT_NAME"]."\", ".
"\"".$sTemplateName."\", ".
"array(\n\t".PHPParser::ReturnPHPStr2($aPostValues)."\n\t)".
",\n\t".(strlen($arComponent["DATA"]["PARENT_COMP"]) > 0? $arComponent["DATA"]["PARENT_COMP"] : "false").
(!empty($arComponent["DATA"]["FUNCTION_PARAMS"])? ",\n\t"."array(\n\t".PHPParser::ReturnPHPStr2($arComponent["DATA"]["FUNCTION_PARAMS"])."\n\t)" : "").
"\n);";
$filesrc_for_save = substr($filesrc, 0, $arComponent["START"]).$code.substr($filesrc, $arComponent["END"]);
if($APPLICATION->SaveFileContent($abs_path, $filesrc_for_save))
$obJSPopup->Close();
else
$strWarning .= GetMessage("comp_prop_err_save")."<br>";
}
}
}
$componentPath = CComponentEngine::MakeComponentPath($_GET["component_name"]);
if($arComponentDescription["ICON"] <> "" && is_file($_SERVER["DOCUMENT_ROOT"]."/bitrix/components".$componentPath.$arComponentDescription["ICON"]))
$sIcon = "/bitrix/components".$componentPath.$arComponentDescription["ICON"];
else
$sIcon = "/bitrix/images/fileman/htmledit2/component.gif";
$aSize = getimagesize($_SERVER["DOCUMENT_ROOT"].$sIcon);
?>
<?
$obJSPopup->StartDescription();
?>
<div class="bx-popup-icon"><img src="<?echo htmlspecialchars($sIcon)?>" width="<?echo $aSize[0]?>" height="<?echo $aSize[1]?>" alt="" border="0"></div>
<?if($arComponentDescription["NAME"] <> ""):?>
<p title="<?echo GetMessage("comp_prop_name")?>"><b><?echo htmlspecialchars($arComponentDescription["NAME"])?></b></p>
<?endif;?>
<?if($arComponentDescription["DESCRIPTION"] <> ""):?>
<p title="<?echo GetMessage("comp_prop_desc")?>"><?echo htmlspecialchars($arComponentDescription["DESCRIPTION"])?></p>
<?endif;?>
<p class="note" title="<?echo GetMessage("comp_prop_path")?>"><a href="/bitrix/admin/fileman_admin.php?lang=<?echo LANGUAGE_ID?>&path=<?echo urlencode("/bitrix/components".$componentPath)?>"><?echo htmlspecialchars($_GET["component_name"])?></a></p>
<?
if($strWarning <> "")
{
//ShowError($strWarning);
$obJSPopup->ShowValidationError($strWarning);
echo '<script>jsPopup.AdjustShadow()</script>';
}
?>
<?if(!empty($arComponentParameters["PARAMETERS"]) || !empty($arTemplateParameters["PARAMETERS"])):?>
<?
/*
$sStyle = '';
if (intval($_REQUEST['width']) > 0) $sStyle .= 'width: '.intval($_REQUEST['width']).'px; ';
if (intval($_REQUEST['height']) > 0) $sStyle .= 'height: '.intval($_REQUEST['height']).'px; ';
if (strlen($sStyle) > 0)
$sStyle = 'style="'.$sStyle.'"';
$obJSPopup->StartContent(array('style' => $sStyle));
*/
$obJSPopup->StartContent();
?>
<?
$sSectArr = "";
$aClosedSections = array();
if(isset($_POST["__closed_sections"]) && $_POST["__closed_sections"]<>"")
{
$sections = preg_replace("/[^a-z0-9_,]/i", "", $_POST["__closed_sections"]);
$aClosedSections = explode(",", $sections);
$sSectArr = "'".implode("','", $aClosedSections)."'";
}
?>
<script>
window.__closed_sections = [<?echo $sSectArr?>];
window.ShowSection = function(el)
{
var bShow = (el.className == "bx-popup-sign bx-popup-plus");
el.className = (bShow? "bx-popup-sign bx-popup-minus":"bx-popup-sign bx-popup-plus");
var tr = jsUtils.FindParentObject(jsUtils.FindParentObject(el, "table"), "tr");
var id = tr.id;
while((tr = jsUtils.FindNextSibling(tr, "tr")))
{
if(tr.className && tr.className == 'empty')
break;
if(bShow)
{
try{tr.style.display = 'table-row';}
catch(e){tr.style.display = 'block';}
}
else
tr.style.display = 'none';
}
if(bShow)
{
for(var i in window.__closed_sections)
if(window.__closed_sections[i] == id)
{
delete window.__closed_sections[i];
break;
}
}
else
window.__closed_sections[window.__closed_sections.length] = id;
var form = jsUtils.FindParentObject(el, "form");
form.__closed_sections.value = '';
for(var i in window.__closed_sections)
if(window.__closed_sections[i])
form.__closed_sections.value += (form.__closed_sections.value!=''? ',':'') + window.__closed_sections[i];
if(bShow && id == "sect_SEF_MODE")
ShowSefUrls(form.SEF_MODE);
}
window.ShowSefUrls = function(el)
{
var tr = jsUtils.FindParentObject(el, "tr");
while((tr = jsUtils.FindNextSibling(tr, "tr")))
{
if(!tr.className)
continue;
if(tr.className == 'empty')
break;
if(el.checked && tr.className == 'sef' || !el.checked && tr.className == 'nonsef')
{
try{tr.style.display = 'table-row';}
catch(e){tr.style.display = 'block';}
}
else
tr.style.display = 'none';
}
}
window.addElement = function(arNodes, arElements)
{
var el, name, i, l;
l = arNodes.length;
for(i = 0; i < l; i++)
{
el = arNodes[i];
if (el.name.length <= 0 || el.name.substr(0, 2) == '__' || el.name == 'sessid')
continue;
if(el.name.substr(el.name.length - 2, 2) == '[]')
{
name = el.name.substr(0, el.name.length - 2);
if (!arElements[name])
arElements[name] = [];
arElements[name].push(el);
}
else
arElements[el.name] = el;
}
return arElements;
};
window.getCompParamvals = function()
{
var arElements = {};
var parentNode = document.forms['bx-popup-form'];
arElements = window.addElement(parentNode.getElementsByTagName("SELECT"), arElements);
arElements = window.addElement(parentNode.getElementsByTagName("INPUT"), arElements);
arElements = window.addElement(parentNode.getElementsByTagName("TEXTAREA"), arElements);
return arElements;
};
</script>
<table cellspacing="0" class="bx-width100">
<?
if(!empty($arComponentTemplates)):
$bHidden = in_array("__template_sect", $aClosedSections);
?>
<tr class="section" id="__template_sect">
<td colspan="2">
<table cellspacing="0">
<tr>
<td><a class="bx-popup-sign <?echo ($bHidden? "bx-popup-plus":"bx-popup-minus")?>" href="javascript:void(0)" onclick="ShowSection(this)" title="<?echo GetMessage("comp_prop_sect")?>"></a></td>
<td><?echo GetMessage("comp_prop_template")?></td>
</tr>
</table>
</td>
</tr>
<tr<?if($bHidden) echo ' style="display:none"'?>>
<td class="bx-popup-label bx-width50"><?= GetMessage("comp_prop_template") ?>:</td>
<td>
<select name="NEW_COMPONENT_TEMPLATE" onchange="jsPopup.PostParameters('<?=PageParams()?>&action=refresh&scroll='+document.getElementById('bx_popup_content').scrollTop);">
<?
for ($i = 0, $cnt = count($arComponentTemplates); $i < $cnt; $i++)
{
$showTemplateName = ((StrLen($arComponentTemplates[$i]["TEMPLATE"]) > 0) ? $arComponentTemplates[$i]["TEMPLATE"] : GetMessage("comp_prop_template_sys"));
?><option value="<?= htmlspecialchars($arComponentTemplates[$i]["NAME"]) ?>"<?if ($arComponentTemplates[$i]["NAME"]==$curTemplate || StrLen($curTemplate) <= 0 && $arComponentTemplates[$i]["NAME"]==".default") echo " selected";?>><?= htmlspecialchars($showTemplateName.": ".$arComponentTemplates[$i]["NAME"]) ?></option><?
}
?>
</select>
</td>
</tr>
<?
endif; //!empty($arComponentTemplates)
// Fetch tooltips
$cn = CUtil::addslashes($_GET["component_name"]);
$cn = str_replace(array(':', '..'), array('/', ''), $cn);
$tooltips_path = $_SERVER["DOCUMENT_ROOT"]."/bitrix/components/".$cn."/help/.tooltips.php";
$tooltips_lang_path = $_SERVER["DOCUMENT_ROOT"]."/bitrix/components/".$cn."/lang/".LANGUAGE_ID."/help/.tooltips.php";
@include($tooltips_lang_path);
@include($tooltips_path);
if (!is_array($arTooltips))
$arTooltips = array();
//check whether we have parameters without parent group
$aGroups = array_keys($arParameterGroups);
foreach($arParameters as $prop)
{
if(!array_key_exists("PARENT", $prop) || !in_array($prop["PARENT"], $aGroups))
{
$arParameterGroups["__additional_params"] = array("NAME"=>GetMessage("comp_prop_additional"));
break;
}
}
$hiddenParamsHTML = '';
$prevGroupID = "";
foreach($arParameterGroups as $groupID=>$aGroup):
$bSef = false;
foreach($arParameters as $ID=>$prop):
if($groupID == "__additional_params" && array_key_exists("PARENT", $prop) && in_array($prop["PARENT"], $aGroups))
continue;
if($groupID <> "__additional_params" && $prop["PARENT"]<>$groupID)
continue;
$bHide = (array_key_exists("HIDDEN", $prop) && $prop["HIDDEN"] == "Y"); // hidden param
if($prevGroupID <> $groupID && !$bHide):
$bHidden = in_array("sect_".$groupID, $aClosedSections);
$prevGroupID = $groupID;
?>
<tr class="empty">
<td colspan="2"><div class="empty"></div></td>
</tr>
<tr class="section" id="sect_<?echo $groupID?>">
<td colspan="2">
<table cellspacing="0">
<tr>
<td><a class="bx-popup-sign <?echo ($bHidden? "bx-popup-plus":"bx-popup-minus")?>" href="javascript:void(0)" onclick="ShowSection(this)" title="<?echo GetMessage("comp_prop_sect")?>"></a></td>
<td><?echo htmlspecialchars($aGroup["NAME"])?></td>
</tr>
</table>
</td>
</tr>
<?
endif;
if($ID == "SEF_MODE" && $arValues[$ID] == "Y")
$bSef = true;
$bSefHidden = false;
$sSefClass = "";
if(substr($ID, 0, strlen("VARIABLE_ALIASES_")) == "VARIABLE_ALIASES_")
{
$bSefHidden = $bSef;
$sSefClass = "nonsef";
}
if(substr($ID, 0, strlen("SEF_URL_TEMPLATES_")) == "SEF_URL_TEMPLATES_" || $ID == "SEF_FOLDER")
{
$bSefHidden = !$bSef;
$sSefClass = "sef";
}
if (!$bHide):
?>
<tr<?if($bHidden || $bSefHidden) echo ' style="display:none"'?><?if($sSefClass<>"")echo ' class="'.$sSefClass.'"'?>>
<td class="bx-width50 bx-popup-label"><?echo htmlspecialchars($prop["NAME"]).":"?></td>
<td>
<?
endif;
if (!array_key_exists($ID, $arValues))
{
if (SubStr($ID, 0, StrLen("SEF_URL_TEMPLATES_")) == "SEF_URL_TEMPLATES_"
&& is_array($arValues["SEF_URL_TEMPLATES"])
&& array_key_exists(SubStr($ID, StrLen("SEF_URL_TEMPLATES_")), $arValues["SEF_URL_TEMPLATES"]))
$arValues[$ID] = $arValues["SEF_URL_TEMPLATES"][SubStr($ID, StrLen("SEF_URL_TEMPLATES_"))];
elseif (SubStr($ID, 0, StrLen("VARIABLE_ALIASES_")) == "VARIABLE_ALIASES_"
&& is_array($arValues["VARIABLE_ALIASES"])
&& array_key_exists(SubStr($ID, StrLen("VARIABLE_ALIASES_")), $arValues["VARIABLE_ALIASES"]))
$arValues[$ID] = $arValues["VARIABLE_ALIASES"][SubStr($ID, StrLen("VARIABLE_ALIASES_"))];
}
if(!array_key_exists($ID, $arValues) && isset($prop["DEFAULT"]))
$arValues[$ID] = $prop["DEFAULT"];
if($arValues["SEF_FOLDER"] == "")
$arValues["SEF_FOLDER"] = GetDirPath($_GET["src_page"]);
if($prop["MULTIPLE"]=='Y' && !is_array($arValues[$ID]))
{
if(isset($arValues[$ID]))
$val = Array($arValues[$ID]);
else
$val = Array();
}
elseif($prop["TYPE"]=="LIST" && !is_array($arValues[$ID]))
$val = Array($arValues[$ID]);
else
$val = $arValues[$ID];
$res = "";
if($prop["COLS"]<1)
$prop["COLS"] = '30';
if($prop["MULTIPLE"]=='Y')
{
$prop["CNT"] = IntVal($prop["CNT"]);
if($prop["CNT"]<1)
$prop["CNT"] = 1;
}
switch(strtoupper($prop["TYPE"]))
{
case "LIST":
$prop["SIZE"] = ($prop["MULTIPLE"]=='Y' && IntVal($prop["SIZE"])<=1 ? '3' : $prop["SIZE"]);
if(intval($prop["SIZE"])<=0)
$prop["SIZE"] = 1;
$res .= '<select name="'.$ID.($prop["MULTIPLE"]=="Y"?'[]':'').'"';
if($prop["MULTIPLE"]=="Y")
$res .= ' multiple';
else
{
if($prop['ADDITIONAL_VALUES']=='Y' || $prop["REFRESH"]=="Y")
{
$res .= ' onChange="';
if($prop['ADDITIONAL_VALUES']=='Y')
$res .= 'this.form.elements[\''.$ID.'_alt\'].disabled = (this.selectedIndex!=0); ';
if($prop["REFRESH"]=="Y")
{
if($prop['ADDITIONAL_VALUES']=='Y')
$res .= 'if(this.selectedIndex!=0)';
$res .= 'jsPopup.PostParameters(\''.PageParams().'&action=refresh&scroll=\'+document.getElementById(\'bx_popup_content\').scrollTop);';
}
$res .= '"';
}
}
$res .= ' size="'.$prop["SIZE"].'">';
if(!is_array($prop["VALUES"]))
$prop["VALUES"] = Array();
$tmp = ''; $bFound = false;
foreach($prop["VALUES"] as $v_id=>$v_name)
{
$key = array_search($v_id, $val);
if($key===FALSE || $key===NULL)
$tmp .= '<option value="'.htmlspecialchars($v_id).'">'.htmlspecialchars($v_name).'</option>';
else
{
unset($val[$key]);
$bFound = true;
$tmp .= '<option value="'.htmlspecialchars($v_id).'" selected>'.htmlspecialchars($v_name).'</option>';
}
}
if($prop['ADDITIONAL_VALUES']=='Y')
$res .= '<option value=""'.(!$bFound?' selected':'').'>'.($prop["MULTIPLE"]=="Y"?GetMessage("comp_prop_not_sel"):GetMessage("comp_prop_other").' ->').'</option>';
$res .= $tmp;
$res .= '</select>';
if($prop['ADDITIONAL_VALUES']=='Y')
{
if($prop["MULTIPLE"]=='Y')
{
reset($val);
foreach($val as $v)
{
if($v == "")
continue;
$res .= '<br>';
if($prop['ROWS']>1)
$res .= '<textarea name="'.$ID.'[]" cols='.$prop["COLS"].'>'.htmlspecialchars($v).'</textarea>';
else
$res .= '<input type="text" name="'.$ID.'[]" size='.$prop["COLS"].' value="'.htmlspecialchars($v).'">';
}
for($i=0; $i<$prop["CNT"]; $i++)
{
$res .= '<br>';
if($prop['ROWS']>1)
$res .= '<textarea name="'.$ID.'[]" cols='.$prop["COLS"].'></textarea>';
else
$res .= '<input type="text" name="'.$ID.'[]" size='.$prop["COLS"].' value="">';
}
$res .= '<input type="button" value="+" onClick="var span = document.createElement(\'SPAN\'); this.parentNode.insertBefore(span, this); span.innerHTML=\''.
'<br>';
if($prop['ROWS']>1)
$res .= '<textarea name=\\\''.$ID.'[]\\\' cols=\\\''.$prop["COLS"].'\\\'></textarea>';
else
$res .= '<input type=\\\'text\\\' name=\\\''.$ID.'[]\\\' size=\\\''.$prop["COLS"].'\\\'>';
$res .= '\'">';
}
else
{
$res .= '<br>';
if($prop['ROWS']>1)
$res .= '<textarea name="'.$ID.'_alt" '.($bFound?' disabled ':'').' cols='.$prop["COLS"].'>'.htmlspecialchars(count($val)>0?$val[0]:'').'</textarea>';
else
$res .= '<input type="text" name="'.$ID.'_alt" '.($bFound?' disabled ':'').'size='.$prop["COLS"].' value="'.htmlspecialchars(count($val)>0?$val[0]:'').'">';
}
}
if($prop["REFRESH"]=="Y")
$res .= '<input type="button" value="OK" onclick="jsPopup.PostParameters(\''.PageParams().'&action=refresh&scroll=\'+document.getElementById(\'bx_popup_content\').scrollTop);">';
break;
case "CHECKBOX":
$res .= '<input name="'.$ID.'" value="Y" type="checkbox"'.($val == "Y"? ' checked':'');
if($prop["REFRESH"]=="Y")
$res .= ' onclick="jsPopup.PostParameters(\''.PageParams().'&action=refresh&scroll=\'+document.getElementById(\'bx_popup_content\').scrollTop);"';
elseif($ID == "SEF_MODE")
$res .= ' onclick="ShowSefUrls(this);"';
$res .= '>';
break;
default: // 'STRING' OR 'FILE' OR 'COLORPICKER' OR 'CUSTOM'
if($prop["TYPE"] == 'COLORPICKER' || $prop["TYPE"] == 'FILE')
{
$bAutoRefresh = true;
$prop['ROWS'] = 1;
$prop['MULTIPLE'] = 'N';
$prop['COLS'] = ($prop["TYPE"] == 'FILE') ? 40 : 6;
}
if($prop["MULTIPLE"] == 'Y')
{
$bBr = false;
foreach($val as $v)
{
if($v == "")
continue;
if($bBr)
$res .= '<br>';
else
$bBr = true;
if($prop['ROWS'] > 1)
$res .= '<textarea name="'.$ID.'[]" cols='.$prop["COLS"].'>'.htmlspecialchars($v).'</textarea>';
else
$res .= '<input type="text" name="'.$ID.'[]" size='.$prop["COLS"].' value="'.htmlspecialchars($v).'">';
}
for($i=0; $i<$prop["CNT"]; $i++)
{
if($bBr)
$res .= '<br>';
else
$bBr = true;
if($prop['ROWS']>1)
$res .= '<textarea name="'.$ID.'[]" cols='.$prop["COLS"].'></textarea>';
else
$res .= '<input type="text" name="'.$ID.'[]" size='.$prop["COLS"].' value="">';
}
$res .= '<input type="button" value="+" onClick="var span = document.createElement(\'SPAN\'); this.parentNode.insertBefore(span, this); span.innerHTML=\''.
'<br>';
if($prop['ROWS']>1)
$res .= '<textarea name=\\\''.$ID.'[]\\\' cols=\\\''.$prop["COLS"].'\\\'></textarea>';
else
$res .= '<input type=\\\'text\\\' name=\\\''.$ID.'[]\\\' size=\\\''.$prop["COLS"].'\\\'>';
$res .= '\'">';
}
else
{
if($prop['ROWS'] > 1)
{
$res .= '<textarea name="'.$ID.'" cols='.$prop["COLS"].'>'.htmlspecialchars($val).'</textarea>';
}
else
{
if ($prop["TYPE"] == 'FILE')
{
CAdminFileDialog::ShowScript(Array
(
"event" => "BX_FD_".$ID,
"arResultDest" => Array("FUNCTION_NAME" => "BX_FD_ONRESULT_".$ID),
"arPath" => Array(),
"select" => isset($prop['FD_TARGET']) ? $prop['FD_TARGET'] : 'F',
"operation" => 'O',
"showUploadTab" => (isset($prop['FD_UPLOAD']) && $prop['FD_UPLOAD'] && $prop['FD_TARGET'] == 'F'),
"showAddToMenuTab" => false,
"fileFilter" => isset($prop['FD_EXT']) ? $prop['FD_EXT'] : '',
"allowAllFiles" => true,
"SaveConfig" => true
));
$res .= '<script>
window.BX_FD_ONRESULT_'.$ID.' = function(filename, filepath)
{
var oInput = document.getElementById("__FD_PARAM_'.$ID.'");
oInput.value = filepath + "/" + filename;';
if ($prop["REFRESH"]=="Y")
$res .= 'jsPopup.PostParameters(\''.PageParams().'&action=refresh&scroll=\'+document.getElementById(\'bx_popup_content\').scrollTop);';
$res .= '}
</script>';
$res .= '<input id="__FD_PARAM_'.$ID.'" name="'.$ID.'" size='.$prop["COLS"].' value="'.htmlspecialchars($val).'" type="text">';
$res .= '<input size='.$prop["COLS"].' value="..." type="button" onclick="window.BX_FD_'.$ID.'();">';
}
elseif ($prop["TYPE"] == 'COLORPICKER')
{
$src = '/bitrix/js/fileman/controls/colorpicker/colorpicker_loader.js';
$res .= '#COLORPICKER#';
$res .= '<script type="text/javascript" src="'.$src.'?v='.@filemtime($_SERVER['DOCUMENT_ROOT'].$src).'"></script>';
$res .= '<script>
var arConfig = {
};
loadColorpicker(arConfig);
</script>';
}
elseif ($prop["TYPE"] == 'CUSTOM')
{
if (!isset($prop['JS_FILE']) || !isset($prop['JS_EVENT']))
break;
$data = isset($prop['JS_DATA']) ? $prop['JS_DATA'] : '';
$res .= '<input id="__FD_PARAM_'.$ID.'" name="'.$ID.'" value="'.htmlspecialchars($val).'" type="hidden">';
$res .= '<script type="text/javascript" src="'.$prop['JS_FILE'].'?v='.@filemtime($_SERVER['DOCUMENT_ROOT'].$prop['JS_FILE']).'"></script>';
$res .= '
<script>
setTimeout(
function(){
var oInput = document.getElementById("__FD_PARAM_'.$ID.'");
if (!oInput) return;
var cell = oInput.parentNode;
var arProps = {
popertyID : "'.$ID.'",
propertyParams: '.CUtil::PhpToJsObject($prop).',
getElements : window.getCompParamvals,
oInput : oInput,
oCont : cell,
data : \''.CUtil::JSEscape($prop['JS_DATA']).'\'
};
if (window.'.$prop['JS_EVENT'].')
window.'.$prop['JS_EVENT'].'(arProps);
},
50
);
</script>';
}
else
{
$res .= '<input name="'.$ID.'" size='.$prop["COLS"].' value="'.htmlspecialchars($val).'" type="text">';
}
}
}
if($prop["REFRESH"]=="Y" && (!isset($bAutoRefresh) || !$bAutoRefresh))
$res .= '<input type="button" value="OK" onclick="jsPopup.PostParameters(\''.PageParams().'&action=refresh&scroll=\'+document.getElementById(\'bx_popup_content\').scrollTop);">';
break;
}
if (isset($arTooltips[$ID]))
$res .= ShowJSHint($arTooltips[$ID], array('return' => true));
if ($bHide):
$hiddenParamsHTML .= $res;
else:
echo $res;
?>
</td>
</tr>
<?
endif;
endforeach;
endforeach;
?>
</table>
<?
if (strlen($hiddenParamsHTML) > 0) // if exists hidden params we display them in the non-visible div with absolute positioning, but inside the form....
echo '<div style="position: absolute; left: -2000; top: -2000; visibility: hidden;">'.$hiddenParamsHTML.'</div>';
?>
<input type="hidden" name="__closed_sections" value="<?echo htmlspecialchars($_POST["__closed_sections"])?>">
<?
$obJSPopup->StartButtons();
?>
<input type="button" value="<?echo GetMessage("comp_prop_save")?>" onclick="jsPopup.PostParameters('<?echo PageParams().'&action=save'?>');" title="<?echo GetMessage("comp_prop_save_title")?>">
<input type="button" value="<?echo GetMessage("comp_prop_cancel")?>" onclick="jsPopup.CloseDialog()" title="<?echo GetMessage("comp_prop_cancel_title")?>">
<?
$obJSPopup->EndButtons();
?>
<?
else: //!empty($arTemplate["PARAMS"])
$obJSPopup->StartButtons();
?>
<input type="button" value="<?echo GetMessage("comp_prop_close_w")?>" onclick="jsPopup.CloseDialog()" title="<?echo GetMessage("comp_prop_close")?>">
<?
$obJSPopup->EndButtons();
endif; //!empty($arTemplate["PARAMS"])
?>
<?if(($scroll = intval($_GET["scroll"])) > 0):?>
<script>
var content = document.getElementById("bx_popup_content");
if(content)
content.scrollTop = <?echo $scroll?>;
</script>
<?endif?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin_js.php");
?>