Новый тип attribute

Надеюсь форум еще живой.

Хотел бы узнать, есть возможность добавлять свои типы атрибутов на примере:
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.

А чем табличка мешает? Может есть какое другое решение?

Спасибо за ответ, ну табличка то нормальная, но она на английском, ее не перевести, еще там есть лишние поля, которые хотелось бы скрыть.

MFCompiler - это все таки уже ядро. его ковырять чревато.
Хуков не хватает, вот они бы решили проблему.

Ковырять не предлагаю) Нужно изучить указанные методы и понять, как в XML можно новые типы атрибутов динамически объявлять.

Это всё внутренняя кухня таймера, а чтобы перевести в вывести нужные значение, есть AttributeSubItem.

Спасибо за наводки, буду ковырять.