Исправление для полей, которые не давали создать документ, при условии что такое поле одно в рубрике и оно не заполнено в момент создания документа.
This commit is contained in:
@@ -35,4 +35,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#error#}</li>
|
||||
</ul>
|
||||
<input type="hidden" name="feld[{$field_id}]" value="" />
|
||||
{/if}
|
||||
|
||||
@@ -11,5 +11,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#error#}</li>
|
||||
</ul>
|
||||
|
||||
<input type="hidden" name="feld[{$field_id}]" value="" />
|
||||
{/if}
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#error#}</li>
|
||||
</ul>
|
||||
|
||||
<input type="hidden" name="feld[{$field_id}]" value="" />
|
||||
{/if}
|
||||
|
||||
@@ -8,4 +8,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#no_items#}</li>
|
||||
</ul>
|
||||
<input type="hidden" name="feld[{$field_id}]" value="">
|
||||
{/if}
|
||||
@@ -9,4 +9,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#no_items#}</li>
|
||||
</ul>
|
||||
<input type="hidden" name="feld[{$field_id}]" value="">
|
||||
{/if}
|
||||
@@ -274,36 +274,41 @@
|
||||
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
// Инициализируем $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 : '');
|
||||
}
|
||||
}
|
||||
case 'save':
|
||||
// Инициализируем $field_value_new как пустой массив.
|
||||
$field_value_new = [];
|
||||
|
||||
// Гарантируем, что $field_value является массивом перед foreach
|
||||
$field_value = is_array($field_value) ? $field_value : [];
|
||||
|
||||
foreach ($field_value as $k => $v) // Добавлен $k для проверки заглушки
|
||||
{
|
||||
// Игнорируем элемент-заглушку
|
||||
if ($k === '__empty__') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД
|
||||
if (empty($field_value_new))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Если картинки есть, сериализуем массив строк и сохраняем
|
||||
return @serialize($field_value_new);
|
||||
}
|
||||
break;
|
||||
if (! empty($v['url']))
|
||||
{
|
||||
// Убедимся, что данные очищены перед сериализацией
|
||||
$description = $v['descr'] ? stripslashes(htmlspecialchars($v['descr'], ENT_QUOTES)) : '';
|
||||
|
||||
// Собираем элемент в строку: URL|DESCR
|
||||
$field_value_new[] = $v['url'] . ($description ? '|' . $description : '');
|
||||
}
|
||||
}
|
||||
|
||||
// Если массив картинок пуст (все удалено), возвращаем пустую строку для сохранения в БД
|
||||
if (empty($field_value_new))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Если картинки есть, сериализуем массив строк и сохраняем
|
||||
return @serialize($field_value_new);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'api':
|
||||
if (empty($field_value))
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
<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}">
|
||||
<input type="hidden" name="feld[{$field_id}][__empty__]" value="">
|
||||
{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}" />
|
||||
{/if}
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#no_items#}</li>
|
||||
</ul>
|
||||
<input type="hidden" name="feld[{$field_id}]" value="" />
|
||||
{/if}
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
|
||||
$items = array_diff($items, array(''));
|
||||
|
||||
// ✅ ИСПРАВЛЕНИЕ 1: Безопасная десериализация
|
||||
if (!empty($field_value)) {
|
||||
$field_value = @unserialize($field_value);
|
||||
} else {
|
||||
@@ -53,7 +52,7 @@
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
// ✅ ИСПРАВЛЕНИЕ 2: Безопасная десериализация (устранение unserialize error)
|
||||
|
||||
$items = (!empty($field_value))
|
||||
? @unserialize($field_value)
|
||||
: array();
|
||||
@@ -155,13 +154,32 @@
|
||||
break;
|
||||
|
||||
case 'api':
|
||||
// ✅ ИСПРАВЛЕНИЕ 3: Безопасная десериализация
|
||||
|
||||
if (empty($field_value))
|
||||
return $field_value;
|
||||
|
||||
return @unserialize($field_value);
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
// Убираем заглушку, если она присутствует и нет других значений
|
||||
if (isset($field_value) && is_array($field_value))
|
||||
{
|
||||
$field_value = array_diff($field_value, array('__EMPTY__'));
|
||||
}
|
||||
|
||||
if (!empty($field_value) && is_array($field_value))
|
||||
{
|
||||
// Сериализуем выбранные значения
|
||||
return @serialize($field_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Если после удаления заглушки массив пуст, возвращаем пустую строку.
|
||||
return '';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'name':
|
||||
return $AVE_Template->get_config_vars('name');
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{if $items}
|
||||
<input type="hidden" name="feld[{$field_id}][]" value="__EMPTY__" />
|
||||
<select size="5" class="select" style="min-width: 300px; max-width: 600px;" multiple="multiple" name="feld[{$field_id}][]">
|
||||
{foreach from=$items key=key item=item}
|
||||
<option value="{$item|trim|escape}" {if in_array($item|trim|escape, $field_value)} selected="selected"{/if}>{$item}</option>
|
||||
@@ -8,4 +9,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#no_items#}</li>
|
||||
</ul>
|
||||
<input type="hidden" name="feld[{$field_id}][]" value="__EMPTY__" />
|
||||
{/if}
|
||||
@@ -12,5 +12,5 @@
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#error#}</li>
|
||||
</ul>
|
||||
|
||||
<input type="hidden" name="feld[{$field_id}]" value="" />
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user