Fi1osof
С нами с 05 мая 2014; Место в рейтинге пользователей: #1020 минут назад
в phpStorm плагин Codeium для автодополнения, а так в браузере Gemini (https://aistudio.google.com/app/prompts/new_chat) он намного намного лучше chat...
Испытание ИИ Cursor 1
3 часа назад
Ну планируется что расчеты будут делать клиенты на сайте. А чтоб они не могли приписать себе любую цену товара считать цену надо на стороне сервера. Т...
Плюсы и минусы Vue и gtsAPI 20
6 часов назад
Крутые обновления! Просто класс! Спасибо!
Хотел уточнить:
Scheduler… Для MiniShop3, я (что логично) планирую и дальше использовать эту систему, до...
MiniShop3 - чего ждать в Beta версии. 6
7 часов назад
xtype: modx-combo-user
Это xtype (тип поля) самого MODX, выводит всех пользователей modUser
Список всех возможных типов полей
Вывести поле создателя при редактировании ресурса 3
8 часов назад
Пишет не валидный токен «Невалидный токен»
Полностью переустановил modx полностью переустановил sendit
Apache:
2.4.55
Панель управления Beget My...
[SendIt 2.0.0] Пагинация и обновлённая загрузка файлов 23
Вчера в 13:40
Написал вот такой плагин, меня устраивает
<?php
// OnDocFormRender
$modx->controller->addHtml('<script>Ext.onReady(function(){
...
SEOSuite - после установки! 3
Вчера в 09:56
Правильно так:
{('<script type="text/javascript" defer> let my_variable = "' ~ $_modx->resource.MyTv ~ '";</sc...
Как правильно вставить modx переменную в js скрипт на Fenom 1
02 декабря 2024, 10:49
Сегодня вышло обновление от тебя, всё исправлено! Спасибо!
PageBlocks. Удобное управление контентом сайта. 38
02 декабря 2024, 10:07
@Артур Шевченко
Добрый день!
Можете подсказать.
Делаю Регистрацию на сайте, с помощью Sendit.
Согласно документации создал отдельно копию пр...
Как кастомизировать сообщения после Регистрации на сайте? 4
02 декабря 2024, 09:40
Сталкнулся с двумя особенностями…
1) После апдейта с 3.5.2 на 3.6 в табе «Расписание Крон» задания перестали отображаться. Сделал удаление полное ком...
CronTabManager - или как управлять crontab из админки 19
Этот провайдер сейчас из коробки не поддерживается (просто заморожен), но восстановить не долго, доработаем.
Повторюсь, гарантии на доставку смсок по таким каналам нет никакой. Нужны белые каналы.
UPD: Заработала епочта. Вы немного слукавили со стоимостью. Она зависит от суммы пополнения баланса. Вы готовы за раз пополнить на 75 000 рублей, чтобы по 25 копеек смски слать? Не думаю. А на небольших суммах стоимость не сильно отличается.
Размер платежа, руб. Тариф, смс/руб.
от 1 до 999 0,51
от 1 000 0,48
от 2 000 0,43
UPD 2: Vlas, регистрация вчера ради одного коммента. Не рекламы ли ради?
Белые смс-ки на летсадс стоят 1.70. Это средняя по рынку стоимость.
Давай по порядку.
Во-первых, у тебя там всего три строчки на «создание кеша».
То есть простой запрос на УРЛ документа (кстати, об этом еще чуть ниже будет сказано).
У меня же плагин 200+ строк кода. Для того, чтобы сгенерировать кеш документа, я не шлю какие-то GET-запросы на внешние ресурсы, а именно гененерирую кеш на уровне выполнения самого скрипта. И там поверь, очень много тонкостей.
У тебя возникает вопрос нафига вообще так все усложнять? Почему не слать простой запрос? Я отвечу. Во-первых, задача ставилась не только генерировать кеш текущего редактируемого документа, но и кеш остальных документов тоже. Но ты, видимо, этого в статье не увидел, «дежавю» ослепило тебя. Вот смотри, что происходит при сохранении документа после полного сброса кена при включенной настройке генерации кеша всех документов (или настройке регенерации при полном сбросе кеша):
После чего даже все другие документы доступны сразу из кеша:
Ткни пальцем, где твой компонент умеет генерировать кеш остальных документов?
Кстати, тебе на заметку: при вызове обновления документов через процессоры напрямую, твой плагин не генерит кеш документа, потому что ты проверяешь глобальную $_POST['createCache'], а не $resource->get('createCache'). Не знал, что обновляемым объектам все передаваемые в процессор параметры присваиваются? Просто в БД не пишется лишнего.
Во-вторых, слышал про мультидоменность и мультиконтекстность? Давай посмотрим, что происходит при сохранении документов с твоим великим плагином?
Ой, 404-ая. А при заходе на документ по реальной ссылке во фронте, получаем его не из кеша.
А с моим плагином как? А с моим все хорошо. Он корректно определил контекст и сформировал корректный запрос.
Так что конечно можешь продолжать бесплатно свое раздавать. Оно же работает кое-как. Это нормально. А когда сделаешь, чтобы работало как у меня, тогда посмотрим насколько оно у тебя будет бесплатное, и не похожее на то, как у меня сделано.
И еще: если вдруг ты доработаешь свое «творение», и оно будет «генерировать» кеш всех документов, как именно ты это будешь делать? Так же слать GET-запросы? То есть на сайте 100 документов, 10 раз отредактировал страницу, ушло 10 раз по 100 запросов на сайт? Мало того, что это 1000 инициализаций MODX-а, так это еще и 1000 записей сессий в БД. А будет 10 человек работать, по 100 сохранений в день? 10*100*100 = 100 000 записей в БД за день? Ну-ну…
P.S. И не думай, что я «идею» подсмотрел у тебя. Поверь на слово, это не так. Я далеко не все твои топики читаю.
Добавляет новый пункт контекстного меню joxi.ru/Y2LjLVES9wy54r
Минус в том, что срабатывает только когда элементы подгружаются. Если в момент навешивания события элементы уже есть, то они будут без допэлемента. Но если вовремя вклиниться, то ОК будет.
Конечно получать по айдишнику не круто, лучше через менеджер компонентов брать или типа того (есть, к примеру, поиск по типу компонентов). Это так, набросок.
А вообще, еще лучше слать PR, функционал нужный и должен быть в ядре.
Сообщение произвольное, можно даже в кириллице. Но в кириллице одно сообщение — 70 символов, в латинице 140.
Я пользуюсь подобным: modx.pro/help/10524/#comment-71823
И как было заявлено в описании компонента, с нашей стороны помощь в настройке. Так что если не справитесь самостоятельно, поможем.
Если примут, то можно будет не только разрешать авторизацию без пароля (если возвращать true), но и можно будет выбрасывать собственные ошибки. Так будет гораздо гораздее.
Как раз этого и хотел не допустить, и это и решает данный PR. Его неидеальность только в том, что придется в нем в случае чего все равно проверять пароль, если надо проверить пароль (так как сейчас проверка пароля идет уже за пределами вызова этого события), но это не страшно. Теперь, если вы считаете, что все проверки пройдены, но не надо позволить пользователю авторизоваться, можно будет просто вернуть сообщение ошибки (не true и не false).
Хотя конечно, если где-то что подешевле нароется, будет замечательно.
Но плюс к слову, аргументирую.
Вот смотрите, процессор обновления документа расширяет базовый процессор modObjectUpdateProcessor. В этом процессоре есть метод fireBeforeSaveEvent(). Если у текущего процессора есть свойство $this->beforeSaveEvent, то на это событие вызывается плагин. В процессоре обновления документа resource/update это свойство есть, и когда процессор отрабатывается, выполняется и плагин. И в плагине можно вернуть сообщение об ошибке. И на это в базовом процессоре прописан корректный обработчик. Обратите внимание, что в этом обработчике прописано присвоение возвращаемой переменной $preventSave. И внимательно посмотрите на эту конструкцию:
Если $preventSave не пустое, то возвращается ошибка. Вот это правильная работа плагина. Создайте плагин на событие OnBeforeDocFormSave и пропишите $modx->event->_output = «false»; и попробуйте сохранить документ. Что получите? Ошибку.
Вас смущает 'false'? Так вот, это не неверное значение, как вы выразились, а произвольное строчное значение, то есть сообщение. И это сообщение может быть более непрограммиступонятное, и даже можно подсвечивать произвольные поля.
Вот это корректная работа плагина.
А что у нас в security/login прописано? Тупо возврат логического false. Из-за чего корректной обработки не происходит.
Вы просто выполняете дополнительные действия, никак не влияя на ход выполнения процессора. А вы попробуйте в этом своем плагине вернуть ошибку пользователю и прервать его авторизацию.
У нас с вами разные понятия «как надо». Сделаете вы $modx->event->_output = true; или не сделаете ничего, результат не поменяется в принципе. А вы сделайте так, чтобы поменялся.
А вы поищите хорошенько, может что-то подобное найдете.