При создании числовых полей, а так же смене типа уже существующих строчных полей на числовые , активация чекбоксов "Числовое поле" в разделе "Управление полями" происходит автоматически. Это соответствует логике самих типов числовых полей.

This commit is contained in:
2026-02-21 14:03:47 +05:00
parent 9157bc2810
commit 72441ea69d

View File

@@ -172,7 +172,12 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
{section name=field loop=$fields}
{if $field.rubric_field_type == $fields[field].id}
{assign var="unknow" value=""}
<a href="javascript:void(0);" class="link change_type" data-rubric="{$field.rubric_id}" data-id="{$field.Id}">{$fields[field].name}</a>
<a href="javascript:void(0);" class="link change_type"
data-rubric="{$field.rubric_id}"
data-id="{$field.Id}"
data-type-alias="{$fields[field].id}">
{$fields[field].name}
</a>
{/if}
{/section}
@@ -281,11 +286,15 @@ function openAliasWindow(fieldId, rubId, width, height, target) {ldelim}
</div>
</td>
<td>
<select name="rub_type_new" id="rub_type_new">
{section name=field loop=$fields}
<option value="{$fields[field].id}" {if $fields[field].id == 'single_line'}selected{/if}>{$fields[field].name}</option>
{/section}
</select>
<select name="rub_type_new" id="rub_type_new">
{section name=field loop=$fields}
<option value="{$fields[field].id}"
data-type-alias="{$fields[field].id}"
{if $fields[field].id == 'single_line'}selected{/if}>
{$fields[field].name}
</option>
{/section}
</select>
</td>
<td>
<select name="group_new" id="group_new">
@@ -378,6 +387,68 @@ $(document).ready(function(){ldelim}
{literal}
// --- активируем чекбоксы (всегда числовое) если поле числовое ---
function checkNumeric(alias) {
return alias && (alias.indexOf('numeric') !== -1);
}
// Для НОВОГО поля
$(document).on('change', '#rub_type_new', function() {
var alias = $(this).find('option:selected').attr('data-type-alias');
var isNum = checkNumeric(alias);
var $cb = $('input[name="rubric_field_numeric"]');
$cb.prop('checked', isNum);
if ($cb.parent().hasClass('jqTransformCheckboxWrapper')) {
if (isNum) $cb.parent().find('a').addClass('jqTransformChecked');
else $cb.parent().find('a').removeClass('jqTransformChecked');
}
$cb.trigger('change');
});
// ВИЗУАЛ ПРИ СМЕНЕ ТИПА ПОЛЯ (чтобы галочка менялась сразу в таблице)
$(document).on('change', 'select[name="rubric_field_type"]', function() {
var fieldId = $(this).closest('form').find('.SaveChangeField').attr('data-id');
var isNum = checkNumeric($(this).val());
if (fieldId) {
var $mainCb = $('input[name="rubric_field_numeric[' + fieldId + ']"]');
var $visualLink = $mainCb.closest('td').find('a.jqTransformCheckbox');
$mainCb.prop('checked', isNum); // Меняем состояние реального чекбокса
if (isNum) $visualLink.addClass('jqTransformChecked');
else $visualLink.removeClass('jqTransformChecked');
}
});
// СОХРАНЕНИЕ ПРИ СМЕНЕ ТИПА ПОЛЯ AJAX: Смена типа + Авто-клик по "Применить"
$(document).on('click', '.SaveChangeField', function(event) {
event.preventDefault();
var $btn = $(this);
var $modalForm = $btn.parent('form');
var Id = $btn.attr('data-id');
var RubId = $btn.attr('data-rubric');
$modalForm.ajaxSubmit({
url: $modalForm.attr('action'),
type: 'POST',
beforeSubmit: function() {
$.alerts._overlay('show');
},
success: function(data) {
// обновляем ячейку с типом поля
$("#rub_field_" + RubId + "_" + Id).before(data).remove();
// отправляем всю таблицу в базу и сохраняем чекбокс
$(".SaveEditFields").first().trigger('click');
$.alerts._overlay('hide');
}
});
return false;
});
// --- Конец активируем чекбоксы (всегда числовое) если поле числовое ---
$(document).on('click', '.change_group', function(event)
{
event.preventDefault();