Небольшой баг в загрузке изображений в типе поля Текст html

+14
464

В процессе разработки одного дополнения обнаружил, что загруженные в процессе создания записи картинки не удаляются. Если вы загружаете картинки в поле в процессе редактирования, то с ними все в порядке.

Речь идет о загрузке через эту кнопку и любую подобную в других редакторах.

Изображение

Немного подробностей

При загрузке картинки в процессе добавления новости загрузчик не знает, к какой новости ее привязать. Этой привязкой занимается уже само поле. Вот тут github.com/instantsoft/icms2/blob/0a0dbd62e7dc882925e525a3d75d2a87de287ae5/system/fields/html.php#L256

Но в процессе загрузки, если target_id не известен (а он не известен в момент создания новой записи), движок ставит вместо него 0. Вот тут github.com/instantsoft/icms2/blob/0a0dbd62e7dc882925e525a3d75d2a87de287ae5/system/controllers/images/frontend.php#L169

Решение

Решений я вижу два. А какое пойдет в движок, узнаем позже в коммитах. Выбирайте на вкус. 

Самое короткое, это поправить загрузчик.

Изображение

В файле system\controllers\images\frontend.php заменить

  1. 'target_id' => $this->request->get('target_id', 0)

на

  1. 'target_id' => $this->request->get('target_id', 0) ?: null

Или длиннее, поправить обновление target_id в поле.

Изображение

Для этого в файле system\fields\html.php замените

  1. $model->filterEqual('path', $path)->filterIsNull('target_id');

на

  1. $model->filterEqual('path', $path)
  2. ->filterStart()
  3. ->filterIsNull('target_id')
  4. ->filterOr()
  5. ->filterEqual('target_id',0)
  6. ->filterEnd();

В 2.18.2 исправлено github.com/instantsoft/icms2/blob/dc8e5319239785cd6c2ccbbab9a1ae32427d7de0/system/controllers/images/frontend.php#L169

Нет комментариев. Ваш будет первым!

Еще от автора

Вышло обновление афиши 1.2.2
В обновлении новый современный дизайн всех страниц афиши, новый блок места проведения в афише, возможность указать несколько изображений, поддержка ко
Управление персональным меню v.1.0.2
Небольшое обновление компонента, в котором стало удобнее выбирать иконку пункта меню, а также добавлена опция, разрешающая пользователю добавление ссы
Поле Иконка
Небольшое поле, предназначенное для удобного выбора иконки из списка.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.