Добрый день! Необходимо поменять порядок отображения ФИО в ITOP с Имя Фамилия на Фамилия Имя. Куда смотреть? Возможно ли это в принципе?
Добрый день, в файле HOME_ITOP/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml можете просто поменять очередность в строке class id=“Person” в теге naming и произведите Setup
<naming>
<attributes>
<attribute id="name"/>
<attribute id="first_name"/>
</attributes>
</naming>
… и записать на листочке, чтобы не забыть исправить снова после очередного обновления iTop
Если серьезно, то нужно сделать свой модуль и вынести туда этот кусочек XML-кода. Да, это чуть сложнее, чем просто поправить в datamodels, но при первом же обновлении вы сами себе скажете спасибо (ну или тот, кто будет это поддерживать).
Попробовал поменять местами, не вышло, после Setup всё осталось по-старому.
Какие ещё варианты? Установить с нуля?
Да, @vladimir Вы правы, но в этом случае подумал нет необходимости так как структуру данных не менять а лишь отображение.
@Steroid , у я себя проверил, поменяло
Менял в каждом найденном файле с именем datamodel.itop-config-mgmt.xml .
Затем запустил Setup, он завершился успехом, но ничего не изменилось.
После Setup нужно делать Update в Toolkit?
upd.
Попробую поставить заново и подцепиться к боевой базе.
Удалось поменять порядок Фамилии и Имени через Update текущей инсталяции.
Инсталятор скачан с официального сайта, в файле datamodel.itop-config-mgmt.xml поменял как советовали:
<naming>
<attributes>
<attribute id="name"/>
<attribute id="first_name"/>
</attributes>
</naming>
К сожалению, все остальные настройки были потеряны в ходе обновления (синхронизация с AD, расширения и прочее).
Сделал кастомный модуль следующего содержания:
<?xml version="1.1" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<classes>
<class id="Person">
<properties>
<naming>
<attributes>
<attribute id="name"/>
<attribute id="first_name"/>
</attributes>
</naming>
</class>
</classes>
</itop_design>
При установке модуль подхватился, но эффекта так же не дал, в какую сторону копать?
Права на папки? При установке не хватает привилегий для изменения чего-либо где-либо?
Прям из пушки по воробьям
Чтобы ваш модуль что-то изменил в стандартной модели данных, нужно на изменяемом XML-узле добавить атрибут _delta="redefine"
, например <naming _delta="redefine">
.
А вообще вот самый правильный способ изменить порядок полей, из которых формируется отображаемое название объекта:
Dict::Add('RU RU', 'Russian', 'Русский', array(
'Class:Person/Name' => '%2$s %1$s',
));
Это нужно добавить в кастомный модуль в файл с переводами (ru.dict.my-custom-module-name.php). В XML при этом менять ничего не нужно. Шаблон %1$s
будет заменен на первый из атрибутов в <attributes>
, %2$s
– на второй и т.д. При этом в строку можно добавить какие-нибудь фиксированные значения:
'Class:Person/Name' => 'Человек с именем %1$s и фамилией %2$s',
Такие дела.
Сделал модуль + словарь (как Вы советовали).
Затем запустил Update с помощью Toolkit.
Всё сработало, в Back-Office портале Фамилия выводится перед Именем.
Но…
В пользовательском портале Имя по-прежнему выводится перед фамилией.
Как с этим быть?
Приведите пожалуйста пример готового XML, кастомного модуля привести. Я только начал разбираться, опыта совсем мало, содержимое для XML следующего вида будет корректно:
<?xml version="1.1" encoding="UTF-8"?> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"> <classes> <class id="Person" naming _delta="redefine"> <properties> <naming> <attributes> <attribute id="name"/> <attribute id="first_name"/> </attributes> </naming> </class> </classes> </itop_design>
Вот тут)), можно подробнее, заранее спасибо!
Не понял, в чем вопрос (если это вопрос). Для изменения порядка атрибутов в названии не нужен XML, достаточно php файла с переводом, как показано выше.
Если хочешь через XML всё таки сделать, то _delta="redefine"
нужно вставлять в том узле, который хочешь поменять. В данном случае поменять ты хочешь <naming>
, а не весь <class>
.
Неправильно:
...
<class id="Person" naming _delta="redefine">
...
Правильно:
...
<naming _delta="redefine">
...
Если речь про имя и фамилию под аватаркой, то этот порядок зашит в коде, и человеческим способом его не исправить (datamodels/2.x/itop-portal-base/portal/src/views/layout.html.twig).
То есть модуль создавать не нужно? Где должен тогда располагаться PHP с переводом?
Да, допустим если менять с помощью XML, не понимаю где прописать эту часть кода:
... naming _delta="redefine"> ...
Нужно. Только в этом модуле не будет XML.
<?xml version="1.1" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<classes>
<class id="Person">
<properties>
<naming _delta="redefine">
<attributes>
<attribute id="name"/>
<attribute id="first_name"/>
</attributes>
</naming>
</class>
</classes>
</itop_design>
Спасибо большое, всё понятно!
Здравствуйте. Не подскажите, где нужно разместить этот XML файл чтобы изменения применились?
Этот код нужно добавить файл datamodel.my-super-module-name.xml своего модуля.
Чтобы понять, как сделать свой модуль, пройдите этот туториал: https://www.itophub.io/wiki/page?id=3_0_0:customization:add-attribute-sample