Хотел бы узнать, есть возможность добавлять свои типы атрибутов на примере:
AttributeDashboard
AttributeLinkedSet
AttributeDBFieldVoid
AttributeExternalField
AttributeBlob
AttributeStopWatch
и другие…
По аналогии: (решение 8 летней давности и очень сомнительный)
Все из-за класса ormStopWatch, разработчики “захордкодили” html табличку, которая выводит данные об этом атрибуте “AttributeStopWatch”. Если есть возможность переопределить класс ormStopWatch, без изменения ядра, то отпадает необходимость создавать новый атрибут.
Привет!
Переопределить какой-то из базовых классов нет проблем, но вот сказать стандартному атрибуту, что теперь нужно использовать твой переопределённый класс, не выйдет. Поэтому нужно и атрибут делать свой, наследующий от стандартного атрибута. Но у твоего атрибута будут какие-то дополнительные параметры (а обычно они нужны) кроме базовых sql, default_value, is_null_allowed и allowed_values, то “компилятор” их пропустит, т.к. о твоём новом атрибуте ему ничего не известно. Разбирая XML и превращая его в PHP, “компилятор” не проверяет цепочку наследования класса атрибута, а просто сравнивает название с известными ему классами.
Выхода два знаю.
Первый – использовать AttributeCustomFields и CustomFieldsHandler. Плюсы:
это публичный API;
в сети можно найти примеры использования.
Минусы:
куча писанины, если нужно минимально изменить какой-то стандартный атрибут;
общая “заточка” под доп.формы полей.
Второй вариант это недокументированные возможности объявления новых атрибутов внутри тега <meta>, который для ITSM Designer зарезервирован. Это путь для тех, кто любит в исходном коде ковыряться. Искать тут: \MFCompiler::LoadDynamicAttributeDefinitions. \MFCompiler::CompileDynamicAttribute.