%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/lists.field.edit/templates/.default/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/lists.field.edit/templates/.default/script.js |
BX.namespace("BX.Lists"); BX.Lists.ListsFieldEditClass = (function () { var ListsFieldEditClass = function (parameters) { this.randomString = parameters.randomString; this.ajaxUrl = '/bitrix/components/bitrix/lists.field.edit/ajax.php'; this.iblockTypeId = parameters.iblockTypeId; this.iblockId = parameters.iblockId; this.socnetGroupId = parameters.socnetGroupId; this.jsClass = 'ListsFieldEditClass'+parameters.randomString; this.maxSort = 0; this.generateCode = Boolean(parameters.generateCode); this.prefixFieldId = 'bx-lists-field-'; this.listAction = parameters.listAction; this.init(); }; ListsFieldEditClass.prototype.init = function() { this.transliterate(); if(this.generateCode && BX(this.prefixFieldId+'name')) { BX(this.prefixFieldId+'name').onkeyup = BX.delegate(function() { this.transliterate(); }, this); BX(this.prefixFieldId+'name').onblur = BX.delegate(function() { this.transliterate(); }, this); } this.setStyleForForm(); this.actionButton = BX('lists-title-action'); this.actionPopupItems = []; this.actionPopupObject = null; this.actionPopupId = 'lists-title-action'; BX.bind(this.actionButton, 'click', BX.delegate(this.showListAction, this)); }; ListsFieldEditClass.prototype.showListAction = function () { if(!this.actionPopupItems.length) { for(var k = 0; k < this.listAction.length; k++) { this.actionPopupItems.push({ text : this.listAction[k].text, onclick : this.listAction[k].action }); } } if(!BX.PopupMenu.getMenuById(this.actionPopupId)) { var buttonRect = this.actionButton.getBoundingClientRect(); this.actionPopupObject = BX.PopupMenu.create( this.actionPopupId, this.actionButton, this.actionPopupItems, { closeByEsc : true, angle: true, offsetLeft: buttonRect.width/2, events: { onPopupShow: BX.proxy(function () { BX.addClass(this.actionButton, 'webform-button-active'); }, this), onPopupClose: BX.proxy(function () { BX.removeClass(this.actionButton, 'webform-button-active'); }, this) } } ); } if(this.actionPopupObject) this.actionPopupObject.popupWindow.show(); }; ListsFieldEditClass.prototype.setStyleForForm = function() { var rows = BX('tab1_edit_table').rows; [].forEach.call((rows || []), function(row) { if(row.cells[0] && !row.cells[0].className) row.cells[0].className = 'bx-field-name'; if(row.cells[1] && !row.cells[1].className) row.cells[1].className = 'bx-field-value'; }); }; ListsFieldEditClass.prototype.transliterate = function() { if(!this.generateCode || !BX(this.prefixFieldId+'name') || !BX(this.prefixFieldId+'code')) return false; var value = BX.translit(BX(this.prefixFieldId+'name').value, { change_case: 'U' }); while(true) { var firstSymbol = value.charAt(0); if(!isNaN(parseInt(firstSymbol))) value = value.substr(1); else break; } value = value.replace(/([\'`]+)+/g, ''); BX(this.prefixFieldId+'code').value = value; }; ListsFieldEditClass.prototype.changeType = function(formId) { var _form = BX(formId); var _flag = BX('action'); if (_form && _flag) { BX.showWait(); _flag.value = 'type_changed'; _form.submit(); } }; ListsFieldEditClass.prototype.deleteField = function(formId, message) { var _form = BX(formId); var _flag = BX('action'); if (_form && _flag) { if (confirm(message)) { _flag.value = 'delete'; _form.submit(); } } }; ListsFieldEditClass.prototype.deleteListItem = function(item) { var tableRow = BX.findParent(item, {'tag': 'tr'}); if (tableRow) { var hidden = BX.findChild(tableRow, {'tag': 'input', 'class': 'sort-input'}, true); if (hidden) { var table = tableRow.parentNode; table.parentNode.appendChild(hidden); table.removeChild(tableRow); } } }; ListsFieldEditClass.prototype.toggleInput = function(inputId) { var _input = BX(inputId); if (_input) { if (_input.style.display == 'block') _input.style.display = 'none'; else _input.style.display = 'block'; } }; ListsFieldEditClass.prototype.addNewTableRow = function(tableId, regexp, rindex) { var tbl = BX(tableId); var cnt = tbl.rows.length; var oRow = tbl.insertRow(cnt); var col_count = tbl.rows[cnt - 1].cells.length; if (!this.maxSort) { var inpSort = BX.findChild(tbl.rows[cnt - 1], {'tag': 'input', 'class': 'sort-input'}, true); if (inpSort) this.maxSort = parseInt(inpSort.value) + 10; } for (var i = 0; i < col_count; i++) { var oCell = oRow.insertCell(i); var html = tbl.rows[cnt - 1].cells[i].innerHTML; oCell.align = tbl.rows[cnt - 1].cells[i].align; if (i == 0) oCell.style.display = 'none'; else oCell.className = tbl.rows[cnt - 1].cells[i].className; oCell.innerHTML = html.replace(regexp, function (html) { return html.replace('[n' + arguments[rindex] + ']', '[n' + (1 + parseInt(arguments[rindex])) + ']'); } ); } var newSort = BX.findChild(tbl.rows[cnt], {'tag': 'input', 'class': 'sort-input'}, true); if (newSort) { newSort.value = this.maxSort; this.maxSort += 10; } }; return ListsFieldEditClass; })(); /* A function for moving the rows in the list */ var dragTable = function (table, callbacks) { var dragTr = false; var tbody = false; var startY = false; var indexStart = false; var trStart = false; var init = function () { tbody = table.getElementsByTagName('tbody')[0]; table.onmousedown = start; table.onmouseleave = stop; table.onmouseup = stop; table.onmousemove = move; }; var start = function (e) { var target = e.target || e.srcElement; if (target.tagName == 'TD') { BX.eventReturnFalse(e); var tr = target.parentNode; if (tr.parentNode.nodeName !== 'TBODY' && target.tagName == "TD") return false; if (dragTr && target.tagName == "TD") return false; trStart = tr; dragTr = tr; dragTr.setAttribute('class', 'lists-field-drag-tr'); startY = e.y || e.clientY; indexStart = __getIndex(dragTr); if (callbacks && callbacks.start) callbacks.start(table, trStart, indexStart); } }; var stop = function (e) { var target = e.target || e.srcElement; if (target.tagName == 'TD') { if (!dragTr) return false; dragTr.removeAttribute('class'); startY = false; dragTr = false; if (callbacks && callbacks.stop) callbacks.stop(table, trStart, indexStart, __getIndex(trStart)); } }; var move = function (e) { var target = e.target || e.srcElement; if (target.tagName == 'TD') { if (!dragTr) return false; var currentTr = target.parentNode; if (currentTr === dragTr || currentTr.nodeName !== 'TR' || currentTr.parentNode.nodeName !== 'TBODY') return false; var y = e.y || e.clientY; var top = y < startY; startY = y; if (top) { tbody.insertBefore(dragTr, currentTr); } else { tbody.insertBefore(currentTr, dragTr); } if (callbacks && callbacks.dragging) callbacks.dragging(table, dragTr, currentTr, __getIndex(trStart)) } }; var __getIndex = function (tr) { var trs = tbody.getElementsByTagName('tr'); for (var i = 0, length = trs.length; i < length; i++) { if (trs[i] === tr) return (i + 1); } return 0; }; init(); }; function enumerationValues(table) { var listValue = BX.findChildren(table, {"tag": "input", "attribute": {"type": "hidden"}}, true); if (listValue[listValue.length - 1].getAttribute('name') == "LIST[n0][SORT]") { for (var i = 1; i <= listValue.length; i++) { listValue[i - 1].setAttribute('value', i * 10); } } }