Не работает draggable на телефоне, возможная уязвимость при загрузке картинок, проблема с "управлением сроком публикации" и так далее

InstantCMS 2.X

Список проблем

#1 24 ноября 2023 в 10:32

Я уже поднимал тему того что не работают перемещение строк на телефоне instantcms.ru/forum/na-telefone-nelzja-sortirovat-polja-v-spiskah-v-adminke.html#post-357908 

Проблема в том что событие draggable не принимает значение «true» при клике или удержании на телефоне, только при удержании на ПК. Проблема появилась в 2.16, до этого работало.

Как повторить: Открыть демо сайт и попробовать в мобильной версии изменить порядок полей.

Как решить: Добавить обработку тач-нажатий developer.mozilla.org/ru/docs/Web/API/Touch_events , да возможно это убрали из-за случайного перемещения полей на телефоне, у меня так было пару раз, но можно добавить включение перемещения при двойном тапе на иконку Изображение 

Изображение

Возможная уязвимость (забитие папки upload). При загрузке картинки и последующем закрытии вкладки, картинка не удаляется с сайта, а остается там висеть навсегда, тем самым в теории можно назагружать и забить полностью место на диске, тем более что нет возможности удалить неиспользуемые файлы пробежавшись по папке upload. Проблема есть как в загрузке через поле «Изображение» demo.instantcms.ru/upload/000/u2/7/9/d9102b0b.webp, так и через загрузку через редактор demo.instantcms.ru/upload/000/u2/6/d/bb03025c.jpg .  Поле «Список изображений не проверял», но думаю там тоже самое.

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

Как решить: Повесить обработку на закрытие вкладки, если изображение было загружено, но кнопка «Сохранить» не нажата, то при закрытии вкладки удаляем изображение, можно отслеживать например так stackoverflow.com/questions/3888902/detect-browser-or-tab-closing 

Тем более что в коробке есть обработка закрытия вкладки, почему она не обрабатывает поле «Изображение» и изменения в поле «HTML» очень интересно

Изображение

Некорректно работает функция «Управление сроком публикации»  и вообще «Публикация».

Если мы выбираем в «Публиковать» — «Нет», то при сохранении записи, запись станет «Неопубликованной», но при выполнении задачи «Публикация контента по расписанию», она снова будет активна, как и обратном порядке, если мы выбираем  в «Публиковать» — «Да», но у нас стоит «Дата окончания публикации», то при выполнении задачи запись снова станет неактивна. 

Изображение

Из-за подобной проблемы управление публикацией из списка ТК в админке смысла 0, так как после выполнения задачи все снова станет как было

Изображение

Как повторить: Перейти на демо сайт  выбрать «Публиковать» — «Нет», потом перейти в планировщик и дернуть задачу крон «Публикация контента по расписанию» и запись снова станет опубликована.

Как решить: При изменении «Публиковать „Да“ или „Нет“, очищать или заполнять „Дату окончания публикации“. 

Так же не плохо добавить кнопку „Очистить“ в поле „Дата“, так как удаление не совсем удобное.

Так же есть проблема, может уже решили она давняя, просто у себя отключил этот функционал так как он меня „задолбал“. 

Это при включении „Уведомление пользователь при окончании публикации“, и при выполнении задачи „Рассылает уведомления об окончании публикации“ будет слать уведомления бесконечно при каждом выполнении задачи. К примеру если осталось 3 дня до окончания публикации, и поставить выполнение задачи каждые 3 часа,  то каждые 3 часа будет пользователю слаться уведомление. Как повторить на демо не знаю, может там не настроен почтовый ящик. Но если не решили, то нужно запоминать слали мы за сутки уведомление, если да то не трогаем больше этого пользователя. А то у меня в свое время людям сотни уведомлений прилетело по их записям.

Изображение

#2 24 ноября 2023 в 10:53

Если мы выбираем в «Публиковать» — «Нет», то при сохранении записи, запись станет «Неопубликованной», но при выполнении задачи «Публикация контента по расписанию», она снова будет активна, как и обратном порядке, если мы выбираем  в «Публиковать» — «Да», но у нас стоит «Дата окончания публикации», то при выполнении задачи запись снова станет неактивна. 

CEH9I

Подтверждаю, есть такой глюк.

#3 24 ноября 2023 в 11:41

Как оказалось проблема с картинками уже актуальна больше 6 лет(почти 7 будет). Зашел гит почекать может тема поднималась github.com/instantsoft/icms2/issues/417 а тут год(почти 2) github.com/instantsoft/icms2/issues/1398 причем даже решение предложили, а проблема не решена.

#4 27 декабря 2023 в 22:50

Если мы выбираем в «Публиковать» — «Нет», то при сохранении записи, запись станет «Неопубликованной», но при выполнении задачи «Публикация контента по расписанию», она снова будет активна

CEH9I

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

Также в настройки публикации записи добавлена опция «Нет, скрыть», если она выбрана, запись не будет опубликована даже по наступлению даты публикации.

как и обратном порядке, если мы выбираем  в «Публиковать» — «Да», но у нас стоит «Дата окончания публикации», то при выполнении задачи запись снова станет неактивна. 

CEH9I

А вот тут логика нарушается. В чём смысл то тогда, если стоит дата окончания публикации? Уберите дату окончания и всё. Можно конечно и принудительное «Да, всегда публиковать», но это потянет за собой кучу всего. Вы скажете, мол можно если из админки кликнул админ показывать, то обнулять дату окончания, но это имхо как-то не правильно.

Проблема в том что событие draggable не принимает значение «true» при клике или удержании на телефоне, только при удержании на ПК. Проблема появилась в 2.16, до этого работало.

CEH9I

До этого был другой механизм гридов. Они переделаны на vuejs, поэтому просто не успел сделать, отложил на потом.

Возможная уязвимость (забитие папки upload).

CEH9I

Это не уязвимость, но проблема есть, да.

Короче, я всё поправил. В ночной сборке можно проверить. Там, кстати, управление типографом уже есть.

#5 28 декабря 2023 в 15:14

А вот тут логика нарушается. В чём смысл то тогда, если стоит дата окончания публикации? Уберите дату окончания и всё. Можно конечно и принудительное «Да, всегда публиковать», но это потянет за собой кучу всего. Вы скажете, мол можно если из админки кликнул админ показывать, то обнулять дату окончания, но это имхо как-то не правильно.

Fuze

Я имел ввиду если выбираем «Публиковать» — «Да» то «Дата окончания публикации» должна автоматически очищаться, сейчас это нужно делать вручную что не очень удобно. Я же приводил пример, если мы ранее выбирали «Публиковать» — «Нет», то так же «Дата окончания публикации не проставлялась», окей проставили вручную благо там одна кнопка если нужно сейчас скрыть «Установить текущую дату». Но если мы потом решим её снова сделать опубликованной, то при выборе «Публиковать» — «Да», «Дата окончания публикации» остается, после сохранения записи она снова улетит в неопубликованные. 

До этого был другой механизм гридов. Они переделаны на vuejs, поэтому просто не успел сделать, отложил на потом.

Fuze

Сейчас пока не стоит ждать решение?

Это не уязвимость, но проблема есть, да.

Fuze

Ну я бы не сказал что это не уязвимость, разве сложно создать скрипт который будет загружать и закрывать страницу до того момента пока не забьется папка Upload, а вычистить её будет невозможно. Но если вы исправили это, то тогда все отлично)

#6 28 декабря 2023 в 16:46

Я имел ввиду если выбираем «Публиковать» — «Да» то «Дата окончания публикации» должна автоматически очищаться, сейчас это нужно делать вручную что не очень удобно.

CEH9I

Почему? Если я хочу публиковать и указать дату окончания публикации, что делать?

Сейчас пока не стоит ждать решение?

CEH9I

Я же написал, на версии с гита я уже всё решил, можете проверить на телефоне.

разве сложно создать скрипт который будет загружать и закрывать страницу до того момента пока не забьется папка Upload

CEH9I

Для этого не надо открывать страницу, а делать просто http запросами.

#7 28 декабря 2023 в 18:12

Почему? Если я хочу публиковать и указать дату окончания публикации, что делать?

Fuze

Дак никто и не запрещает это, просто чуть изменить поведение при выборе «Да», очищаем «Дату окончания публикации», а уже после делаем что хотим, устанавливаем снова нужную.

Я же написал, на версии с гита я уже всё решил, можете проверить на телефоне.

Fuze


Вы просто писали «Они переделаны на vuejs, поэтому просто не успел сделать, отложил на потом.» я и подумал что вы сейчас имеете ввиду «Потом».

Для этого не надо открывать страницу, а делать просто http запросами.

Fuze

Вопрос снят.

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