Александр Туниеков
С нами с 19 декабря 2015; Место в рейтинге пользователей: #11Сегодня в 02:46
А сколько таких багов еще осталось по всяким разным компонентам??! Хорошо что добрые люди сообщили :-) А обычно компоненты проверять некому
[SendIt] Обнаружена критическая уязвимость обновитесь до версии 2.1.6 1
17 января 2025, 21:18
Формула берет просто текущий год и год перед ним. Только числа года.
Еще один эксперимент с рейтингом modx.pro 6
17 января 2025, 20:01
Как здорово! А с Ютубом такая штука сработает?
Вставка видео с Rutube с управлением на сайте 5
17 января 2025, 11:28
удалось найти причину? я так понял, плагин работает с minishop2 до версии 2.8.3-pl
[mscDistance] - доставка по городу/району 35
17 января 2025, 08:28
Я использую серверную, мне так просто удобней. Подключение к MODX API в скрипте, надеюсь вы используете)
Как перенести копию сайта с субдомена в контекст основного домена? 6
16 января 2025, 20:13
Да. Хороший вопрос.
Подумаю над этим, напишу
Стоимость доставки minishop2 из двух условий 2
15 января 2025, 21:00
ну в чанке да. Я то php написал для кастома
[utmMark] - сохранения UTM меток для форм 16
14 января 2025, 12:10
Для того, чтобы понимать изменились ли параметры фильтрации или нет должны соблюдаться следующие условия
1. Нужно указать ключи всех изменяемых парам...
Sendit и Pagination 9
[[!pdoSurname?
&parents=`65,20`
&tpl=`myTpl`
]]
myTpl
Код не проверял. Возможно мелкие ошибки. И strcasecmp не знаю понимает ли юникод…
Трудности есть везде. Например в Nuxt модуль Auth еще на стадии бета. А с авторизацией не хочется возится. Вроде и базовая вещь, но правильно спрограмировать сложно. Авторизация, группы MODX вполне устраивают.
1) Сильно много инструментов. Чтобы освоить более менее сложный инструмент, написать пару приложений, набить шишки, нужно от месяца до года. Я вообще не горю желанием пробовать все подряд и долго думаю перед тем как что-то начать использовать. И инструментов так много, что может нужный и есть но об нем я даже и не слышал.
2) В 2023 году, когда решал перейти на vue, о htmx я не слышал. Сейчас когда потратил год, более мение освоил vue, написал АПИ появляется htmx и получается мое gtsAPI уже как бы легаси :-). Не успеешь написать приложение, а оно уже устарело :-).
gtsAPI и PVTables заняло год и то все что хочелось не реализованно. Подозреваю, что написание какого-либо modHTMX займет не меньше времени. На ларе уже реализованно и логичнее писать уже на ларавел просто. Но опять же легаси тянет к модекс. Переписывать на лару тоже год. Директор меня убъет, если я еще год буду все переписывать :-). gtsAPI уже реализованно и в течении года точно его буду использовать вместе с Vue. В сторону htmx, думаю, буду смотреть присматриваться. Если трудозатраты по предварительной оценке могут окупиться, то может сделаю modHTMX, но пока сомнительно. Это должно быть легко сделать чтобы за это браться.
Vue то работает быстро, но пока не грузишь его тысячами элементов. Подгрузи 10 000 элементов и повиснет и Vue и браузер и API и чистый js(Если на нем писать). Я имею ввиду, что с большим числом элементов надо быть осторожнее.
Тут кстати есть вопрос. А зачем вообще разбивают на чанки? В SPA все равно же все грузиться сразу или я что-то еще не разобрался…
Хотел еще зацепить проблему модульности приложения, но пропустил. Vue собирается в один или несколько чанков, но это в принципе один модуль который требуется для любой части приложения. Как быть если на 1 странице требуется один скрипт, а на другой другой? И хочется не грузить в продакшен монолит, а обновить модуль приложения? В чистом php все просто. 1 php файл 1 страница и для обновления страницы нужно заменить нужный файл. В MODX пишешь компонент и обновляешь в продакшен только его. А как в Vue делать?
Это насмешка, а не АПИ. Все равно на каждый чих писать свои классы расширяя rest api modx. В mmxDatabase, хотя бы, Василий говорил, что для основных таблиц MODX написал классы.
В него не вникал. Так то меня феном устраивает, и еще шаблонизатор мне не нужен. Ачто там есть АПИ в первый раз слышу.
Вроде такой запрос должен работать. «count(*) > 3» не уверен, что правильно составил.
«loadModels»
Да правильно.
Хм. взял пример из Создание CRUD интерфейса вне админки. Не знаю зачем там случайный пароль ставили. Просто повторил на gtsAPI. Можно добавить поле password в таблицу и можно будет ставить пароль. Но прочитать его нельзя. MODX кеш пароля выдаст.
У нас пароли юзеров храняться в текстовом файле у меня. Так нам удобнее и я думал сделать интерфейс отделу кадров, чтоб они могли поставить и прочитать пароль. То есть сохранить его плагином в extended (Лучше редактировать extended, а password менять плагином). Но пока не до этого и директору может не понравиться.
Кстати extended, то есть JSON поле gtsAPI уже может редактировать.
Но типа поля password еще нет. Он мне еще не нужен был.
Как использовать плагины, наверно, не очень понятно. Надо описать триггеры. Думал попозже сделать.
HTMX встречал упоминания и читал их, но вникать и пробовать использовать еще не думал. UI-фреймворков для него вроде еще нет и пока для меня бесполезно.
Описал в ответе Артуру :-)
Временами подмывает переписать :-). Но в админке используются формы, попапы, таблицы, дерево и файл-менеджер. Дерево и файл-менеджер мне в работе (в нашей ERP) нужны, но их делать месяц два на каждый и пока все время откладывается.
Использую из PrimeVue DataTable, поля форм, Dialog, Tabs, Toast, Popover
И Drawer
Будет еще форма прикрепления документов (Отчет, Счет и т.д.) к расчету.
На ноде при запуске сервера можно большую часть проинициализировать. Например, прогрузить настройки, чанки и сниппеты в память и не лазить за ними в базу или диск при каждом запросе. Это я пробовал на ноде like MODX сделать, но потом понял, что чанков нет и архитектура js другая и забросил.
Основное — это быстро сделать табличный CRUD, а остальное уже подтягивается. CRUD есть и более сложные задачи уже проще используя уже сделанное АПИ делать.
А HTML код… В modx_site_content: content и в modx_site_htmlsnippets: snippet тоже MEDIUMTEXT…
Вы, наверно, знаете astro.build лучше меня и сами можете определить подойдет ли он.
Например
Чтение таблицы
GET /api/tSkladNaryadSmena
или
POST /api/tSkladNaryadSmena?api_action=read
доп параметры:
filters, limit, offset, setTotal, sortField, multiSortMeta
Ответ
Более подробно описание api API gtsAPI
Более четкая документация еще только в планах. Сейчас в первую очередь описание PVTables на основе primevue.
Надеюсь понятно и исчерпывающе ответил? :-)
Только что попробовал авторизоваться и у меня работает. Может скриншоты ошибок скинете?
На странице на которую ограничен доступ пишем сниппет:
Пишем плагин на событие getTablesAfterUpdateCreate. Для работы плагина в сниппете должно быть указано 'event'=>1, как выше.
И все работает :-).
Так же можно это же сделать с PVTables, но этот компонент я еще не добрался опубликовать :-(. И писать в 2 таблицы сразу там не сделанно. И события не все прописал :-(.
Безопасность обеспечивается хеш-кодом. Страница на которой опубликован сниппет должна быть доступна только нужным пользователям. Использовать getTables, для подобных задач, думаю, проше и быстрее чем писать контроллеры для sendIt.
И MySQL 8 возвращает ошибку. В коде от Ильи двойная сортировка используется и нужна. Когда с этой ошибкой столкнулся не было времени ее решать, но на всякий случай сейчас MySQL 8 не ставлю.
Безопасность может быть реализованна таким образом. Сниппет, типа AjaxForm, при обработки страницы, записывает в сессию хеш-код. js в браузере отправляет с формой этот хеш-код. Обработчик ajax запросов на сервере смотрит есть ли в сесии этот хеш-код и если его нет, то возращяет ошибку.
Таким образом, если сниппет не был вызван при обработке страницы, то все ajax запросы завершаться ошибкой. Будут приняты только те запросы с правильным хеш-кодом.
А на ресурс MODX можно поставить ограничения и показывать его только разрешенным пользователям. Соответственно на странице на запрещенном ресурсе сниппет не отработал, хеш-код в сессию не записался и ajax запросы не срабатывают.
В общем не знаю, как безопасность реализованна в SendIt, но наверно что-то подобное. Надеюсь @Артур Шевченко просветит нас :-)