UiCMPGenerator дополнение для создания пакетов
Hi, написал тут свое дополнение для создания пакетов UiCMPGenerator. За основу взято дополнение CMPGenerator, но в моем прикручен графический интерфейс для создания зависимостей типа Композиционная (Composite) и Агрегирующая (Aggregate), а также можно расширять родные таблицы Modx-a.
Для работы требуется MODX Revolution 2.3.х
Ссылка на офф репозиторий http://modx.com/extras/package/uicmpgenerator
Видео: http://youtu.be/Qkspw8kXwK4
Для работы требуется MODX Revolution 2.3.х
Ссылка на офф репозиторий http://modx.com/extras/package/uicmpgenerator
Видео: http://youtu.be/Qkspw8kXwK4
Поблагодарить автора
Отправить деньги
Комментарии: 63
Как же это круто. Нет слов.
Охренеть.
Кланяюсь
круто!))
Огромная благодарность, о великий мастер своего дела!!!
А вот если уже на сайте используется CMPGenerator с уже созданными таблицами, можно ли как-то перенести быстренько на это дополнение?
Ну теоретически ничего не мешает назвать пакет в UICMPGenerator так же как он зазевается в CMPGenerator, и накидать в Modeler scheme ваши таблицы и связи между ними
Крутатень. Меняю CMPGenerator на UICMPGenerator. Кому нужен б/у CMPGenerator? Отдам не дорого. :)
вообще вообще
Огромный респект за работу!
А github-проект есть?
А github-проект есть?
github-проека нет
Планируется? Или что-то мешает (соображения какие-то или ограничения)?
ну для отрисовки диаграмм используется js библиотека www.draw2d.org/draw2d/community.html которая не является бесплатно и как я понял в той версии что я приобрел я не могу ее распространять
Так мы же в России :)
Если хотите, я могу залить пакет. Но на самом деле разницы между тем, что вы распространяете уже готовый пакет, и если это будет гит-проект — по-моему вообще никакой, с юридической точки зрения.
Если хотите, я могу залить пакет. Но на самом деле разницы между тем, что вы распространяете уже готовый пакет, и если это будет гит-проект — по-моему вообще никакой, с юридической точки зрения.
Ну коль мы в России ;), то где то через 10 дней как вернусь с отдыха залью все это дело на github
Отлично! :)
Спасибо!
Спасибо!
Давай у нас разместим?
А каким образом работать с тем, что получилось? Опыта написания компонентов нету
Ну батенька, что ж вы такие вопросы то задаете. :)
Те, кто создают компоненты, понимают о чем речь, вам могу посоветовать курс Василия bezumkin.ru/training/course1/
Те, кто создают компоненты, понимают о чем речь, вам могу посоветовать курс Василия bezumkin.ru/training/course1/
а у меня modx что то не видит каталогов созданного компонента.
/controllers
/docs
/elements
/lexicon
/model
/processors
Вообще они есть, создались, но в админке modx не отображаются.
Тестил 2 раза.
/controllers
/docs
/elements
/lexicon
/model
/processors
Вообще они есть, создались, но в админке modx не отображаются.
Тестил 2 раза.
в каталогах /core/ и /assets/ такое именно с папкой компонента такое, при клике на нее, ничего не происходит
Ой там assets не создается же.
На тестовом сайте modhost.ru тоже так. Если переименовать папку компонента, то каталоги открываются.
На тестовом сайте modhost.ru тоже так. Если переименовать папку компонента, то каталоги открываются.
Странно, но если я создал пакет и сразу же открою каталог с новым компонентом, то в дальнейшем каталог открывается нормально(все как в видео). Если же этого не сделал, а сразу начал добавлять таблицы, сгенерировал схему, то каталог как мертвый, не отзывается на клики.
Повторил все как ты описал но такого глюка не произошло, у меня все каталоги видны и все открывается. А какие права и кто владелец выставлен на каталоги и файлы созданные дополнением, есть ли в логах движка и сервера какие либо ошибки, и какая полная версия modx-а? У меня MODX Revolution 2.3.2-pl
s860.h3.simpledream.ru/manager/
s860
Af2jZ1Unw9dZ
Каталог ads не открывается…
В логах ничего не было. С правами тоже все нормально.
s860
Af2jZ1Unw9dZ
Каталог ads не открывается…
В логах ничего не было. С правами тоже все нормально.
странный у тебя файловый менеджер в админке, он что кастомный какой то? у меня в нем только одна вкладка «Filesystem»
это же тестовый сайт, но у меня на сервере такая же проблема была
Кстати да, странно, файловую систему core я не создавал
только что создал у тебя новый пакет, все сделал как ты говорил и как бы все директории и файлы видны нормально открываются нет никаких проблем
Только что попробывал создать на новом тестовом сайте. Папка не открывалась только у первого созданного компонента.
s872.h3.simpledream.ru/manager/
s872
P6F3T9qILRDd
s872.h3.simpledream.ru/manager/
s872
P6F3T9qILRDd
у тебя пакет test открывается? У меня test и пакет который я создал открывается, а вот твой ads даже если я его удаляю и создаю с таким же названием нет
только что создал у себя пакет с названием «ads» такая же фигня, походу дело в в этом названии из-за него глючит файловый менеджер
Есть подозрения что это Adblock
ага, я его вырубил и все ок))
Я ничего не понял, но это круто =)
Круть! Спасибо!!!
RESPECT
Здравствуйте. Я создал новые таблицы, сгенерировал схему, но работать с объектами не могу (MODX Revo 2.3.2).
Такой код выдает ошибки. Что я не правильно делаю?
$newObject = $modx->newObject('myClass');
$newObject->set('title', 12345);
$newObject->save();
Такой код выдает ошибки. Что я не правильно делаю?
а какая ошибка?
Компонент крут, спасибо!
Правда, кажется, в нем есть ошибка, поправьте, если что-то не так делаю, или что-то не понял.
Опишу проблему и порядок действий.
Есть две таблицы:
Таблица с заказами является главной по отношению к покупкам в заказе. При удалении заказа должны удаляться связанные покупки.
В результате получается такая схема:
Вроде бы, напутано с «cardinality».
Должно быть наоборот: composite — «many», aggregate — «one».
В общем после генерации схемы вот такой код выдавал fatal error:
Если руками поправить значения «cardinality» в файлах garderoborders.map.inc.php и garderobpurchases.map.inc.php, то все отрабатывает корректно, без ошибок. Выводятся покупки из заказа с id=7.
Собственно вопрос: это я туплю и что-то не так делаю или в компоненте действительно ошибка?)
Правда, кажется, в нем есть ошибка, поправьте, если что-то не так делаю, или что-то не понял.
Опишу проблему и порядок действий.
Есть две таблицы:
Таблица с заказами является главной по отношению к покупкам в заказе. При удалении заказа должны удаляться связанные покупки.
В результате получается такая схема:
Вроде бы, напутано с «cardinality».
Должно быть наоборот: composite — «many», aggregate — «one».
В общем после генерации схемы вот такой код выдавал fatal error:
//получаем объект заказа
$order = $modx->getObject('GarderobOrders', array('id' => 7 ));
//получаем связанные объекты покупок, тут и вылезает ошибка
$purchases = $order->getMany('GarderobPurchases');
//Выводим
foreach ($purchases as $purchase){
print_r($purchase->toArray());
}
Если руками поправить значения «cardinality» в файлах garderoborders.map.inc.php и garderobpurchases.map.inc.php, то все отрабатывает корректно, без ошибок. Выводятся покупки из заказа с id=7.
Собственно вопрос: это я туплю и что-то не так делаю или в компоненте действительно ошибка?)
Hi, фишка в том что как ты мог заметить и таблиц с лева и с права есть порты (кружочки из которых тянутся связи) так вот те что с лева являются input портами, а те что с права output, соответственно если тебе нужно что бы главной таблицей была с заказами то тебе нужно было начинать строить связь с правого порта таблицы заказы, а судя по рисунку у тебя он с лева.
Нужно будет в следующей версии компонента сделать запрет на создание связи из input порта.
Нужно будет в следующей версии компонента сделать запрет на создание связи из input порта.
хотя посмотрел на рисунки с первого твоего поста по внимательно, связи строишь с нужных портов. Также просмотрев доки modx по связям выяснилось что таки действительно в компоненте баг с построением связей, сейчас быстро его пофиксю.
Ок, спасибо!
И еще один момент: owner бывает «foreign» и «local».
У тебя при композиционной связи генерируется owner=owner, из-за этого не работает addMany().
Эту штуку тоже подправить надо
У тебя при композиционной связи генерируется owner=owner, из-за этого не работает addMany().
Эту штуку тоже подправить надо
Новую версию залил на официальный репозиторий modx, пока она там проходит модерацию ее можно скачать отсюда
Все, спасибо, обновился, теперь все отлично!
Странный глюк, без доступа к админки ничего сказать о нем не могу
Не могу к сожалению написать вам в ЛС=(
уже можно
У меня на 2.4.0 иконки пропадают в дереве ресурсов.
Они пропадают на странице компонента?
Да, проблема в том, что класс иконок завязан на собственный шрифт UICMPGenerator. Лучше дописать FontAwesome в font-family
font-family: FontAwesome, UICMPGenerator;
Просто MODX ничего не знает о вашем пакете.
Переходим в настройки системы и создаем новый параметр (если его еще нет) extension_packages. Заполняем только «Ключ» (extension_packages) и «Значение»:
или из консоли
Переходим в настройки системы и создаем новый параметр (если его еще нет) extension_packages. Заполняем только «Ключ» (extension_packages) и «Значение»:
[{"Map":{"path":"[[++core_path]]components/my_component_name/model/"}}]
или из консоли
$modx->addExtensionPackage('Map', '[[++core_path]]components/my_component_name/model/');
подозрения были, что где-то это надо сделать, но не знал где это сделать. Спасибо!
почему при выполнении этого кода в консоли
[2017-04-24 20:39:23] (WARN @ C:\home\htdocs.modx\core\xpdo\xpdo.class.php: 667)
Could not load metadata map geodata/mysql/geodata.map.inc.php for class geodata from geodata.mysql.geodata
modx v.2.5.5
$item = $modx->newObject('geodata');
выдает вот такое сообщение:[2017-04-24 20:39:23] (WARN @ C:\home\htdocs.modx\core\xpdo\xpdo.class.php: 667)
Could not load metadata map geodata/mysql/geodata.map.inc.php for class geodata from geodata.mysql.geodata
modx v.2.5.5
почему при выполнении этого кода в консоли
[2017-04-24 20:39:23] (WARN @ C:\home\htdocs.modx\core\xpdo\xpdo.class.php: 667)
Could not load metadata map geodata/mysql/geodata.map.inc.php for class geodata from geodata.mysql.geodata
modx v.2.5.5
$item = $modx->newObject('geodata');
или$sql = "
SELECT *
FROM
modx_geodata
WHERE
MATCH(city_name) AGAINST ('*казан*' IN BOOLEAN MODE)
";
$q = new xPDOCriteria($modx, $sql);
$res = $modx->getCollection('geodata', $q);
foreach ($res as $v) {
//echo $v->get('pagetitle');
}
выдает вот такое сообщение:[2017-04-24 20:39:23] (WARN @ C:\home\htdocs.modx\core\xpdo\xpdo.class.php: 667)
Could not load metadata map geodata/mysql/geodata.map.inc.php for class geodata from geodata.mysql.geodata
modx v.2.5.5
Разобрался.
нужно было в файле: C:\home\htdocs.modx\core\components\geodata\model\geodata\mysql\geodata.map.inc.php сменить регистр, т.е.:
Было так
нужно было в файле: C:\home\htdocs.modx\core\components\geodata\model\geodata\mysql\geodata.map.inc.php сменить регистр, т.е.:
Было так
<?php
$xpdo_meta_map['Geodata']= array (
'package' => 'geodata',
'version' => '1.1',
'table' => 'geodata',
'extends' => 'xPDOObject',
'fields' =>
Стало так:<?php
$xpdo_meta_map['geodata']= array (
'package' => 'geodata',
'version' => '1.1',
'table' => 'geodata',
'extends' => 'xPDOObject',
'fields' =>
а в extension_packages нужно прописать[{"geodata":{"path":"[[++core_path]]components/geodata/model/"}}]
Hi, сделал новое дополнение CMPGenerator Pro на основе UiCMPGenerator.
Что может CMPGenerator Pro:
1. создать базовую файловую структуру пакета, а так же при желании базовый класс + классы для валидации и работы с POST данными;
2. автоматически добавить информацию о вашем пакете в extension_package и в namespaces Modx-а что избавляет вас на этапе разработки от сообщении об ошибки типа Could not load class: когда вы пытаетесь работать со своими таблицами;
3. создать схемные xpdo-файлы и xpdo-классы для ваших таблиц баз данных, а также указать зависимости между ними (Composite Aggregate);
4. расширять базовые классы Modx;
5. создавать в 2 клика свой тип документов Modx за счет расширения класса modResource (автоматически создадутся соответствующие контролеры, процессоры и js файлы);
6. создать для пользовательских таблиц mgr и web контролеры с процессорами (для mgr будут созданы js файлы с функционалам для работы с полями таблицы с привязкой к их типу);
7. задать php тип для полей таблицы, что влияет на то какой компонент extjs будет использоваться для работы с данным полем, а так же как его данные будет обрабатывать Modx;
8. добавить в меню админки Modx действие для вашего mgr котроллера;
9. собрать транспортный пакет с автоматическим включением в него:
— таблиц;
— чанков, сниппетов и плагинов(для того что бы события на которые подписан плагин были добавлены в транспортный пакет данный плагин должен быть создан в админке с подпиской на нужные события) из соответствующих папок в elements;
— опций;
— пунктов меню.
Примечание: большинство перечисленных выше пунктов доступы только при включенной опции «Создать базовый класс» на этапе создания пакета.
Видео с демонстрацией функционала дополнения те кто смотрел для UiCMPGenerator могут пропустить с 2:38 сек. по 5:35 сек.
И таки да, данное дополнение платное.
Что может CMPGenerator Pro:
1. создать базовую файловую структуру пакета, а так же при желании базовый класс + классы для валидации и работы с POST данными;
2. автоматически добавить информацию о вашем пакете в extension_package и в namespaces Modx-а что избавляет вас на этапе разработки от сообщении об ошибки типа Could not load class: когда вы пытаетесь работать со своими таблицами;
3. создать схемные xpdo-файлы и xpdo-классы для ваших таблиц баз данных, а также указать зависимости между ними (Composite Aggregate);
4. расширять базовые классы Modx;
5. создавать в 2 клика свой тип документов Modx за счет расширения класса modResource (автоматически создадутся соответствующие контролеры, процессоры и js файлы);
6. создать для пользовательских таблиц mgr и web контролеры с процессорами (для mgr будут созданы js файлы с функционалам для работы с полями таблицы с привязкой к их типу);
7. задать php тип для полей таблицы, что влияет на то какой компонент extjs будет использоваться для работы с данным полем, а так же как его данные будет обрабатывать Modx;
8. добавить в меню админки Modx действие для вашего mgr котроллера;
9. собрать транспортный пакет с автоматическим включением в него:
— таблиц;
— чанков, сниппетов и плагинов(для того что бы события на которые подписан плагин были добавлены в транспортный пакет данный плагин должен быть создан в админке с подпиской на нужные события) из соответствующих папок в elements;
— опций;
— пунктов меню.
Примечание: большинство перечисленных выше пунктов доступы только при включенной опции «Создать базовый класс» на этапе создания пакета.
Видео с демонстрацией функционала дополнения те кто смотрел для UiCMPGenerator могут пропустить с 2:38 сек. по 5:35 сек.
И таки да, данное дополнение платное.
При установке table prefix отличающегося от modx_ — не генерируется схема и классы.
покопался, разобрался сам.
у тебя вызов идет $generator->parseJsonSchema($cmp->scheme);
а надо $generator->parseJsonSchema($cmp->scheme, $table_prefix);
покопался, разобрался сам.
у тебя вызов идет $generator->parseJsonSchema($cmp->scheme);
а надо $generator->parseJsonSchema($cmp->scheme, $table_prefix);
Как удалить таблицы или связи из панели?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.