haron 06 января 2017 6 2
Добрый вечер, граждане. Кто из вас использует в работе unit-тестирование?(phpunit, codeception)? Если используете — есть ли быстрый способ интеграции?
В ядре тестов нет, в github.com/modxcms/xpdo вроде что-то есть, в большинстве модулей их тоже нет.
Причина вопроса — надо набросать простенький справочник по определенной тематике, сложной логики нет, а админку писать лень, потому и ищу что-то на чем по быстрому можно сделать, но чтоб надежно было.
Для вордпресса нашел это — make.wordpress.org/core/handbook/testing/automated-testing/phpunit/
________
Вопрос является копипастой топика modx.pro/help/10813/ т.к. мне там так никто и не ответил
Fi1osof 13 октября 2016 4 5
Бывает, зайдешь на сайт, и видишь там вот такое:
Ладно если это 5-10 документов. А если это 160, как в моем случае? Бывает и больше. Вот опять лень меня победила и я решил написать скрипт, который делает выборку таких конфликтных документов и исправляет им УРЛы автоматом.
Fi1osof 12 сентября 2016 3 4
Материал для тех, что внимательно читал вот эту статью и для тех, кто освоил переопределяющие шаблоны.

В настройках modxSmarty имеется две переменных — modxSmarty.template и modxSmarty.pre_template, что позволяет иметь основной шаблон и переопределяющий его. А что делать, если нужно добавить еще один или более шаблонов? Это может быть, к примеру, персональное оформление для авторизованного пользователя, или мобильная версия сайта, или очередная версия скина (v1, v2, v3..., чтобы в новой версии только измененные файлы дописывать, а не вообще все копировать). Лично у меня здесь задача другая — добавить подключаемый скин элемента в новом компоненте, чтобы сразу шаблоны компонента подключались в систему, но чтобы эти шаблоны можно было переопределять в своем боевом шаблоне сайта.

Вот такой вот плагин у меня получился:

if($modx->context->key == 'mgr'){
    return;
}

switch($modx->event->name){
    
    case "OnHandleRequest":
        
        if(!empty($modx->smarty)){
            $modx->smarty->addTemplateDir(MODX_CORE_PATH . "components/crosslinks/templates/default", "crosslinks");
        }
        
        break;
}
Fi1osof 08 июля 2016 2 12
Перевожу очередной сайт на смарти и меняю соответственно код всех шаблонов. А шаблонов 17 штук (наследство). Процесс был рутинный и что-то я засомневался, а вдруг где какой шаблон не так прописался и что надо бы проверить. А как проверить? Логично — открыть по одному документу каждого шаблона во фронте и посмотреть нет ли ошибок и вообще корректно ли открывается. Но документов много и по каждому идти выискивать документы по каждому шаблону не удобно. Вот написал скрипт, который делает такую выборку и сразу формирует ссылки на эти документы, по одному на каждый шаблон. Остается только кликнуть по разу каждую ссылку и посмотреть как что отображается.
Fi1osof 26 июня 2016 1 0
Не редко клиенты обращаются с просьбой защитить их картинки и тексты от копирования. Болшинство из них видели такую “фишку”, что вообще не получается вызвать контекстное меню на странице сайта (где бы был пункт “Открыть изображение в новой вкладке” или “Копировать”) и не работают сочетания клавишь типа Ctrl+C или Ctrl+insert. И вот эту “фишку” они и просят на сайте им сделать. Так вот, статья не о том, как сделать эту глупость. Ведь такая “защита” мешает только обычным пользователям. Те, кто хочет именно скопировать в корыстных целях, как правило знает как такую “защиту” обходить. Ведь все, что загружается в браузер пользователя, априори уже на стороне его компьютера, а значит доступно для копироваться. А еще, так как большинство таких хаков основывается на работе javascript, то для отключения этой “защиты” просто достаточно отключить в браузере сам javascript. Не работает javascript — не работает и “защита”.
Tramp1357 19 июня 2016 1 0
На сайте, который я сопровождаю, есть страничка с галереями видео, размещенного на youtube.
Изначально я сделал ее с использованием MIGX, но на днях выяснилось, что постоянно добавляются новые видеофайлы.
Вариант с ручным добавлением перестал нравиться.

Галереи организованы на youtube в виде плейлистов, и это позволяет строить их на сайте динамически, сразу из youtube.

Здесь хорошо описано, как получить список видеороликов из плейлиста по его идентификатору.

Теперь на сайте достаточно просто хранить массив идентификаторов списков видео, и при пополнении коллекции на youtube это будет автоматически отражаться на сайте.
Fi1osof 19 июня 2016 3 0
Сразу скажу, что без хака xPDO такого не умеет делать. Дело в том, что при перечислении нескольких таблиц в конструкции DELETE FROM надо явно указывать из каких именно перечисленных таблиц надо выполнить удаление. То есть вот классический запрос удаления записей из одной таблицы:
DELETE FROM table;

Такой запрос средствами xPDO строится запросто.
$q = $modx->newQuery('class_name');
$q->command('DELETE');
$q->prepare()
    ->execute();


А вот при перечислении таблиц SQL-конструкция выглядит так:
DELETE table1, table2 FROM table1, table2, table3

Так вот этого перечисления table1, table2 xPDO не умеет делать. Перечисление выполняется только в случае команд SELECT и UPDATE. А при DELETE ничего не подставляется.
Tramp1357 04 июня 2016 3 1
Давно обещал выложить пример создания вложенных переменных MIGX и использования this.renderChunk, выполняю обещание.
Времени не было делать всё с нуля, поэтому сделал видео с готового проекта. В админке это выглядит так:



Само видео здесь.

Следует обратить внимание, что поле для вывода через this.renderChunk следует создавать только в Columns, и оно обязательно должно отличаться от того, которое мы с его помощью выводим.

Возможно, немного сумбурно, но я старался выдержать последовательность действий.
Fi1osof 30 мая 2016 1 3
Еще один кейс: на сайте куча пользователей без какой-либо группы. Надо их всех закинуть в определенную группу.

К слову, это еще один логический минус системы политик безопасности MODX, так как уровни доступов пользователей настраиваются только на основании групп пользователей, а тут получается, что пользователь и не аноним (неавторизованные пользователи в группе анонимов находятся, которой можно задавать права доступов), и ни в какой другой группе. Без группы им вообще нельзя права задать, и получается, что часто такие пользователи вообще прав меньше имеют, чем анонимы даже.
Fi1osof 30 мая 2016 2 0
Возникла на сайте задача создать кучу пользователей и разослать им уведомления (с кастомным сообщением). Как обычно, решил выполнить это с помощью родного MODX-процессора. Как оказалось, здесь не мало подводных камней имеется…

Сразу опубликую итоговый код, а детали далее разберем.