| Current Path : /var/www/element/data/www/greenpr.ru/bitrix3/admin/htmleditor2/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix3/admin/htmleditor2/components.js |
var components_js = true;
// ######################################
// ####### BXComponentsTaskbar ##############
// ######################################
function BXComponentsTaskbar()
{
ar_BXComponentsTaskbarS.push(this);
var obj = this;
var oTaskbar = this;
BXComponentsTaskbar.prototype.OnTaskbarCreate = function ()
{
var obj = this;
this.icon_class = 'tb_icon_components1';
this.iconDiv.className = 'tb_icon ' + this.icon_class;
oTaskbar.pDataCell = oTaskbar.CreateScrollableArea(oTaskbar.pDataCell);
var table = oTaskbar.pMainObj.CreateElement("TABLE", {cellSpacing: '0', cellPadding: '0', className: "bxtaskbarcomp"});
table.style.height = "100%";
this.pDataCell.appendChild(table);
this.pWnd.style.width = "200px";
this.pWnd.style.width = "100%";
this.pCellList = table.insertRow(-1).insertCell(-1);
this.pCellList.style.padding = "10px 0px 10px 10px";
this.pModulesList = this.pMainObj.CreateCustomElement('BXList',
{
'width': '150',
'height': '150',
'field_size': '150',
'bSetGlobalStyles': true,
'values': [],
'OnChange': function (selected)
{
if(selected)
obj.__ShowComponentList(selected["value"]);
}
}
);
this.pCellList.appendChild(this.pModulesList.pWnd);
this.pCellComp = table.insertRow(-1).insertCell(-1);
this.pCellComp.style.height = "100%";
this.pCellComp.className = "bx_valign_top";
this.pMainObj.pComponent1Taskbar = this;
this.FetchArray();
emptyRow = null;
table = null;
};
BXComponentsTaskbar.prototype.FetchArray = function (clear_cache)
{
if (clear_cache === true || !window.arComp1Elements)
{
var templateID = this.pMainObj.templateID;
var sURL = '/bitrix/admin/fileman_get_xml.php?op=getcomponents1&lang='+BXLang+'&site='+BXSite+'&templateID='+templateID;
window.arComp1Elements = this.pMainObj.GetData(sURL);
}
this.BuildList();
};
BXComponentsTaskbar.prototype.BuildList = function ()
{
var arList = [];
var arFolders = window.arComp1Elements["FOLDERS"];
for(var i=0; i<arFolders.length; i++)
arList.push({'value': arFolders[i]["ID"], 'name': arFolders[i]["NAME"]});
this.pModulesList.SetValues(arList);
this.pModulesList.Select(0);
this.pModulesList.FireChangeEvent();
arList = null;
arFolders = null;
};
BXComponentsTaskbar.prototype.__ShowComponentList = function (sFolder)
{
oBXEditorUtils.BXRemoveAllChild(this.pCellComp);
if (this.rootElementsCont)
oBXEditorUtils.BXRemoveAllChild(this.rootElementsCont);
var arComponents = [];
var _arComponents = [];
var tempArGrElement = [];
var tempArElement = [];
var arAllComponents = window.arComp1Elements["COMPONENTS"];
var el_num, gr_num = 0;
for(var i=0; i<arAllComponents.length; i++)
{
if(arAllComponents[i]["FOLDER"]==sFolder)
{
if(arAllComponents[i]["SEPARATOR"])
{
tempArGrElement = [];
tempArGrElement['name'] = sFolder+'_'+gr_num;
tempArGrElement['title'] = (arAllComponents[i]["NAME"]) ? arAllComponents[i]["NAME"] : BX_MESS.CompTBTitle;
tempArGrElement['tagname'] = '';
tempArGrElement['icon'] = '';
tempArGrElement['isGroup'] = true;
tempArGrElement['params'] = [];
tempArGrElement['childElements'] = [];
_arComponents.push(tempArGrElement);
gr_num++;
el_num = 0;
}
else
{
tempArElement = [];
tempArElement['name'] = sFolder+'_'+el_num;
tempArElement['title'] = (arAllComponents[i]["NAME"]) ? arAllComponents[i]["NAME"] : 'No Name';
tempArElement['tagname'] = 'component';
tempArElement['icon'] = arAllComponents[i]["ICON"];
tempArElement['isGroup'] = false;
tempArElement['params'] = {"SCRIPT_NAME": arAllComponents[i]["PATH"], "PARAMS": {}};
tempArElement['childElements'] = [];
try
{
_arComponents[_arComponents.length-1]['childElements'].push(tempArElement);
}
catch(e)
{
tempArGrElement = [];
tempArGrElement['name'] = sFolder+'_'+gr_num;
tempArGrElement['title'] = BX_MESS.CompTBTitle;
tempArGrElement['tagname'] = '';
tempArGrElement['icon'] = '';
tempArGrElement['isGroup'] = true;
tempArGrElement['params'] = [];
tempArGrElement['childElements'] = [];
_arComponents.push(tempArGrElement);
gr_num++;
el_num = 0;
_arComponents[_arComponents.length-1]['childElements'].push(tempArElement);
}
el_num++;
}
}
}
oTaskbar.DisplayElementList(_arComponents, this.pCellComp);
var elPHP = [];
elPHP['name'] = 'el_php';
elPHP['title'] = BX_MESS.PHP_CODE;
elPHP['tagname'] = 'php';
elPHP['icon'] = '/bitrix/images/fileman/htmledit2/php.gif';
elPHP['isGroup'] = false;
elPHP['params'] = {code:"<?\n?>"};
elPHP['childElements'] = [];
this.AddElement(elPHP,this.pCellComp,"",-1);
};
}
oBXEditorUtils.addTaskBar('BXComponentsTaskbar', 2, BX_MESS.CompTBTitle+" 1.0", {bWithoutPHP : false});
function BXCheckForComponent(_str)
{
if ((arRes = __CheckForComponent(_str)) && (arTemplate = obj.pMainObj.FindComponentByPath(arRes["SCRIPT_NAME"])))
{
if (!SETTINGS[obj.pMainObj.name].arTaskbarSettings)
SETTINGS[obj.pMainObj.name].arTaskbarSettings = arTaskbarSettings;
_str = '<img src="' + arTemplate['ICON'] + '" border="0" __bxtagname="component" __bxcontainer="' + bxhtmlspecialchars(BXSerialize(arRes)) + '" />';
}
return _str;
}
function __CheckForComponent(str)
{
str = oBXEditorUtils.PHPParser.trimPHPTags(str);
var _oFunc = oBXEditorUtils.PHPParser.parseFunction(str);
if (!_oFunc)
return false;
if (_oFunc.name.toUpperCase()=='$APPLICATION->INCLUDEFILE')
{
var arParams = oBXEditorUtils.PHPParser.parseParameters(_oFunc.params);
var oRes = {};
oRes.SCRIPT_NAME = arParams[0];
oRes.PARAMS = (arParams[1]) ? arParams[1] : {};
if (arParams[2])
oRes.ADD_PARAMS = arParams[2];
return oRes;
}
else
return false;
}
// ----------- Adding COMPONENT 1.0 Parser ----------//
oBXEditorUtils.addPHPParser(BXCheckForComponent,0);
var BXShowComponentPanel = function (bNew, pTaskbar, pElement)
{
while(pTaskbar.pCellProps.childNodes.length>0)
pTaskbar.pCellProps.removeChild(pTaskbar.pCellProps.childNodes[0]);
pTaskbar.pHtmlElement = pElement;
var arSettings = BXUnSerialize(pElement.getAttribute("__bxcontainer"));
var fChange = function (e)
{
var arAllFields = [];
function addel(arEls)
{
var el;
for(var i=0; i<arEls.length; i++)
{
if(!arEls[i]["__exp"] || arEls[i]["__exp"]!="Y") continue;
el = arEls[i];
if(el["name"].substr(el["name"].length-2, 2) == '[]')
{
if(arAllFields[el["name"].substr(0, el["name"].length-2)])
arAllFields[el["name"].substr(0, el["name"].length-2)].push(el);
else
arAllFields[el["name"].substr(0, el["name"].length-2)] = Array(el);
}
else
arAllFields[el["name"]] = el;
}
}
arSettings["PARAMS"] = {};
var propID, i, j, val;
addel(pTaskbar.pCellProps.getElementsByTagName("select"));
addel(pTaskbar.pCellProps.getElementsByTagName("input"));
addel(pTaskbar.pCellProps.getElementsByTagName("textarea"));
for(i=0; i<pTaskbar.arElements.length; i++)
{
propID = pTaskbar.arElements[i];
val = arAllFields[propID];
if(arAllFields[propID+'_alt'] && val.selectedIndex == 0)
val = arAllFields[propID+'_alt'];
if(!val) continue;
if(val.tagName) // one element
{
if(val.tagName.toUpperCase() == "SELECT")
{
for(j=0; j<val.length; j++)
{
if(val[j].selected && val[j].value!='')
arSettings["PARAMS"][propID] = val[j].value;
}
}
else
arSettings["PARAMS"][propID] = val.value;
}
else
{
arSettings["PARAMS"][propID] = [];
for(k=0; k<val.length; k++)
{
if(val[k].tagName.toUpperCase() == "SELECT")
{
for(j=0; j<val[k].length; j++)
{
if(val[k][j].selected && val[k][j].value!='')
arSettings["PARAMS"][propID].push(val[k][j].value);
}
}
else
arSettings["PARAMS"][propID].push(val[k].value);
}
}
}
if(pElement)
pElement.setAttribute("__bxcontainer", BXSerialize(arSettings));
} // end of fChange
pTaskbar.arElements = [];
var templateID = pTaskbar.pMainObj.templateID;
var tProp = pTaskbar.pMainObj.CreateElement("TABLE");
tProp.className = "bxtaskbarprops";
tProp.style.width = "100%";
tProp.cellSpacing = 0;
tProp.cellPadding = 1;
var row, cell, arPropertyParams, bSel, arValues, res, pSelect, arUsedValues, bFound, key, oOption, val, xCell, opt_val, bBr, i, k, alt;
var sURL = '/bitrix/admin/fileman_get_xml.php?op=componentconfig&lang='+BXLang+'&site='+BXSite+'&templateID='+templateID+'&path='+arSettings["SCRIPT_NAME"];
var arParams = pTaskbar.pMainObj.GetData(sURL, arSettings["PARAMS"]);
if(typeof(arParams) != 'object')
arParams = {};
for(var propertyID in arParams)
{
pTaskbar.arElements.push(propertyID);
res = '';
arUsedValues = [];
arPropertyParams = arParams[propertyID];
if(!arSettings["PARAMS"][propertyID] && arPropertyParams["DEFAULT"])
arValues = arPropertyParams["DEFAULT"];
else if(arSettings["PARAMS"][propertyID])
arValues = arSettings["PARAMS"][propertyID];
else
arValues = '';
if(!arPropertyParams["MULTIPLE"] || arPropertyParams["MULTIPLE"]!="Y")
arPropertyParams["MULTIPLE"] = "N";
if(!arPropertyParams["TYPE"])
arPropertyParams["TYPE"] = "STRING";
if(!arPropertyParams["CNT"])
arPropertyParams["CNT"] = 0;
if(!arPropertyParams["SIZE"])
arPropertyParams["SIZE"] = 0;
if(!arPropertyParams['ADDITIONAL_VALUES'])
arPropertyParams['ADDITIONAL_VALUES'] = 'N';
if(!arPropertyParams['ROWS'])
arPropertyParams['ROWS'] = 0;
if(!arPropertyParams["COLS"] || arPropertyParams["COLS"]<1)
arPropertyParams["COLS"] = '30';
if(arPropertyParams["MULTIPLE"] && arPropertyParams["MULTIPLE"]=='Y' && typeof(arValues)!='object')
{
if(!arValues)
arValues = [];
}
else if(arPropertyParams["TYPE"]&& arPropertyParams["TYPE"]=="LIST" && typeof(arValues)!='object')
arValues = Array(arValues);
if(arPropertyParams["MULTIPLE"] && arPropertyParams["MULTIPLE"]=='Y')
{
arPropertyParams["CNT"] = parseInt(arPropertyParams["CNT"]);
if(arPropertyParams["CNT"]<1)
arPropertyParams["CNT"] = 1;
}
row = tProp.insertRow(-1);
row.className = "bxtaskbarpropscomp";
cell = row.insertCell(-1);
cell.width = "50%";
cell.align = "right";
cell.vAlign = "top";
var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML': arPropertyParams['NAME']+':'});
cell.appendChild(oSpan);
oSpan = null;
cell = row.insertCell(-1);
cell.width = "50%";
arPropertyParams["TYPE"] = arPropertyParams["TYPE"].toUpperCase();
switch(arPropertyParams["TYPE"])
{
case "LIST":
arPropertyParams["SIZE"] = (arPropertyParams["MULTIPLE"]=='Y' && (parseInt(arPropertyParams["SIZE"])<=1 || isNaN(parseInt(arPropertyParams["SIZE"]))) ? '3' : arPropertyParams["SIZE"]);
if(parseInt(arPropertyParams["SIZE"])<=0 || isNaN(parseInt(arPropertyParams["SIZE"])))
arPropertyParams["SIZE"] = 1;
pSelect = pTaskbar.pMainObj.CreateElement("SELECT", {'size': arPropertyParams["SIZE"], 'name': propertyID+(arPropertyParams["MULTIPLE"]=='Y'?'[]':''), '__exp': 'Y', 'onchange': fChange, "multiple":(arPropertyParams["MULTIPLE"]=="Y")});
cell.appendChild(pSelect);
if(!arPropertyParams["VALUES"])
arPropertyParams["VALUES"] = [];
bFound = false;
for(opt_val in arPropertyParams["VALUES"])
{
bSel = false;
oOption = new Option(arPropertyParams["VALUES"][opt_val], opt_val, false, false);
pSelect.options.add(oOption);
if(pSelect.options.length<=1)
setTimeout(__BXSetOptionSelected(oOption, false), 1);
var _arValues = [];
if (typeof arValues == 'string')
{
if (arValues.substr(0, 2) == '={')
arValues = arValues.substr(2, arValues.length-3);
if (arValues.substr(0, 6).toLowerCase()=='array(')
_arValues = _BXStr2Arr(arValues);
}
key = BXSearchInd(arValues, opt_val);
if(key>=0)
{
bFound = true;
arUsedValues[key]=true;
bSel = true;
setTimeout(__BXSetOptionSelected(oOption, true), 1);
}
else if(_arValues[opt_val])
{
bFound = true;
arUsedValues[opt_val]=true;
bSel = true;
setTimeout(__BXSetOptionSelected(oOption, true), 1);
delete _arValues[opt_val];
}
}
if(arPropertyParams['ADDITIONAL_VALUES']!='N')
{
oOption = document.createElement("OPTION");
oOption.value = '';
oOption.selected = !bFound;
oOption.text = (arPropertyParams['MULTIPLE']=='Y'?BX_MESS.TPropCompNS:BX_MESS.TPropCompOth)+' ->';
pSelect.options.add(oOption, 0);
oOption = null;
}
if(arPropertyParams['ADDITIONAL_VALUES']!='N')
{
if(arPropertyParams['MULTIPLE']=='Y')
{
if (typeof(arValues)=='string')
arValues = _arValues;
for(k in arValues)
{
if(arUsedValues[k])
continue;
cell.appendChild(pTaskbar.pMainObj.CreateElement("BR"));
if(arPropertyParams['ROWS']>1)
{
var oTextarea = pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': arValues[k], 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange});
cell.appendChild(oTextarea);
oTextarea = null;
}
else
{
var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': arValues[k], 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange});
cell.appendChild(oInput);
oInput = null;
}
}
for(k=0; k<arPropertyParams["CNT"]; k++)
{
cell.appendChild(pTaskbar.pMainObj.CreateElement("BR"));
if(arPropertyParams['ROWS']>1)
{
var oTextarea = pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': '', 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange});
cell.appendChild(oTextarea);
oTextarea = null;
}
else
{
var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': '', 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange});
cell.appendChild(oInput);
oInput = null;
}
}
var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'button', 'value': '+', 'pMainObj': pTaskbar.pMainObj, 'arPropertyParams': arPropertyParams});
xCell = cell.appendChild(oInput);
oInput = null;
var oBR = pTaskbar.pMainObj.CreateElement("BR");
cell.appendChild(oBR);
oBR = null;
xCell.propertyID = propertyID;
xCell.fChange = fChange;
xCell.onclick = function ()
{
this.parentNode.insertBefore(this.pMainObj.CreateElement("BR"), this);
if(this.arPropertyParams['ROWS'] && this.arPropertyParams['ROWS']>1)
{
var oTextarea = this.pMainObj.CreateElement("TEXTAREA", {'cols': (!this.arPropertyParams['COLS'] || isNaN(this.arPropertyParams['COLS'])?'20':this.arPropertyParams['COLS']), 'value': '', 'name': this.propertyID+'[]', '__exp': 'Y', 'onchange': this.fChange});
this.parentNode.insertBefore(oTextarea, this);
oTextarea = null;
}
else
{
var oInput = this.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (!this.arPropertyParams['COLS'] || isNaN(this.arPropertyParams['COLS'])?'20':this.arPropertyParams['COLS']), 'value': '', 'name': this.propertyID+'[]', '__exp': 'Y', 'onchange': this.fChange});
this.parentNode.insertBefore(oInput, this);
oInput = null;
}
}
}
else
{
val = '';
for(k=0; k<arValues.length; k++)
{
if(arUsedValues[k])
continue;
val = arValues[k];
break;
}
if(arPropertyParams['ROWS'] && arPropertyParams['ROWS']>1)
alt = cell.appendChild(pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (!arPropertyParams['COLS'] || isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'disabled': bFound, 'name': propertyID+'_alt', '__exp': 'Y', 'onchange': fChange}));
else
alt = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (!arPropertyParams['COLS'] || isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'disabled': bFound, 'name': propertyID+'_alt', '__exp': 'Y', 'onchange': fChange}));
pSelect.pAlt = alt;
pSelect.onchange = function (e){this.pAlt.disabled = (this.selectedIndex!=0); fChange(e);};
}
}
break;
default:
if(arPropertyParams["MULTIPLE"]=='Y')
{
bBr = false;
for(val in arValues)
{
if(bBr)
cell.appendChild(pTaskbar.pMainObj.CreateElement("BR"));
else
bBr = true;
if(arPropertyParams['ROWS']>1)
cell.appendChild(pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange}));
else
cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange}));
}
for(k=0; k<arPropertyParams["CNT"]; k++)
{
if(bBr)
cell.appendChild(pTaskbar.pMainObj.CreateElement("BR"));
else
bBr = true;
if(arPropertyParams['ROWS']>1)
cell.appendChild(pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': '', 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange}));
else
cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': '', 'name': propertyID+'[]', '__exp': 'Y', 'onchange': fChange}));
}
xCell = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'button', 'value': '+', 'pMainObj': pTaskbar.pMainObj, 'arPropertyParams': arPropertyParams}));
xCell.propertyID = propertyID;
xCell.fChange = fChange;
xCell.onclick = function ()
{
this.parentNode.insertBefore(this.pMainObj.CreateElement("BR"), this);
if(this.arPropertyParams['ROWS'] && this.arPropertyParams['ROWS']>1)
this.parentNode.insertBefore(this.pMainObj.CreateElement("TEXTAREA", {'cols': (!this.arPropertyParams['COLS'] || isNaN(this.arPropertyParams['COLS'])?'20':this.arPropertyParams['COLS']), 'value': '', 'name': this.propertyID+'[]', '__exp': 'Y', 'onchange': this.fChange}), this);
else
this.parentNode.insertBefore(this.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (!this.arPropertyParams['COLS'] || isNaN(this.arPropertyParams['COLS'])?'20':this.arPropertyParams['COLS']), 'value': '', 'name': this.propertyID+'[]', '__exp': 'Y', 'onchange': this.fChange}), this);
}
cell.appendChild(pTaskbar.pMainObj.CreateElement("BR"));
}
else
{
val = arValues;
if(arPropertyParams['ROWS'] && arPropertyParams['ROWS']>1)
cell.appendChild(pTaskbar.pMainObj.CreateElement("TEXTAREA", {'cols': (!arPropertyParams['COLS'] || isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'name': propertyID, '__exp': 'Y', 'onchange': fChange}));
else
cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': (!arPropertyParams['COLS'] || isNaN(arPropertyParams['COLS'])?'20':arPropertyParams['COLS']), 'value': val, 'name': propertyID, '__exp': 'Y', 'onchange': fChange}));
}
break;
}
if(arPropertyParams["REFRESH"] && arPropertyParams["REFRESH"]=="Y")
{
xCell = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'button', 'value': 'ok', 'pMainObj': pTaskbar.pMainObj, 'arPropertyParams': arPropertyParams}));
xCell.onclick = function (){BXShowComponentPanel(bNew, pTaskbar, pElement);};
}
}
var arTemplate;
if(tProp.rows.length>0 && (arTemplate = pTaskbar.pMainObj.FindComponentByPath(arSettings["SCRIPT_NAME"])))
{
cell = tProp.rows[0].cells[1];
cell.noWrap = true;
cell.insertBefore(pTaskbar.pMainObj.CreateElement("IMG", {'src': '/bitrix/images/fileman/htmledit2/info.gif', 'title': arTemplate['FULL_PATH'], 'align': 'right', 'width': '16', 'height':'16'}), cell.childNodes[0]);
}
pTaskbar.pCellProps.appendChild(tProp);
tProp = null;
row = null;
cell = null;
arPropertyParams = null;
pSelect = null;
oOption = null;
};
pPropertybarHandlers['component'] = BXShowComponentPanel;