diff --git a/fields/image_multi/field.php b/fields/image_multi/field.php index 93109ac..fd60e03 100644 --- a/fields/image_multi/field.php +++ b/fields/image_multi/field.php @@ -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); diff --git a/fields/image_multi/js/field.js b/fields/image_multi/js/field.js index 1d60ed6..58d732f 100644 --- a/fields/image_multi/js/field.js +++ b/fields/image_multi/js/field.js @@ -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(''); } } ); diff --git a/fields/image_multi/tpl/field.tpl b/fields/image_multi/tpl/field.tpl index 894bce6..29dd400 100644 --- a/fields/image_multi/tpl/field.tpl +++ b/fields/image_multi/tpl/field.tpl @@ -21,7 +21,7 @@ {assign var=cascad_new value="load" scope="global"} {/if} -
+
{if $show_upload}