fix поля изображение Каскад (Массовое удаление изображений теперь работает)

This commit is contained in:
2025-11-25 14:55:33 +05:00
parent 58fbc94731
commit 981078ede7
3 changed files with 42 additions and 33 deletions

View File

@@ -256,32 +256,35 @@
break;
case 'save':
// Инициализируем $field_value_new, чтобы избежать предупреждений,
// если цикл не выполняется
$field_value_new = [];
// ИСПРАВЛЕНИЕ: Гарантируем, что $field_value является массивом перед foreach (Строка 259)
$field_value = is_array($field_value) ? $field_value : [];
foreach ($field_value as $v)
{
if (! empty($v['url']))
{
$field_value_new[] = $v['url'] . ($v['descr'] ? '|' . $v['descr'] : '');
}
}
// Инициализируем $field_value_new как пустой массив.
$field_value_new = [];
// Гарантируем, что $field_value является массивом перед foreach
$field_value = is_array($field_value) ? $field_value : [];
foreach ($field_value as $v)
{
if (! empty($v['url']))
{
// Убедимся, что данные очищены перед сериализацией
$description = $v['descr'] ? stripslashes(htmlspecialchars($v['descr'], ENT_QUOTES)) : '';
// Собираем элемент в строку: URL|DESCR
$field_value_new[] = $v['url'] . ($description ? '|' . $description : '');
}
}
if (isset($field_value_new))
{
return @serialize($field_value_new);
}
else
{
return $field_value_new = '';
}
break;
// Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД
if (empty($field_value_new))
{
return '';
}
else
{
// Если картинки есть, сериализуем массив строк и сохраняем
return @serialize($field_value_new);
}
break;
case 'api':
if (empty($field_value))
@@ -330,8 +333,11 @@ case 'save':
$replace[] = date('Y');
$default = explode('|', $default);
list($path_upload, $watermark, $position, $transparency) = $default;
// извлечение элементов массива $default
$path_upload = $default[0] ?? '';
$watermark = $default[1] ?? false;
$position = $default[2] ?? null;
$transparency = $default[3] ?? null;
if (! empty($path_upload))
$path_upload = str_replace($search, $replace, $path_upload);

View File

@@ -53,16 +53,19 @@ var Cascad = {
cascad_del_all_item: function() {
$('.del_all').on('click', function(event) {
event.preventDefault();
var c_id = $(this).parent().parent().parent('.cascad').attr("data-id");
var d_id = $(this).parent().parent().parent('.cascad').attr("data-doc");
var $cascad_div = $(this).parent().parent().parent('.cascad');
var c_id = $cascad_div.attr("data-id");
var d_id = $cascad_div.attr("data-doc");
jConfirm(
del_all_c,
del_all_h,
function(b) {
if (b) {
$('#cascad_' + d_id + '_' + c_id).children('.cascad_sortable').children('.cascad_item').each(function() {
$(this).remove();
});
$cascad_div.children('.cascad_sortable').children('.cascad_item').remove();
var empty_input_name = 'feld[' + c_id + ']';
$cascad_div.find('input[name="' + empty_input_name + '"]').remove();
$cascad_div.append('<input type="hidden" name="' + empty_input_name + '" value="" />');
}
}
);

View File

@@ -21,7 +21,7 @@
{assign var=cascad_new value="load" scope="global"}
{/if}
<div class="cascad" id="cascad_{$doc_id}_{$field_id}" data-id="{$field_id}" data-doc="{$doc_id}" data-rubric="{$smarty.request.rubric_id}">
<div class="cascad" id="cascad_{$doc_id}_{$field_id}" data-id="{$field_id}" data-doc="{$doc_id}" data-rubric="{if isset($smarty.request.rubric_id)}{$smarty.request.rubric_id}{/if}">
<input type="hidden" value="" id="cascad__{$field_id}_{$doc_id}">
{if $show_upload}
<input type="file" class="cascade_upload cascade_upload_field_{$field_id}_{$doc_id}" multiple="multiple" name="cascade_files_{$field_id}_{$doc_id}[]" style="visibility: hidden; display: none;" data-max-files="{$max_files}" />