N°5563 Convert datamodels files with new 3.1 conversion methods

This commit is contained in:
Pierre Goiffon
2022-11-18 19:00:07 +01:00
parent 3aab49c372
commit 6258b97b92
30 changed files with 17641 additions and 17509 deletions

View File

@@ -7,6 +7,8 @@
* *
* datamodels/2.x/.../datamodel.*.xml * datamodels/2.x/.../datamodel.*.xml
* *
* Warning : this will NOT update the XML structure (iTopDesignFormat convert methods)
*
* Usage : * Usage :
* `php .make\release\update-xml.php "1.7"` * `php .make\release\update-xml.php "1.7"`
* *

View File

@@ -174,6 +174,7 @@ class DatamodelsXmlFiles extends AbstractGlobFileVersionUpdater
*/ */
public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath) public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath)
{ {
//TODO should also CONVERT files !
return preg_replace( return preg_replace(
'/(<itop_design .* version=")[^"]+(">)/', '/(<itop_design .* version=")[^"]+(">)/',
'${1}'.$sVersionLabel.'${2}', '${1}'.$sVersionLabel.'${2}',

View File

@@ -1,51 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<classes> <classes>
<class id="UserLDAP" _delta="define"> <class id="UserLDAP" _delta="define">
<parent>cmdbAbstractObject</parent> <parent>cmdbAbstractObject</parent>
<php_parent> <php_parent>
<name>UserInternal</name> <name>UserInternal</name>
</php_parent> </php_parent>
<properties> <properties>
<comment>/** <comment>/**
* LDAP Authentication * LDAP Authentication
* User authentication Module, no password at all! * User authentication Module, no password at all!
* *
* @copyright Copyright (C) 2010-2020 Combodo SARL * @copyright Copyright (C) 2010-2020 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0 * @license http://opensource.org/licenses/AGPL-3.0
*/</comment> */</comment>
<category>addon/authentication,grant_by_profile,silo</category> <category>addon/authentication,grant_by_profile,silo</category>
<abstract>false</abstract> <abstract>false</abstract>
<key_type>autoincrement</key_type> <key_type>autoincrement</key_type>
<db_table>priv_user_ldap</db_table> <db_table>priv_user_ldap</db_table>
<db_key_field>id</db_key_field> <db_key_field>id</db_key_field>
<db_final_class_field/> <db_final_class_field/>
<naming> <naming>
<format>%1$s</format> <format>%1$s</format>
<attributes> <attributes>
<attribute id="login"/> <attribute id="login"/>
</attributes> </attributes>
</naming> </naming>
<display_template/> <display_template/>
<style> <style>
<icon/> <icon/>
</style> </style>
<reconciliation> <reconciliation>
<attributes> <attributes>
<attribute id="login"/> <attribute id="login"/>
</attributes> </attributes>
</reconciliation> </reconciliation>
</properties> </properties>
<fields> <fields>
<field id="ldap_server" xsi:type="AttributeString"> <field id="ldap_server" xsi:type="AttributeString">
<sql>ldap_server</sql> <sql>ldap_server</sql>
<default_value/> <default_value/>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
</field> </field>
</fields> </fields>
<methods> <methods>
<method id="CheckCredentials"> <method id="CheckCredentials">
<comment><![CDATA[/** <comment><![CDATA[/**
* Check the user's password against the LDAP server * Check the user's password against the LDAP server
* Algorithm: * Algorithm:
* 1) Connect to the LDAP server, using a predefined account (or anonymously) * 1) Connect to the LDAP server, using a predefined account (or anonymously)
@@ -60,10 +60,10 @@
* @throws \ArchivedObjectException * @throws \ArchivedObjectException
* @throws \CoreException * @throws \CoreException
*/]]></comment> */]]></comment>
<static>false</static> <static>false</static>
<access>public</access> <access>public</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code><![CDATA[ public function CheckCredentials($sPassword) <code><![CDATA[ public function CheckCredentials($sPassword)
{ {
$sServer = $this->Get('ldap_server'); $sServer = $this->Get('ldap_server');
if (empty($sServer)) if (empty($sServer))
@@ -190,39 +190,39 @@
return false; return false;
} }
}]]></code> }]]></code>
</method> </method>
<method id="TrustWebServerContext"> <method id="TrustWebServerContext">
<static>false</static> <static>false</static>
<access>public</access> <access>public</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code> public function TrustWebServerContext() <code> public function TrustWebServerContext()
{ {
return false; return false;
}</code> }</code>
</method> </method>
<method id="CanChangePassword"> <method id="CanChangePassword">
<static>false</static> <static>false</static>
<access>public</access> <access>public</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code> public function CanChangePassword() <code> public function CanChangePassword()
{ {
return false; return false;
}</code> }</code>
</method> </method>
<method id="ChangePassword"> <method id="ChangePassword">
<static>false</static> <static>false</static>
<access>public</access> <access>public</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code> public function ChangePassword($sOldPassword, $sNewPassword) <code> public function ChangePassword($sOldPassword, $sNewPassword)
{ {
return false; return false;
}</code> }</code>
</method> </method>
<method id="LogIssue"> <method id="LogIssue">
<static>false</static> <static>false</static>
<access>protected</access> <access>protected</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code><![CDATA[ protected function LogIssue($bDebug, $sMessage, $aData = array()) <code><![CDATA[ protected function LogIssue($bDebug, $sMessage, $aData = array())
{ {
if ($bDebug) if ($bDebug)
{ {
@@ -240,91 +240,91 @@
} }
IssueLog::Error($sMessage); IssueLog::Error($sMessage);
}]]></code> }]]></code>
</method> </method>
<method id="LogInfo"> <method id="LogInfo">
<static>false</static> <static>false</static>
<access>protected</access> <access>protected</access>
<type>OQLMenuNode</type> <type>OQLMenuNode</type>
<code><![CDATA[ protected function LogInfo($bDebug, $sMessage) <code><![CDATA[ protected function LogInfo($bDebug, $sMessage)
{ {
if ($bDebug) if ($bDebug)
{ {
IssueLog::Info($sMessage); IssueLog::Info($sMessage);
} }
}]]></code> }]]></code>
</method> </method>
</methods> </methods>
<presentation> <presentation>
<details> <details>
<items> <items>
<item id="contactid"> <item id="contactid">
<rank>10</rank> <rank>10</rank>
</item> </item>
<item id="org_id"> <item id="org_id">
<rank>20</rank> <rank>20</rank>
</item> </item>
<item id="email"> <item id="email">
<rank>30</rank> <rank>30</rank>
</item> </item>
<item id="login"> <item id="login">
<rank>40</rank> <rank>40</rank>
</item> </item>
<item id="language"> <item id="language">
<rank>50</rank> <rank>50</rank>
</item> </item>
<item id="status"> <item id="status">
<rank>60</rank> <rank>60</rank>
</item> </item>
<item id="profile_list"> <item id="profile_list">
<rank>70</rank> <rank>70</rank>
</item> </item>
<item id="allowed_org_list"> <item id="allowed_org_list">
<rank>80</rank> <rank>80</rank>
</item> </item>
<item id="ldap_server"> <item id="ldap_server">
<rank>90</rank> <rank>90</rank>
</item> </item>
</items> </items>
</details> </details>
<search> <search>
<items> <items>
<item id="login"> <item id="login">
<rank>10</rank> <rank>10</rank>
</item> </item>
<item id="contactid"> <item id="contactid">
<rank>20</rank> <rank>20</rank>
</item> </item>
<item id="status"> <item id="status">
<rank>30</rank> <rank>30</rank>
</item> </item>
<item id="org_id"> <item id="org_id">
<rank>40</rank> <rank>40</rank>
</item> </item>
<item id="ldap_server"> <item id="ldap_server">
<rank>50</rank> <rank>50</rank>
</item> </item>
</items> </items>
</search> </search>
<list> <list>
<items> <items>
<item id="first_name"> <item id="first_name">
<rank>10</rank> <rank>10</rank>
</item> </item>
<item id="last_name"> <item id="last_name">
<rank>20</rank> <rank>20</rank>
</item> </item>
<item id="status"> <item id="status">
<rank>30</rank> <rank>30</rank>
</item> </item>
<item id="org_id"> <item id="org_id">
<rank>40</rank> <rank>40</rank>
</item> </item>
<item id="ldap_server"> <item id="ldap_server">
<rank>50</rank> <rank>50</rank>
</item> </item>
</items> </items>
</list> </list>
</presentation> </presentation>
</class> </class>
</classes> </classes>
</itop_design> </itop_design>

View File

@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<module_parameters>
<module_parameters> <parameters id="authent-local" _delta="define">
<parameters id="authent-local" _delta="define"> <password_validation.pattern>^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$</password_validation.pattern>
<password_validation.pattern>^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$</password_validation.pattern> <password_validation.message type="hash"/>
<password_validation.message type="hash"></password_validation.message> </parameters>
</parameters> </module_parameters>
</module_parameters>
</itop_design> </itop_design>

View File

@@ -55,51 +55,51 @@
</indexes> </indexes>
</properties> </properties>
<fields> <fields>
<field id="expire" xsi:type="AttributeDateTime"> <field id="expire" xsi:type="AttributeDateTime">
<sql>expire</sql> <sql>expire</sql>
<default_value/> <default_value/>
<is_null_allowed>false</is_null_allowed> <is_null_allowed>false</is_null_allowed>
</field> </field>
<field id="temp_id" xsi:type="AttributeString"> <field id="temp_id" xsi:type="AttributeString">
<sql>temp_id</sql> <sql>temp_id</sql>
<default_value/> <default_value/>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
</field> </field>
<field id="item_class" xsi:type="AttributeString"> <field id="item_class" xsi:type="AttributeString">
<sql>item_class</sql> <sql>item_class</sql>
<default_value/> <default_value/>
<is_null_allowed>false</is_null_allowed> <is_null_allowed>false</is_null_allowed>
</field> </field>
<field id="item_id" xsi:type="AttributeObjectKey"> <field id="item_id" xsi:type="AttributeObjectKey">
<sql>item_id</sql> <sql>item_id</sql>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
<class_attcode>item_class</class_attcode> <class_attcode>item_class</class_attcode>
</field> </field>
<field id="item_org_id" xsi:type="AttributeInteger"> <field id="item_org_id" xsi:type="AttributeInteger">
<sql>item_org_id</sql> <sql>item_org_id</sql>
<default_value>0</default_value> <default_value>0</default_value>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
</field> </field>
<field id="contents" xsi:type="AttributeBlob"/> <field id="contents" xsi:type="AttributeBlob"/>
<field id="creation_date" xsi:type="AttributeDateTime"> <field id="creation_date" xsi:type="AttributeDateTime">
<sql>creation_date</sql> <sql>creation_date</sql>
<default_value/> <default_value/>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
</field> </field>
<field id="user_id" xsi:type="AttributeExternalKey"> <field id="user_id" xsi:type="AttributeExternalKey">
<sql>user_id</sql> <sql>user_id</sql>
<is_null_allowed>true</is_null_allowed> <is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete> <on_target_delete>DEL_MANUAL</on_target_delete>
<target_class>User</target_class> <target_class>User</target_class>
<allow_target_creation>false</allow_target_creation> <allow_target_creation>false</allow_target_creation>
</field> </field>
<field id="contact_id" xsi:type="AttributeExternalField"> <field id="contact_id" xsi:type="AttributeExternalField">
<extkey_attcode>user_id</extkey_attcode> <extkey_attcode>user_id</extkey_attcode>
<target_attcode>contactid</target_attcode> <target_attcode>contactid</target_attcode>
<dependencies> <dependencies>
<attribute id="user_id"></attribute> <attribute id="user_id"/>
</dependencies> </dependencies>
</field> </field>
</fields> </fields>
<methods> <methods>
<method id="MapContextParam"> <method id="MapContextParam">
@@ -236,22 +236,22 @@
</item> </item>
</items> </items>
</search> </search>
<list> <list>
<items> <items>
<item id="temp_id"> <item id="temp_id">
<rank>10</rank> <rank>10</rank>
</item> </item>
<item id="item_class"> <item id="item_class">
<rank>20</rank> <rank>20</rank>
</item> </item>
<item id="item_id"> <item id="item_id">
<rank>30</rank> <rank>30</rank>
</item> </item>
<item id="creation_date"> <item id="creation_date">
<rank>40</rank> <rank>40</rank>
</item> </item>
</items> </items>
</list> </list>
</presentation> </presentation>
</class> </class>
</classes> </classes>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<constants></constants> <constants/>
<classes> <classes>
<class id="lnkFunctionalCIToTicket" _delta="define"> <class id="lnkFunctionalCIToTicket" _delta="define">
<parent>cmdbAbstractObject</parent> <parent>cmdbAbstractObject</parent>
@@ -292,6 +292,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>providercontract_id</ext_key_to_remote> <ext_key_to_remote>providercontract_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="services_list" xsi:type="AttributeLinkedSetIndirect" _delta="define"> <field id="services_list" xsi:type="AttributeLinkedSetIndirect" _delta="define">
<linked_class>lnkFunctionalCIToService</linked_class> <linked_class>lnkFunctionalCIToService</linked_class>
@@ -300,6 +301,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote> <ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="tickets_list" xsi:type="AttributeLinkedSetIndirect" _delta="define"> <field id="tickets_list" xsi:type="AttributeLinkedSetIndirect" _delta="define">
<linked_class>lnkFunctionalCIToTicket</linked_class> <linked_class>lnkFunctionalCIToTicket</linked_class>
@@ -308,6 +310,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>ticket_id</ext_key_to_remote> <ext_key_to_remote>ticket_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>

View File

@@ -44,19 +44,11 @@
<values> <values>
<value id="approved">approved <value id="approved">approved
<code>approved</code> <code>approved</code>
<style> <style><main_color>$ibo-lifecycle-success-state-primary-color</main_color><complementary_color>$ibo-lifecycle-success-state-secondary-color</complementary_color><decoration_classes>fas fa-user-check</decoration_classes></style>
<main_color>$ibo-lifecycle-success-state-primary-color</main_color>
<complementary_color>$ibo-lifecycle-success-state-secondary-color</complementary_color>
<decoration_classes>fas fa-user-check</decoration_classes>
</style>
</value> </value>
<value id="assigned">assigned <value id="assigned">assigned
<code>assigned</code> <code>assigned</code>
<style> <style><main_color>$ibo-lifecycle-neutral-state-primary-color</main_color><complementary_color>$ibo-lifecycle-neutral-state-secondary-color</complementary_color><decoration_classes/></style>
<main_color>$ibo-lifecycle-neutral-state-primary-color</main_color>
<complementary_color>$ibo-lifecycle-neutral-state-secondary-color</complementary_color>
<decoration_classes/>
</style>
</value> </value>
<value id="closed"> <value id="closed">
<code>closed</code> <code>closed</code>
@@ -247,31 +239,39 @@
<field id="related_request_list" xsi:type="AttributeLinkedSet"> <field id="related_request_list" xsi:type="AttributeLinkedSet">
<linked_class>UserRequest</linked_class> <linked_class>UserRequest</linked_class>
<ext_key_to_me>parent_change_id</ext_key_to_me> <ext_key_to_me>parent_change_id</ext_key_to_me>
<edit_mode>add_remove</edit_mode> <legacy_edit_mode>add_remove</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="related_incident_list" xsi:type="AttributeLinkedSet"> <field id="related_incident_list" xsi:type="AttributeLinkedSet">
<linked_class>Incident</linked_class> <linked_class>Incident</linked_class>
<ext_key_to_me>parent_change_id</ext_key_to_me> <ext_key_to_me>parent_change_id</ext_key_to_me>
<edit_mode>add_remove</edit_mode> <legacy_edit_mode>add_remove</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="related_problems_list" xsi:type="AttributeLinkedSet"> <field id="related_problems_list" xsi:type="AttributeLinkedSet">
<linked_class>Problem</linked_class> <linked_class>Problem</linked_class>
<ext_key_to_me>related_change_id</ext_key_to_me> <ext_key_to_me>related_change_id</ext_key_to_me>
<edit_mode>add_remove</edit_mode> <legacy_edit_mode>add_remove</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="child_changes_list" xsi:type="AttributeLinkedSet"> <field id="child_changes_list" xsi:type="AttributeLinkedSet">
<linked_class>Change</linked_class> <linked_class>Change</linked_class>
<ext_key_to_me>parent_id</ext_key_to_me> <ext_key_to_me>parent_id</ext_key_to_me>
<edit_mode>add_remove</edit_mode> <legacy_edit_mode>add_remove</legacy_edit_mode>
<filter><![CDATA[SELECT Change WHERE id != :this->id]]></filter> <filter><![CDATA[SELECT Change WHERE id != :this->id]]></filter>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<lifecycle> <lifecycle>
@@ -279,17 +279,17 @@
<item id="approved"> <item id="approved">
<rank>1</rank> <rank>1</rank>
<color>HIGHLIGHT_CLASS_NONE</color> <color>HIGHLIGHT_CLASS_NONE</color>
<icon>images/change-approved.svg</icon> <icon>images/change-approved.svg</icon>
</item> </item>
<item id="rejected"> <item id="rejected">
<rank>2</rank> <rank>2</rank>
<color>HIGHLIGHT_CLASS_NONE</color> <color>HIGHLIGHT_CLASS_NONE</color>
<icon>images/change-rejected.svg</icon> <icon>images/change-rejected.svg</icon>
</item> </item>
<item id="closed"> <item id="closed">
<rank>3</rank> <rank>3</rank>
<color>HIGHLIGHT_CLASS_NONE</color> <color>HIGHLIGHT_CLASS_NONE</color>
<icon>images/change-closed.svg</icon> <icon>images/change-closed.svg</icon>
</item> </item>
</highlight_scale> </highlight_scale>
<stimuli> <stimuli>
@@ -976,17 +976,17 @@
</states> </states>
</lifecycle> </lifecycle>
<methods> <methods>
<method id="GetTicketRefFormat"> <method id="GetTicketRefFormat">
<static>true</static> <static>true</static>
<access>public</access> <access>public</access>
<type>Overload-DBObject</type> <type>Overload-DBObject</type>
<code><![CDATA[ <code><![CDATA[
public static function GetTicketRefFormat() public static function GetTicketRefFormat()
{ {
return 'C-%06d'; return 'C-%06d';
} }
]]></code> ]]></code>
</method> </method>
<method id="SetClosureDate"> <method id="SetClosureDate">
<comment><![CDATA[/** <comment><![CDATA[/**
* To be deprecated: use SetCurrentDate() instead * To be deprecated: use SetCurrentDate() instead
@@ -1026,8 +1026,7 @@
$this->UpdateImpactedItems(); $this->UpdateImpactedItems();
$this->SetIfNull('creation_date', time()); $this->SetIfNull('creation_date', time());
$this->SetIfNull('last_update', time()); $this->SetIfNull('last_update', time());
}]]> }]]></code>
</code>
</method> </method>
<method id="OnUpdate"> <method id="OnUpdate">
<static>false</static> <static>false</static>
@@ -1043,8 +1042,7 @@
$this->UpdateImpactedItems(); $this->UpdateImpactedItems();
} }
$this->Set('last_update', time()); $this->Set('last_update', time());
}]]> }]]></code>
</code>
</method> </method>
</methods> </methods>
<presentation> <presentation>
@@ -4534,9 +4532,9 @@
<menus> <menus>
<menu id="ChangeManagement" xsi:type="MenuGroup" _delta="define"> <menu id="ChangeManagement" xsi:type="MenuGroup" _delta="define">
<rank>50</rank> <rank>50</rank>
<style> <style>
<decoration_classes>fas fa-exchange-alt</decoration_classes> <decoration_classes>fas fa-exchange-alt</decoration_classes>
</style> </style>
</menu> </menu>
<menu id="Change:Overview" xsi:type="DashboardMenuNode" _delta="define"> <menu id="Change:Overview" xsi:type="DashboardMenuNode" _delta="define">
<rank>0</rank> <rank>0</rank>
@@ -4659,7 +4657,7 @@
AND (C.id != :this->id) AND (C.id != :this->id)
]]></oql> ]]></oql>
<dict>Tickets:Related:OpenChanges</dict> <dict>Tickets:Related:OpenChanges</dict>
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon> <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item> </item>
<item id="recent_changes" _delta="define"> <item id="recent_changes" _delta="define">
<oql><![CDATA[ <oql><![CDATA[
@@ -4674,7 +4672,7 @@
AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY )) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))
]]></oql> ]]></oql>
<dict>Tickets:Related:RecentChanges</dict> <dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon> <icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item> </item>
</items> </items>
</down> </down>
@@ -4696,7 +4694,7 @@
AND (C.id != :this->id) AND (C.id != :this->id)
]]></oql> ]]></oql>
<dict>Tickets:Related:OpenChanges</dict> <dict>Tickets:Related:OpenChanges</dict>
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon> <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item> </item>
<item id="recent_changes" _delta="define"> <item id="recent_changes" _delta="define">
<oql><![CDATA[ <oql><![CDATA[
@@ -4711,7 +4709,7 @@
AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY )) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))
]]></oql> ]]></oql>
<dict>Tickets:Related:RecentChanges</dict> <dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon> <icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item> </item>
</items> </items>
</down> </down>
@@ -4733,7 +4731,7 @@
AND (C.id != :this->id) AND (C.id != :this->id)
]]></oql> ]]></oql>
<dict>Tickets:Related:OpenChanges</dict> <dict>Tickets:Related:OpenChanges</dict>
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon> <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item> </item>
<item id="recent_changes" _delta="define"> <item id="recent_changes" _delta="define">
<oql><![CDATA[ <oql><![CDATA[
@@ -4748,7 +4746,7 @@
AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY )) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))
]]></oql> ]]></oql>
<dict>Tickets:Related:RecentChanges</dict> <dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon> <icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item> </item>
</items> </items>
</down> </down>
@@ -4773,7 +4771,7 @@
AND (L.impact_code != 'not_impacted') AND (L.impact_code != 'not_impacted')
]]></oql> ]]></oql>
<dict>Tickets:Related:OpenChanges</dict> <dict>Tickets:Related:OpenChanges</dict>
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon> <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item> </item>
<item id="recent_changes" _delta="define"> <item id="recent_changes" _delta="define">
<oql><![CDATA[ <oql><![CDATA[
@@ -4787,7 +4785,7 @@
AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY )) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))
]]></oql> ]]></oql>
<dict>Tickets:Related:RecentChanges</dict> <dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon> <icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item> </item>
</items> </items>
</down> </down>
@@ -4804,7 +4802,7 @@
AND (L.impact_code != 'not_impacted') AND (L.impact_code != 'not_impacted')
]]></oql> ]]></oql>
<dict>Tickets:Related:OpenChanges</dict> <dict>Tickets:Related:OpenChanges</dict>
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon> <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item> </item>
<item id="recent_changes" _delta="define"> <item id="recent_changes" _delta="define">
<oql><![CDATA[ <oql><![CDATA[
@@ -4818,7 +4816,7 @@
AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY )) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))
]]></oql> ]]></oql>
<dict>Tickets:Related:RecentChanges</dict> <dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon> <icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item> </item>
</items> </items>
</up> </up>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -37,16 +37,20 @@
<field id="device_list" xsi:type="AttributeLinkedSet"> <field id="device_list" xsi:type="AttributeLinkedSet">
<linked_class>DatacenterDevice</linked_class> <linked_class>DatacenterDevice</linked_class>
<ext_key_to_me>rack_id</ext_key_to_me> <ext_key_to_me>rack_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="enclosure_list" xsi:type="AttributeLinkedSet"> <field id="enclosure_list" xsi:type="AttributeLinkedSet">
<linked_class>Enclosure</linked_class> <linked_class>Enclosure</linked_class>
<ext_key_to_me>rack_id</ext_key_to_me> <ext_key_to_me>rack_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -229,9 +233,11 @@
<field id="device_list" xsi:type="AttributeLinkedSet"> <field id="device_list" xsi:type="AttributeLinkedSet">
<linked_class>DatacenterDevice</linked_class> <linked_class>DatacenterDevice</linked_class>
<ext_key_to_me>enclosure_id</ext_key_to_me> <ext_key_to_me>enclosure_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -573,9 +579,11 @@
<field id="pdus_list" xsi:type="AttributeLinkedSet"> <field id="pdus_list" xsi:type="AttributeLinkedSet">
<linked_class>PDU</linked_class> <linked_class>PDU</linked_class>
<ext_key_to_me>powerstart_id</ext_key_to_me> <ext_key_to_me>powerstart_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>

View File

@@ -1390,7 +1390,7 @@
<dashlet id="25" xsi:type="DashletHeaderStatic"> <dashlet id="25" xsi:type="DashletHeaderStatic">
<rank>0</rank> <rank>0</rank>
<title>Menu:ConfigManagement:EndUsers</title> <title>Menu:ConfigManagement:EndUsers</title>
<icon>../images/icons/icons8-team.svg</icon> <icon>../images/icons/icons8-team.svg</icon>
</dashlet> </dashlet>
<dashlet id="26" xsi:type="DashletBadge"> <dashlet id="26" xsi:type="DashletBadge">
<rank>1</rank> <rank>1</rank>

View File

@@ -173,9 +173,11 @@
<field id="faq_list" xsi:type="AttributeLinkedSet"> <field id="faq_list" xsi:type="AttributeLinkedSet">
<linked_class>FAQ</linked_class> <linked_class>FAQ</linked_class>
<ext_key_to_me>category_id</ext_key_to_me> <ext_key_to_me>category_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -305,15 +307,15 @@
<twig> <twig>
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form_field" data-field-id="category_name"></div> <div class="form_field" data-field-id="category_name"/>
<div class="form_field" data-field-id="title"></div> <div class="form_field" data-field-id="title"/>
<div class="form_field" data-field-id="error_code"></div> <div class="form_field" data-field-id="error_code"/>
<div class="form_field" data-field-id="key_words"></div> <div class="form_field" data-field-id="key_words"/>
<div class="form_field" data-field-id="domains"></div> <div class="form_field" data-field-id="domains"/>
<div class="form_field" data-field-id="summary"></div> <div class="form_field" data-field-id="summary"/>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="form_field" data-field-id="description"></div> <div class="form_field" data-field-id="description"/>
</div> </div>
</div> </div>
</twig> </twig>

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<classes> <classes>
<class id="Ticket"> <class id="Ticket">
<methods> <methods>
<method id="CreateFromServiceSubcategory" _delta="define"> <method id="CreateFromServiceSubcategory" _delta="define">
<comment>/** <comment>/**
* Instanciate an object of the relevant class, depending on the request type * Instanciate an object of the relevant class, depending on the request type
* @return DBObject * @return DBObject
*/</comment> */</comment>
<static>true</static> <static>true</static>
<access>public</access> <access>public</access>
<type>Factory</type> <type>Factory</type>
<code><![CDATA[ static public function CreateFromServiceSubcategory($oServiceSubcategory) <code><![CDATA[ static public function CreateFromServiceSubcategory($oServiceSubcategory)
{ {
$sType = $oServiceSubcategory->Get('request_type'); $sType = $oServiceSubcategory->Get('request_type');
if ($sType == 'incident') if ($sType == 'incident')
@@ -32,43 +32,43 @@
} }
return $oRet; return $oRet;
}]]></code> }]]></code>
</method> </method>
</methods> </methods>
</class> </class>
</classes> </classes>
<module_designs> <module_designs>
<module_design id="itop-portal"> <module_design id="itop-portal">
<bricks> <bricks>
<brick id="services"> <brick id="services">
<levels> <levels>
<level id="1"> <level id="1">
<levels> <levels>
<level id="1"> <level id="1">
<levels> <levels>
<level id="1"> <level id="1">
<actions> <actions>
<action id="create_from_this"> <action id="create_from_this">
<class _delta="delete" /> <class _delta="delete"/>
<factory_method _delta="define"><![CDATA[\Ticket::CreateFromServiceSubcategory]]></factory_method> <factory_method _delta="define"><![CDATA[\Ticket::CreateFromServiceSubcategory]]></factory_method>
</action> </action>
</actions> </actions>
</level> </level>
</levels> </levels>
</level> </level>
</levels> </levels>
</level> </level>
</levels> </levels>
</brick> </brick>
</bricks> </bricks>
<classes> <classes>
<class id="ServiceSubcategory"> <class id="ServiceSubcategory">
<scopes> <scopes>
<scope id="all"> <scope id="all">
<oql_view _delta="redefine"><![CDATA[SELECT ServiceSubcategory WHERE status != 'obsolete']]></oql_view> <oql_view _delta="redefine"><![CDATA[SELECT ServiceSubcategory WHERE status != 'obsolete']]></oql_view>
</scope> </scope>
</scopes> </scopes>
</class> </class>
</classes> </classes>
</module_design> </module_design>
</module_designs> </module_designs>
</itop_design> </itop_design>

View File

@@ -13,15 +13,15 @@
</profiles> </profiles>
</user_rights> </user_rights>
<module_parameters> <module_parameters>
<parameters id="itop-hub-connector" _delta="define"> <parameters id="itop-hub-connector" _delta="define">
<url>https://www.itophub.io</url> <url>https://www.itophub.io</url>
<route_landing>/my-instances/landing-from-remote</route_landing> <route_landing>/my-instances/landing-from-remote</route_landing>
<route_landing_stateless>/stateless-remote-itop/landing-from-remote-stateless</route_landing_stateless> <route_landing_stateless>/stateless-remote-itop/landing-from-remote-stateless</route_landing_stateless>
<route_fetch_unread_messages>/api/messages</route_fetch_unread_messages> <route_fetch_unread_messages>/api/messages</route_fetch_unread_messages>
<route_mark_all_messages_as_read>/api/messages/mark-all-as-read</route_mark_all_messages_as_read> <route_mark_all_messages_as_read>/api/messages/mark-all-as-read</route_mark_all_messages_as_read>
<route_view_all_messages>/messages</route_view_all_messages> <route_view_all_messages>/messages</route_view_all_messages>
<setup_url>../pages/exec.php?exec_module=itop-hub-connector&amp;exec_page=launch.php&amp;target=inform_after_setup</setup_url> <setup_url>../pages/exec.php?exec_module=itop-hub-connector&amp;exec_page=launch.php&amp;target=inform_after_setup</setup_url>
<rgpd_url>https://www.itophub.io/page/data-privacy</rgpd_url> <rgpd_url>https://www.itophub.io/page/data-privacy</rgpd_url>
</parameters> </parameters>
</module_parameters> </module_parameters>
</itop_design> </itop_design>

View File

@@ -121,6 +121,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote> <ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="document_list" xsi:type="AttributeLinkedSetIndirect"> <field id="document_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkDocumentToError</linked_class> <linked_class>lnkDocumentToError</linked_class>
@@ -129,6 +130,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote> <ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -414,9 +416,9 @@
<menus> <menus>
<menu id="ProblemManagement" xsi:type="MenuGroup" _delta="define_if_not_exists"> <menu id="ProblemManagement" xsi:type="MenuGroup" _delta="define_if_not_exists">
<rank>42</rank> <rank>42</rank>
<style> <style>
<decoration_classes>fas fa-question</decoration_classes> <decoration_classes>fas fa-question</decoration_classes>
</style> </style>
</menu> </menu>
<menu id="Problem:Shortcuts" xsi:type="TemplateMenuNode" _delta="define_if_not_exists"> <menu id="Problem:Shortcuts" xsi:type="TemplateMenuNode" _delta="define_if_not_exists">
<rank>5</rank> <rank>5</rank>

View File

@@ -112,6 +112,8 @@
<ext_key_to_me>oauth_client_id</ext_key_to_me> <ext_key_to_me>oauth_client_id</ext_key_to_me>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods> <methods>

View File

@@ -18,4 +18,4 @@
</arguments> </arguments>
</event> </event>
</events> </events>
</itop_design> </itop_design>

View File

@@ -1,157 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1"> <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<portals> <portals>
<portal id="itop-portal" _delta="define"><!-- ID must match module_design[id] --> <portal id="itop-portal" _delta="define">
<url>pages/exec.php?exec_module=itop-portal-base&amp;exec_page=index.php&amp;portal_id=itop-portal</url><!-- portal_id must match module_design[id] --> <!-- ID must match module_design[id] -->
<rank>1.0</rank> <url>pages/exec.php?exec_module=itop-portal-base&amp;exec_page=index.php&amp;portal_id=itop-portal</url>
<handler /> <!-- portal_id must match module_design[id] -->
<allow> <rank>1.0</rank>
<handler/>
<allow>
</allow> </allow>
<deny /> <deny/>
</portal> </portal>
</portals> </portals>
<module_designs> <module_designs>
<module_design id="itop-portal" xsi:type="portal" _delta="define"> <module_design id="itop-portal" xsi:type="portal" _delta="define">
<properties> <properties>
<name>portal:itop-portal</name> <name>portal:itop-portal</name>
<!-- Can be either a fileref or a relative path to the file (To be tested). Takes over env-xxx/branding/portal-logo.png --> <!-- Can be either a fileref or a relative path to the file (To be tested). Takes over env-xxx/branding/portal-logo.png -->
<!-- Priority order is <logo> from xml > env-xxx/branding/portal-logo.png > /images/logo-itop-dark-bg.svg --> <!-- Priority order is <logo> from xml > env-xxx/branding/portal-logo.png > /images/logo-itop-dark-bg.svg -->
<!--<fileref ref="brt_6a2be154b2a62659d3332c513bdad715" />--> <!--<fileref ref="brt_6a2be154b2a62659d3332c513bdad715" />-->
<!--<logo>../images/itop-logo.png</logo>--> <!--<logo>../images/itop-logo.png</logo>-->
<!-- Can be either a fileref or a relative path to the file from /env-xxx (eg. itop-portal-base/mystyle.css) --> <!-- Can be either a fileref or a relative path to the file from /env-xxx (eg. itop-portal-base/mystyle.css) -->
<!-- Available themes must have a unique id. Some ids are loaded in a specific order : bootstrap/portal/custom. Other ids are loaded after them, but their order cannot be predicted --> <!-- Available themes must have a unique id. Some ids are loaded in a specific order : bootstrap/portal/custom. Other ids are loaded after them, but their order cannot be predicted -->
<themes/> <themes/>
<!-- Can be either a fileref or a relative path to the file from /env-xxx (eg. itop-portal-base/mytemplate.html.twig) --> <!-- Can be either a fileref or a relative path to the file from /env-xxx (eg. itop-portal-base/mytemplate.html.twig) -->
<!-- Available templates are id="layout|home" --> <!-- Available templates are id="layout|home" -->
<templates/> <templates/>
<!-- Class used for generating objects view/edit urls (eg. in linked sets). --> <!-- Class used for generating objects view/edit urls (eg. in linked sets). -->
<!-- Note: Notification placeholders are NOT using this but the "DBObject::RegisterURLMakerClass(<PORTAL_ID>, <CLASS_NAME>)" declarations. --> <!-- Note: Notification placeholders are NOT using this but the "DBObject::RegisterURLMakerClass(<PORTAL_ID>, <CLASS_NAME>)" declarations. -->
<urlmaker_class>iTopPortalViewUrlMaker</urlmaker_class> <urlmaker_class>iTopPortalViewUrlMaker</urlmaker_class>
<!-- An OQL query to determine which TriggerOnPortalUpdate to use within THIS instance of the portal. This is mostly needed to enable different triggers on several portal instances --> <!-- An OQL query to determine which TriggerOnPortalUpdate to use within THIS instance of the portal. This is mostly needed to enable different triggers on several portal instances -->
<!-- Note : ":parent_classes" parameter is a reserved name that will be used for the current object class name (and its ancestors) --> <!-- Note : ":parent_classes" parameter is a reserved name that will be used for the current object class name (and its ancestors) -->
<triggers_query><![CDATA[SELECT TriggerOnPortalUpdate AS t WHERE t.target_class IN (:parent_classes)]]></triggers_query> <triggers_query><![CDATA[SELECT TriggerOnPortalUpdate AS t WHERE t.target_class IN (:parent_classes)]]></triggers_query>
<attachments> <attachments>
<allow_delete>true</allow_delete> <allow_delete>true</allow_delete>
</attachments> </attachments>
<allowed_portals> <allowed_portals>
<!-- Defines how other portals -allowed for the current user- will be opened. "tab" for a new tab, "self" for the current window --> <!-- Defines how other portals -allowed for the current user- will be opened. "tab" for a new tab, "self" for the current window -->
<opening_mode>tab</opening_mode> <opening_mode>tab</opening_mode>
</allowed_portals> </allowed_portals>
</properties> </properties>
<classes> <classes>
<class id="User" _delta="define"> <class id="User" _delta="define">
<!-- Allow <allowed_profile>s to apply the <transition>s below. Flags on <field>s will be merged with those from datamodel --> <!-- Allow <allowed_profile>s to apply the <transition>s below. Flags on <field>s will be merged with those from datamodel -->
<!-- See example in UserRequest class --> <!-- See example in UserRequest class -->
<!--<lifecycle/>--> <!--<lifecycle/>-->
<scopes> <scopes>
<!-- Note : Silos apply to those scope queries --> <!-- Note : Silos apply to those scope queries -->
<scope id="all"> <scope id="all">
<oql_view><![CDATA[SELECT User AS U JOIN Person AS P ON U.contactid=P.id WHERE P.id = :current_contact_id]]></oql_view> <oql_view><![CDATA[SELECT User AS U JOIN Person AS P ON U.contactid=P.id WHERE P.id = :current_contact_id]]></oql_view>
<!-- No object of this class can be edited --> <!-- No object of this class can be edited -->
<!--<oql_edit />--> <!--<oql_edit />-->
<!-- Everybody --> <!-- Everybody -->
<!--<allowed_profiles />--> <!--<allowed_profiles />-->
</scope> </scope>
</scopes> </scopes>
</class> </class>
<class id="Organization" _delta="define"> <class id="Organization" _delta="define">
<scopes> <scopes>
<scope id="all"> <scope id="all">
<oql_view><![CDATA[SELECT Organization WHERE id = :current_contact->org_id]]></oql_view> <oql_view><![CDATA[SELECT Organization WHERE id = :current_contact->org_id]]></oql_view>
</scope> </scope>
</scopes> </scopes>
</class> </class>
<class id="Location" _delta="define"> <class id="Location" _delta="define">
<scopes> <scopes>
<scope id="all"> <scope id="all">
<oql_view><![CDATA[SELECT Location WHERE org_id = :current_contact->org_id]]></oql_view> <oql_view><![CDATA[SELECT Location WHERE org_id = :current_contact->org_id]]></oql_view>
</scope> </scope>
</scopes> </scopes>
</class> </class>
<class id="Contact" _delta="define"> <class id="Contact" _delta="define">
<scopes> <scopes>
<scope id="all"> <scope id="all">
<oql_view><![CDATA[SELECT Contact WHERE org_id = :current_contact->org_id]]></oql_view> <oql_view><![CDATA[SELECT Contact WHERE org_id = :current_contact->org_id]]></oql_view>
</scope> </scope>
<scope id="admin"> <scope id="admin">
<oql_view><![CDATA[SELECT Contact]]></oql_view> <oql_view><![CDATA[SELECT Contact]]></oql_view>
<allowed_profiles> <allowed_profiles>
<allowed_profile id="Administrator"/> <allowed_profile id="Administrator"/>
</allowed_profiles> </allowed_profiles>
</scope> </scope>
</scopes> </scopes>
<lists> <lists>
<list id="default"> <list id="default">
<items> <items>
<item id="status"> <item id="status">
<rank>10</rank> <rank>10</rank>
</item> </item>
<item id="org_id"> <item id="org_id">
<rank>20</rank> <rank>20</rank>
</item> </item>
<item id="function"> <item id="function">
<rank>50</rank> <rank>50</rank>
</item> </item>
</items> </items>
</list> </list>
</lists> </lists>
</class> </class>
</classes> </classes>
<bricks> <bricks>
<brick id="user-profile" xsi:type="Combodo\iTop\Portal\Brick\UserProfileBrick"> <brick id="user-profile" xsi:type="Combodo\iTop\Portal\Brick\UserProfileBrick">
<rank> <rank>
<!-- Can be either a <default> tag for both home page and navigation menu or distinct <home> or/and <navigation_menu> tags--> <!-- Can be either a <default> tag for both home page and navigation menu or distinct <home> or/and <navigation_menu> tags-->
<default>1</default> <default>1</default>
</rank> </rank>
<title> <title>
<!-- Can be either a <default> tag for both home page and navigation menu or distinct <home> or/and <navigation_menu> tags--> <!-- Can be either a <default> tag for both home page and navigation menu or distinct <home> or/and <navigation_menu> tags-->
<default>Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil</default> <default>Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil</default>
</title> </title>
<decoration_class> <decoration_class>
<default>fas fa-user fa-2x</default> <default>fas fa-user fa-2x</default>
</decoration_class> </decoration_class>
<!-- Show / hide some of the user profile forms by setting the tag value to true|false --> <!-- Show / hide some of the user profile forms by setting the tag value to true|false -->
<!--<show_picture_form>true</show_picture_form>--> <!--<show_picture_form>true</show_picture_form>-->
<!--<show_preferences_form>true</show_preferences_form>--> <!--<show_preferences_form>true</show_preferences_form>-->
<!--<show_password_form>true</show_password_form>--> <!--<show_password_form>true</show_password_form>-->
<form> <form>
<!-- Optional tag to list the fields. If empty only fields from <twig> tag will be displayed, if omitted fields from zlist details will. --> <!-- Optional tag to list the fields. If empty only fields from <twig> tag will be displayed, if omitted fields from zlist details will. -->
<fields /> <fields/>
<!-- Optional tag to specify the form layout. Fields that are not positioned in the layout will be placed at the end of the form --> <!-- Optional tag to specify the form layout. Fields that are not positioned in the layout will be placed at the end of the form -->
<twig> <twig>
<!-- data-field-id attribute must be an attribute code of the class --> <!-- data-field-id attribute must be an attribute code of the class -->
<!-- data-field-flags attribute contains flags among read_only/hidden/mandatory/must_prompt/must_change --> <!-- data-field-flags attribute contains flags among read_only/hidden/mandatory/must_prompt/must_change -->
<div class="form_field" data-field-id="first_name" data-field-flags="read_only"> <div class="form_field" data-field-id="first_name" data-field-flags="read_only">
</div> </div>
<div class="form_field" data-field-id="name" data-field-flags="read_only"> <div class="form_field" data-field-id="name" data-field-flags="read_only">
</div> </div>
<div class="form_field" data-field-id="org_id" data-field-flags="read_only"> <div class="form_field" data-field-id="org_id" data-field-flags="read_only">
</div> </div>
<div class="form_field" data-field-id="email" data-field-flags="read_only"> <div class="form_field" data-field-id="email" data-field-flags="read_only">
</div> </div>
<div class="form_field" data-field-id="phone"> <div class="form_field" data-field-id="phone">
</div> </div>
<div class="form_field" data-field-id="location_id"> <div class="form_field" data-field-id="location_id">
</div> </div>
<div class="form_field" data-field-id="function"> <div class="form_field" data-field-id="function">
</div> </div>
<div class="form_field" data-field-id="manager_id" data-field-flags="read_only"> <div class="form_field" data-field-id="manager_id" data-field-flags="read_only">
</div> </div>
</twig> </twig>
</form> </form>
</brick> </brick>
</bricks> </bricks>
<navigation_rules> <navigation_rules>
<!-- Close form (either the modal or the whole page) --> <!-- Close form (either the modal or the whole page) -->
<navigation_rule id="close-form" xsi:type="close" _delta="define"/> <navigation_rule id="close-form" xsi:type="close" _delta="define"/>
<!-- Go to the homepage --> <!-- Go to the homepage -->
<navigation_rule id="go-to-homepage" xsi:type="go-to-homepage" _delta="define"/> <navigation_rule id="go-to-homepage" xsi:type="go-to-homepage" _delta="define"/>
</navigation_rules> </navigation_rules>
</module_design> </module_design>
</module_designs> </module_designs>
<module_parameters> <module_parameters>
<parameters id="itop-portal" _delta="define"> <parameters id="itop-portal" _delta="define">
<lazy_loading_threshold>500</lazy_loading_threshold><!-- Will be placed in the conf/<env>/config-itop.php file under the itop-portal module's settings --> <lazy_loading_threshold>500</lazy_loading_threshold>
<!-- Will be placed in the conf/<env>/config-itop.php file under the itop-portal module's settings -->
</parameters> </parameters>
</module_parameters> </module_parameters>
</itop_design> </itop_design>

View File

@@ -167,8 +167,8 @@
<class id="QueryOQL"/> <class id="QueryOQL"/>
<!-- SynchroData group --> <!-- SynchroData group -->
<class id="SynchroDataSource"/> <class id="SynchroDataSource"/>
<class id="SynchroAttribute"/> <class id="SynchroAttribute"/>
<class id="SynchroReplica"/> <class id="SynchroReplica"/>
</classes> </classes>
</group> </group>
</groups> </groups>

View File

@@ -100,6 +100,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote> <ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="documents_list" xsi:type="AttributeLinkedSetIndirect"> <field id="documents_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContractToDocument</linked_class> <linked_class>lnkContractToDocument</linked_class>
@@ -108,6 +109,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote> <ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="description" xsi:type="AttributeText"> <field id="description" xsi:type="AttributeText">
<sql>description</sql> <sql>description</sql>
@@ -193,8 +195,7 @@
</fields> </fields>
<methods> <methods>
<method id="PrefillSearchForm"> <method id="PrefillSearchForm">
<code> <code><![CDATA[
<![CDATA[
public function PrefillSearchForm(&$aContextParam) public function PrefillSearchForm(&$aContextParam)
{ {
if($aContextParam['dest_class'] == 'Service' || is_subclass_of($aContextParam['dest_class'], 'Service')) if($aContextParam['dest_class'] == 'Service' || is_subclass_of($aContextParam['dest_class'], 'Service'))
@@ -217,8 +218,7 @@ public function PrefillSearchForm(&$aContextParam)
} }
} }
} }
]]> ]]></code>
</code>
</method> </method>
</methods> </methods>
<presentation> <presentation>
@@ -432,6 +432,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote> <ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect"> <field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToFunctionalCI</linked_class> <linked_class>lnkCustomerContractToFunctionalCI</linked_class>
@@ -440,6 +441,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote> <ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="providercontracts_list" xsi:type="AttributeLinkedSetIndirect"> <field id="providercontracts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToProviderContract</linked_class> <linked_class>lnkCustomerContractToProviderContract</linked_class>
@@ -448,6 +450,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>providercontract_id</ext_key_to_remote> <ext_key_to_remote>providercontract_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -606,6 +609,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote> <ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="sla" xsi:type="AttributeString"> <field id="sla" xsi:type="AttributeString">
<sql>sla</sql> <sql>sla</sql>
@@ -958,10 +962,12 @@ public function PrefillSearchForm(&$aContextParam)
<field id="services_list" xsi:type="AttributeLinkedSet"> <field id="services_list" xsi:type="AttributeLinkedSet">
<linked_class>Service</linked_class> <linked_class>Service</linked_class>
<ext_key_to_me>servicefamily_id</ext_key_to_me> <ext_key_to_me>servicefamily_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<duplicates/> <duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -1069,6 +1075,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote> <ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect"> <field id="contacts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContactToService</linked_class> <linked_class>lnkContactToService</linked_class>
@@ -1077,6 +1084,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote> <ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="status" xsi:type="AttributeEnum"> <field id="status" xsi:type="AttributeEnum">
<values> <values>
@@ -1110,14 +1118,17 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>customercontract_id</ext_key_to_remote> <ext_key_to_remote>customercontract_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="servicesubcategories_list" xsi:type="AttributeLinkedSet"> <field id="servicesubcategories_list" xsi:type="AttributeLinkedSet">
<linked_class>ServiceSubcategory</linked_class> <linked_class>ServiceSubcategory</linked_class>
<ext_key_to_me>service_id</ext_key_to_me> <ext_key_to_me>service_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<duplicates/> <duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -1587,6 +1598,7 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>slt_id</ext_key_to_remote> <ext_key_to_remote>slt_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="customercontracts_list" xsi:type="AttributeLinkedSetIndirect"> <field id="customercontracts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToService</linked_class> <linked_class>lnkCustomerContractToService</linked_class>
@@ -1595,13 +1607,14 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>customercontract_id</ext_key_to_remote> <ext_key_to_remote>customercontract_id</ext_key_to_remote>
<duplicates>true</duplicates> <duplicates>true</duplicates>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods> <methods>
<method id="DoCheckToWrite"> <method id="DoCheckToWrite">
<static>false</static> <static>false</static>
<access>public</access> <access>public</access>
<code><![CDATA[ <code><![CDATA[
public function DoCheckToWrite() public function DoCheckToWrite()
{ {
parent::DoCheckToWrite(); parent::DoCheckToWrite();
@@ -1628,7 +1641,7 @@ public function PrefillSearchForm(&$aContextParam)
} }
} }
]]></code> ]]></code>
</method> </method>
</methods> </methods>
<presentation> <presentation>
<details> <details>
@@ -2279,14 +2292,17 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote> <ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="customers_list" xsi:type="AttributeLinkedSet"> <field id="customers_list" xsi:type="AttributeLinkedSet">
<linked_class>Organization</linked_class> <linked_class>Organization</linked_class>
<ext_key_to_me>deliverymodel_id</ext_key_to_me> <ext_key_to_me>deliverymodel_id</ext_key_to_me>
<edit_mode>add_remove</edit_mode> <legacy_edit_mode>add_remove</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<duplicates/> <duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -2479,9 +2495,9 @@ public function PrefillSearchForm(&$aContextParam)
<menus> <menus>
<menu id="ServiceManagement" xsi:type="MenuGroup" _delta="define"> <menu id="ServiceManagement" xsi:type="MenuGroup" _delta="define">
<rank>60</rank> <rank>60</rank>
<style> <style>
<decoration_classes>fas fa-hands-helping</decoration_classes> <decoration_classes>fas fa-hands-helping</decoration_classes>
</style> </style>
</menu> </menu>
<menu id="Service:Overview" xsi:type="DashboardMenuNode" _delta="define"> <menu id="Service:Overview" xsi:type="DashboardMenuNode" _delta="define">
<rank>0</rank> <rank>0</rank>

View File

@@ -30,10 +30,12 @@
<field id="logicalvolume_list" xsi:type="AttributeLinkedSet"> <field id="logicalvolume_list" xsi:type="AttributeLinkedSet">
<linked_class>LogicalVolume</linked_class> <linked_class>LogicalVolume</linked_class>
<ext_key_to_me>storagesystem_id</ext_key_to_me> <ext_key_to_me>storagesystem_id</ext_key_to_me>
<edit_mode>in_place</edit_mode> <legacy_edit_mode>in_place</legacy_edit_mode>
<tracking_level>all</tracking_level> <tracking_level>all</tracking_level>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>
@@ -285,6 +287,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>datacenterdevice_id</ext_key_to_remote> <ext_key_to_remote>datacenterdevice_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>
@@ -529,10 +532,12 @@
<field id="tapes_list" xsi:type="AttributeLinkedSet"> <field id="tapes_list" xsi:type="AttributeLinkedSet">
<linked_class>Tape</linked_class> <linked_class>Tape</linked_class>
<ext_key_to_me>tapelibrary_id</ext_key_to_me> <ext_key_to_me>tapelibrary_id</ext_key_to_me>
<edit_mode>in_place</edit_mode> <legacy_edit_mode>in_place</legacy_edit_mode>
<tracking_level>all</tracking_level> <tracking_level>all</tracking_level>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>
@@ -777,10 +782,12 @@
<field id="nasfilesystem_list" xsi:type="AttributeLinkedSet"> <field id="nasfilesystem_list" xsi:type="AttributeLinkedSet">
<linked_class>NASFileSystem</linked_class> <linked_class>NASFileSystem</linked_class>
<ext_key_to_me>nas_id</ext_key_to_me> <ext_key_to_me>nas_id</ext_key_to_me>
<edit_mode>in_place</edit_mode> <legacy_edit_mode>in_place</legacy_edit_mode>
<tracking_level>all</tracking_level> <tracking_level>all</tracking_level>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>
@@ -1381,6 +1388,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>server_id</ext_key_to_remote> <ext_key_to_remote>server_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
<field id="virtualdevices_list" xsi:type="AttributeLinkedSetIndirect"> <field id="virtualdevices_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkVirtualDeviceToVolume</linked_class> <linked_class>lnkVirtualDeviceToVolume</linked_class>
@@ -1389,6 +1397,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>virtualdevice_id</ext_key_to_remote> <ext_key_to_remote>virtualdevice_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>

View File

@@ -282,9 +282,11 @@
<field id="person_list" xsi:type="AttributeLinkedSet"> <field id="person_list" xsi:type="AttributeLinkedSet">
<linked_class>Person</linked_class> <linked_class>Person</linked_class>
<ext_key_to_me>location_id</ext_key_to_me> <ext_key_to_me>location_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -674,6 +676,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>team_id</ext_key_to_remote> <ext_key_to_remote>team_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods> <methods>
@@ -921,6 +924,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>person_id</ext_key_to_remote> <ext_key_to_remote>person_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -1882,11 +1886,11 @@
</theme> </theme>
</themes> </themes>
<themes_common> <themes_common>
<variables> <variables>
</variables> </variables>
<imports> <imports>
</imports> </imports>
<stylesheets> <stylesheets>
</stylesheets> </stylesheets>
</themes_common> </themes_common>
</branding> </branding>
@@ -1897,4 +1901,4 @@
</profiles> </profiles>
</user_rights> </user_rights>
<constants/> <constants/>
</itop_design> </itop_design>

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@
</attributes> </attributes>
</naming> </naming>
<fields_semantic> <fields_semantic>
<state_attribute>status</state_attribute> <state_attribute>status</state_attribute>
</fields_semantic> </fields_semantic>
<style> <style>
<icon/> <icon/>
@@ -61,6 +61,7 @@
<count_max>0</count_max> <count_max>0</count_max>
<ext_key_to_remote>volume_id</ext_key_to_remote> <ext_key_to_remote>volume_id</ext_key_to_remote>
<duplicates/> <duplicates/>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<methods/> <methods/>
@@ -169,9 +170,11 @@
<field id="virtualmachine_list" xsi:type="AttributeLinkedSet"> <field id="virtualmachine_list" xsi:type="AttributeLinkedSet">
<linked_class>VirtualMachine</linked_class> <linked_class>VirtualMachine</linked_class>
<ext_key_to_me>virtualhost_id</ext_key_to_me> <ext_key_to_me>virtualhost_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
</fields> </fields>
<presentation> <presentation>
@@ -437,9 +440,11 @@
<field id="hypervisor_list" xsi:type="AttributeLinkedSet"> <field id="hypervisor_list" xsi:type="AttributeLinkedSet">
<linked_class>Hypervisor</linked_class> <linked_class>Hypervisor</linked_class>
<ext_key_to_me>farm_id</ext_key_to_me> <ext_key_to_me>farm_id</ext_key_to_me>
<edit_mode>add_only</edit_mode> <legacy_edit_mode>add_only</legacy_edit_mode>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="redundancy" xsi:type="AttributeRedundancySettings"> <field id="redundancy" xsi:type="AttributeRedundancySettings">
<sql>redundancy</sql> <sql>redundancy</sql>
@@ -626,10 +631,12 @@
<field id="logicalinterface_list" xsi:type="AttributeLinkedSet"> <field id="logicalinterface_list" xsi:type="AttributeLinkedSet">
<linked_class>LogicalInterface</linked_class> <linked_class>LogicalInterface</linked_class>
<ext_key_to_me>virtualmachine_id</ext_key_to_me> <ext_key_to_me>virtualmachine_id</ext_key_to_me>
<edit_mode>in_place</edit_mode> <legacy_edit_mode>in_place</legacy_edit_mode>
<tracking_level>all</tracking_level> <tracking_level>all</tracking_level>
<count_min>0</count_min> <count_min>0</count_min>
<count_max>0</count_max> <count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field> </field>
<field id="managementip" xsi:type="AttributeIPAddress"> <field id="managementip" xsi:type="AttributeIPAddress">
<sql>managementip</sql> <sql>managementip</sql>
@@ -905,7 +912,7 @@
<dashlet id="38" xsi:type="DashletHeaderStatic"> <dashlet id="38" xsi:type="DashletHeaderStatic">
<rank>0</rank> <rank>0</rank>
<title>Menu:ConfigManagement:virtualization</title> <title>Menu:ConfigManagement:virtualization</title>
<icon>../images/icons/icons8-old-vmware-logo.svg</icon> <icon>../images/icons/icons8-old-vmware-logo.svg</icon>
</dashlet> </dashlet>
<dashlet id="39" xsi:type="DashletBadge"> <dashlet id="39" xsi:type="DashletBadge">
<rank>1</rank> <rank>1</rank>

View File

@@ -11,11 +11,11 @@
<cell id="0"> <cell id="0">
<rank>0</rank> <rank>0</rank>
<dashlets> <dashlets>
<dashlet id="1" xsi:type="DashletHeaderStatic"> <dashlet id="1" xsi:type="DashletHeaderStatic">
<rank>0</rank> <rank>0</rank>
<title>Menu:ConfigManagementCI</title> <title>Menu:ConfigManagementCI</title>
<icon>../images/icons/icons8-database.svg</icon> <icon>../images/icons/icons8-database.svg</icon>
</dashlet> </dashlet>
<dashlet id="4" xsi:type="DashletBadge"> <dashlet id="4" xsi:type="DashletBadge">
<rank>3</rank> <rank>3</rank>
<class>Contact</class> <class>Contact</class>