Ранее я и многие другие разработчики могли загружать файлы в настройках плагинов используя, заложенный в вебасисте инструмент.
$.plugins.options.useIframeTransport = true;
При этой настройке все файлы, загруженные в админке, автоматически попадали в массив $settings в методе saveSettings($settings)
После обновления до седьмой версии шопскрипта файлы прекратили транспортироваться в настройки и все эти плагины сломались. Можете проверить.
Сижу теперь и думаю что делать. Либо ковыряться в движке и искать причину либо подождать и есть надежда, что это баг и его скоро исправят. Не хотелось бы переводить целую кучу плагинов в 7 only. Да и не только я. И как теперь грузить файлы? Через костыль FormData, который не работает в Edge?..
17 комментариев
Проблема с водяным знаком видимо из этой же оперы :)
Как раз в водяном знаке я эту методику загрузки файлов и подсмотрел.
Добавлена строгая проверка на тип элемента настроек и если он отличается от waHtmlControl::FILE, то файлы игнорировались.
Это, собственно, и ломает плагины, где используется собственная реализация настроек без описания их в lib/config/settings.php
Т.е. сейчас обязательно прописывать в lib/config/settings.php или можно подсмотреть как у вас автоматом генерится инпут и сделать четко как у вас? Там же помимо самого файла еще яваскрипт чтобы показать его сразу же после загрузки.
Насколько я помню, проблема с этим контролом была в том, что он не позволяет несколько файлов в массиве передавать.
Сейчас написал в settings.php
Сохранил картинку. В результате нет никакого отклика для юзера что файл загружен.
Если мы в настройках пишемТо после сохранения мы видим тот же текст. А тут как-то глухо. Я понимаю что можно превьюшку под это вывести отдельной настройкой, но получается, что для каждого файла нужно использовать два пункта в меню настроек?
Проверил. Все равно файл в $settings не попадает
Даже если
Тестирую дальше.
В плагине можно получить список загруженных файлов через
В $settings эти файлы больше не попадают. и абсолютно пофиг на строгое соответствие. Любой инпут типа файл видно только через waRequest::file
Во. Придумал. Вы watermark почините пожалуйста, а я там посмотрю как правильно. А вы, пока чинить будете, поймете, что где-то ошибку допустили и пофиксите движок.
Мы с Сергеем Родовниченко локализовали баг.
Смотрим файл waPlugins.actions.php метод saveAction(), видим код
Вся беда в том, что $plugin->getSettings() возвращает только значения. ['control_type'] там по определению быть не может.
Соответственно условие не срабатывает никогда.
А вообще это условие конечно приучает к порядку, но сильно ограничивает функциональность.
Вы не подумали о возможности загружать произвольное количество файлов.
Допустим у меня сейчас в разработке плагин, где пользователь загружает в одной настройке несколько файлов сразу. Заранее не известно сколько. Я ж не буду под каждый файл в settings.php добавлять значения. Придется костылировать, что не есть хорошо.
Так же это ограничивает использование диалогов в настройках плагина. Например юзер хочет что-то добавить, вызывает диалог, который сохраняет свои значения через saveSettings, но не все, а выборочно те значения, которые в самом диалоге. Это необходимо чтобы не вызывать форму внутри формы для диалога. Подобные вещи вы своим условием начисто срезаете.
Мы то все равно найдем пути обхода. Только вот зачем вынуждать нас это делать?..
Всегда есть возможность использовать custom_settings
Вы просто и нам и себе геморрой создали. Нам по переделке кучи плагинов, вам по их проверке.
А еще юзерам страдание и сожаление о том, что поверили вам и обновились до семерки потому, что оперативно все это сделать не получится.
Исправят. Там getSettingsConfig() надо public сделать и его вызывать. Или новый метод, а тоесли кто-то перегружал этот getSettingsConfig(), то проблемы вылезут.
Можно также еще и settings.php напрямую считывать.
И это не Shop-Script. Та же проблема будет и у тех, кто на 6-й версии, но с обновленным фреймворком.
Странно, я твои принтформы, кажется, уже на preview-версии 1.5.7 фреймворка запускал и там загрузка работала. Или я просто не помню уже...
Надеюсь. Пока что даже наличие бага не признали.
прикоооооольно, можно просто сделать Settings.html без указания в plugin.php
*это я плагин watermark посмотрел
Ура, я своего добился! :)
1.5.10.39 Установленная версия: 1.5.9.32
— Исправлена загрузка файлов на страницах настройки плагинов (вызывало проблемы с плагином Водяной Знак).