Новые отзывы о товарах - неправильная отработка проверки на запрет загрузки больших изображений

День добрый!
Я пока только до 4.14.3 обновился, процесс идет.
Скажите, эту странную фичу пофиксили в новых версиях, или багом не посчитали?
файл

/responsive/templates/addons/product_reviews/views/product_reviews/components/new_product_review_fileuploader.tpl

{$post_max_size = $server_env->getIniVar("post_max_size")}
{$upload_max_filesize = $server_env->getIniVar("upload_max_filesize")}

мне на сервер надо периодически что-то грузить, да БД в том же phpmyadmin - поэтому серверные константы имеют приличное значение. А разрешать покупателю грузить 256 мегабайт…
Вобщем, вопрос - поправили это, или просто ручками в этом файле 2 МВ прописать и не париться?

  1. еще там увидел в шаблоне $config.twiks. … .max_files_upload - которому если значение не задано - присваивается значение 10. Но откуда ноги растут у этого твика - так и не смог - заблудился )
2 лайка

Поправили вроде. Там до 50 мб скидывать можно для пользовталей.

1 лайк

Я бы хотел вообще для товаров такое сделать, грузят продавцы фото по 10-12мб. Хочу поставить ограничение максимум 1мб.

Посмотрел в 4.16.2 - первый пункт остался, второго нет

1 лайк

Второй, это как я понимаю, ограничение на количество одновременно загружаемых файлов.
А с первым значит придётся ручками. Хотя в чем проблема - ещё одну настройку в рокет поставить, а потом уже просто сравнивать с серверными настройками, и если серверная меньше, то уменьшить значение до меньшего.

2 лайка

А если просто найти эту настройку как в config.php и поставить меньшее значение для main image? Так же легче выйдет. Или такого нет?

Нет, это прямо в сборе переменной шаблона присваивается значение переменных серверного окружения. Так что либо ради покупателей ограничивать серверного администратора и прочих подобных, либо ручками в этом файле прописать ограничение.

1 лайк

Понял

Вобщем, проверил,
замена на

{$post_max_size = "2M"}
{$upload_max_filesize = "2M"}

дает требуемый результат

2 лайка

КХМ… Кхе…
А что, и даже не мультизагрузка??? По одному файлу??? Серьезно???

Вобщем-то, вот еще косяк/не косяк, но покупатель волен делать всё что хочет, а разработчик обязан ставить защиту “от дурака”

2 лайка

Как выяснилось - результат не дает. То есть сообщения о превышении размера выводятся, но файл все равно остается в форме. То есть если у меня на сервере выставлено 64 МВ - покупатель так и может загрузить один файл на 64 или 10 файлов общим весом 64МВ. То, что выставляется в шаблоне - все же передается в скрипт js/tygh/fileuploader_scripts.js (ведь это именно в нем формируется нотификация о превышении размеров (строки 70-91) но в случае превышения размеров this.clean_form($suffix) почему-то не отрабатывает. Видимо в этой функции либо не находит элемент $suffix, либо не отрабатывает trigger(‘click’)

<div class="ty-nowrap" id="file_uploader_">
    <div class="ty-fileuploader__file-section" id="message_" title="">
        <p class="cm-fu-file hidden" style="display: block;">
            <span class="ty-icon ty-icon-cancel-circle ty-fileuploader__icon" id="clean_selection_" title="Удалить эту запись" onclick="Tygh.fileuploader.clean_selection(this.id);  Tygh.fileuploader.check_required_field('', '');"></span>
            <span class="ty-fileuploader__filename ty-filename-link upload-filename" title="20230122_170314.jpg">20230122_170314.jpg</span>
                    </p>
    </div>

    <div class="ty-fileuploader__file-link " id="link_container_" style="display: none;"><input type="hidden" name="file_product_review_data[0]" value="C:\fakepath\20230122_170314.jpg" id="file_" class="cm-fileuploader-field"><input type="hidden" name="type_product_review_data[0]" value="local" id="type_" class="cm-fileuploader-field"><div class="ty-fileuploader__file-local upload-file-local ty-fileuploader__drop-zone ty-fileuploader__drop-zone--visible" data-ca-product-review="fileuploaderDropZone"><div class="ty-fileuploader__drop-zone-description"><span class="ty-icon ty-icon-image"></span><div class="ty-fileuploader__drop-zone-text">Перетащите изображения сюда<br>или</div></div><input type="file" class="ty-fileuploader__file-input active" name="file_product_review_data[0]" id="local_" onchange="Tygh.fileuploader.show_loader(this.id); Tygh.fileuploader.check_image(this.id); Tygh.fileuploader.check_required_field('', '');" onclick="Tygh.$(this).removeAttr('data-ca-empty-file');"><div class="ty-fileuploader__drop-zone-buttons ty-fileuploader__drop-zone-buttons--visible" data-ca-product-review="fileuploaderDropZoneButtons"><a data-ca-multi="Y" class="ty-fileuploader__a-another hidden">Загрузить еще файл</a><a data-ca-target-id="local_" data-ca-multi="N" class="ty-fileuploader__a">Загрузить файл</a></div><div class="ty-fileuploader__drop-zone-description">Допустимый размер изображения: до 2M</div></div></div>
</div>

во первых видно что {$id_var_name} в шаблон не подтянулось
в шаблоне первые две строчки из HTML выше выглядят так:

<div class="ty-nowrap" id="file_uploader_{$id_var_name}">
    <div class="ty-fileuploader__file-section" id="message_{$id_var_name}" title="">

а во вторых, клик для удаления файла из списка при превышении размера -

    clean_form: function clean_form(suffix) {
      suffix = suffix ? suffix : '';
      var $fileuploaderElement = $("#file_uploader_".concat(suffix));
      $fileuploaderElement.find('.cm-fu-file .cs-icon').trigger('click');
    },

в HTML страницы я не вижу после элемента с классом .cm-fu-file - элемента с классом .cs-icon, поэтому trigger(‘click’) и негде срабатывать.
Да, сейчас версия 4.14.3 SP

Но все повторяется на demo (на котором тоже выставлено ограничение в 2МВ!!!)

Я пишу отзыв как ни в чем ни бывало, отправляю его… И мне выдает:
image

Ну и естественно весь мой набранный текст - теряется и уходит в небытие.
Второй раз покупатель ничего писать уже не будет.

@Asya @avoronin @cs-cart_team обратите пожалуйста внимание!

3 лайка

Перенес в баг-трекер, обратите внимание

3 лайка

@Asya @avoronin @cs-cart_team обратите пожалуйста внимание!
Несколько раз проверил - тема должна быть вам видна ))

1 лайк

Я об этом писал еще в том году в тикете, пришел обратный звонок, еле страницу открыл ))

1 лайк

Добавил в своем модуле класс

/* Перенос длинного слова */
.wordwrap { 
   white-space: pre-wrap;      /* CSS3 */   
   white-space: -moz-pre-wrap; /* Firefox */    
   white-space: -pre-wrap;     /* Opera <7 */   
   white-space: -o-pre-wrap;   /* Opera 7 */    
   word-wrap: break-word;      /* IE */
   word-break: break-all;
}

и этот класс добавляю в блоки, где возможен ввод длинного текста (например очень длинный путь к файлу, или фраза без пробелов)
Работает

3 лайка

Добавляю к отзывам еще вот эти регвесты:

3 лайка

Поддерживаю :clap: