Foren / National / Russian / Тех. поддержка / Mодуль Files - тестирование

prostogorod
#1 22. Februar 2025, 13:46

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

Баг связан с неработающим предопределением ресурсных строк. В свой ресурсный файл темы вставляю и это не работает:

$R['files_user_avatar'] = '<img src="{$src}" alt="{$alt}" class="card-img-top rounded-circle border-white" />';
$R['files_user_default_avatar'] = '<img src="datas/defaultav/blank.png" alt="{$alt}" class="card-img-top rounded-circle border-white" />';

Загружаю аватар с помощью {USERS_PROFILE_AVATAR} и здесь же на этой странице вывожу с помощью {PHP.usr.id|cot_filesUserAvatar($this)} После первой загрузки все нормально. После второй в {USERS_PROFILE_AVATAR} новая аватарка, а в {PHP.usr.id|cot_filesUserAvatar($this)} предыдущая, то есть не перезаписалась. Чистил кеш, ничего не помогает.

Причем заметил несоответствие пути, первый загруженный аватар на один символ меньше в названии папки, чем другой:
 

/datas/files/_thumbs/1ae09076a5ab89d66ee3c5/file-b7510514500cd1a6e59b-160x160-outbound.jpg?lm=1738946175
/datas/files/_thumbs/29a9fe88049bc570ece17ac/file-6ea5ffa66a5f4c6adad7-160x160-outbound.jpg?lm=1740174635

Возможно то же самое и в формировании url {PHP.usr.id|cot_filesUserAvatarUrl($this)} наверно это взаимосвязано.

Сейчас зашел под другим пользователем, а тут ситуация такая: <img src="{PHP.usr.id|cot_filesUserAvatarUrl($this)}"> - выводит изображение, когда-то загружалось под другим пользователем. А в форме {USERS_PROFILE_AVATAR} - нет загруженного изображения для этого пользователя.

 

И еще, если включена в настройках модуля автоматическая загрузка. В {USERS_PROFILE_AVATAR} при загрузке нового изображения вот такой текст появляется вместо изображения DSC05389.JPGdatas/files/_thumbs/4a25fb03ccc72cfe99d77f/file-2faa9ad2e2ff6d667fa9-160x160-inset.jpg?lm=1740230955. Когда страницу перегрузишь уже будет изображение.


Dieser Beitrag wurde von prostogorod (am 22. Februar 2025, 14:50, vor 2 Monate) bearbeitet
Alex300
#2 22. Februar 2025, 15:08

И еще, если включена в настройках модуля автоматическая загрузка. В {USERS_PROFILE_AVATAR} при загрузке нового изображения вот такой текст появляется вместо изображения DSC05389.JPGdatas/files/_thumbs/4a25fb03ccc72cfe99d77f/file-2faa9ad2e2ff6d667fa9-160x160-inset.jpg?lm=1740230955. Когда страницу перегрузишь уже будет изображение.

Только что проверил на свежей установке - не воспроизводится. Вообще эта настройка не влияет на аватар. Он всегда загружается автоматически. У Вас точно стоит актуальная версия модуля 2.1.0?

 

{PHP.usr.id|cot_filesUserAvatar($this)} - это не правильно. Функция cot_filesUserAvatar() принимает не ID пользователя, а ID файла, которое и является аватаром. См. документацию

Попробуйте

{PHP.usr.profile.user_avatar|cot_filesUserAvatar($this)}

 

Баг связан с неработающим предопределением ресурсных строк. В свой ресурсный файл темы вставляю и это не работает:

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

 

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
prostogorod
#3 22. Februar 2025, 22:40

Спасибо, многое прояснилось. Обновил до последней версии. При редактировании страницы, если выбрать несколько файлов для удаления и нажать на кнопку удалить в верхнем ряду - происходит удаление, но иконка прелоадера дальше отображается.  Даже если заново добавить файл - иконка прелоадера не пропадает.

В шаблоне files.avatarbox.tpl нет кнопки удаления аватара. Возможно добавить?

А возможно выводить загруженные файлы с помощью модуля через визуальный редактор? 

Alex300
#4 23. Februar 2025, 05:53

В шаблоне files.avatarbox.tpl нет кнопки удаления аватара. Возможно добавить?

такой функционал запланирован

 

А возможно выводить загруженные файлы с помощью модуля через визуальный редактор? 

Согласно документации 2 способа:

1) Аналогично стандартному PFS:
Чтобы иметь возможность вставлять файлы в редактор из личного файлового хранилища или файлового хранилища сайта,  на форме редактирования страницы нужно добавить теги {PAGEEDIT_FORM_PFS} {PAGEEDIT_FORM_SFS} - в форму редактирования и {PAGEADD_FORM_PFS} {PAGEADD_FORM_SFS} в форму добавления страницы.

2) BB-коды для вставки в контент

Работают и с HTML (CKEditor)
[files_thumb] - вставляет только миниатюру в тег <img/>.
[files_image] - вставляет a кликабельную миниатюру с ссылкой на большое изображение.
[pfs_gallery] - вставляет галерею, генереруемую из публичной папки файлового хранилища.

Например:

[ files_thumb?id=15]
[ files_image?id=11&width=320&height=240&alt=Picture description&class=foo]
[ pfs_gallery?f=5&tpl=files.bootstrap-carousel_gallery]

 

При редактировании страницы, если выбрать несколько файлов для удаления и нажать на кнопку удалить в верхнем ряду - происходит удаление, но иконка прелоадера дальше отображается.

Поправил. Этот прелоадер предназначается для кнопки "удалить" отдельного файла.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/

Dieser Beitrag wurde von Alex300 (am 23. Februar 2025, 06:46, vor 2 Monate) bearbeitet
prostogorod
#5 23. Februar 2025, 13:16

Путь к изображению. Как определить id изображения? И для чего lm=1740315879?

/datas/files/_thumbs/90a764a3f573b01119cefe4/file-fc878516b4394a1d733c-731x487-outbound.jpg?lm=1740315879

Пробовал вставить id папки, но ничего не выводит, вернее выводит [files_thumb?id=90a764a3f573b01119cefe4]err

[files_thumb?id=90a764a3f573b01119cefe4]

И еще такой вопрос, выводит количество прикрепленных изображений {PAGE_ID|cot_filesCount('page', $this, 'first', 'all')}, допустим их 5, как в шаблоне page.tpl вывести именно 4-е изображение?

И еще заметил, при добавлении новой страницы используем  {PHP|cot_filesFileBox('page', 0, 'first')}  не происходит сохранение изображений. Хотя форма не выдает ошибок, прикрепляются изображения. И еще, если в прикрепленном изображение добавить новое изображение и нажать кнопку ЗАМЕНИТЬ, то происходит удаление изображения.  При редактировании страницы все отлично работает и сохраняет и заменяет прикрепленные изображения.


Dieser Beitrag wurde von prostogorod (am 23. Februar 2025, 21:21, vor 2 Monate) bearbeitet
Sergeich
#6 23. Februar 2025, 13:20

А какой модуль будет в коробке в будущем? Я так понял была идея заменить стандартный ПФС на один из продвинутых, или мне это приснилось? :)

Alex300
#7 24. Februar 2025, 10:42

Как определить id изображения?

Это ID изображения в БД. Например тут https://skr.sh/sULU1C3fHm6 ID 106. Добавил его в интефейс. Теперь можно увидеть в списке загруженных файлов.

И для чего lm=1740315879

Чтобы при выводе замененого изображения браузер не отдавал старое из кеша.

И еще заметил, при добавлении новой страницы используем  {PHP|cot_filesFileBox('page', 0, 'first')}  не происходит сохранение изображений.

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

И еще, если в прикрепленном изображение добавить новое изображение и нажать кнопку ЗАМЕНИТЬ, то происходит удаление изображения.

Да при добавлении страницы замена файла работает не правильно. Да и нет в ней особого смысла. Убрал ее. Оставил только для редактирования страницы.

 

Так много вопросов. Вы в каком то конкретном кейсе планируете его использовать или просто любопыствуете и перебираете весь его функционал?

 

А какой модуль будет в коробке в будущем?

Пока планов по замене PFS в коробке не было.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/

Dieser Beitrag wurde von Alex300 (am 24. Februar 2025, 14:52, vor 2 Monate) bearbeitet
prostogorod
#8 24. Februar 2025, 20:47
#48304 Alex300:

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

Да, так и делаю. В базе все поля записывает, только в базе source_id всегда равно 0 и path соответственно page/0, где искать решение этой проблемы?

 

Так много вопросов. Вы в каком то конкретном кейсе планируете его использовать или просто любопыствуете и перебираете весь его функционал?

Спасибо, разобрался с BB-кодами для вставки в контент. Использую на своем сайте, теперь решил сверстать новый шаблон.


Dieser Beitrag wurde von prostogorod (am 24. Februar 2025, 20:54, vor 2 Monate) bearbeitet
Alex300
#9 7. März 2025, 10:24

Да, так и делаю. В базе все поля записывает, только в базе source_id всегда равно 0 и path соответственно page/0, где искать решение этой проблемы?

Когда файлы загружаются к новой странице, записи страницы в БД еще нет. По этому source_id всегда равно 0. Вся магия происходит при сохранении страницы. А имеено в files.page.add.add.done.php, в котором вызывается \cot\modules\files\services\FileService::linkFiles(), который и "привязывает" файлы к вновь созданной странице. Пеемещает их в нужное место на диске, обновляет записи в БД и т.п.

Искать корень проблемы нужно где то там. Начать можно убедившись что нормально выполняется files.page.add.add.done.php.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
prostogorod
#10 7. März 2025, 19:36

В файле files.page.add.add.done.php  ID страницы новосознанной определяется.  Дальше не знаю, что делать?

В общем сегодня с нуля три сборки тестировал. Котонти брал из релизов. И последня из мастер ветки 0.9.26 beta. Вы говорили, что у вас работает, можно узнать версии плагинов?

cotonti     0.9.24.2
page	    1.0.12
files	    2.0.0
cotontilib	2.2.1

В этой сборке работает.

 

cotonti     0.9.25
page	    1.0.13
files	    2.1.0
cotontilib	2.2.1

В этой сборке не работает. files из мастер ветки. Как поставил files 2.0.0 - заработало.

 

cotonti     0.9.26 beta   
page	    1.0.15
files	    2.1.0
cotontilib	2.2.1

В этой сборке не работает. files из мастер ветки.  Как поставил files 2.0.0 - заработало.

 


Dieser Beitrag wurde von prostogorod (am 7. März 2025, 22:08, vor 1 Monat) bearbeitet
Alex300
#11 8. März 2025, 08:07

У меня 0.9.25 и модуль файлов из мастер ветки.

cotonti     0.9.25
page        1.0.13
files       2.1.0

У меня прекрасно работает.
0.9.26 будем отлаживать уже после релиза.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/

Dieser Beitrag wurde von Alex300 (am 8. März 2025, 13:27, vor 1 Monat) bearbeitet