Николай Савин

Николай Савин

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
08 апреля 2020, 07:58
0
Читаем документацию. ChangePassword имеет параметр postHooks — где можно перечислить скрипты, выполняемые после завершения основных действий. Под хуками-скриптами понимаются сниппеты. Пишите сниппет с нужным вам кодом, и указываете его в параметре postHooks
Как сделать редирект встроенными возможностями MODX вы понимаете? Какой код сниппета писать понимаете?
Николай Савин
25 марта 2020, 14:31
0
Да и не нужно кому то предоставлять доступ к своей машине. Сделал изменения — отправил ветку руководителю проекта. Он уже у себя ее протестирует.
Я обычно больше переживаю за синхронизацию баз данных, системных настроек, лексиконов и всего того что вынужденно находится в базе.
Николай Савин
25 марта 2020, 14:22
+1
Можно потренироваться делать пулл-реквесты на docs.modx.pro.
Вчера буквально видел в документации office битые ссылки. Нужно их заменить на рабочие и сделать PR.
Николай Савин
25 марта 2020, 14:18
+1
Схема ровно та же, что описана ниже. Я у себя локально на машине запускаю dev-сервер где веду разработку. Все что нужно тестирую — делаю коммит в отдельную ветку гита. Далее делаю PR руководителю проекта, который сливает изменения к себе, проверяет работу и если его все устраивает сливает все с мастером.
Все приведенные выше «Проблемы» — надуманы.
Маленький накопитель? Ну поставь побольше, какие проблемы то. Подключи внешний накопитель, Заведи себе отдельный компьютер в конце концов.
Нанимаемых разработчиков уговаривать не нужно. Нужно предоставлять рабочие машины. Это факт. Либо ставить перед фактом.
Вывести проект на локальной машине в сеть не так то просто? Серьезно? Это решается одной записью в hosts. Даже если я упрощаю то все сводится к готовым описанным в документации решениям.
Николай Савин
25 марта 2020, 13:55
+1
А что мешает разработчику запустить dev-сервер у себя на локальной машине?
Николай Савин
23 марта 2020, 22:14
0
Еще не довольные. Все примеры вызовов через jQuery написаны.
Николай Савин
21 марта 2020, 21:04
0
как оказалось в pdoMenu команда &checkPermissions=`list` выполняет нужные функции:
Не в pdoMenu. Ты немного в заблуждение вводишь, или сам не разобрался еще. Это единый общий параметр всего семейства pdoTools. Работает во всех сниппетах и, по идее, должен работать во всех компонентах, которые используют в своем ядре класс pdoTools
Николай Савин
12 марта 2020, 11:56
0
Интересный плагин, первый раз вижу. Спасибо за наводку.
А он только готовый массив данных преобразует, или как нормальная пагинация может сходить на сервер за новой порцией данных?
Николай Савин
11 марта 2020, 11:18
0
Все 100 методов, количеством которых вы не довольны, находятся НЕ непосредственно в JQuery объекте, который вы получили в результате выборки, а в его прототипе. А это означает, что если вы создадите 100 таких объектов, они все будут ссылаться на один прототип.
Почему тогда. если распечатать объект в консоли, он распечатается как объект с Персональными свойствами. Прототип у него обычный — object.
Как по мне — я вижу на экране не наследование, а большой объект с копией всех свойств.

Я кстати и не спорю — а скорее сам разобраться пытаюсь.
Николай Савин
11 марта 2020, 06:39
0
Да легко. Распечатай в консоли и сравни два вызова одного и того же DOM-элемента. Посмотришь насколько более загруженный стал элемент если его создали через jQuery вызов.

let $element = document.querySelector('.class_element');
let $element = $('.class_element');
К примеру в свойства узла добавлены всяческие onclick, onmouseover и десятки других возможных событий. И не важно используешь ты их или нет.
Распечатать обычный JS узел кстати не удастся, потому что отдельный его экземпляр не создается в принципе. Тебе будет выдана ссылка на DOM-element, без хранения его в памяти.
А чтобы добавить событие в JS узел — нужно писать addEventListener.
Николай Савин
10 марта 2020, 22:22
+1
Вот не поверишь — встречаются индивиды.
Буквально на днях установил человеку скрипт на чистом JS. А он мне жалуется что не работает.
Я ему говорю может кэш браузера, попробуй другой, попробуй почисти, а он мне начинает рассказывать что на трех компьютерах попробовал и везде не работает. И через час мы все таки выяснили, что у него на всех трех компах XP стоит, на который даже хром давно не обновляется. Ну и классика жанра — IE.
Николай Савин
10 марта 2020, 13:17
+4
А может активно живет и свой хлеб отрабатывает. Больно хвалит Лекторию именно в момент запуска
Николай Савин
10 марта 2020, 12:57
+10
Раз уж зашел холивар про jQuery позволю и я себе вставить свои пять копееек.
Давайте немного структурируем информацию и разберемся, почему и зачем сейчас все отказывются от jQuery.
Что это? Дань моде? Да здравствует Ванильный JS?
Да вот нет. Причин на самом деле две. Одну из них выше упомянули. Использование в компоненте jQuery — это лишняя зависимость для проекта в целом.. Да скорее всего он и так подключен. Тот же miniShop2 до сих пор требует jQuery. Кстати совсем немного. Скрипты минишопа написаны на чистом стареньком JS пятой версии. Но в нескольких местах пока еще используется jQuery. При желании можно переписать и отказаться от зависимости.

Вторая причина, которой я здесь в обсуждении не увидел это дополнительная нагрузка на память. Дело в том, что jQuery сильно нагружает используемые DOM-элементы собственными свойствами и методами. Грубо говоря, добавляя под сотню (не считал) свойств в каждый используемый элемент. И это все висит в памяти, чтобы браузер в любой момент мог использовать все дополнительные методы каждого элемента.

Современный веб — он же про оптимизацию и быстродействие верно? Так что приходится избавляться.

Давайте также до кучи разберем почему вообще jQuery получил такую популярность исторически.
Причин собственно так же две. Начну с конца.
Во-первых, jQuery дал возможность использовать короткие вызовы для различных популярных действий. И это частично по прежнему актуально. Те же методы show(), hide(), classToggle() и тому подобное все еще короче, чем то же самое на чистом JS. Но напоминаю эти методы и еще куча других нагружают узлы DOM дерева, независимо от того пользуетесь ли вы ими.

Во-вторых кроссбраузерность. Раньше у каждого браузера были свои собственные движки JS, которые по разному реализовали те или иные возможности. Либо вообще не реализовали. Jquery давал возможность не задумываться для какого из браузеров пишется код. Магия внутри преобразовывала все как надо. все изменилось с приходом на рынок Chrome и его движка для рендера JS V8. Он получился насколько качественным, что его стали использовать и другие браузеры, и даже портировали в NODE JS. и даже те браузеры которые не стали его использовать — все равно волей неволей стали подстраиваться под лидера рынка. Таким образом от проблем кроссбраузерности мы практически избавились и для решения этой проблемы jQuery стал не нужен.
Ну и не нужно забывать что движок JS и сам упрощается. Все ранее недоступные или сложные возможности становятся все проще и доступнее.

Надеюсь такой мини-ликбез будет кому то полезен. Спасибо.
Николай Савин
09 марта 2020, 12:34
0
У тебя всегда доступен объект $modx->resource
Пиши условие, проверяй у него content_type или как там, не помню сейчас на лету.
Николай Савин
09 марта 2020, 08:30
0
Ну… приходится иметь дело с тем, что предложили авторы. Моя задача была показать основные принципы работы из коробки.
Посмотрим — может получится реализовать вариант OpenAPI. Но вообще вряд ли.
Проще подготовить собственную надстройку к MODX, по-моему.
Николай Савин
09 марта 2020, 07:17
0
Всегда надо перечитывать свой текст. Это называется вычитка. Вылавливаешь ошибки
Дядь Сережа — я как раз этим занимаюсь.
Фильтр по родителю вот такой
GET https://shopname.com/rest/products?parent=13
Николай Савин
08 марта 2020, 17:33
+3
Изложение получилось сумбурное, торопливое — т.к. тема объемная на самом деле. Будем считать это черновиком. Постараюсь по настроение подкорректировать текст, снабдив наглядностью.
Николай Савин
06 марта 2020, 15:22
+2
В админке залогинен? Это дает дополнительные права. Нужно пробовать анонимный порно-режим.
Во вторых в параметрах вызова pdoMenu нужно указывать права для проверки доступа. Например &checkPermissions=`list`.
Николай Савин
06 марта 2020, 15:16
0
Правильно да. это работает автоматически