Редактирование выделенных элементов
Продолжаю свои улучшалки. Прошлый мой эксперимент оказался тупиковым. На что-то серьезное времени нет, поэтому маюсь всякой всячиной. Сегодня вот придумалось мне сделать редактирование тегов чанков и сниппетов в ресурсах, шаблонах и других чанках по аналогии с phpStorm (насколько это возможно). Например, в ресурсе выделяем тег [[$chunk]] и нажимаем Ctrl+Enter. В результате открывается немного измененное окно быстрого редактирования этого чанка. То же и со сниппетами.

В случае, если чанка или сниппета с таким именем нет, то выводится окно с предложением его создания.

Чтобы перейти на страницу редактирования чанка или сниппета, нужно нажать Ctrl+Shift+Enter.
Работает и с Ace и без. Другие редакторы не пробовал.
Возможность создания новых элементов можно использовать, например, при создания шаблона. Т.е. создаем шаблон, формируем структуру с чанками и сниппетами. Например, так
Проект на Github.
Update. Версия 1.0.5.
В этой версии появилась возможность парсить чанки и сниппеты используя сочетание клавиш Alt+Enter. Результат парсинга сниппетов может быть непредсказуемым, потому что они могут грузить скрипты, которые негативно повлияют на админку. Поэтому рекомендую парсить только несложные сниппеты. Из-за такой опасности изначально эта возможность отключена. Чтобы ее включить, разкомментируйте блок parseElement в tagelementplugin.js скрипте.
Также добавлена проверка изменений формы элемента как в ресурсах. Если изменения были, то при переходе на другую страницу появится предупреждение. Отключается это системной настройкой confirm_navigation.
Продолжение.
Полная документация.

В случае, если чанка или сниппета с таким именем нет, то выводится окно с предложением его создания.

Чтобы перейти на страницу редактирования чанка или сниппета, нужно нажать Ctrl+Shift+Enter.
Принцип действия
Если первый символ в выделенном фрагменте — это знак доллара ($), то ищется чанк. В противном случае, ищется сниппет. Можно выделить любое слово или несколько слов и таким образом создать нужный элемент.Работает и с Ace и без. Другие редакторы не пробовал.
Возможность создания новых элементов можно использовать, например, при создания шаблона. Т.е. создаем шаблон, формируем структуру с чанками и сниппетами. Например, так
<!DOCTYPE html>
<html lang="ru">
<head>
[[$head]]
</head>
<body>
// Шапка страницы
[[$header]]
// Меню
[[$main_menu]]
// Галерея
[[$gallery]]
// Содержание ресурса
[[$content]]
// Подвал страницы
[[$footer]]
</div>
</body>
</html>А затем быстро создаем каждый чанк прямо в окне этого шаблона.Проект на Github.
Update. Версия 1.0.5.
В этой версии появилась возможность парсить чанки и сниппеты используя сочетание клавиш Alt+Enter. Результат парсинга сниппетов может быть непредсказуемым, потому что они могут грузить скрипты, которые негативно повлияют на админку. Поэтому рекомендую парсить только несложные сниппеты. Из-за такой опасности изначально эта возможность отключена. Чтобы ее включить, разкомментируйте блок parseElement в tagelementplugin.js скрипте.
Также добавлена проверка изменений формы элемента как в ресурсах. Если изменения были, то при переходе на другую страницу появится предупреждение. Отключается это системной настройкой confirm_navigation.
Продолжение.
Полная документация.
Комментарии: 69
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Сергей, это великолепная вещь и крайне полезная!!!
Пакет собирай обязательно.
чтобы в целом более универсальный пакет для разработчика получился.
Было бы действительно здорово добавить этот функционал в modDevTools modx.pro/components/4349-moddevtools-version-1-1-0-pl-virtual-chunks/, а то он похоже завис на этой версии (1.1.0-pl) и дальше не развивается.
2. Если реакции нет, то можно поступить наоборот — закоммитить modDevTools к себе. Выпустить новый пакет, развивать и поддерживать.
Например, вторым способом у нас появились современные BannerY и MinifyX.
Оригинальная версия остаётся там где есть, а ты пилишь свою. Конечная цель в том, что пользователям не нужно будет ставить одновременно два похожих дополнения.
Да как-то не задумывался даже, само так получается.
modDevTools же похожим образом создает чанки, и проверяет на их наличие. Расширить функционал не помешало бы.
Сделал диалоги чуть привычнее.
Подключил Ace. Но не получилось заставить подсвечивать php код. С html получилось.
П.С. Modx.com почему-то не принимает такое название editSelectedElement. Буду экспериментировать с другими. Так что пока удаляю с Гита.
Пробуй сейчас, у меня всё заработало.
У меня работает и на 2.3.6 и на 2.4.0 и на 2.4.2.
GET salonria.ru/assets/components/tagElementPlugin/js/mgr/dialogs.js
salonria.ru/:150 GET salonria.ru/assets/components/tagElementPlugin/js/mgr/tagelementplugin.js
tag_assistant.js:115 GET salonria.ru/assets/components/tagElementPlugin/js/mgr/tagelementplugin.js 404 (Not Found)fg @ tag_assistant.js:115(anonymous function) @ tag_assistant.js:116Array.forEach.d @ tag_assistant.js:8ag.Ja @ tag_assistant.js:116yl @ tag_assistant.js:314target.(anonymous function) @ extensions::SafeBuiltins:19EventImpl.dispatchToListener @ extensions::event_bindings:387target.(anonymous function) @ extensions::SafeBuiltins:19$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94EventImpl.dispatch_ @ extensions::event_bindings:371EventImpl.dispatch @ extensions::event_bindings:393target.(anonymous function) @ extensions::SafeBuiltins:19$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94messageListener @ extensions::messaging:179target.(anonymous function) @ extensions::SafeBuiltins:19EventImpl.dispatchToListener @ extensions::event_bindings:387target.(anonymous function) @ extensions::SafeBuiltins:19$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94EventImpl.dispatch_ @ extensions::event_bindings:371EventImpl.dispatch @ extensions::event_bindings:393target.(anonymous function) @ extensions::SafeBuiltins:19$Array.forEach.publicClass.(anonymous function) @ extensions::utils:94dispatchOnMessage @ extensions::messaging:310
tag_assistant.js:115 GET salonria.ru/assets/components/tagElementPlugin/js/mgr/dialogs.js 404 (Not Found)
При этом, что интересно, клик на путь для подключения скрипта не показывает его содержимого, т.е. открывается обычная страница сайта, как при запросе несуществующей страницы (стр. 404 еще не создана). А при клике на путь любого другого скрипта как обычно загружается его содержимое.
Вопрос: Планируется ли научить его понимать Феномовский синтаксис? Чанки: {include 'chunk'}, {insert 'chunk'}, getChunk('chunk'), и сниппеты: runSnippet('snippet')?
Просьба: Если будете совмещать это с modDevTools, то очень прошу сделать возможность в настройках отключить встроенное в modDevTools автосоздание чанков. Это жутко напрягало при разработке, также насколько я помню, он помимо названий чанков из параметров tpl и т.п. дёргал и названия из параметров sort и т.п., то бишь автоматом создавались чанки вроде DESC, ASC и т.д. Это ещё больше напрягало, чем первое, приходилось удалять компонент из-за этого.
Почему все просят об этом меня. У меня нет ни времени ни желания разбираться с modDevTools. Я им не пользуюсь. Просите автора. Или сами попробуйте совместить, все исходники открыты.
Была мысль создавать сниппет сразу с уже указанными параметрами, но я не знаю как это сделать без глобальных доработок. Оставил на будущее.
Ну так работает стандартный механизм MODX. Попробуйте при создании любого элемента кликнуть на ресурс или другой элемент. Перейдет не предупреждая, без сохранения.
В принципе, можно подумать о хуке предупреждения, но тут есть сложности — вы можете наоткрывать кучу окон с чанками и сниппетами. Тогда при переходе их тоже нужно сохранять.
Не знаю почему, но авторы MODX сделали проверку изменений только у ресурсов, за которую отвечает системный параметр confirm_navigation (Подтверждать переход с несохраненными изменениями). А у элементов почему-то решили не делать. Я добавил такую проверку и также завязал ее на настройку confirm_navigation. Все это в новой версии.
С чанками опасности поломать админку нет (если в них нет вызова сниппетов), но обычно они завязаны на css, которого в админке нет, поэтому отображение может быть кривым. Но опять же, почему бы и нет.
Для этого действия есть свое сочетание клавиш Alt+Enter.
Например если в коде прописываешь tpl-ку, и нужно её быстро отредактировать.
Или в коде вызываешь другой сниппет и нужно быстро заглянуть в него.
Обычно на феноме я добавляю $ перед названием чанка и он тоже открывается. По такому же принципу я вижу это и в сниппетах.
И в ресурсах было бы неплохо, там где код, а не визуальный редактор.
Если это конечно не слишком сложно…
А про ресурсы не совсем понял. Вчера целый день за рулём. Спал всего 3 часа. Соображаю туго )
Сможешь добавить это в следующую версию компонента? Вроде не будет мешать это никому, и мне не хочется на всех своих сайтах лазить в плагин для добавления вышеприведённого кода…
А про
ресурсыя был не прав, сейчас проверил и всё работает, извини. Вчера тоже был в разъездах и спал всего 4 часа. Соображаю туго )))Ни одно из сочетаний клавиш не выполняется. Например, выделяю название чанка с символом $, жму Ctrl+Enter, тишина. Так же и с остальными сочетаниями клавиш.
Ошибок при установке не было, в системных настройках все значения сочетаний прописаны.
Возможно ли, что проблема совместимости с версией MODX? Устанавливал последнюю версию с офф. сайта.
Переустанавливать плагин пробовал, ничего не изменилось.
было бы еще круто, если бы по сочетанию клавиш открывались шаблоны которые прописаны в снипетах, еще бы было бы удобней работать.
А поподробнее.
Причем до этого документ был сохранен.
Спасибо.
CMD — это как кнопка Windows — тот же код.
было бы удобно если бы можно было бы допилить плагин, если бы он еще открывал вот такие вот конструкции prntscr.com/luhm3i программист делает все на файлах (работает с гит хабом) и искать их не очень удобно и было бы круто, если бы можно было открывать это дело в новом. окне, где подгружается редактор ace
П.С. Лично я ставить бы на это не стал.
Это предложение по улучшению, еще одно могу предложить.
не удобно искать tpl в снипетах, было бы тоже удобно, чтобы выделил название tpl и нажал комбинацию клавиш, открылся чанк. Пример: prntscr.com/lxsgmw
А делать или нет, решать вам)
Я много дополнений сделал для разработчиков. Надеюсь, заслужил их благодарность. Сейчас я делаю доработки, которые нужны мне, и критичные исправления. Ну иногда ещё спонсируют.
Исходники моих дополнений открыты. Так что все желающие добавить новый функционал могут это сделать беспрепятственно и бесплатно.
А что касается второго предложения — читаем документацию или гуглим.