Compare commits

..

170 Commits

Author SHA1 Message Date
Eric
b0414748cb Typo 2019-06-13 11:55:10 +02:00
Molkobain
b6418d95e7 Add PHPDoc for type hinting as iTop replaces \DOMDocument with \MFDocument 2019-05-28 10:36:18 +02:00
Molkobain
2d6251e5df 💄 Add warning message CSS class (like error message) 2019-05-15 17:53:48 +02:00
Molkobain
91f410a85c 💄 Fix images being too large in icon selector (dashboards and Designer)
Note: The widget still needs a more aggressive refactoring to render nicely...
2019-05-02 16:42:21 +02:00
Eric
0a48696cd8 Carbon: N°1855 - Fix: Cannot remove last 'dependencies' with UI
Note that multi-select value when no entry is selected is "" and not []
in order to be posted, so multi-select values are not always arrays.
2019-04-30 15:46:44 +02:00
Eric
2f71570390 Carbon: N°1855 - fix "depends on" displaying fields from children 2019-04-30 12:02:13 +02:00
Molkobain
78b6c03af7 💡 Add some PHPDoc 2019-04-25 12:46:57 +02:00
Molkobain
22342cdc05 🐛 N°2184 Fix validation issue when several label fiels in a dashlet/designer form 2019-04-25 12:42:16 +02:00
Molkobain
dcf4963e0c N°2152 Fix bad XML generation when adding a dashboard attribute on a new class 2019-04-16 17:15:15 +02:00
Eric
9ec36a76f6 Carbon: N°1589 - Check migration 2019-04-10 12:12:31 +02:00
Eric
09b470e6c7 Better output 2019-04-09 10:43:39 +02:00
Molkobain
40151c7a43 N°2147 Fix non working impact relation when based on default value 2019-04-05 16:25:26 +02:00
Molkobain
34c030b501 N°2070 Extend ModelFactory implementations to optionally check meta classes (PHP) along with regular XML classes 2019-04-05 15:48:29 +02:00
Molkobain
c59d3cc624 Fix unreachable log message on exception 2019-04-01 16:52:22 +02:00
Vladimir Kunin
b5c4801beb 🌐 Russian translations for 2.6.1 (#70) 2019-03-25 16:29:05 +01:00
Molkobain
3eff8f62b1 Merge branch 'support/2.5' 2019-03-25 15:47:51 +01:00
Molkobain
16c8466841 N°2115 Fix regression introduced in N°1443: Left pane menu not showing due a JS error 2019-03-25 15:39:45 +01:00
Eric
b83e5e2b72 N°1618 - Fix custom date format: Fix issue with in-line creation 2019-03-22 15:42:11 +01:00
Eric
764b0f8e31 N°1846 - Fix Object Copier: Create Ticket from CI, duplicate links
(cherry picked from commit 44b7821015)
2019-03-22 11:06:23 +01:00
Pierre Goiffon
cac0da4e3d Merge remote-tracking branch 'origin/support/2.5'
# Conflicts:
#	application/utils.inc.php
#	css/css-variables.scss
#	css/light-grey.css
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/itop-attachments/module.attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2019-03-21 17:39:26 +01:00
Pierre Goiffon
7e064365eb N°1968 Uniqueness : fix only root disabled class was removed from searches
Now all of the following hierarchy is excluded
2019-03-21 17:25:51 +01:00
Pierre Goiffon
7c7382f372 N°1835 add new 'transaction_id' sanitize filter 2019-03-21 14:28:24 +01:00
Pierre Goiffon
4918b9c83a 💡 Add phpdoc for N°1835 new Sanitize param 2019-03-21 12:04:31 +01:00
Pierre Goiffon
ed95f4e05f 📦 Update CSS for 2.6.1 2019-03-19 11:58:48 +01:00
Pierre Goiffon
9f0e8dc49b 📦 Update CSS for 2.5.2 2019-03-19 11:47:29 +01:00
Pierre Goiffon
693fdfdc5b 📦 Update versions for 2.6.1, woops wrong version on previous commit 2019-03-19 11:39:11 +01:00
Pierre Goiffon
b8d5c01382 📦 Update versions for 2.5.2 2019-03-19 11:37:15 +01:00
Pierre Goiffon
01108ca83d 📦 Update versions for 2.6.1 2019-03-19 11:35:42 +01:00
Pierre Goiffon
3d5b7197f6 📦 Update modules versions for 2.6.1 2019-03-19 11:34:01 +01:00
Pierre Goiffon
d3db77c675 📦 Update modules versions for 2.5.2 2019-03-19 11:29:37 +01:00
Pierre Goiffon
54c027823b 🌐 Fix dict automatic update 2019-03-19 11:14:39 +01:00
Pierre Goiffon
f63aceeabe Merge remote-tracking branch 'origin/support/2.5'
# Conflicts:
#	datamodels/2.x/authent-external/da.dict.authent-external.php
#	datamodels/2.x/authent-external/de.dict.authent-external.php
#	datamodels/2.x/authent-external/fr.dict.authent-external.php
#	datamodels/2.x/authent-external/hu.dict.authent-external.php
#	datamodels/2.x/authent-external/ja.dict.authent-external.php
#	datamodels/2.x/authent-external/nl.dict.authent-external.php
#	datamodels/2.x/authent-external/pt_br.dict.authent-external.php
#	datamodels/2.x/authent-external/zh_cn.dict.authent-external.php
#	datamodels/2.x/authent-ldap/cs.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/da.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/de.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/fr.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/hu.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/ja.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/nl.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/pt_br.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/ru.dict.authent-ldap.php
#	datamodels/2.x/authent-ldap/zh_cn.dict.authent-ldap.php
#	datamodels/2.x/authent-local/da.dict.authent-local.php
#	datamodels/2.x/authent-local/de.dict.authent-local.php
#	datamodels/2.x/authent-local/fr.dict.authent-local.php
#	datamodels/2.x/authent-local/hu.dict.authent-local.php
#	datamodels/2.x/authent-local/ja.dict.authent-local.php
#	datamodels/2.x/authent-local/nl.dict.authent-local.php
#	datamodels/2.x/authent-local/pt_br.dict.authent-local.php
#	datamodels/2.x/authent-local/ru.dict.authent-local.php
#	datamodels/2.x/authent-local/zh_cn.dict.authent-local.php
#	datamodels/2.x/itop-attachments/cs.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/da.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/de.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/en.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/es_cr.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/fr.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/hu.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/it.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/ja.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/nl.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/pt_br.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/tr.dict.itop-attachments.php
#	datamodels/2.x/itop-attachments/zh_cn.dict.itop-attachments.php
#	datamodels/2.x/itop-backup/da.dict.itop-backup.php
#	datamodels/2.x/itop-backup/de.dict.itop-backup.php
#	datamodels/2.x/itop-backup/es_cr.dict.itop-backup.php
#	datamodels/2.x/itop-backup/hu.dict.itop-backup.php
#	datamodels/2.x/itop-backup/it.dict.itop-backup.php
#	datamodels/2.x/itop-backup/ja.dict.itop-backup.php
#	datamodels/2.x/itop-backup/nl.dict.itop-backup.php
#	datamodels/2.x/itop-backup/tr.dict.itop-backup.php
#	datamodels/2.x/itop-change-mgmt-itil/da.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/de.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/fr.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/hu.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/it.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/ja.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/nl.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/ru.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt-itil/zh_cn.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/da.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/de.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/fr.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/hu.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/it.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/ja.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/nl.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/pt_br.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/ru.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/tr.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-change-mgmt/zh_cn.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/cs.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/da.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/de.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/es_cr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/fr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/hu.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/it.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/ja.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/nl.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/pt_br.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/ru.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/tr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config-mgmt/zh_cn.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config/da.dict.itop-config.php
#	datamodels/2.x/itop-config/de.dict.itop-config.php
#	datamodels/2.x/itop-config/es_cr.dict.itop-config.php
#	datamodels/2.x/itop-config/fr.dict.itop-config.php
#	datamodels/2.x/itop-config/hu.dict.itop-config.php
#	datamodels/2.x/itop-config/it.dict.itop-config.php
#	datamodels/2.x/itop-config/ja.dict.itop-config.php
#	datamodels/2.x/itop-config/nl.dict.itop-config.php
#	datamodels/2.x/itop-config/pt_br.dict.itop-config.php
#	datamodels/2.x/itop-config/tr.dict.itop-config.php
#	datamodels/2.x/itop-datacenter-mgmt/cs.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/da.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/de.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/es_cr.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/fr.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/hu.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/it.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/ja.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/nl.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/pt_br.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/ru.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/tr.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-datacenter-mgmt/zh_cn.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/cs.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/da.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/de.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/es_cr.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/fr.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/hu.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/it.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/ja.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/nl.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/pt_br.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/ru.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/tr.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-endusers-devices/zh_cn.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-hub-connector/cs.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/da.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/de.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/es_cr.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/fr.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/hu.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/it.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/ja.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/nl.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/pt_br.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/ru.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/tr.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/zh_cn.dict.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/cs.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/da.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/de.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/es_cr.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/hu.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/it.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/ja.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/nl.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/pt_br.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/ru.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/tr.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-incident-mgmt-itil/zh_cn.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/cs.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/da.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/de.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/hu.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/it.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/ja.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/nl.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/tr.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/zh_cn.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/da.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/de.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/hu.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/it.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/ja.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/nl.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/ru.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/tr.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal-base/zh_cn.dict.itop-portal-base.php
#	datamodels/2.x/itop-problem-mgmt/da.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/de.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/fr.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/hu.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/it.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/ja.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/nl.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/ru.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/zh_cn.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-request-mgmt-itil/cs.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/da.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/de.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/en.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/es_cr.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/fr.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/hu.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/it.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/ja.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/pt_br.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/ru.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/tr.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/zh_cn.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/cs.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/da.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/de.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/fr.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/hu.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/it.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/ja.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/nl.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/ru.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/tr.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-request-mgmt/zh_cn.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/cs.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/da.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/de.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/en.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/fr.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/hu.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/it.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/ja.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/nl.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/pt_br.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/ru.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/tr.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt-provider/zh_cn.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/cs.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/da.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/de.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/en.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/fr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/hu.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/it.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/ja.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/nl.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/pt_br.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/ru.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/tr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-service-mgmt/zh_cn.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/cs.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/da.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/de.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/es_cr.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/fr.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/hu.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/it.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/ja.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/nl.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/pt_br.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/ru.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/tr.dict.itop-sla-computation.php
#	datamodels/2.x/itop-sla-computation/zh_cn.dict.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/cs.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/da.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/de.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/es_cr.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/fr.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/hu.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/it.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/ja.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/nl.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/pt_br.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/ru.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/tr.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-storage-mgmt/zh_cn.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/cs.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/da.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/de.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/hu.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/it.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/ja.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/nl.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/ru.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/tr.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/zh_cn.dict.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/cs.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/da.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/de.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/es_cr.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/fr.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/hu.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/it.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/ja.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/nl.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/pt_br.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/ru.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/tr.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-virtualization-mgmt/zh_cn.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/cs.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/da.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/de.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/en.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/es_cr.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/fr.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/hu.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/it.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/ja.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/nl.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/pt_br.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/ru.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/tr.dict.itop-welcome-itil.php
#	datamodels/2.x/itop-welcome-itil/zh_cn.dict.itop-welcome-itil.php
#	dictionaries/cs.dictionary.itop.core.php
#	dictionaries/cs.dictionary.itop.ui.php
#	dictionaries/da.dictionary.itop.core.php
#	dictionaries/da.dictionary.itop.ui.php
#	dictionaries/de.dictionary.itop.core.php
#	dictionaries/de.dictionary.itop.ui.php
#	dictionaries/es_cr.dictionary.itop.core.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.core.php
#	dictionaries/fr.dictionary.itop.ui.php
#	dictionaries/hu.dictionary.itop.core.php
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/it.dictionary.itop.core.php
#	dictionaries/it.dictionary.itop.ui.php
#	dictionaries/ja.dictionary.itop.core.php
#	dictionaries/ja.dictionary.itop.ui.php
#	dictionaries/nl.dictionary.itop.core.php
#	dictionaries/nl.dictionary.itop.ui.php
#	dictionaries/pt_br.dictionary.itop.core.php
#	dictionaries/pt_br.dictionary.itop.ui.php
#	dictionaries/ru.dictionary.itop.core.php
#	dictionaries/ru.dictionary.itop.ui.php
#	dictionaries/tr.dictionary.itop.core.php
#	dictionaries/tr.dictionary.itop.ui.php
#	dictionaries/zh_cn.dictionary.itop.core.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
2019-03-19 10:54:06 +01:00
Pierre Goiffon
533e65fcd1 🌐 Fix dict automatic update 2019-03-19 10:52:43 +01:00
Pierre Goiffon
3fb0c768e6 🌐 Update dictionnaries for iTop 2.5.2 2019-03-19 10:10:28 +01:00
Pierre Goiffon
243aab1030 N°1968 Uniqueness : do not allow invalid rule overrides definition
On overrides disabled key must has a value
2019-03-18 16:07:36 +01:00
bruno DA SILVA
22dba9ae07 🐛 composer.json dependencies correctness 2019-03-18 15:00:35 +01:00
Pierre Goiffon
02857a86fd Merge remote-tracking branch 'origin/support/2.5' 2019-03-15 17:22:04 +01:00
Stephen Abello
d663d01798 N°1966: Added missing strings to dict files 2019-03-15 17:02:24 +01:00
Stephen Abello
3602163b38 Revert N°1919 and its incorrect translations 2019-03-15 17:00:53 +01:00
Molkobain
3322074ce7 🐛 N°1889 Portal: Wrong encoding of special chars like in dashlets (eg. "ö", "&", ...)
(cherry picked from commit 83bb3b6d72)
2019-03-13 17:01:57 +01:00
Molkobain
83bb3b6d72 🐛 N°1889 Portal: Wrong encoding of special chars like in dashlets (eg. "ö", "&", ...) 2019-03-13 16:56:04 +01:00
Eric
229f800266 N° 1837 - Fix Synchro Obsolescence
(cherry picked from commit 75737b4ffe)
2019-03-13 14:19:25 +01:00
Eric
75737b4ffe N° 1837 - Fix Synchro Obsolescence 2019-03-13 11:01:13 +01:00
Molkobain
a5340917a7 🐛 N°1956 Portal: Fix message content in user profile when password edition is disabled 2019-03-13 10:31:04 +01:00
Molkobain
914d19e7e4 🐛 N°2072 Fix missing/empty error message when uploading too large attachment 2019-03-13 09:51:49 +01:00
Pierre Goiffon
eb49dbbdc8 N°1968 uniqueness rules : fix search for classes hierarchy, disallow 'attributes' property overrides 2019-03-12 18:12:01 +01:00
Molkobain
912bab5a43 🐛 N°2091: Portal: Fix regression introduced in 2.5, better error message when user logged out 2019-03-12 17:08:12 +01:00
Pierre Goiffon
94092f445f Merge remote-tracking branch 'origin/support/2.5'
# Conflicts:
#	application/applicationextension.inc.php
#	webservices/rest.php
2019-03-08 14:35:02 +01:00
Eric
856c037bb0 N°2064 - Fix abstract class state list for notification triggers 2019-03-07 15:56:29 +01:00
Eric
388896b963 N°941 - Backup/Windows %, ! or " not allowed in password 2019-03-07 15:26:53 +01:00
Eric
1d8addf675 typo 2019-03-06 18:21:19 +01:00
Eric
c8c3d32b18 Error logs and corresponding eml stored by message and accessible from the console 2019-03-06 17:46:47 +01:00
Molkobain
75a0979eee N°2045 Portal: Fix regression introduced with N°1980: New request with 2 Request Templates does not display fields 2019-03-06 14:46:01 +01:00
Pierre Goiffon
d6a0a279a5 N°1449 Update REST API version for new pagination params 2019-03-04 16:00:36 +01:00
Pierre Goiffon
44f5d71e1b 💡 PHPDoc for REST API 2019-03-04 16:00:35 +01:00
Stephen Abello
9c71d32964 typo in last merge 2019-03-04 12:01:52 +01:00
Eric
d199d84b27 🌐 french typo fixed 2019-03-04 09:41:09 +01:00
Pierre Goiffon
24aca83de4 Merge remote-tracking branch 'origin/support/2.5' 2019-03-04 09:16:53 +01:00
Pierre Goiffon
3de7aa1ada 🙈 Update ignore file 2019-03-04 09:15:38 +01:00
Stephen Abello
5a0edb5c39 Merge branch 'support/2.5'
# Conflicts:
#	js/jquery.tablesorter.pager.js
2019-03-01 17:06:44 +01:00
Stephen Abello
d4fec14123 N°1443: Handle disabled selectable rows in datatables when "All checking/unchecking" 2019-03-01 12:18:07 +01:00
Eric
38951fab1a N°1618 - Custom date format: Fix issue with in-line creation 2019-02-28 17:40:49 +01:00
Pierre Goiffon
e2c8237beb Allow params "limit" and "page" in REST-API
PR #25, code author Dennis Lassiter, many thanks !
Was commited to develop first but decided to retrofit this on support/2.5 (N°1449)
(cherry picked from commit fd55bdf9a8)
(cherry picked from commit 49e31ddb3d)
2019-02-28 10:06:42 +01:00
Pierre Goiffon
1224570fa5 Merge remote-tracking branch 'origin/support/2.5' 2019-02-28 08:45:30 +01:00
Pierre Goiffon
afb99c0f4b N°2054 fix search with sSearchValue GET param in BrowseBrick 2019-02-27 16:21:29 +01:00
Eric
733c908e34 N°2043 - Fix: CSV Import reconciliation using ExternalField broken in service management for provider 2019-02-27 16:00:47 +01:00
Eric
377b4b038c N°2041 - Fix: Reset(LinkedSetIndirect) breaks data integrity 2019-02-27 09:57:01 +01:00
Eric
3f7fd6f9f9 N°1954 - Recent change on impact analysis - old change appears on result 2019-02-26 15:36:56 +01:00
Eric
1cb36621a1 N°1963 - Dashlet GroupBy: allow ExternalField selection in UI 2019-02-26 15:31:31 +01:00
Eric
ddd9188eb7 Fix non-existing variable 2019-02-26 15:24:15 +01:00
Eric
02254eac67 N°1966 - Missing dictionaries entries (recover lost translation) 2019-02-25 17:40:08 +01:00
Eric
ebe026b2e9 N°1966 - Missing dictionaries entries (other languages) 2019-02-25 17:20:47 +01:00
Eric
efc7c5b0f4 N°1966 - Missing dictionaries entries 2019-02-25 16:44:51 +01:00
Pierre Goiffon
f68a77450d Merge remote-tracking branch 'origin/support/2.5' 2019-02-25 12:10:30 +01:00
Stephen Abello
c5943c6c28 Internal: Fix a regression introduced by 6b5cc7c on dot path 2019-02-22 10:06:10 +01:00
Pierre Goiffon
bc3b50ad23 Fix wrong method call 2019-02-22 10:00:23 +01:00
Pierre Goiffon
1f7923beae Merge remote-tracking branch 'origin/support/2.5'
# Conflicts:
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	setup/setup.js
#	setup/wizardsteps.class.inc.php
2019-02-21 17:18:29 +01:00
Pierre Goiffon
2f15bbdaf3 N°2033 backup : tar generation simplify buffer size computation
(cherry picked from commit 5b46644786)
2019-02-21 17:12:18 +01:00
Eric
a2d34d1779 N°1954 - Fix recent change on impact analysis 2019-02-21 09:41:36 +01:00
Pierre Goiffon
cdba1e0d36 N°2033 backup : fix corrupted archive for files which size is a multiple of 1024 bytes
(cherry picked from commit 3356856a5f)
2019-02-20 17:29:10 +01:00
Eric
48f15d7781 N°1974 - Fix: Stimuli can be applied through URL even if the access rights are set to deny 2019-02-20 16:11:49 +01:00
Eric
d0a766d424 N°1975 - Fix: Change Menu rights to "Admin only" leads in crash test
(cherry picked from commit a89bca4626)
2019-02-20 15:06:57 +01:00
Eric
a89bca4626 N°1975 - Fix: Change Menu rights to "Admin only" leads in crash test 2019-02-20 14:57:39 +01:00
Pierre Goiffon
23ec21e494 N°2031 backup : now logs using IssueLog, and remove debug config property 2019-02-19 14:46:44 +01:00
Eric
63a36fd0f6 N°2030 - Fix function CopyAttribute for external fields 2019-02-19 14:09:14 +01:00
Pierre Goiffon
02617e8976 🔊 itop-backup : add some more logs 2019-02-19 12:21:53 +01:00
Eric
7cf7e55454 N°1823 - Fix tags not saved in case of error 2019-02-19 10:16:45 +01:00
Eric
5067c867b8 N°2014 - Fix Object modification refused when a n-n relation is locked by datasynchro 2019-02-18 15:41:06 +01:00
Stephen Abello
6b5cc7ca4b N°1877 & N°2012: Fix regression backup link on setup, security hardening 2019-02-18 10:40:51 +01:00
Eric
7bb49893ee N°1884 - Admin Tools Manager no longer has access to 'Schedule Backup' and 'Configuration' menus 2019-02-15 17:34:38 +01:00
Eric
bf62b63173 N°1884 - Admin Tools Manager no longer has access to 'Schedule Backup' and 'Configuration' menus 2019-02-15 17:33:47 +01:00
Eric
b8fb1fa78a N°1884 - Admin Tools Manager no longer has access to 'Schedule Backup' and 'Configuration' menus
(cherry picked from commit 818b4d08da)
2019-02-15 17:31:37 +01:00
Eric
818b4d08da N°1884 - Admin Tools Manager no longer has access to 'Schedule Backup' and 'Configuration' menus 2019-02-15 17:28:55 +01:00
Eric
f438fbd06f N°941 - fix regex 2019-02-15 17:06:50 +01:00
Eric
297a45d477 N°941 - Backup/Windows %, ! or " not allowed in password 2019-02-15 17:03:07 +01:00
Eric
17fe9dfd5f N°1906 - Enhancement Request: Handling a lot of many to many relations in form element (edit mode) 2019-02-15 15:33:22 +01:00
Eric
9d0cbca497 N°941 - Check DB password in configuration when saving 2019-02-14 10:57:36 +01:00
Eric
a613b4b101 Merge branch 'hotfix/N941-2' 2019-02-14 09:48:48 +01:00
Eric
c989e2eda5 N°941 - Check DB password also in configuration 2019-02-14 09:47:22 +01:00
Eric
c6fd381b01 Merge branch 'hotfix/N941' 2019-02-13 17:45:44 +01:00
Eric
a784661025 N°941 - Backup/Windows % not allowed in password 2019-02-13 17:43:32 +01:00
Eric
1f9a638bc1 N°941 - Backup/Windows % not allowed in password 2019-02-13 17:39:04 +01:00
Stephen Abello
545504c0de (retrofit from master) N°1443 : Add table_id used by tables paging
(cherry picked from commit 43b0747b83)
2019-02-13 15:13:13 +01:00
Stephen Abello
32f1e97bcd (retrofit from master) N°1148: Fix regression on export
(cherry picked from commit 90e128f951)
2019-02-13 15:13:13 +01:00
Stephen Abello
43b0747b83 N°1443 : Add table_id used by tables paging 2019-02-13 14:43:25 +01:00
Eric
9637e75f97 N°2011: Fix Issue with "ExecAsyncTask: async_task_retries" 2019-02-13 14:07:13 +01:00
Eric
84767692b0 Merge branch 'hotfix/N2016' 2019-02-13 14:04:25 +01:00
Eric
d484614c0f N°2016 - Fix Issue with "ExecAsyncTask: async_task_retries" 2019-02-13 14:03:22 +01:00
Eric
b403bace6c Merge branch 'hotfix/N2011' 2019-02-13 12:49:25 +01:00
Eric
0b751a9dd6 N°2011 - Fix search auto-completion bug 2019-02-13 12:48:05 +01:00
Eric
8f434cad08 Merge branch 'hotfix/N1963' 2019-02-13 11:01:39 +01:00
Eric
f83292fccc N°1953 - Dashlet GroupBy: allow ExternalField selection in UI 2019-02-13 10:59:40 +01:00
Stephen Abello
90e128f951 N°1148: Fix regression on export 2019-02-11 13:33:07 +01:00
Stephen Abello
8efc372a68 (retrofit from develop) N°1909: PHP 7.3 compatibility 2019-02-11 13:33:07 +01:00
Molkobain
257fb4d036 🐛 N°2019 Fix empty error message on object update 2019-02-08 15:39:01 +01:00
Stephen Abello
97261820f6 N°1919: Fix mistakes in Russian translation integration 2019-02-08 15:08:04 +01:00
Stephen Abello
2f83a2168c N°1919: Update Russian translation 2019-02-07 16:41:53 +01:00
Stephen Abello
c0275eec21 N°1955: Fix typo in German translation (thanks to ITOMIG!) 2019-02-05 10:42:42 +01:00
Pierre Goiffon
2bd7a7b5f8 Merge remote-tracking branch 'origin/support/2.5'
# Conflicts:
#	application/utils.inc.php
2019-01-31 18:43:20 +01:00
Pierre Goiffon
0aab80917a N°1921 Process InlineImage from another iTop as external images
* Notifications : do not embed InlineImage with wrong secret
* HtmlSanitizer : remove data-img-* attributes if not the same iTop (using approot from Config)
* move \HTMLDOMSanitizer::ProcessImage to \InlineImage::ProcessImageTag
* data-img-* attributes name are now InlineImage class constants
2019-01-30 11:32:47 +01:00
Pierre Goiffon
31a2b634cc 💡 Fix PHPDoc for \utils::GetAbsoluteUrlAppRoot 2019-01-30 11:16:29 +01:00
Molkobain
dc7bafa41c 🐛 N°1980 Portal: Fix form validation when request template displayed as read only 2019-01-29 17:39:02 +01:00
Pierre Goiffon
505aad1e89 Merge branch 'support/2.5'
# Conflicts:
#	datamodels/2.x/itop-hub-connector/zh_cn.dict.itop-hub-connector.php
#	lib/tcpdf/CHANGELOG.TXT
#	lib/tcpdf/composer.json
#	lib/tcpdf/include/tcpdf_fonts.php
#	lib/tcpdf/include/tcpdf_images.php
#	lib/tcpdf/include/tcpdf_static.php
#	lib/tcpdf/tcpdf.php
2019-01-28 16:04:19 +01:00
Molkobain
4508b9d7d5 N°1758 Fix read only attributes on bulk apply stimulus
(cherry picked from commit 7e3fceb7dc)
2019-01-22 16:35:22 +01:00
Stephen Abello
888aa5f958 update tcpdf to v6.2.26 (php 7.3 compatibility) 2019-01-17 10:34:07 +01:00
Stephen Abello
4051524b5c N°1933: Security hardening 2019-01-16 15:07:43 +01:00
Stephen Abello
c8c4b072b1 N°1932: Security hardening 2019-01-16 14:50:19 +01:00
Stephen Abello
08543287e8 N°1931: Security hardening 2019-01-16 10:35:38 +01:00
Stephen Abello
21e5eee31f N°1930: Security hardening 2019-01-14 11:59:45 +01:00
Stephen Abello
ed3fd851f1 N°1933: Security hardening 2019-01-14 11:57:16 +01:00
Stephen Abello
dfe81f6272 N°1935: Security hardening 2019-01-14 11:54:46 +01:00
Pierre Goiffon
00c59b7f2c Finish readme_2.5.1 2019-01-10 10:29:18 +01:00
Pierre Goiffon
dbcde14f5e 📝 README : was still pointing to 2.5.0 whereas 2.5.1 was published 2019-01-10 10:28:47 +01:00
Pierre Goiffon
a6f4adfed8 Finish 2.6.0 2019-01-09 17:27:17 +01:00
Pierre Goiffon
effaba42d0 Merge remote-tracking branch 'origin/support/2.5' into release/2.6 2019-01-09 17:24:54 +01:00
Pierre Goiffon
340cacc691 Merge remote-tracking branch 'origin/release/2.6.0-community' into release/2.6
# Conflicts:
#	install.txt
2019-01-09 17:23:43 +01:00
Stephen Abello
0bce9c78ea N°1935: Security hardening 2019-01-09 14:23:15 +01:00
Stephen Abello
48c920f848 N°1934: Security hardening 2019-01-09 11:03:05 +01:00
Pierre Goiffon
a85bedd31c Merge remote-tracking branch 'origin/support/2.5' into release/2.6
# Conflicts:
#	install.txt
2019-01-09 10:51:11 +01:00
Pierre Goiffon
23269eab77 📝 Update install.txt for 2.6.x 2019-01-09 10:45:14 +01:00
Pierre Goiffon
05bcfbe4c3 📝 Update install.txt for 2.5.x 2019-01-09 10:44:21 +01:00
Pierre Goiffon
27ad2e2169 📝 Update README.md for 2.6.0 community 2019-01-09 10:01:40 +01:00
Pierre Goiffon
5d09841cd5 📝 Update install.txt for 2.6.0 2019-01-09 09:53:20 +01:00
Eric
11ec46c18b N°1408 - Fix overview attribute when not already defined in Organization class 2019-01-08 15:19:52 +01:00
Stephen Abello
da76fc70bb N°1933: Security hardening 2019-01-07 16:46:29 +01:00
Denis Flaven
2b563d4fc8 Remove debug traces when updating objects
A very verbose debug trace in the error log was happening each time a
CmdbAbstractObject gets created non-interactively.
2019-01-07 16:24:31 +01:00
Molkobain
2773a8bf2f N°1917 Setup: Fix warnings when upgrading an extension with an extension.xml file
(cherry picked from commit 4eb416d407)
2019-01-04 14:13:33 +01:00
Eric
ad36011fc8 N°1716 - "Group by" Dashlet is no more clickable in edition 2019-01-03 17:47:27 +01:00
Eric
b82b095f58 1814 - Search with criteria : always add default criteria 2019-01-03 09:58:54 +01:00
Pierre Goiffon
2f5c810276 Merge remote-tracking branch 'origin/support/2.5' into release/2.6 2018-12-31 17:21:52 +01:00
Pierre Goiffon
d90e094d4d 📝 CONTRIBUTING : add a link to the translation wiki page 2018-12-31 16:55:51 +01:00
Molkobain
4eb416d407 N°1917 Setup: Fix warnings when upgrading an extension with an extension.xml file 2018-12-31 14:55:22 +01:00
Pierre Goiffon
636a3940cd N°1915 import : fix cannot create object with value for field that is readonly in modification
Last fix (523e19528e) was not a correct solution
2018-12-31 12:13:45 +01:00
Pierre Goiffon
352f8cee10 💡 Config : add ref to loading methods 2018-12-31 11:38:57 +01:00
Pierre Goiffon
523e19528e N°1915 import : fix cannot create object with value for field that is readonly in modification
GetAttributeFlags method returns OPT_ATT_READONLY for this field, but not GetInitialStateAttributeFlags method
2018-12-28 18:16:32 +01:00
Pierre Goiffon
9f3332b2f2 💡 PHPDoc for AttributeFlags methods 2018-12-28 16:37:03 +01:00
Pierre Goiffon
2b71621628 Merge remote-tracking branch 'origin/support/2.5' into release/2.6 2018-12-28 11:42:11 +01:00
Pierre Goiffon
5349fc6f4b 📝 CONTRIBUTING : fix some typos, more info in gitflow 2018-12-28 11:15:46 +01:00
Pierre Goiffon
1665b12b86 💡 PHPDoc for \DBObject::DBInsert methods hierarchy (and some more, too O:) ) 2018-12-27 15:07:49 +01:00
purplegrape
1bbed99636 chinsese translation improvement for relase 2.6
chinsese translation improvement for relase 2.6
2018-12-27 10:40:53 +01:00
Denis Flaven
778db225a8 N°1912: 🐛 text written in white in the PDF export of the impact analysis. 2018-12-26 15:41:00 +01:00
bruno DA SILVA
ca48e8ff92 🐛 method call correction
- do no longer provide a parameter absent from the signature
2018-12-26 15:25:04 +01:00
Pierre Goiffon
75d5630164 N°1885 move back php-gd from mandatory extension to optional
(cherry picked from commit 672bc471be)
2018-12-26 11:10:24 +01:00
Pierre Goiffon
bb6bd61c37 👥 Remove duplicate jbostoen (my mistake... see 5338325a73) 2018-12-26 09:53:26 +01:00
Pierre Goiffon
b51b5582a0 Merge remote-tracking branch 'origin/support/2.5' into release/2.6 2018-12-21 10:23:29 +01:00
Eric
bc5643707e N°1898 - Fix pagination issue for search with accent 2018-12-21 10:04:04 +01:00
Eric
27b1b1f8a8 N°1903 - Fix initial value of a MetaEnum attribute is always its default value 2018-12-21 09:59:19 +01:00
Eric
a45e543eac N°1898 - Fix pagination issue for search with accent 2018-12-21 09:36:28 +01:00
Pierre Goiffon
50235bbb04 🌐 Fix typos in EN translations
Report PR #38 modifications, many thanks @jbostoen !
2018-12-20 17:19:32 +01:00
Eric
d31a4047f6 Fix Setup hardening 2018-12-19 17:13:49 +01:00
338 changed files with 5512 additions and 3093 deletions

37
.gitignore vendored
View File

@@ -1,36 +1,37 @@
# no slash at the end to handle also symlinks
/toolkit
/conf/*
/env-*/*
/conf
/env-*
# composer reserver directory, from sources, populate/update using "composer install"
vendor/*
test/vendor/*
# all datas but listing prevention
data/*
!data/.htaccess
!data/index.php
!data/web.config
/data/**
!/data/.htaccess
!/data/index.php
!/data/web.config
# iTop extensions
extensions/*
!extensions/readme.txt
/extensions/**
!/extensions/readme.txt
# all logs but listing prevention
log/*
!log/.htaccess
!log/index.php
!log/web.config
/log/**
!/log/.htaccess
!/log/index.php
!/log/web.config
# Jetbrains
.idea/**
!.idea/encodings.xml
!.idea/codeStyles
!.idea/codeStyles/*
!.idea/inspectionProfiles
!.idea/inspectionProfiles/*
/.idea/**
!/.idea/encodings.xml
!/.idea/codeStyles
!/.idea/codeStyles/*
!/.idea/inspectionProfiles
!/.idea/inspectionProfiles/*

View File

@@ -12,13 +12,13 @@ You are welcome to create pull requests on any of those subjects:
* 🐛 `:bug:` bug fix
* 🔒 `:lock:` security
* 🌐 `:globe_with_meridians:` translation
* 🌐 `:globe_with_meridians:` translation / i18n / l10n
If you want to implement a **new feature**, please [create a corresponding ticket](https://sourceforge.net/p/itop/tickets/new/) for review.
If you ever want to begin implementation, do so in a fork, and add a link to the corresponding commits in the ticket.
If you ever want to begin implementation, do so in a fork, and add a link to the corresponding commits in the ticket.
### License
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file),
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file),
your code must comply with this license.
If you want to use another license, you may [create an extension][wiki new ext].
@@ -33,28 +33,29 @@ TL;DR:
> **create a fork from iTop main repository,
> create a branch based on either release branch if present, or develop otherwise**
We are using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) branch model. That means we have in our repo those
We are using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) branch model. That means we have in our repo those
main branches:
- develop: ongoing development version
- release/*: if present, that means we are working on a beta version
- release/\*: if present, that means we are working on a beta version
- master: previous stable version
For example, if no beta version is currently ongoing we could have:
- develop containing 2.8 version
- master containing 2.7 version
- develop containing future 2.8.0 version
- master containing 2.7.x maintenance version
In this example, when 2.8 beta is shipped that will become:
In this example, when 2.8.0-beta is shipped that will become:
- develop: 2.9 version
- release/2.8: 2.8 beta
- master: 2.7 version
- develop: future 2.9.0 version
- release/2.8: 2.8.0-beta
- master: 2.7.x maintenance version
And when 2.8 final will be out:
And when 2.8.0 final will be out:
- develop: 2.9 version
- master: 2.8 version
- develop: future 2.9.0 version
- master: 2.8.x maintenance version
- support/2.7 : 2.7.x maintenance version
## Coding
@@ -63,6 +64,10 @@ And when 2.8 final will be out:
Please follow [our guidelines](https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Acoding_standards).
### 🌐 Translations
A [dedicated page](https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Atranslation) is available in the official wiki.
### Tests
Please create tests that covers as much as possible the code you're submitting.
@@ -75,7 +80,7 @@ Our tests are located in the `test/` directory, containing a PHPUnit config file
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Please start the commit message with an applicable emoji (following the [Gitmoji guide](https://gitmoji.carloscuesta.me/).). For example :
* Please start the commit message with an applicable emoji code (following the [Gitmoji guide](https://gitmoji.carloscuesta.me/)). For example :
* 🌐 `:globe_with_meridians:` for translations
* 🎨 `:art:` when improving the format/structure of the code
* ⚡️ `:zap:` when improving performance

View File

@@ -35,14 +35,14 @@ iTop also offers mass import tools and web services to integrate with your IT
- [Changes since the previous version][58]
- [New features][59]
- [Migration notes][60]
- [Download iTop 2.6.0-beta][61]
- [Download iTop 2.6.0][61]
### Version 2.5
- [Changes since the previous version][54]
- [New features][55]
- [Migration notes][56]
- [Download iTop 2.5.0][57]
- [Download iTop 2.5.1][57]
### Version 2.4
@@ -88,7 +88,6 @@ We would like to give a special thank you to the people from the community who c
#### Aliases
- chifu1234
- cprobst
- jbostoen
- Karkoff1212
- larhip
- Laura
@@ -128,14 +127,14 @@ We would like to give a special thank you to the people from the community who c
[50]: https://www.itophub.io/wiki/page?id=2_4_0:release:change_log
[51]: https://www.itophub.io/wiki/page?id=2_4_0:release:2_4_whats_new
[52]: https://www.itophub.io/wiki/page?id=2_4_0:install:230_to_240_migration_notes
[53]: https://sourceforge.net/projects/itop/files/itop/2.4.1/iTop-2.4.1-3714.zip/download
[53]: https://sourceforge.net/projects/itop/files/itop/2.4.1
[54]: https://www.itophub.io/wiki/page?id=2_5_0:release:change_log
[55]: https://www.itophub.io/wiki/page?id=2_5_0:release:2_5_whats_new
[56]: https://www.itophub.io/wiki/page?id=2_5_0:install:240_to_250_migration_notes
[57]: https://sourceforge.net/projects/itop/files/itop/2.5.0/iTop-2.5.0-3935.zip/download
[57]: https://sourceforge.net/projects/itop/files/itop/2.5.1
[58]: https://www.itophub.io/wiki/page?id=2_6_0:release:change_log
[59]: https://www.itophub.io/wiki/page?id=2_6_0:release:2_6_whats_new
[60]: https://www.itophub.io/wiki/page?id=2_6_0:install:250_to_260_migration_notes
[61]: https://sourceforge.net/projects/itop/files/itop/2.6.0-beta/iTop-2.6-beta-4146.zip/download
[61]: https://sourceforge.net/projects/itop/files/itop/2.6.0

View File

@@ -825,6 +825,10 @@ class RestResult
* Result: the requested operation cannot be performed because it can cause data (integrity) loss
*/
const UNSAFE = 12;
/**
* Result: the request page number is not valid. It must be an integer greater than 0
*/
const INVALID_PAGE = 13;
/**
* Result: the operation could not be performed, see the message for troubleshooting
*/
@@ -1091,10 +1095,13 @@ class RestUtils
*
* @param string $sClass Name of the class
* @param mixed $key Either search criteria (substructure), or an object or an OQL string.
* @param int $iLimit The limit of results to return
* @param int $iOffset The offset of results to return
*
* @return DBObjectSet The search result set
* @throws Exception If the input structure is not valid
*/
public static function GetObjectSetFromKey($sClass, $key)
public static function GetObjectSetFromKey($sClass, $key, $iLimit = 0, $iOffset = 0)
{
if (is_object($key))
{
@@ -1128,7 +1135,7 @@ class RestUtils
{
throw new Exception("Wrong format for key");
}
$oObjectSet = new DBObjectSet($oSearch);
$oObjectSet = new DBObjectSet($oSearch, array(), array(), null, $iLimit, $iOffset);
return $oObjectSet;
}

View File

@@ -3288,7 +3288,7 @@ EOF
$aDurationData = $value;
if (!is_array($aDurationData))
{
continue;
break;
}
$iValue = (((24 * $aDurationData['d']) + $aDurationData['h']) * 60 + $aDurationData['m']) * 60 + $aDurationData['s'];
@@ -3524,21 +3524,13 @@ EOF
{
if (preg_match("/^attr_$sSubFormPrefix(.*)$/", $sKey, $aMatches))
{
$sLinkClass = $oAttDef->GetLinkedClass();
if ($oAttDef->IsIndirect())
$oLinkAttDef = MetaModel::GetAttributeDef($sObjClass, $aMatches[1]);
// Recursing over n:n link datetime attributes
// Note: We might need to do it with other attribute types, like Document or redundancy setting.
if ($oLinkAttDef instanceof AttributeDateTime)
{
$oLinkAttDef = MetaModel::GetAttributeDef($sLinkClass, $aMatches[1]);
// Recursing over n:n link datetime attributes
// Note: We might need to do it with other attribute types, like Document or redundancy setting.
if ($oLinkAttDef instanceof AttributeDateTime)
{
$aObjData[$aMatches[1]] = $this->PrepareValueFromPostedForm($sSubFormPrefix,
$aMatches[1], $sLinkClass, $aData);
}
else
{
$aObjData[$aMatches[1]] = $value;
}
$aObjData[$aMatches[1]] = $this->PrepareValueFromPostedForm($sSubFormPrefix,
$aMatches[1], $sObjClass, $aData);
}
else
{
@@ -3555,26 +3547,19 @@ EOF
foreach($aRawToBeModified as $iObjKey => $aData)
{
$sSubFormPrefix = $aData['formPrefix'];
$sObjClass = isset($aData['class']) ? $aData['class'] : $oAttDef->GetLinkedClass();
$aObjData = array();
foreach($aData as $sKey => $value)
{
if (preg_match("/^attr_$sSubFormPrefix(.*)$/", $sKey, $aMatches))
{
$sLinkClass = $oAttDef->GetLinkedClass();
if ($oAttDef->IsIndirect())
$oLinkAttDef = MetaModel::GetAttributeDef($sObjClass, $aMatches[1]);
// Recursing over n:n link datetime attributes
// Note: We might need to do it with other attribute types, like Document or redundancy setting.
if ($oLinkAttDef instanceof AttributeDateTime)
{
$oLinkAttDef = MetaModel::GetAttributeDef($sLinkClass, $aMatches[1]);
// Recursing over n:n link datetime attributes
// Note: We might need to do it with other attribute types, like Document or redundancy setting.
if ($oLinkAttDef instanceof AttributeDateTime)
{
$aObjData[$aMatches[1]] = $this->PrepareValueFromPostedForm($sSubFormPrefix,
$aMatches[1], $sLinkClass, $aData);
}
else
{
$aObjData[$aMatches[1]] = $value;
}
$aObjData[$aMatches[1]] = $this->PrepareValueFromPostedForm($sSubFormPrefix,
$aMatches[1], $sObjClass, $aData);
}
else
{
@@ -3690,6 +3675,9 @@ EOF
return $aErrors;
}
/**
* @inheritdoc
*/
public function DBInsertNoReload()
{
$res = parent::DBInsertNoReload();
@@ -3707,6 +3695,7 @@ EOF
}
/**
* @inheritdoc
* Attaches InlineImages to the current object
*/
protected function OnObjectKeyReady()
@@ -3831,6 +3820,12 @@ EOF
$this->bAllowWrite = $bAllow;
}
/**
* @inheritdoc
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*/
public function DoCheckToWrite()
{
parent::DoCheckToWrite();
@@ -4211,6 +4206,7 @@ EOF
$oDummyObj->Set($sAttCode, $currValue);
/** @var ormTagSet $oTagSet */
$oTagSet = $oDummyObj->Get($sAttCode);
$oTagSet->SetDisplayPartial(true);
foreach($aKeys as $iIndex => $sValues)
{
if ($iIndex == 0)

View File

@@ -444,44 +444,41 @@ EOF
$sClass = $oQuery->GetClass();
foreach($this->oModelReflection->ListAttributes($sClass) as $sAttCode => $sAttType)
{
if ($sAttType == 'AttributeLinkedSet')
// For external fields, find the real type of the target
$sTargetClass = $sClass;
while (is_a($sAttType, 'AttributeExternalField', true))
{
$sExtKeyAttCode = $this->oModelReflection->GetAttributeProperty($sTargetClass, $sAttCode, 'extkey_attcode');
$sTargetAttCode = $this->oModelReflection->GetAttributeProperty($sTargetClass, $sAttCode, 'target_attcode');
$sTargetClass = $this->oModelReflection->GetAttributeProperty($sTargetClass, $sExtKeyAttCode, 'targetclass');
$aTargetAttCodes = $this->oModelReflection->ListAttributes($sTargetClass);
$sAttType = $aTargetAttCodes[$sTargetAttCode];
}
if (is_a($sAttType, 'AttributeLinkedSet', true))
{
continue;
}
if (is_subclass_of($sAttType, 'AttributeLinkedSet'))
if (is_a($sAttType, 'AttributeFriendlyName', true))
{
continue;
}
if ($sAttType == 'AttributeFriendlyName')
{
continue;
}
if (is_subclass_of($sAttType, 'AttributeFriendlyName'))
{
continue;
}
if ($sAttType == 'AttributeExternalField')
{
continue;
}
if (is_subclass_of($sAttType, 'AttributeExternalField'))
{
continue;
}
if ($sAttType == 'AttributeOneWayPassword')
if (is_a($sAttType, 'AttributeOneWayPassword', true))
{
continue;
}
$sLabel = $this->oModelReflection->GetLabel($sClass, $sAttCode);
$aGroupBy[$sAttCode] = $sLabel;
if (is_subclass_of($sAttType, 'AttributeDateTime') || $sAttType == 'AttributeDateTime')
if (!in_array($sLabel, $aGroupBy))
{
$aGroupBy[$sAttCode.':hour'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-Hour', $sLabel);
$aGroupBy[$sAttCode.':month'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-Month', $sLabel);
$aGroupBy[$sAttCode.':day_of_week'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-DayOfWeek', $sLabel);
$aGroupBy[$sAttCode.':day_of_month'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-DayOfMonth', $sLabel);
$aGroupBy[$sAttCode] = $sLabel;
if (is_a($sAttType, 'AttributeDateTime', true))
{
$aGroupBy[$sAttCode.':hour'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-Hour', $sLabel);
$aGroupBy[$sAttCode.':month'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-Month', $sLabel);
$aGroupBy[$sAttCode.':day_of_week'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-DayOfWeek', $sLabel);
$aGroupBy[$sAttCode.':day_of_month'] = Dict::Format('UI:DashletGroupBy:Prop-GroupBy:Select-DayOfMonth', $sLabel);
}
}
}
asort($aGroupBy);
@@ -619,7 +616,7 @@ class DashletUnknown extends Dashlet
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div>');
$oPage->add('<div class="dashlet-ukn-image"><img src="'.utils::HtmlEntities($sIconUrl).'" /></div>');
$oPage->add('<div class="dashlet-ukn-text">'.$sExplainText.'</div>');
$oPage->add('</div>');
@@ -639,7 +636,7 @@ class DashletUnknown extends Dashlet
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div>');
$oPage->add('<div class="dashlet-ukn-image"><img src="'.utils::HtmlEntities($sIconUrl).'" /></div>');
$oPage->add('<div class="dashlet-ukn-text">'.$sExplainText.'</div>');
$oPage->add('</div>');
@@ -780,7 +777,7 @@ class DashletProxy extends DashletUnknown
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="dashlet-pxy-image"><img src="'.$sIconUrl.'" /></div>');
$oPage->add('<div class="dashlet-pxy-image"><img src="'.utils::HtmlEntities($sIconUrl).'" /></div>');
$oPage->add('<div class="dashlet-pxy-text">'.$sExplainText.'</div>');
$oPage->add('</div>');
@@ -1272,6 +1269,10 @@ abstract class DashletGroupBy extends Dashlet
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
$oBlock = new DisplayBlock($oFilter, $sType);
$oBlock->Display($oPage, $sBlockId, array_merge($aExtraParams, $aParams));
if($bEditMode)
{
$oPage->add('<div class="dashlet-blocker"></div>');
}
$oPage->add('</div>');
}
}
@@ -1913,7 +1914,7 @@ class DashletHeaderStatic extends Dashlet
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="main_header">');
$oPage->add('<img src="'.$sIconPath.'">');
$oPage->add('<img src="'.utils::HtmlEntities($sIconPath).'">');
$oPage->add('<h1>'.$this->oModelReflection->DictString($sTitle).'</h1>');
$oPage->add('</div>');
@@ -2069,7 +2070,7 @@ class DashletHeaderDynamic extends Dashlet
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="main_header">');
$oPage->add('<img src="'.$sIconPath.'">');
$oPage->add('<img src="'.utils::HtmlEntities($sIconPath).'">');
if (isset($aExtraParams['query_params']))
{
@@ -2113,7 +2114,7 @@ class DashletHeaderDynamic extends Dashlet
$oPage->add('<div class="dashlet-content">');
$oPage->add('<div class="main_header">');
$oPage->add('<img src="'.$sIconPath.'">');
$oPage->add('<img src="'.utils::HtmlEntities($sIconPath).'">');
$sBlockId = 'block_fake_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
@@ -2332,7 +2333,7 @@ class DashletBadge extends Dashlet
$oPage->add('<div id="block_fake_'.$this->sId.'" class="display_block">');
$oPage->add('<p>');
$oPage->add(' <a class="actions"><img src="'.$sIconUrl.'" style="vertical-align:middle;float;left;margin-right:10px;border:0;">'.$sClassLabel.': 947</a>');
$oPage->add(' <a class="actions"><img src="'.utils::HtmlEntities($sIconUrl).'" style="vertical-align:middle;float;left;margin-right:10px;border:0;">'.$sClassLabel.': 947</a>');
$oPage->add('</p>');
$oPage->add('<p>');
$oPage->add(' <a>'.Dict::Format('UI:ClickToCreateNew', $sClassLabel).'</a>');

View File

@@ -431,7 +431,7 @@ EOF;
}
else
{
$aRow['form::select'] = "<input type=\"checkBox\" $sDisabled class=\"selectList{$this->iListId}\" name=\"selectObject[]\" value=\"".$aObjects[$sAlias]->GetKey()."\"></input>";
$aRow['form::select'] = "<input type=\"checkbox\" $sDisabled class=\"selectList{$this->iListId}\" name=\"selectObject[]\" value=\"".$aObjects[$sAlias]->GetKey()."\"></input>";
}
}
foreach($aColumns[$sAlias] as $sAttCode => $aData)
@@ -565,7 +565,7 @@ EOF;
<<<EOF
var oTable = $('#{$this->iListId} table.listResults');
oTable.tableHover();
oTable.tablesorter( { $sHeaders widgets: ['myZebra', 'truncatedList']} ).tablesorterPager({container: $('#pager{$this->iListId}'), totalRows:$iCount, size: $iPageSize, filter: '$sOQL', extra_params: '$sExtraParams', select_mode: '$sSelectModeJS', displayKey: $sDisplayKey, columns: $sJSColumns, class_aliases: $sJSClassAliases $sCssCount});
oTable.tablesorter( { $sHeaders widgets: ['myZebra', 'truncatedList']} ).tablesorterPager({container: $('#pager{$this->iListId}'), totalRows:$iCount, size: $iPageSize, filter: '$sOQL', extra_params: '$sExtraParams', select_mode: '$sSelectModeJS', displayKey: $sDisplayKey, table_id: '{$this->iListId}', columns: $sJSColumns, class_aliases: $sJSClassAliases $sCssCount});
EOF
);
if ($sFakeSortList != '')

View File

@@ -395,6 +395,7 @@ EOF
{
foreach($aFields as $oField)
{
/** @var \DesignerFormField $oField */
$oField->ReadParam($aValues);
}
}
@@ -679,18 +680,34 @@ class DesignerTabularForm extends DesignerForm
class DesignerFormField
{
/** @var string $sLabel */
protected $sLabel;
/** @var string $sCode */
protected $sCode;
/** @var mixed $defaultValue */
protected $defaultValue;
/** @var \DesignerForm $oForm */
protected $oForm;
/** @var bool $bMandatory */
protected $bMandatory;
/** @var bool $bReadOnly */
protected $bReadOnly;
/** @var bool $bAutoApply */
protected $bAutoApply;
/** @var array $aCSSClasses */
protected $aCSSClasses;
/** @var bool $bDisplayed */
protected $bDisplayed;
/** @var array $aWidgetExtraParams */
protected $aWidgetExtraParams;
/**
* DesignerFormField constructor.
*
* @param string $sCode
* @param string $sLabel
* @param mixed $defaultValue
*/
public function __construct($sCode, $sLabel, $defaultValue)
{
$this->sLabel = $sLabel;
@@ -703,7 +720,10 @@ class DesignerFormField
$this->bDisplayed = true;
$this->aWidgetExtraParams = array();
}
/**
* @return string
*/
public function GetCode()
{
return $this->sCode;
@@ -712,69 +732,108 @@ class DesignerFormField
/**
* @param \DesignerForm $oForm
*/
public function SetForm(\DesignerForm $oForm)
public function SetForm(DesignerForm $oForm)
{
$this->oForm = $oForm;
}
/**
* @param bool $bMandatory
*/
public function SetMandatory($bMandatory = true)
{
$this->bMandatory = $bMandatory;
}
/**
* @param bool $bReadOnly
*/
public function SetReadOnly($bReadOnly = true)
{
$this->bReadOnly = $bReadOnly;
}
/**
* @return bool
*/
public function IsReadOnly()
{
return ($this->oForm->IsReadOnly() || $this->bReadOnly);
}
/**
* @param bool $bAutoApply
*/
public function SetAutoApply($bAutoApply)
{
$this->bAutoApply = $bAutoApply;
}
/**
* @return bool
*/
public function IsAutoApply()
{
return $this->bAutoApply;
}
/**
* @param bool $bDisplayed
*/
public function SetDisplayed($bDisplayed)
{
$this->bDisplayed = $bDisplayed;
}
/**
* @return bool
*/
public function IsDisplayed()
{
return $this->bDisplayed;
}
/**
* @return string
*/
public function GetFieldId()
{
return $this->oForm->GetFieldId($this->sCode);
}
/**
* @return string
*/
public function GetWidgetClass()
{
return 'property_field';
}
/**
* @return array
*/
public function GetWidgetExtraParams()
{
return $this->aWidgetExtraParams;
}
/**
* @param \WebPage $oP
* @param string $sFormId
* @param string $sRenderMode
*
* @return array
*/
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
{
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
return array('label' => $this->sLabel, 'value' => "<input type=\"text\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
}
/**
* @param array $aValues
*/
public function ReadParam(&$aValues)
{
if ($this->IsReadOnly())
@@ -801,12 +860,18 @@ class DesignerFormField
}
}
}
/**
* @return bool
*/
public function IsVisible()
{
return true;
}
/**
* @param string $sCSSClass
*/
public function AddCSSClass($sCSSClass)
{
$this->aCSSClasses[] = $sCSSClass;
@@ -814,6 +879,8 @@ class DesignerFormField
/**
* A way to set/change the default value after constructing the field
*
* @param array $aAllDefaultValue
*/
public function SetDefaultValueFrom($aAllDefaultValue)
{
@@ -822,7 +889,12 @@ class DesignerFormField
$this->defaultValue = $aAllDefaultValue[$this->GetCode()];
}
}
/**
* @param $sFieldCode
*
* @return \DesignerFormField|false
*/
public function FindField($sFieldCode)
{
if ($this->sCode == $sFieldCode)
@@ -832,11 +904,17 @@ class DesignerFormField
return false;
}
/**
* @return string
*/
public function GetHandlerEquals()
{
return 'null';
}
/**
* @return string
*/
public function GetHandlerGetValue()
{
return 'null';
@@ -845,25 +923,43 @@ class DesignerFormField
class DesignerLabelField extends DesignerFormField
{
/** @var int $iCount A counter to automatically make the field code */
protected static $iCount = 0;
/** @var string $sDescription */
protected $sDescription;
/**
* @inheritdoc
*/
public function __construct($sLabel, $sDescription)
{
parent::__construct('', $sLabel, '');
// Increase counter
static::$iCount++;
parent::__construct('label_number_' . static::$iCount, $sLabel, '');
$this->sDescription = $sDescription;
}
/**
* @inheritdoc
*/
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
{
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
return array('label' => $this->sLabel, 'value' => $this->sDescription);
}
/**
* @inheritdoc
*/
public function ReadParam(&$aValues)
{
}
/**
* @inheritdoc
*/
public function IsVisible()
{
return true;
@@ -1334,7 +1430,8 @@ class DesignerIconSelectionField extends DesignerFormField
$sPostUploadTo = ($this->sUploadUrl == null) ? 'null' : "'{$this->sUploadUrl}'";
if (!$this->IsReadOnly())
{
$sValue = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"{$this->defaultValue}\"/>";
$sDefaultValue = ($this->defaultValue !== '') ? : $this->aAllowedValues[$idx]['value'];
$sValue = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"{$sDefaultValue}\"/>";
$oP->add_ready_script(
<<<EOF
$('#$sId').icon_select({current_idx: $idx, items: $sJSItems, post_upload_to: $sPostUploadTo});

View File

@@ -846,8 +846,8 @@ EOF
{
$sAuthUser = $_SESSION['auth_user'];
UserRights::Login($sAuthUser); // Set the user's language
$sOldPwd = utils::ReadPostedParam('old_pwd', '', false, 'raw_data');
$sNewPwd = utils::ReadPostedParam('new_pwd', '', false, 'raw_data');
$sOldPwd = utils::ReadPostedParam('old_pwd', '', 'raw_data');
$sNewPwd = utils::ReadPostedParam('new_pwd', '', 'raw_data');
if (UserRights::CanChangePassword() && ((!UserRights::CheckCredentials($sAuthUser, $sOldPwd)) || (!UserRights::ChangePassword($sOldPwd, $sNewPwd))))
{
$oPage = self::NewLoginWebPage();

View File

@@ -62,11 +62,11 @@ class utils
{
if (!file_exists($sParamFile))
{
throw new Exception("Could not find the parameter file: '$sParamFile'");
throw new Exception("Could not find the parameter file: '".utils::HtmlEntities($sParamFile)."'");
}
if (!is_readable($sParamFile))
{
throw new Exception("Could not load parameter file: '$sParamFile'");
throw new Exception("Could not load parameter file: '".utils::HtmlEntities($sParamFile)."'");
}
$sParams = file_get_contents($sParamFile);
@@ -273,79 +273,93 @@ class utils
}
return $retValue;
}
/**
* @param string|string[] $value
* @param string $sSanitizationFilter one of : integer, class, string, context_param, parameter, field_name,
* transaction_id, parameter, raw_data
*
* @return string|string[]|bool boolean for :
* * the 'class' filter (true if valid, false otherwise)
* * if the filter fails (@see \filter_var())
*
* @since 2.5.2 2.6.0 new 'transaction_id' filter
*/
protected static function Sanitize_Internal($value, $sSanitizationFilter)
{
switch($sSanitizationFilter)
switch ($sSanitizationFilter)
{
case 'integer':
$retValue = filter_var($value, FILTER_SANITIZE_NUMBER_INT);
break;
$retValue = filter_var($value, FILTER_SANITIZE_NUMBER_INT);
break;
case 'class':
$retValue = $value;
if (!MetaModel::IsValidClass($value))
{
$retValue = false;
}
break;
$retValue = $value;
if (!MetaModel::IsValidClass($value))
{
$retValue = false;
}
break;
case 'string':
$retValue = filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS);
break;
$retValue = filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS);
break;
case 'context_param':
case 'parameter':
case 'field_name':
if (is_array($value))
{
$retValue = array();
foreach($value as $key => $val)
if (is_array($value))
{
$retValue[$key] = self::Sanitize_Internal($val, $sSanitizationFilter); // recursively check arrays
if ($retValue[$key] === false)
$retValue = array();
foreach ($value as $key => $val)
{
$retValue = false;
break;
$retValue[$key] = self::Sanitize_Internal($val, $sSanitizationFilter); // recursively check arrays
if ($retValue[$key] === false)
{
$retValue = false;
break;
}
}
}
}
else
{
switch($sSanitizationFilter)
else
{
case 'transaction_id':
// same as parameter type but keep the dot character
// see N°1835 : when using file transaction_id on Windows you get *.tmp tokens
// it must be included at the regexp beginning otherwise you'll get an invalid character error
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[\. A-Za-z0-9_=-]*$/')));
break;
switch ($sSanitizationFilter)
{
case 'transaction_id':
// same as parameter type but keep the dot character
// see N°1835 : when using file transaction_id on Windows you get *.tmp tokens
// it must be included at the regexp beginning otherwise you'll get an invalid character error
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[\. A-Za-z0-9_=-]*$/')));
break;
case 'parameter':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[ A-Za-z0-9_=-]*$/'))); // the '=', '%3D, '%2B', '%2F'
// characters are used in serialized filters (starting 2.5, only the url encoded versions are presents, but the "=" is kept for BC)
break;
case 'parameter':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[ A-Za-z0-9_=-]*$/'))); // the '=', '%3D, '%2B', '%2F'
// characters are used in serialized filters (starting 2.5, only the url encoded versions are presents, but the "=" is kept for BC)
break;
case 'field_name':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/^[A-Za-z0-9_]+(->[A-Za-z0-9_]+)*$/'))); // att_code or att_code->name or AttCode->Name or AttCode->Key2->Name
break;
case 'context_param':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/^[ A-Za-z0-9_=%:+-]*$/')));
break;
case 'field_name':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[A-Za-z0-9_]+(->[A-Za-z0-9_]+)*$/'))); // att_code or att_code->name or AttCode->Name or AttCode->Key2->Name
break;
case 'context_param':
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
array("options" => array("regexp" => '/^[ A-Za-z0-9_=%:+-]*$/')));
break;
}
}
}
break;
break;
default:
case 'raw_data':
$retValue = $value;
$retValue = $value;
// Do nothing
}
return $retValue;
return $retValue;
}
/**
@@ -588,17 +602,19 @@ class utils
/**
* Format a value into a more friendly format (KB, MB, GB, TB) instead a juste a Bytes amount.
*
* @param type $value
* @param int $value
* @return string
*/
public static function BytesToFriendlyFormat($value)
{
$sReturn = '';
$iPrecision = 0;
// Kilobytes
if ($value >= 1024)
{
$sReturn = 'K';
$value = $value / 1024;
$iPrecision = 1;
}
// Megabytes
if ($value >= 1024)
@@ -619,7 +635,7 @@ class utils
$value = $value / 1024;
}
$value = round($value, 1);
$value = round($value, $iPrecision);
return $value . '' . $sReturn . 'B';
}
@@ -1171,7 +1187,7 @@ class utils
}
}
/**
* Get target configuration file name (including full path)
* @return string target configuration file name (including full path)
*/
public static function GetConfigFilePath($sEnvironment = null)
{
@@ -1181,6 +1197,17 @@ class utils
}
return APPCONF.$sEnvironment.'/'.ITOP_CONFIG_FILE;
}
/**
* @return string target configuration file name (including relative path)
*/
public static function GetConfigFilePathRelative($sEnvironment = null)
{
if (is_null($sEnvironment))
{
$sEnvironment = self::GetCurrentEnvironment();
}
return "conf/".$sEnvironment.'/'.ITOP_CONFIG_FILE;
}
/**
* @return string the absolute URL to the modules root path

View File

@@ -1,10 +1,6 @@
{
"require": {
"php": ">=5.6.0",
"ext-mysql": "*",
"ext-ldap": "*",
"ext-mcrypt": "*",
"ext-cli": "*",
"ext-soap": "*",
"ext-json": "*",
"ext-zip": "*",
@@ -13,6 +9,14 @@
"ext-iconv": "*",
"ext-gd": "*"
},
"suggest": {
"ext-libsodium": "Required to use the AttributeEncryptedString.",
"ext-openssl": "Can be used as a polyfill if libsodium is not installed",
"ext-mcrypt": "Can be used as a polyfill if either libsodium and openssl are not installed (libsodium and openssl are more secure)",
"ext-ldap": "Required to use LDAP as an identity provider",
"ext-posix": "Not required by the core, but some extensions uses it.",
"ext-imap": "Required by the extension \"Mail to ticket automation\""
},
"config": {
"platform": {
"php": "5.6.0"

View File

@@ -150,7 +150,7 @@ abstract class AsyncTask extends DBObject
public function GetRetryDelay($iErrorCode = null)
{
$iRetryDelay = 600;
$aRetries = MetaModel::GetConfig()->Get('async_task_retries', array());
$aRetries = MetaModel::GetConfig()->Get('async_task_retries');
if (is_array($aRetries) && array_key_exists(get_class($this), $aRetries))
{
$aConfig = $aRetries[get_class($this)];
@@ -162,12 +162,13 @@ abstract class AsyncTask extends DBObject
public function GetMaxRetries($iErrorCode = null)
{
$iMaxRetries = 0;
$aRetries = MetaModel::GetConfig()->Get('async_task_retries', array());
$aRetries = MetaModel::GetConfig()->Get('async_task_retries');
if (is_array($aRetries) && array_key_exists(get_class($this), $aRetries))
{
$aConfig = $aRetries[get_class($this)];
$iMaxRetries = $aConfig['max_retries'];
}
return $iMaxRetries;
}
/**
@@ -380,6 +381,6 @@ class AsyncSendEmail extends AsyncTask
case EMAIL_SEND_ERROR:
return "Failed: ".implode(', ', $aIssues);
}
return '';
}
}
?>

View File

@@ -1374,6 +1374,11 @@ class AttributeLinkedSet extends AttributeDefinition
*/
public function GetDefaultValue(DBObject $oHostObject = null)
{
if ($oHostObject === null)
{
return null;
}
$sLinkClass = $this->GetLinkedClass();
$sExtKeyToMe = $this->GetExtKeyToMe();
@@ -3264,10 +3269,13 @@ class AttributeClassState extends AttributeString
$sClass = $oHostObj->Get($sTargetClass);
$aAllowedStates = array();
$aValues = MetaModel::EnumStates($sClass);
foreach(array_keys($aValues) as $sState)
foreach (MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sChildClass)
{
$aAllowedStates[$sState] = $sState.' ('.MetaModel::GetStateLabel($sClass, $sState).')';
$aValues = MetaModel::EnumStates($sChildClass);
foreach (array_keys($aValues) as $sState)
{
$aAllowedStates[$sState] = $sState.' ('.MetaModel::GetStateLabel($sChildClass, $sState).')';
}
}
return $aAllowedStates;
}
@@ -3286,9 +3294,15 @@ class AttributeClassState extends AttributeString
{
$sTargetClass = $this->Get('class_field');
$sClass = $oHostObject->Get($sTargetClass);
$sHTML = '<span class="attribute-set-item" data-code="'.$sValue.'" data-label="'.$sValue.' ('.MetaModel::GetStateLabel($sClass, $sValue).')'.'" data-description="">'.$sValue.'</span>';
return $sHTML;
foreach (MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sChildClass)
{
$aValues = MetaModel::EnumStates($sChildClass);
if (in_array($sValue, $aValues))
{
$sHTML = '<span class="attribute-set-item" data-code="'.$sValue.'" data-label="'.$sValue.' ('.MetaModel::GetStateLabel($sChildClass, $sValue).')'.'" data-description="">'.$sValue.'</span>';
return $sHTML;
}
}
}
return $sValue;
@@ -6242,6 +6256,15 @@ class AttributeExternalKey extends AttributeDBFieldVoid
return $oFormField;
}
public function GetAsHTML($sValue, $oHostObject = null, $bLocalize = true)
{
if (!is_null($oHostObject))
{
return $oHostObject->GetAsHTML($this->GetCode(), $oHostObject);
}
return DBObject::MakeHyperLink($this->GetTargetClass(), $sValue);
}
}
/**
@@ -9655,14 +9678,27 @@ class AttributeTagSet extends AttributeSet
{
$aJson['partial_values'] = array();
$aJson['orig_value'] = array();
$aJson['added'] = array();
$aJson['removed'] = array();
}
else
{
$aJson['partial_values'] = $oValue->GetModified();
$aJson['orig_value'] = array_merge($oValue->GetValues(), $oValue->GetModified());
$aJson['added'] = $oValue->GetAdded();
$aJson['removed'] = $oValue->GetRemoved();
if ($oValue->DisplayPartial())
{
// For bulk updates
$aJson['partial_values'] = $oValue->GetModified();
}
else
{
// For simple updates
$aJson['partial_values'] = array();
}
}
$aJson['added'] = array();
$aJson['removed'] = array();
$iMaxTags = $this->GetMaxItems();
$aJson['max_items_allowed'] = $iMaxTags;

View File

@@ -332,6 +332,18 @@ class BulkChange
return true;
}
/**
* @param \DBObject $oTargetObj
* @param array $aRowData
* @param array $aErrors
*
* @return array
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
*/
protected function PrepareObject(&$oTargetObj, $aRowData, &$aErrors)
{
$aResults = array();
@@ -477,7 +489,9 @@ class BulkChange
if (!$oAttDef->IsWritable() && in_array($sAttCode, $this->m_aReconcilKeys)){ continue; }
$aReasons = array();
$iFlags = $oTargetObj->GetAttributeFlags($sAttCode, $aReasons);
$iFlags = ($oTargetObj->IsNew())
? $oTargetObj->GetInitialStateAttributeFlags($sAttCode, $aReasons)
: $oTargetObj->GetAttributeFlags($sAttCode, $aReasons);
if ( (($iFlags & OPT_ATT_READONLY) == OPT_ATT_READONLY) && ( $oTargetObj->Get($sAttCode) != $aRowData[$iCol]) )
{
$aErrors[$sAttCode] = Dict::Format('UI:CSVReport-Value-Issue-Readonly', $sAttCode, $oTargetObj->Get($sAttCode), $aRowData[$iCol]);

View File

@@ -188,6 +188,16 @@ abstract class CMDBObject extends DBObject
self::$m_oCurrChange->DBInsert();
}
/**
* @inheritdoc
* @throws \ArchivedObjectException
* @throws \CoreCannotSaveObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
*/
protected function RecordObjCreation()
{
// Delete any existing change tracking about the current object (IDs can be reused due to InnoDb bug; see TRAC #886)
@@ -206,6 +216,7 @@ abstract class CMDBObject extends DBObject
MetaModel::PurgeData($oFilter);
parent::RecordObjCreation();
$oMyChangeOp = MetaModel::NewObject("CMDBChangeOpCreate");
$oMyChangeOp->Set("objclass", get_class($this));
$oMyChangeOp->Set("objkey", $this->GetKey());
@@ -232,9 +243,17 @@ abstract class CMDBObject extends DBObject
}
/**
* @param $sAttCode
* @param string $sAttCode
* @param $original Original value
* @param $value Current value
*
* @throws \ArchivedObjectException
* @throws \CoreCannotSaveObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
*/
protected function RecordAttChange($sAttCode, $original, $value)
{
@@ -438,6 +457,14 @@ abstract class CMDBObject extends DBObject
/**
* @param array $aValues
* @param array $aOrigValues
*
* @throws \ArchivedObjectException
* @throws \CoreCannotSaveObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
*/
protected function RecordAttChanges(array $aValues, array $aOrigValues)
{

View File

@@ -72,6 +72,9 @@ define('DEFAULT_ENCRYPTION_LIB', 'Mcrypt'); // We'll define the best encryption
* configuration data (this class cannot not be localized, because it is responsible for loading the dictionaries)
*
* @package iTopORM
*
* @see \MetaModel::GetConfig() to get the config, if the metamodel was already loaded
* @see utils::GetConfig() to load config from the current env, if metamodel is not loaded
*/
class Config
{

View File

@@ -151,7 +151,8 @@ class CoreCannotSaveObjectException extends CoreException
if (count($this->aIssues) == 1)
{
$sContent .= " <span>{$this->aIssues[0]}</span>";
$sIssue = reset($this->aIssues);
$sContent .= " <span>{$sIssue}</span>";
}
else
{

View File

@@ -70,11 +70,14 @@ abstract class DBObject implements iDisplay
{
private static $m_aMemoryObjectsByClass = array();
private static $m_aBulkInsertItems = array(); // class => array of ('table' => array of (array of <sql_value>))
private static $m_aBulkInsertCols = array(); // class => array of ('table' => array of <sql_column>)
/** @var array class => array of ('table' => array of (array of <sql_value>)) */
private static $m_aBulkInsertItems = array();
/** @var array class => array of ('table' => array of <sql_column>) */
private static $m_aBulkInsertCols = array();
private static $m_bBulkInsert = false;
protected $m_bIsInDB = false; // true IIF the object is mapped to a DB record
/** @var bool true IIF the object is mapped to a DB record */
protected $m_bIsInDB = false;
protected $m_iKey = null;
private $m_aCurrValues = array();
protected $m_aOrigValues = array();
@@ -148,6 +151,31 @@ abstract class DBObject implements iDisplay
$this->m_aLoadedAtt[$sAttCode] = true;
}
}
$this->UpdateMetaAttributes();
}
/**
* Update meta-attributes depending on the given attribute list
*
* @param array|null $aAttCodes List of att codes
*
* @throws \CoreException
*/
protected function UpdateMetaAttributes($aAttCodes = null)
{
if (is_null($aAttCodes))
{
$aAttCodes = MetaModel::GetAttributesList(get_class($this));
}
foreach ($aAttCodes as $sAttCode)
{
foreach (MetaModel::ListMetaAttributes(get_class($this), $sAttCode) as $sMetaAttCode => $oMetaAttDef)
{
/** @var \AttributeMetaEnum $oMetaAttDef */
$this->_Set($sMetaAttCode, $oMetaAttDef->MapValue($this));
}
}
}
// Read-only <=> Written once (archive)
@@ -207,7 +235,9 @@ abstract class DBObject implements iDisplay
/**
* @param bool $bAllowAllData DEPRECATED: the reload must never fail!
*
* @throws CoreException
* @internal
*/
public function Reload($bAllowAllData = false)
{
@@ -432,11 +462,7 @@ abstract class DBObject implements iDisplay
}
$this->_Set($sAttCode, $realvalue);
foreach (MetaModel::ListMetaAttributes(get_class($this), $sAttCode) as $sMetaAttCode => $oMetaAttDef)
{
/** @var \AttributeMetaEnum $oMetaAttDef */
$this->_Set($sMetaAttCode, $oMetaAttDef->MapValue($this));
}
$this->UpdateMetaAttributes(array($sAttCode));
// The object has changed, reset caches
$this->m_bCheckStatus = null;
@@ -727,12 +753,24 @@ abstract class DBObject implements iDisplay
}
}
}
/**
* Overridable callback, called by \DBObject::DoComputeValues
*
* @api
*/
public function ComputeValues()
{
}
// Compute scalar attributes that depend on any other type of attribute
/**
* Compute scalar attributes that depend on any other type of attribute
*
* @throws \CoreException
* @throws \CoreUnexpectedValue
*
* @internal
*/
final public function DoComputeValues()
{
// TODO - use a flag rather than checking the call stack -> this will certainly accelerate things
@@ -1054,7 +1092,9 @@ abstract class DBObject implements iDisplay
/**
* Gets the name of an object in a safe manner for displaying inside a web page
*
* @return string
* @throws \CoreException
*/
public function GetName()
{
@@ -1066,13 +1106,20 @@ abstract class DBObject implements iDisplay
* since the " < > characters are not escaped and the name may contain some XSS script
* instructions.
* Use this function only for internal computations or for an output to a non-HTML destination
*
* @return string
* @throws \CoreException
*/
public function GetRawName()
{
return $this->Get('friendlyname');
}
/**
* @return mixed|string '' if no state attribute, object representing its value otherwise
* @throws \CoreException
* @internal
*/
public function GetState()
{
$sStateAttCode = MetaModel::GetStateAttributeCode(get_class($this));
@@ -1137,15 +1184,18 @@ abstract class DBObject implements iDisplay
}
/**
*
* @param string $sAttCode $sAttCode The code of the attribute
* @param array $aReasons To store the reasons why the attribute is read-only (info about the synchro replicas)
* @param string $sTargetState The target state in which to evalutate the flags, if empty the current state will be
* used
*
* @return integer the binary combination of flags (OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY...) for the
* given attribute in the given state of the object
* @return integer the binary combination of flags for the given attribute in the given state of the object<br>
* Values can be one of the OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY, ... (see define in metamodel.class.php)
* @throws \CoreException
*
* @api
*
* @see GetInitialStateAttributeFlags for creation
*/
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
@@ -1174,6 +1224,10 @@ abstract class DBObject implements iDisplay
if ($this->InSyncScope())
{
$iSynchroFlags = $this->GetSynchroReplicaFlags($sAttCode, $aReasons);
if ($iSynchroFlags & OPT_ATT_SLAVE)
{
$iSynchroFlags |= OPT_ATT_READONLY;
}
}
return $iFlags | $iSynchroFlags; // Combine both sets of flags
}
@@ -1253,11 +1307,18 @@ abstract class DBObject implements iDisplay
}
/**
* Returns the set of flags (OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY...)
* for the given attribute for the current state of the object considered as an INITIAL state
* @param string $sAttCode The code of the attribute
* @return integer Flags: the binary combination of the flags applicable to this attribute
*/
* @param array $aReasons
*
* @return integer The binary combination of the flags for the given attribute for the current state of the object
* considered as an INITIAL state.<br>
* Values can be one of the OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY, ... (see define in metamodel.class.php)
* @throws \CoreException
*
* @api
*
* @see GetAttributeFlags when modifying the object
*/
public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
$iFlags = 0;
@@ -1269,17 +1330,18 @@ abstract class DBObject implements iDisplay
return $iFlags; // No need to care about the synchro flags since we'll be creating a new object anyway
}
// check if the given (or current) value is suitable for the attribute
// return true if successfull
// return the error desciption otherwise
/**
* Check if the given (or current) value is suitable for the attribute
*
* @param $sAttCode
* @param null $value
* @param boolean|string $value true if successfull, the error desciption otherwise
*
* @return bool|string
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*
* @internal
*/
public function CheckValue($sAttCode, $value = null)
{
@@ -1410,8 +1472,13 @@ abstract class DBObject implements iDisplay
}
return true;
}
// check attributes together
/**
* check attributes together
*
* @return bool
* @api
*/
public function CheckConsistency()
{
return true;
@@ -1514,12 +1581,13 @@ abstract class DBObject implements iDisplay
*/
protected function GetSearchForUniquenessRule($sUniquenessRuleId, $aUniquenessRuleProperties)
{
$sCurrentClass = get_class($this);
$sOqlUniquenessQuery = "SELECT $sCurrentClass";
$sRuleRootClass = $aUniquenessRuleProperties['root_class'];
$sOqlUniquenessQuery = "SELECT $sRuleRootClass";
if (!(empty($sUniquenessFilter = $aUniquenessRuleProperties['filter'])))
{
$sOqlUniquenessQuery .= ' WHERE '.$sUniquenessFilter;
}
/** @var \DBObjectSearch $oUniquenessQuery */
$oUniquenessQuery = DBObjectSearch::FromOQL($sOqlUniquenessQuery);
if (!$this->IsNew())
@@ -1533,16 +1601,25 @@ abstract class DBObject implements iDisplay
$oUniquenessQuery->AddCondition($sAttributeCode, $attributeValue, '=');
}
$aChildClassesWithRuleDisabled = MetaModel::GetChildClassesWithDisabledUniquenessRule($sRuleRootClass, $sUniquenessRuleId);
if (!empty($aChildClassesWithRuleDisabled))
{
$oUniquenessQuery->AddConditionForInOperatorUsingParam('finalclass', $aChildClassesWithRuleDisabled, false);
}
return $oUniquenessQuery;
}
/**
* check integrity rules (before inserting or updating the object)
* a displayable error is returned
* Check integrity rules (before inserting or updating the object)
*
* Errors should be inserted in {@link $m_aCheckIssues} and {@link $m_aCheckWarnings} arrays
*
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*
* @api
*/
public function DoCheckToWrite()
{
@@ -1607,6 +1684,8 @@ abstract class DBObject implements iDisplay
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*
* @internal do not overwrite ! Use {@link DoCheckToWrite} instead
*/
final public function CheckToWrite()
{
@@ -1636,6 +1715,10 @@ abstract class DBObject implements iDisplay
// check if it is allowed to delete the existing object from the database
// a displayable error is returned
/**
* check if it is allowed to delete the existing object from the database
*
* a displayable error is added in {@link $m_aDeleteIssues}
*
* @param \DeletionPlan $oDeletionPlan
*
* @throws \CoreException
@@ -1757,10 +1840,14 @@ abstract class DBObject implements iDisplay
}
}
return $aDelta;
}
}
// List the attributes that have been changed
// Returns an array of attname => currentvalue
/**
* List the attributes that have been changed
*
* @return array attname => currentvalue
* @internal
*/
public function ListChanges()
{
if ($this->m_bIsInDB)
@@ -1820,13 +1907,21 @@ abstract class DBObject implements iDisplay
return true;
}
// used only by insert
/**
* Used only by insert, Meant to be overloaded
*
* @api
*/
protected function OnObjectKeyReady()
{
// Meant to be overloaded
}
// used both by insert/update
/**
* used both by insert/update
*
* @throws \CoreException
* @internal
*/
private function DBWriteLinks()
{
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode => $oAttDef)
@@ -1835,12 +1930,18 @@ abstract class DBObject implements iDisplay
if (!array_key_exists($sAttCode, $this->m_aTouchedAtt)) continue;
if (array_key_exists($sAttCode, $this->m_aModifiedAtt) && ($this->m_aModifiedAtt[$sAttCode] == false)) continue;
/** @var \ormLinkSet $oLinkSet */
$oLinkSet = $this->m_aCurrValues[$sAttCode];
$oLinkSet->DBWrite($this);
}
}
// used both by insert/update
/**
* Used both by insert/update
*
* @throws \CoreException
* @internal
*/
private function WriteExternalAttributes()
{
foreach (MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode => $oAttDef)
@@ -1881,8 +1982,18 @@ abstract class DBObject implements iDisplay
self::$m_aBulkInsertItems = array();
self::$m_aBulkInsertCols = array();
self::$m_bBulkInsert = false;
}
}
/**
* Persists new object in the DB
*
* @param $sTableClass
*
* @return bool|int false if nothing to persist (no change), new key value otherwise
* @throws \CoreException
* @throws \MySQLException
* @internal
*/
private function DBInsertSingleTable($sTableClass)
{
$sTable = MetaModel::DBGetTable($sTableClass);
@@ -1965,7 +2076,7 @@ abstract class DBObject implements iDisplay
}
/**
* Insert of record for the new object into the database
* Persists object to new records in the DB
*
* @return int key of the newly created object
* @throws \ArchivedObjectException
@@ -1975,6 +2086,8 @@ abstract class DBObject implements iDisplay
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
*
* @internal
*/
public function DBInsertNoReload()
{
@@ -2023,6 +2136,7 @@ abstract class DBObject implements iDisplay
if (in_array($sState, $oAttDef->GetStates()))
{
// Start the stop watch and compute the deadlines
/** @var \ormStopWatch $oSW */
$oSW = $this->Get($sAttCode);
$oSW->Start($this, $oAttDef);
$oSW->ComputeDeadlines($this, $oAttDef);
@@ -2178,6 +2292,17 @@ abstract class DBObject implements iDisplay
}
}
/**
* @return int|null inserted object key
* @throws \ArchivedObjectException
* @throws \CoreCannotSaveObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
* @internal
*/
public function DBInsert()
{
$this->DBInsertNoReload();
@@ -2993,32 +3118,56 @@ abstract class DBObject implements iDisplay
self::$aPortalToURLMaker[$sPortalId] = $sUrlMakerClass;
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function OnInsert()
{
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function AfterInsert()
{
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function OnUpdate()
{
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function AfterUpdate()
{
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function OnDelete()
{
}
// To be optionaly overloaded
/**
* Can be overloaded
*
* @api
*/
protected function AfterDelete()
{
}
@@ -3100,8 +3249,10 @@ abstract class DBObject implements iDisplay
}
/**
* This object has been created/deleted, record that as a change in link sets pointing to this (if any)
*/
* This object has been created/deleted, record that as a change in link sets pointing to this (if any)
*
* @internal
*/
private function RecordLinkSetListChange($bAdd = true)
{
foreach(MetaModel::GetTrackForwardExternalKeys(get_class($this)) as $sExtKeyAttCode => $oLinkSet)
@@ -3126,6 +3277,9 @@ abstract class DBObject implements iDisplay
}
}
/**
* @internal
*/
protected function RecordObjCreation()
{
$this->RecordLinkSetListChange(true);
@@ -3499,6 +3653,15 @@ abstract class DBObject implements iDisplay
return $iFlags;
}
/**
* @return bool true if this object is used in a data synchro
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MySQLException
* @throws \OQLException
* @internal
* @see \SynchroDataSource
*/
public function InSyncScope()
{
//
@@ -3712,7 +3875,7 @@ abstract class DBObject implements iDisplay
foreach(MetaModel::ListAttributeDefs($sLinkClass) as $sAttCode => $oAttDef)
{
// As of now, ignore other attribute (do not attempt to recurse!)
if ($oAttDef->IsScalar())
if ($oAttDef->IsScalar() && $oAttDef->IsWritable())
{
$oLinkClone->Set($sAttCode, $oSourceLink->Get($sAttCode));
}
@@ -3775,7 +3938,7 @@ abstract class DBObject implements iDisplay
$oObjectToRead = $aSourceObjects['source'];
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode => $oAttDef)
{
if ($oAttDef->IsScalar())
if ($oAttDef->IsScalar() && $oAttDef->IsWritable())
{
$this->CopyAttribute($oObjectToRead, $sAttCode, $sAttCode);
}

View File

@@ -1270,6 +1270,7 @@ class DisplayableGraph extends SimpleGraph
$oPdf->SetAutoPageBreak(true, $fBreakMargin);
$oPdf->SetAlpha(1);
$oPdf->SetTextColor(0, 0, 0);
}
/**

View File

@@ -234,19 +234,28 @@ class EMail
$oDOMDoc = new DOMDocument();
$oDOMDoc->preserveWhitespace = true;
@$oDOMDoc->loadHTML('<?xml encoding="UTF-8"?>'.$this->m_aData['body']['body']); // For loading HTML chunks where the character set is not specified
$oXPath = new DOMXPath($oDOMDoc);
$sXPath = "//img[@data-img-id]";
$sXPath = '//img[@'.InlineImage::DOM_ATTR_ID.']';
$oImagesList = $oXPath->query($sXPath);
if ($oImagesList->length != 0)
{
foreach($oImagesList as $oImg)
{
$iAttId = $oImg->getAttribute('data-img-id');
$iAttId = $oImg->getAttribute(InlineImage::DOM_ATTR_ID);
$oAttachment = MetaModel::GetObject('InlineImage', $iAttId, false, true /* Allow All Data */);
if ($oAttachment)
{
$sImageSecret = $oImg->getAttribute('data-img-secret');
$sAttachmentSecret = $oAttachment->Get('secret');
if ($sImageSecret !== $sAttachmentSecret)
{
// @see N°1921
// If copying from another iTop we could get an IMG pointing to an InlineImage with wrong secret
continue;
}
$oDoc = $oAttachment->Get('contents');
$oSwiftImage = new Swift_Image($oDoc->GetData(), $oDoc->GetFileName(), $oDoc->GetMimeType());
$sCid = $this->m_oMessage->embed($oSwiftImage);

View File

@@ -78,6 +78,7 @@ EOF;
}
EOF;
SetupUtils::builddir(dirname($sFilePath));
file_put_contents($sFilePath, $content);
}
}

View File

@@ -348,7 +348,7 @@ class HTMLDOMSanitizer extends HTMLSanitizer
$this->CleanNode($oNode);
if (($oNode instanceof DOMElement) && (strtolower($oNode->tagName) == 'img'))
{
$this->ProcessImage($oNode);
InlineImage::ProcessImageTag($oNode);
}
}
}
@@ -359,24 +359,7 @@ class HTMLDOMSanitizer extends HTMLSanitizer
}
}
}
/**
* Add an extra attribute data-img-id for images which are based on an actual InlineImage
* so that we can later reconstruct the full "src" URL when needed
* @param DOMNode $oElement
*/
protected function ProcessImage(DOMNode $oElement)
{
$sSrc = $oElement->getAttribute('src');
$sDownloadUrl = str_replace(array('.', '?'), array('\.', '\?'), INLINEIMAGE_DOWNLOAD_URL); // Escape . and ?
$sUrlPattern = '|'.$sDownloadUrl.'([0-9]+)&s=([0-9a-f]+)|';
if (preg_match($sUrlPattern, $sSrc, $aMatches))
{
$oElement->setAttribute('data-img-id', $aMatches[1]);
$oElement->setAttribute('data-img-secret', $aMatches[2]);
}
}
protected function CleanStyle($sStyle)
{
$aAllowedStyles = array();

View File

@@ -27,6 +27,11 @@ define('INLINEIMAGE_DOWNLOAD_URL', 'pages/ajax.document.php?operation=download_i
class InlineImage extends DBObject
{
/** @var string attribute to be added to IMG tags to contain ID */
const DOM_ATTR_ID = 'data-img-id';
/** @var string attribute to be added to IMG tags to contain secret */
const DOM_ATTR_SECRET = 'data-img-secret';
public static function Init()
{
$aParams = array
@@ -178,18 +183,19 @@ class InlineImage extends DBObject
$oInlineImage->DBUpdate();
}
}
else
{
IssueLog::Error('InlineImage: Error during FinalizeInlineImages(), no transaction ID for object '.get_class($oObject).'#'.$oObject->GetKey().'.');
IssueLog::Error('|- Call stack:');
$oException = new Exception();
$sStackTrace = $oException->getTraceAsString();
IssueLog::Error($sStackTrace);
IssueLog::Error('|- POST vars:');
IssueLog::Error(print_r($_POST, true));
}
// For tracing issues with Inline Images... but beware not all updates are interactive, so this trace happens when creating objects non-interactively (REST, Synchro...)
// else
// {
// IssueLog::Error('InlineImage: Error during FinalizeInlineImages(), no transaction ID for object '.get_class($oObject).'#'.$oObject->GetKey().'.');
//
// IssueLog::Error('|- Call stack:');
// $oException = new Exception();
// $sStackTrace = $oException->getTraceAsString();
// IssueLog::Error($sStackTrace);
//
// IssueLog::Error('|- POST vars:');
// IssueLog::Error(print_r($_POST, true));
// }
}
/**
@@ -220,7 +226,8 @@ class InlineImage extends DBObject
$aNeedles = array();
$aReplacements = array();
// Find img tags with an attribute data-img-id
if (preg_match_all('/<img ([^>]*)data-img-id="([0-9]+)"([^>]*)>/i', $sHtml, $aMatches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
if (preg_match_all('/<img ([^>]*)'.self::DOM_ATTR_ID.'="([0-9]+)"([^>]*)>/i',
$sHtml, $aMatches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
{
$sUrl = utils::GetAbsoluteUrlAppRoot().INLINEIMAGE_DOWNLOAD_URL;
foreach($aMatches as $aImgInfo)
@@ -242,6 +249,42 @@ class InlineImage extends DBObject
return $sHtml;
}
/**
* Add an extra attribute data-img-id for images which are based on an actual InlineImage
* so that we can later reconstruct the full "src" URL when needed
*
* @param \DOMElement $oElement
*/
public static function ProcessImageTag(DOMElement $oElement)
{
$sSrc = $oElement->getAttribute('src');
$sDownloadUrl = str_replace(array('.', '?'), array('\.', '\?'), INLINEIMAGE_DOWNLOAD_URL); // Escape . and ?
$sUrlPattern = '|'.$sDownloadUrl.'([0-9]+)&s=([0-9a-f]+)|';
$bIsInlineImage = preg_match($sUrlPattern, $sSrc, $aMatches);
if (!$bIsInlineImage)
{
return;
}
$iInlineImageId = $aMatches[1];
$sInlineIMageSecret = $aMatches[2];
$sAppRoot = utils::GetAbsoluteUrlAppRoot();
$sAppRootPattern = '/^'.preg_quote($sAppRoot, '/').'/';
$bIsSameItop = preg_match($sAppRootPattern, $sSrc);
if (!$bIsSameItop)
{
// @see N°1921
// image from another iTop should be treated as external images
$oElement->removeAttribute(self::DOM_ATTR_ID);
$oElement->removeAttribute(self::DOM_ATTR_SECRET);
return;
}
$oElement->setAttribute(self::DOM_ATTR_ID, $iInlineImageId);
$oElement->setAttribute(self::DOM_ATTR_SECRET, $sInlineIMageSecret);
}
/**
* Get the javascript fragment - to be added to "on document ready" - to adjust (on the fly) the width on Inline Images
*/

View File

@@ -528,13 +528,15 @@ abstract class MetaModel
/**
* @param string $sClass
* @param bool $bClassDefinitionOnly if true then will only return properties defined in the specified class on not the properties
* from its parent classes
*
* @return array
* @return array rule id as key, rule properties as value
* @throws \CoreException
*
* @since 2.6 N°659 uniqueness constraint
* @see #SetUniquenessRuleRootClass that fixes a specific 'root_class' property to know which class is root per rule
*/
final public static function GetUniquenessRules($sClass)
final public static function GetUniquenessRules($sClass, $bClassDefinitionOnly = false)
{
if (!isset(self::$m_aClassParams[$sClass]))
{
@@ -548,6 +550,11 @@ abstract class MetaModel
$aCurrentUniquenessRules = self::$m_aClassParams[$sClass]['uniqueness_rules'];
}
if ($bClassDefinitionOnly)
{
return $aCurrentUniquenessRules;
}
$sParentClass = self::GetParentClass($sClass);
if ($sParentClass)
{
@@ -581,6 +588,22 @@ abstract class MetaModel
return $aCurrentUniquenessRules;
}
/**
* @param string $sRootClass
* @param string $sRuleId
*
* @throws \CoreException
* @since 2.6.1 N°1918 (sous les pavés, la plage) initialize in 'root_class' property the class that has the first
* definition of the rule in the hierarchy
*/
final private static function SetUniquenessRuleRootClass($sRootClass, $sRuleId)
{
foreach (self::EnumChildClasses($sRootClass, ENUM_CHILD_CLASSES_ALL) as $sClass)
{
self::$m_aClassParams[$sClass]['uniqueness_rules'][$sRuleId]['root_class'] = $sClass;
}
}
/**
* @param string $sRuleId
* @param string $sLeafClassName
@@ -608,6 +631,49 @@ abstract class MetaModel
return $sFirstClassWithRuleId;
}
/**
* @param string $sRootClass
* @param string $sRuleId
*
* @return string[] child classes with the rule disabled, and that are concrete classes
*
* @throws \CoreException
* @since 2.6.1 N°1968 (soyez réalistes, demandez l'impossible)
*/
final public static function GetChildClassesWithDisabledUniquenessRule($sRootClass, $sRuleId)
{
$aClassesWithDisabledRule = array();
foreach (self::EnumChildClasses($sRootClass, ENUM_CHILD_CLASSES_EXCLUDETOP) as $sChildClass)
{
if (array_key_exists($sChildClass, $aClassesWithDisabledRule))
{
continue;
}
if (!array_key_exists('uniqueness_rules', self::$m_aClassParams[$sChildClass]))
{
continue;
}
if (!array_key_exists($sRuleId, self::$m_aClassParams[$sChildClass]['uniqueness_rules']))
{
continue;
}
if (self::$m_aClassParams[$sChildClass]['uniqueness_rules'][$sRuleId]['disabled'] === true)
{
$aDisabledClassChildren = self::EnumChildClasses($sChildClass, ENUM_CHILD_CLASSES_ALL);
foreach ($aDisabledClassChildren as $sDisabledClassChild)
{
if (!self::IsAbstract($sDisabledClassChild))
{
$aClassesWithDisabledRule[] = $sDisabledClassChild;
}
}
}
}
return $aClassesWithDisabledRule;
}
/**
* @param array $aRuleProperties
*
@@ -2779,21 +2845,26 @@ abstract class MetaModel
}
}
$aCurrentClassUniquenessRules = MetaModel::GetUniquenessRules($sPHPClass);
$aCurrentClassUniquenessRules = MetaModel::GetUniquenessRules($sPHPClass, true);
if (!empty($aCurrentClassUniquenessRules))
{
$aClassFields = self::GetAttributesList($sPHPClass);
foreach ($aCurrentClassUniquenessRules as $sUniquenessRuleId => $aUniquenessRuleProperties)
{
$bHasSameRuleInParent = self::HasSameUniquenessRuleInParent($sPHPClass, $sUniquenessRuleId);
$bIsRuleOverride = self::HasSameUniquenessRuleInParent($sPHPClass, $sUniquenessRuleId);
try
{
self::CheckUniquenessRuleValidity($aUniquenessRuleProperties, $bHasSameRuleInParent, $aClassFields);
self::CheckUniquenessRuleValidity($aUniquenessRuleProperties, $bIsRuleOverride, $aClassFields);
}
catch (CoreUnexpectedValue $e)
{
throw new Exception("Invalid uniqueness rule declaration : class={$sPHPClass}, rule=$sUniquenessRuleId, reason={$e->getMessage()}");
}
if (!$bIsRuleOverride)
{
self::SetUniquenessRuleRootClass($sPHPClass, $sUniquenessRuleId);
}
}
}
@@ -3092,71 +3163,77 @@ abstract class MetaModel
/**
* @param array $aUniquenessRuleProperties
* @param bool $bRuleOverride if false then control an original declaration validity,
* otherwise an override validity (can have only the disabled key)
* otherwise an override validity (can only have the 'disabled' key)
* @param string[] $aExistingClassFields if non empty, will check that all fields declared in the rules exists in the class
*
* @throws \CoreUnexpectedValue if the rule is invalid
*
* @since 2.6 N°659 uniqueness constraint
* @since 2.6.1 N°1968 (joli mois de mai...) disallow overrides of 'attributes' properties
*/
public static function CheckUniquenessRuleValidity($aUniquenessRuleProperties, $bRuleOverride = true, $aExistingClassFields = array())
{
$MANDATORY_ATTRIBUTES = array('attributes');
$UNIQUENESS_MANDATORY_KEYS_NB = count($MANDATORY_ATTRIBUTES);
$bHasDisabledKey = false;
$bHasMissingMandatoryKey = true;
$iMissingMandatoryKeysNb = $UNIQUENESS_MANDATORY_KEYS_NB;
$bHasAllMandatoryKeysMissing = false;
/** @var boolean $bHasNonDisabledKeys true if rule contains at least one key that is not 'disabled' */
$bHasNonDisabledKeys = false;
$bDisabledKeyValue = null;
foreach ($aUniquenessRuleProperties as $sUniquenessRuleKey => $aUniquenessRuleProperty)
{
if (($sUniquenessRuleKey === 'disabled') && (!is_null($aUniquenessRuleProperty)))
if ($sUniquenessRuleKey === 'disabled')
{
$bDisabledKeyValue = $aUniquenessRuleProperty;
if (!is_null($aUniquenessRuleProperty))
{
continue;
}
}
if (is_null($aUniquenessRuleProperty))
{
$bHasDisabledKey = true;
continue;
}
$bHasNonDisabledKeys = true;
if (in_array($sUniquenessRuleKey, $MANDATORY_ATTRIBUTES, true)) {
$bHasMissingMandatoryKey = false;
$iMissingMandatoryKeysNb--;
}
if (($sUniquenessRuleKey === 'attributes') && (!empty($aExistingClassFields)))
if ($sUniquenessRuleKey === 'attributes')
{
foreach ($aUniquenessRuleProperties[$sUniquenessRuleKey] as $sRuleAttribute)
if (!empty($aExistingClassFields))
{
if (!in_array($sRuleAttribute, $aExistingClassFields, true))
foreach ($aUniquenessRuleProperties[$sUniquenessRuleKey] as $sRuleAttribute)
{
throw new CoreUnexpectedValue("Uniqueness rule : non existing field '$sRuleAttribute'");
if (!in_array($sRuleAttribute, $aExistingClassFields, true))
{
throw new CoreUnexpectedValue("Uniqueness rule : non existing field '$sRuleAttribute'");
}
}
}
}
}
if ($iMissingMandatoryKeysNb == $UNIQUENESS_MANDATORY_KEYS_NB)
if ($iMissingMandatoryKeysNb === 0)
{
$bHasAllMandatoryKeysMissing = true;
$bHasMissingMandatoryKey = false;
}
if ($bHasDisabledKey)
if ($bRuleOverride && $bHasNonDisabledKeys)
{
if ($bRuleOverride && $bHasAllMandatoryKeysMissing && !$bHasNonDisabledKeys)
{
return;
}
if ($bHasMissingMandatoryKey)
{
throw new CoreUnexpectedValue('Uniqueness rule : missing mandatory properties');
}
return;
throw new CoreUnexpectedValue('Uniqueness rule : only the \'disabled\' key can be overridden');
}
if ($bHasMissingMandatoryKey)
if ($bRuleOverride && is_null($bDisabledKeyValue))
{
throw new CoreUnexpectedValue('Uniqueness rule : missing mandatory properties');
throw new CoreUnexpectedValue('Uniqueness rule : when overriding a rule, value must be set for the \'disabled\' key');
}
if (!$bRuleOverride && $bHasMissingMandatoryKey)
{
throw new CoreUnexpectedValue('Uniqueness rule : missing mandatory property');
}
}
@@ -3810,7 +3887,7 @@ abstract class MetaModel
/**
* @param string $sClass
* @param int $iOption
* @param int $iOption one of ENUM_CHILD_CLASSES_EXCLUDETOP, ENUM_CHILD_CLASSES_ALL
*
* @return array
* @throws \CoreException

View File

@@ -26,6 +26,9 @@
*/
final class ormTagSet extends ormSet
{
private $m_bDisplayPartial = false;
/**
* ormTagSet constructor.
*
@@ -299,6 +302,82 @@ final class ormTagSet extends ormSet
return $aModifiedTagCodes;
}
/**
* @return string[] list of codes for added entries
*/
public function GetAdded()
{
$aAddedTagCodes = array_keys($this->aAdded);
sort($aAddedTagCodes);
return $aAddedTagCodes;
}
/**
* @return string[] list of codes for removed entries
*/
public function GetRemoved()
{
$aRemovedTagCodes = array_keys($this->aRemoved);
sort($aRemovedTagCodes);
return $aRemovedTagCodes;
}
/**
* Apply a delta to the current ItemSet
* $aDelta['added] = array of added items
* $aDelta['removed'] = array of removed items
*
* @param $aDelta
*
* @throws \CoreException
*/
public function ApplyDelta($aDelta)
{
if (isset($aDelta['removed']))
{
foreach($aDelta['removed'] as $oItem)
{
$this->Remove($oItem);
}
}
if (isset($aDelta['added']))
{
foreach($aDelta['added'] as $oItem)
{
$this->Add($oItem);
}
}
}
/**
* Populates the added and removed arrays for bulk edit
*
* @param string[] $aItems
*
* @throws \CoreException
*/
public function GenerateDiffFromArray($aItems)
{
foreach($this->GetValues() as $oCurrentItem)
{
if (!in_array($oCurrentItem, $aItems))
{
$this->Remove($oCurrentItem);
}
}
foreach($aItems as $oNewItem)
{
$this->Add($oNewItem);
}
// Keep only the aModified list
$this->aRemoved = array();
$this->aAdded = array();
}
/**
* Check whether a tag code is valid or not for this TagSet
*
@@ -479,4 +558,21 @@ final class ormTagSet extends ormSet
return TagSetFieldData::GetTagDataClassName($this->sClass, $this->sAttCode);
}
/**
* @return bool
*/
public function DisplayPartial()
{
return $this->m_bDisplayPartial;
}
/**
* @param bool $m_bDisplayPartial
*/
public function SetDisplayPartial($m_bDisplayPartial)
{
$this->m_bDisplayPartial = $m_bDisplayPartial;
}
}

View File

@@ -257,13 +257,14 @@ class CoreServices implements iRestServiceProvider
*/
public function ListOperations($sVersion)
{
// 1.4 - iTop 2.5.2, 2.6.1, 2.7.0, Verb 'core/get': added pagination parameters limit and page
// 1.3 - iTop 2.2.0, Verb 'get_related': added the options 'redundancy' and 'direction' to take into account the redundancy in the impact analysis
// 1.2 - was documented in the wiki but never released ! Same as 1.3
// 1.1 - In the reply, objects have a 'key' entry so that it is no more necessary to split class::key programmaticaly
// 1.0 - Initial implementation in iTop 2.0.1
//
$aOps = array();
if (in_array($sVersion, array('1.0', '1.1', '1.2', '1.3')))
if (in_array($sVersion, array('1.0', '1.1', '1.2', '1.3', '1.4')))
{
$aOps[] = array(
'verb' => 'core/create',
@@ -299,9 +300,16 @@ class CoreServices implements iRestServiceProvider
/**
* Enumerate services delivered by this class
*
* @param string $sVersion The version (e.g. 1.0) supported by the services
* @param string $sVerb
* @param $aParams
*
* @return RestResult The standardized result structure (at least a message)
* @throws Exception in case of internal failure.
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \SimpleGraphException
* @throws \Exception
*/
public function ExecOperation($sVersion, $sVerb, $aParams)
{
@@ -436,8 +444,10 @@ class CoreServices implements iRestServiceProvider
$key = RestUtils::GetMandatoryParam($aParams, 'key');
$aShowFields = RestUtils::GetFieldList($sClass, $aParams, 'output_fields');
$bExtendedOutput = (RestUtils::GetOptionalParam($aParams, 'output_fields', '*') == '*+');
$iLimit = (int)RestUtils::GetOptionalParam($aParams, 'limit', 0);
$iPage = (int)RestUtils::GetOptionalParam($aParams, 'page', 1);
$oObjectSet = RestUtils::GetObjectSetFromKey($sClass, $key);
$oObjectSet = RestUtils::GetObjectSetFromKey($sClass, $key, $iLimit, self::getOffsetFromLimitAndPage($iLimit, $iPage));
$sTargetClass = $oObjectSet->GetFilter()->GetClass();
if (UserRights::IsActionAllowed($sTargetClass, UR_ACTION_READ) != UR_ALLOWED_YES)
@@ -450,6 +460,11 @@ class CoreServices implements iRestServiceProvider
$oResult->code = RestResult::UNAUTHORIZED;
$oResult->message = "The current user does not have enough permissions for exporting data of class $sTargetClass";
}
elseif ($iPage < 1)
{
$oResult->code = RestResult::INVALID_PAGE;
$oResult->message = "The request page number is not valid. It must be an integer greater than 0";
}
else
{
while ($oObject = $oObjectSet->Fetch())
@@ -774,4 +789,15 @@ class CoreServices implements iRestServiceProvider
$oResult->message = $sRes;
}
}
/**
* @param int $iLimit
* @param int $iPage
*
* @return int Offset for a given page number
*/
protected static function getOffsetFromLimitAndPage($iLimit, $iPage)
{
return $iLimit * max(0, $iPage - 1);
}
}

View File

@@ -1,5 +1,5 @@
// Beware the version number MUST be enclosed with quotes otherwise v2.3.0 becomes v2 0.3 .0
$version: "v2.6.0";
$version: "v2.6.1";
// Base colors
$gray-base: #000 !default;

View File

@@ -343,10 +343,10 @@ a.small_action {
padding-left: 5px;
padding-top: 2px;
padding-bottom: 2px;
background: #ea7d1e url(../images/actions_left.png?v=v2.6.0) no-repeat left;
background: #ea7d1e url(../images/actions_left.png?v=v2.6.1) no-repeat left;
}
.actions_details span {
background: url(../images/actions_right.png?v=v2.6.0) no-repeat right;
background: url(../images/actions_right.png?v=v2.6.1) no-repeat right;
color: #fff;
font-weight: bold;
padding-top: 2px;
@@ -520,7 +520,7 @@ div.actions_menu > ul {
nowidth: 70px;
padding-left: 5px;
/* Nasty work-around for IE... en attendant mieux */
background: #ea7d1e url(../images/actions_left.png?v=v2.6.0) no-repeat top left;
background: #ea7d1e url(../images/actions_left.png?v=v2.6.1) no-repeat top left;
cursor: pointer;
margin: 0;
}
@@ -532,7 +532,7 @@ div.actions_menu > ul > li {
height: 17px;
padding-right: 16px;
padding-left: 4px;
background: url(../images/actions_right.png?v=v2.6.0) no-repeat top right transparent;
background: url(../images/actions_right.png?v=v2.6.1) no-repeat top right transparent;
font-weight: bold;
color: #fff;
vertical-align: middle;
@@ -678,7 +678,7 @@ td a.dp-choose-date, a.dp-choose-date, td a.dp-choose-date:hover, a.dp-choose-da
display: block;
text-indent: -2000px;
overflow: hidden;
background: url(../images/calendar.png?v=v2.6.0) no-repeat;
background: url(../images/calendar.png?v=v2.6.1) no-repeat;
}
td a.dp-choose-date.dp-disabled, a.dp-choose-date.dp-disabled {
background-position: 0 -20px;
@@ -1332,19 +1332,19 @@ input.dp-applied {
}
/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */
table.listResults tr.odd td.truncated, table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, .wizContainer table.listResults tr td.truncated {
background: url(../images/truncated.png?v=v2.6.0) bottom repeat-x;
background: url(../images/truncated.png?v=v2.6.1) bottom repeat-x;
}
/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */
table.listResults tr.even td.truncated, .wizContainer table.listResults tr.even td.truncated {
background: #f9f9f1 url(../images/truncated.png?v=v2.6.0) bottom repeat-x;
background: #f9f9f1 url(../images/truncated.png?v=v2.6.1) bottom repeat-x;
}
/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */
table.listResults tr.even td.hover.truncated, .wizContainer table.listResults tr.even td.hover.truncated {
background: #fdf5d0 url(../images/truncated.png?v=v2.6.0) bottom repeat-x;
background: #fdf5d0 url(../images/truncated.png?v=v2.6.1) bottom repeat-x;
}
/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */
table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, .wizContainer table.listResults tr td.hover.truncated {
background: #fdf5d0 url(../images/truncated.png?v=v2.6.0) bottom repeat-x;
background: #fdf5d0 url(../images/truncated.png?v=v2.6.1) bottom repeat-x;
}
table.listResults.truncated {
border-bottom: 0;
@@ -1452,7 +1452,7 @@ div#logo {
div#logo div {
height: 88px;
width: 244px;
background: url(../images/itop-logo-2.png?v=v2.6.0) left no-repeat;
background: url(../images/itop-logo-2.png?v=v2.6.1) left no-repeat;
}
#left-pane .ui-layout-north {
overflow: hidden;
@@ -1544,7 +1544,7 @@ div#logo div {
}
#global-search-image {
vertical-align: middle;
background: url(../images/search.png?v=v2.6.0) center center no-repeat;
background: url(../images/search.png?v=v2.6.1) center center no-repeat;
display: inline-block;
width: 28px;
height: 30px;
@@ -1573,7 +1573,7 @@ span.ui-icon {
margin: 0 2px;
}
.ui-layout-button-pin-down {
background: url(../images/splitter-bkg.png?v=v2.6.0) transparent;
background: url(../images/splitter-bkg.png?v=v2.6.1) transparent;
width: 16px;
background-position: -144px -144px;
}
@@ -2089,7 +2089,7 @@ img.prev, img.first, img.next, img.last {
}
div.actions_button {
float: right;
background: #ea7d1e url("../images/actions_left.png?v=v2.6.0") no-repeat scroll left top;
background: #ea7d1e url("../images/actions_left.png?v=v2.6.1") no-repeat scroll left top;
padding-left: 5px;
margin-top: 0;
margin-right: 10px;
@@ -2097,7 +2097,7 @@ div.actions_button {
vertical-align: middle;
}
div.actions_button a, .actions_button a:hover, .actions_button a:visited {
background: #ea7d1e url(../images/actions_bkg.png?v=v2.6.0) no-repeat scroll right top;
background: #ea7d1e url(../images/actions_bkg.png?v=v2.6.1) no-repeat scroll right top;
color: #fff;
padding-right: 8px;
cursor: pointer;
@@ -2121,10 +2121,10 @@ select#org_id {
cursor: not-allowed;
}
.dragHover {
background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png?v=v2.6.0);
background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png?v=v2.6.1);
}
.edit_mode .dashlet {
background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png?v=v2.6.0);
background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png?v=v2.6.1);
padding: 5px;
margin: 0;
position: relative;
@@ -2134,6 +2134,17 @@ select#org_id {
padding: 5px;
margin: 0;
}
/* Prevent cursor clicking on the calendar (eg. While editing dashlet) */
.dashlet-blocker {
position: absolute;
z-index: 9;
/* To be above calendar links & all, but below .close-box (9) */
top: 0;
left: 0;
width: 100%;
height: 100%;
cursor: not-allowed;
}
td.layout_cell {
height: 50px;
/* min-height does not work */
@@ -2158,7 +2169,7 @@ table.prop_table {
top: 0;
right: 0;
z-index: 10;
background: transparent url(../images/delete.png?v=v2.6.0) no-repeat center;
background: transparent url(../images/delete.png?v=v2.6.1) no-repeat center;
}
td.prop_value {
text-align: left;
@@ -2379,17 +2390,23 @@ a.summary, a.summary:hover {
}
.message_info {
border: 1px solid #993;
background: url(../images/info-mini.png?v=v2.6.0) 1em 1em no-repeat #ffc;
background: url(../images/info-mini.png?v=v2.6.1) 1em 1em no-repeat #ffc;
padding-left: 3em;
}
.message_ok {
border: 1px solid #393;
background: url(../images/ok.png?v=v2.6.0) 1em 1em no-repeat #cfc;
background: url(../images/ok.png?v=v2.6.1) 1em 1em no-repeat #cfc;
padding-left: 3em;
}
.message_warning {
border: 1px solid #ec9800;
background: url(../images/error.png?v=v2.6.1) 1em 1em no-repeat #ffd78d;
color: #000;
padding-left: 3em;
}
.message_error {
border: 1px solid #933;
background: url(../images/error.png?v=v2.6.0) 1em 1em no-repeat #fcc;
background: url(../images/error.png?v=v2.6.1) 1em 1em no-repeat #fcc;
padding-left: 3em;
}
.fg-menu a img {
@@ -2520,18 +2537,18 @@ div.explain-printable {
}
#hiddeable_chapters .ui-tabs .ui-tabs-nav li.hideable-chapter span {
padding-left: 20px;
background: url(../images/eye-open-555.png?v=v2.6.0) 2px center no-repeat;
background: url(../images/eye-open-555.png?v=v2.6.1) 2px center no-repeat;
}
#hiddeable_chapters .ui-tabs .ui-tabs-nav li.hideable-chapter.strikethrough span {
text-decoration: line-through;
background: url(../images/eye-closed-555.png?v=v2.6.0) 2px center no-repeat;
background: url(../images/eye-closed-555.png?v=v2.6.1) 2px center no-repeat;
}
.printable-version legend {
padding-left: 26px;
background: #1c94c4 url(../images/eye-open-fff.png?v=v2.6.0) 8px center no-repeat;
background: #1c94c4 url(../images/eye-open-fff.png?v=v2.6.1) 8px center no-repeat;
}
.printable-version .strikethrough legend {
background: #1c94c4 url(../images/eye-closed-fff.png?v=v2.6.0) 8px center no-repeat;
background: #1c94c4 url(../images/eye-closed-fff.png?v=v2.6.1) 8px center no-repeat;
}
.printable-version fieldset.strikethrough span {
display: none;
@@ -2682,7 +2699,7 @@ span.search-button, span.refresh-button {
#itop-breadcrumb .breadcrumb-item a::after {
content: '';
position: absolute;
background-image: url(../images/breadcrumb-separator.png?v=v2.6.0);
background-image: url(../images/breadcrumb-separator.png?v=v2.6.1);
background-repeat: no-repeat;
width: 8px;
height: 16px;
@@ -2916,6 +2933,17 @@ table.listResults .originColor {
.menu-icon-select > .ui-menu-item {
padding: 0.3em 3%;
}
.menu-icon-select > .ui-menu-item > * {
width: 100%;
white-space: nowrap;
overflow-x: hidden;
text-overflow: ellipsis;
}
.menu-icon-select > .ui-menu-item > * > img {
max-width: 80px;
max-height: 45px;
margin-right: 10px;
}
.attribute.attribute-set .attribute-set-item::after {
content: ",";
margin-right: 0.5em;

View File

@@ -2478,6 +2478,16 @@ select#org_id {
padding: 5px;
margin:0;
}
/* Prevent cursor clicking on the calendar (eg. While editing dashlet) */
.dashlet-blocker {
position: absolute;
z-index: 9; /* To be above calendar links & all, but below .close-box (9) */
top: 0;
left: 0;
width: 100%;
height: 100%;
cursor: not-allowed;
}
td.layout_cell {
height: 50px; /* min-height does not work */
vertical-align: top;
@@ -2752,6 +2762,12 @@ a.summary, a.summary:hover {
background: url(../images/ok.png?v=#{$version}) 1em 1em no-repeat #cfc;
padding-left: 3em;
}
.message_warning {
border: 1px solid #ec9800;
background: url(../images/error.png?v=#{$version}) 1em 1em no-repeat #ffd78d;
color: #000;
padding-left: 3em;
}
.message_error {
border: 1px solid #933;
background: url(../images/error.png?v=#{$version}) 1em 1em no-repeat #fcc;
@@ -3343,6 +3359,19 @@ table.listResults .originColor{
}
.menu-icon-select > .ui-menu-item{
padding: .3em 3%;
> *{
width: 100%;
white-space: nowrap;
overflow-x: hidden;
text-overflow: ellipsis;
> img{
max-width: 80px;
max-height: 45px;
margin-right: 10px;
}
}
}
//////////////////////

View File

@@ -27,7 +27,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-external/2.6.0',
'authent-external/2.6.1',
array(
// Identification
//

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
//

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,11 +29,9 @@
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserExternal
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:UserExternal' => '外部用户',
'Class:UserExternal+' => '用户在iTop 外部验证身份',

View File

@@ -9,7 +9,7 @@ if (function_exists('ldap_connect'))
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-ldap/2.6.0',
'authent-ldap/2.6.1',
array(
// Identification
//

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
//

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,11 +29,9 @@
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLDAP
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:UserLDAP' => 'LDAP 用户',
'Class:UserLDAP+' => '用户身份由LDAP 认证',

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-local/2.6.0',
'authent-local/2.6.1',
array(
// Identification
//

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
//

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,11 +29,9 @@
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLocal
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:UserLocal' => 'iTop 用户',
'Class:UserLocal+' => '用户由 iTop 验证身份',

View File

@@ -37,4 +37,26 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Attachment:Max_Ko' => '(Maximální velikost souboru: %1$s KiB)',
'Attachments:NoAttachment' => 'Žádná příloha. ',
'Attachments:PreviewNotAvailable' => 'Pro tento typ přílohy není náhled k dispozici.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -34,4 +34,26 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
'Attachment:Max_Ko' => '(Maksimal størrelse: %1$s KB)',
'Attachments:NoAttachment' => 'Intet vedhæftet. ',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('DA DA', 'Danish', 'Dansk', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -36,4 +36,26 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Attachment:Max_Ko' => '(Maximale Dateigröße: %1$s KB)',
'Attachments:NoAttachment' => 'Kein Attachment. ',
'Attachments:PreviewNotAvailable' => 'Vorschau für diesen Attachment-Typ nicht verfügbar.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -35,4 +35,26 @@ Dict::Add('EN US', 'English', 'English', array(
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)',
'Attachments:NoAttachment' => 'No attachment. ',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s',
));
//
// Class: Attachment
//
Dict::Add('EN US', 'English', 'English', array(
'Class:Attachment' => 'Attachment',
'Class:Attachment+' => '',
'Class:Attachment/Attribute:expire' => 'Expire',
'Class:Attachment/Attribute:expire+' => '',
'Class:Attachment/Attribute:temp_id' => 'Temporary id',
'Class:Attachment/Attribute:temp_id+' => '',
'Class:Attachment/Attribute:item_class' => 'Item class',
'Class:Attachment/Attribute:item_class+' => '',
'Class:Attachment/Attribute:item_id' => 'Item',
'Class:Attachment/Attribute:item_id+' => '',
'Class:Attachment/Attribute:item_org_id' => 'Item organization',
'Class:Attachment/Attribute:item_org_id+' => '',
'Class:Attachment/Attribute:contents' => 'Contents',
'Class:Attachment/Attribute:contents+' => '',
));

View File

@@ -36,4 +36,26 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Attachment:Max_Ko' => '(Tamaño Máximo de Archivo: %1$s Kb)',
'Attachments:NoAttachment' => 'No hay Anexo. ',
'Attachments:PreviewNotAvailable' => 'Vista preliminar no disponible para este tipo de Anexo.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -35,4 +35,26 @@ Dict::Add('FR FR', 'French', 'Français', array(
'Attachment:Max_Ko' => '(Taille de fichier max.: %1$s Kb)',
'Attachments:NoAttachment' => 'Aucune pièce jointe.',
'Attachments:PreviewNotAvailable' => 'Pas d\'aperçu pour ce type de pièce jointe.',
'Attachments:Error:FileTooLarge' => 'Le fichier est trop gros pour être chargé. %1$s',
));
//
// Class: Attachment
//
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Attachment' => 'Attachement',
'Class:Attachment+' => '',
'Class:Attachment/Attribute:expire' => 'Expire',
'Class:Attachment/Attribute:expire+' => '',
'Class:Attachment/Attribute:temp_id' => 'Id Temporaire',
'Class:Attachment/Attribute:temp_id+' => '',
'Class:Attachment/Attribute:item_class' => 'Classe d\'Item',
'Class:Attachment/Attribute:item_class+' => '',
'Class:Attachment/Attribute:item_id' => 'Item',
'Class:Attachment/Attribute:item_id+' => '',
'Class:Attachment/Attribute:item_org_id' => 'Organisation de l\'Item',
'Class:Attachment/Attribute:item_org_id+' => '',
'Class:Attachment/Attribute:contents' => 'Contenu',
'Class:Attachment/Attribute:contents+' => '',
));

View File

@@ -34,4 +34,26 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
'Attachments:NoAttachment' => 'No attachment. ~~',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -34,4 +34,26 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
'Attachments:NoAttachment' => 'No attachment. ~~',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('IT IT', 'Italian', 'Italiano', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -33,4 +33,26 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'Attachment:Max_Ko' => '(最大ファイルサイズ: %1$s KB)',
'Attachments:NoAttachment' => '添付はありません。',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -54,16 +54,42 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
}
}
protected function GetMaxUpload()
/**
* Returns the value of "upload_max_filesize" in bytes if upload allowed, false otherwise.
*
* @since 2.6.1
*
* @return number|boolean
*/
public static function GetMaxUploadSize()
{
$iMaxUpload = ini_get('upload_max_filesize');
$sMaxUpload = ini_get('upload_max_filesize');
if (!$sMaxUpload)
{
$result = false;
}
else
{
$result = utils::ConvertToBytes($sMaxUpload);
}
return $result;
}
/**
* Returns the max. file upload size allowed as a dictionary entry
*
* @return string
*/
public static function GetMaxUpload()
{
$iMaxUpload = static::GetMaxUploadSize();
if (!$iMaxUpload)
{
$sRet = Dict::S('Attachments:UploadNotAllowedOnThisSystem');
}
else
{
$iMaxUpload = utils::ConvertToBytes($iMaxUpload);
if ($iMaxUpload > 1024*1024*1024)
{
$sRet = Dict::Format('Attachment:Max_Go', sprintf('%0.2f', $iMaxUpload/(1024*1024*1024)));
@@ -327,13 +353,16 @@ EOF
}
}
$oPage->add('</span>');
$oPage->add('<div style="clear:both"></div>');
$sMaxUpload = $this->GetMaxUpload();
$oPage->p(Dict::S('Attachments:AddAttachment').'<input type="file" name="file" id="file"><span style="display:none;" id="attachment_loading">&nbsp;<img src="../images/indicator.gif"></span> '.$sMaxUpload);
$oPage->add('</span>');
$oPage->add('<div style="clear:both"></div>');
$iMaxUploadInBytes = $this->GetMaxUploadSize();
$sMaxUploadLabel = $this->GetMaxUpload();
$sFileTooBigLabel = Dict::Format('Attachments:Error:FileTooLarge', $sMaxUploadLabel);
$sFileTooBigLabelForJS = addslashes($sFileTooBigLabel);
$oPage->p(Dict::S('Attachments:AddAttachment').'<input type="file" name="file" id="file"><span style="display:none;" id="attachment_loading">&nbsp;<img src="../images/indicator.gif"></span> '.$sMaxUploadLabel);
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.iframe-transport.js');
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.fileupload.js');
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.fileupload.js');
$sDownloadLink = utils::GetAbsoluteUrlAppRoot().ATTACHMENT_DOWNLOAD_URL;
$oPage->add_ready_script(
@@ -362,6 +391,21 @@ EOF
}
}
},
send: function(e, data){
// Don't send attachment if size is greater than PHP post_max_size, otherwise it will break the request and all its parameters (\$_REQUEST, \$_POST, ...)
// Note: We loop on the files as the data structures is an array but in this case, we only upload 1 file at a time.
var iTotalSizeInBytes = 0;
for(var i = 0; i < data.files.length; i++)
{
iTotalSizeInBytes += data.files[i].size;
}
if(iTotalSizeInBytes > $iMaxUploadInBytes)
{
alert('$sFileTooBigLabelForJS');
return false;
}
},
start: function() {
$('#attachment_loading').show();
},

View File

@@ -19,7 +19,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-attachments/2.6.0',
'itop-attachments/2.6.1',
array(
// Identification
//

View File

@@ -39,4 +39,26 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'Attachment:Max_Ko' => '(Maximale bestandsgrootte: %1$s kB)',
'Attachments:NoAttachment' => 'Geen bijlage. ',
'Attachments:PreviewNotAvailable' => 'Een voorbeeld is niet beschikbaar voor dit type bijlage.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -35,4 +35,26 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Attachment:Max_Ko' => '(Tamanho máximo arquivo: %1$s Kb)',
'Attachments:NoAttachment' => 'Nenhum anexo. ',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(
@@ -22,4 +22,26 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
'Attachment:Max_Ko' => '(Максимальный размер файла: %1$s кБ)',
'Attachments:NoAttachment' => 'Нет вложений.',
'Attachments:PreviewNotAvailable' => 'Предварительный просмотр не доступен для этого типа вложений.',
'Attachments:Error:FileTooLarge' => 'Файл слишком велик для загрузки. %1$s',
));
//
// Class: Attachment
//
Dict::Add('RU RU', 'Russian', 'Русский', array(
'Class:Attachment' => 'Вложение',
'Class:Attachment+' => '',
'Class:Attachment/Attribute:expire' => 'Истекает',
'Class:Attachment/Attribute:expire+' => '',
'Class:Attachment/Attribute:temp_id' => 'Временный Id',
'Class:Attachment/Attribute:temp_id+' => '',
'Class:Attachment/Attribute:item_class' => 'Класс объекта',
'Class:Attachment/Attribute:item_class+' => '',
'Class:Attachment/Attribute:item_id' => 'Id объекта',
'Class:Attachment/Attribute:item_id+' => '',
'Class:Attachment/Attribute:item_org_id' => 'Id организации объекта',
'Class:Attachment/Attribute:item_org_id+' => '',
'Class:Attachment/Attribute:contents' => 'Содержимое',
'Class:Attachment/Attribute:contents+' => '',
));

View File

@@ -34,4 +34,26 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
'Attachments:NoAttachment' => 'No attachment. ~~',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Attachments:TabTitle_Count' => '附件 (%1$d)',
'Attachments:EmptyTabTitle' => '附件',
@@ -35,4 +34,26 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Attachment:Max_Ko' => '(最大文件尺寸: %1$s KB)',
'Attachments:NoAttachment' => '没有附件. ',
'Attachments:PreviewNotAvailable' => '该附件类型不支持预览.',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
));
//
// Class: Attachment
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));

View File

@@ -184,7 +184,15 @@ EOF
$sFile = utils::ReadParam('file', '', false, 'raw_data');
$oBackup = new DBBackupScheduled();
$sBackupDir = APPROOT.'data/backups/';
$oBackup->DownloadBackup($sBackupDir.$sFile);
$sPathNoDotDotPattern = "/^((?![\/\\\\]\.\.[\/\\\\]).)*$/";
if(preg_match($sPathNoDotDotPattern, $sBackupDir.$sFile) == 1)
{
$oBackup->DownloadBackup($sBackupDir.$sFile);
}
else
{
throw new InvalidParameterException('Invalid file path');
}
break;
}
}

View File

@@ -5,8 +5,7 @@
<rank>15</rank>
<parent>AdminTools</parent>
<url>status.php</url>
<enable_class>ResourceAdminMenu</enable_class>
<enable_action>UR_ACTION_MODIFY</enable_action>
<enable_admin_only>1</enable_admin_only>
</menu>
</menus>
</itop_design>

View File

@@ -32,7 +32,7 @@ Dict::Add('EN US', 'English', 'English', array(
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s',
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.',
'bkp-mysqldump-issue' => 'mysqldump could not be executed (retcode=%1$d): Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir',
'bkp-missing-dir' => 'The target directory %1$s count not be found',
'bkp-missing-dir' => 'The target directory %1$s could not be found',
'bkp-free-disk-space' => '<b>%1$s free</b> in %2$s',
'bkp-dir-not-writeable' => '%1$s is not writeable',
'bkp-wrong-format-spec' => 'The current specification to format the file names is wrong (%1$s). A default specification will apply: %2$s',

View File

@@ -47,31 +47,14 @@ class DBBackupScheduled extends DBBackup
{
protected function LogInfo($sMsg)
{
static $bDebug = null;
if ($bDebug == null)
{
$bDebug = MetaModel::GetConfig()->GetModuleSetting('itop-backup', 'debug', false);
}
if ($bDebug)
{
echo $sMsg."\n";
}
echo $sMsg."\n";
IssueLog::Info($sMsg);
}
protected function LogError($sMsg)
{
static $bDebug = null;
if ($bDebug == null)
{
$bDebug = MetaModel::GetConfig()->GetModuleSetting('itop-backup', 'debug', false);
}
IssueLog::Error($sMsg);
if ($bDebug)
{
echo 'Error: '.$sMsg."\n";
}
echo 'Error: '.$sMsg."\n";
}
/**

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-backup/2.6.0',
'itop-backup/2.6.1',
array(
// Identification
//
@@ -52,7 +52,7 @@ SetupWebPage::AddModule(
//'file_name_format' => '__DB__-%Y-%m-%d_%H_%M',
'retention_count' => 5,
'enabled' => true,
'debug' => false,
'itop_root' => '',
'itop_backup_incident' => '',
),
)

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(
@@ -27,7 +27,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
'bkp-week-days' => 'Резервное копирование будет выполняться <b>каждый %1$s в %2$s</b>',
'bkp-retention' => 'Не более <b>%1$d файлов резервных копий будут храниться</b> в целевом каталоге.',
'bkp-next-to-delete' => 'Будет удалена при следующем запуске резервного копирования (см. параметр \\"retention_count\\")',
'bkp-table-file' => 'Файл',
'bkp-table-file' => 'Файл',
'bkp-table-file+' => 'Только файлы с расширением .zip считаются файлами резервных копий.',
'bkp-table-size' => 'Размер',
'bkp-table-size+' => '',

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'bkp-backup-running' => '备份正在进行,请稍后...',

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-virtualization-storage/2.6.0',
'itop-bridge-virtualization-storage/2.6.1',
array(
// Identification
//

View File

@@ -4561,7 +4561,7 @@
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item>
<item id="recent_changes" _delta="define">
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item>
@@ -4579,7 +4579,7 @@
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item>
<item id="recent_changes" _delta="define">
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item>
@@ -4597,7 +4597,7 @@
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item>
<item id="recent_changes" _delta="define">
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item>
@@ -4619,7 +4619,7 @@
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item>
<item id="recent_changes" _delta="define">
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item>
@@ -4633,7 +4633,7 @@
<icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
</item>
<item id="recent_changes" _delta="define">
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt-itil/images/change-done.png</icon>
</item>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-change-mgmt-itil/2.6.0',
'itop-change-mgmt-itil/2.6.1',
array(
// Identification
//

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Menu:ChangeManagement' => '变更管理',
'Menu:Change:Overview' => '概况',

View File

@@ -836,7 +836,7 @@
</item>
<item id="recent_changes" _delta="define">
<oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt/images/change-done.png</icon>
<default>no</default>
@@ -858,7 +858,7 @@
</item>
<item id="recent_changes" _delta="define">
<oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt/images/change-done.png</icon>
<default>no</default>
@@ -880,7 +880,7 @@
</item>
<item id="recent_changes" _delta="define">
<oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt/images/change-done.png</icon>
<default>no</default>
@@ -906,7 +906,7 @@
</item>
<item id="recent_changes" _delta="define">
<oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted')AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt/images/change-done.png</icon>
<default>no</default>
@@ -924,7 +924,7 @@
</item>
<item id="recent_changes" _delta="define">
<oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
<![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.outage = 'yes') AND (C.status IN ('closed')) AND (L.impact_code != 'not_impacted')AND (C.end_date < NOW() AND C.end_date > DATE_SUB(NOW(), INTERVAL 3 DAY ))]]></oql>
<dict>Tickets:Related:RecentChanges</dict>
<icon>itop-change-mgmt/images/change-done.png</icon>
<default>no</default>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-change-mgmt/2.6.0',
'itop-change-mgmt/2.6.1',
array(
// Identification
//

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(
@@ -30,8 +30,8 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
'UI-ChangeManagementOverview-Last-7-days' => 'Количество изменений за 7 дней',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Изменения по домену за 7 дней',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Изменения по статусу за 7 дней',
'Tickets:Related:OpenChanges' => 'Open changes~~',
'Tickets:Related:RecentChanges' => 'Recent changes (72h)~~',
'Tickets:Related:OpenChanges' => 'Открытые изменения',
'Tickets:Related:RecentChanges' => 'Недавние изменения (72ч)',
));
// Dictionnay conventions

View File

@@ -20,7 +20,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Menu:ChangeManagement' => '变更管理',
'Menu:Change:Overview' => '概况',

View File

@@ -1803,88 +1803,88 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
//
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Menu:DataAdministration' => 'Správa dat',
'Menu:DataAdministration+' => 'Správa dat',
'Menu:Catalogs' => 'Katalogy',
'Menu:Catalogs+' => 'Datové typy',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => 'Hromadné vytvoření nebo aktualizace',
'Menu:Organization' => 'Organizace',
'Menu:Organization+' => 'Všechny organizace',
'Menu:Application' => 'Aplikace',
'Menu:Application+' => 'Všechny aplikace',
'Menu:DBServer' => 'Databázové servery',
'Menu:DBServer+' => 'Databázové servery',
'Menu:ConfigManagement' => 'Správa konfigurací',
'Menu:ConfigManagement+' => 'Správa konfigurací',
'Menu:ConfigManagementOverview' => 'Přehled',
'Menu:ConfigManagementOverview+' => 'Přehled',
'Menu:Contact' => 'Kontakty',
'Menu:Contact+' => 'Kontakty',
'Menu:Contact:Count' => '%1$d kontaktů',
'Menu:Person' => 'Osoby',
'Menu:Person+' => 'Všechny osoby',
'Menu:Team' => 'Týmy',
'Menu:Team+' => 'Všechny týmy',
'Menu:Document' => 'Dokumenty',
'Menu:Document+' => 'Všechny dokumenty',
'Menu:Location' => 'Umístění',
'Menu:DataAdministration' => 'Správa dat',
'Menu:DataAdministration+' => 'Správa dat',
'Menu:Catalogs' => 'Katalogy',
'Menu:Catalogs+' => 'Datové typy',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => 'Hromadné vytvoření nebo aktualizace',
'Menu:Organization' => 'Organizace',
'Menu:Organization+' => 'Všechny organizace',
'Menu:Application' => 'Aplikace',
'Menu:Application+' => 'Všechny aplikace',
'Menu:DBServer' => 'Databázové servery',
'Menu:DBServer+' => 'Databázové servery',
'Menu:ConfigManagement' => 'Správa konfigurací',
'Menu:ConfigManagement+' => 'Správa konfigurací',
'Menu:ConfigManagementOverview' => 'Přehled',
'Menu:ConfigManagementOverview+' => 'Přehled',
'Menu:Contact' => 'Kontakty',
'Menu:Contact+' => 'Kontakty',
'Menu:Contact:Count' => '%1$d kontaktů',
'Menu:Person' => 'Osoby',
'Menu:Person+' => 'Všechny osoby',
'Menu:Team' => 'Týmy',
'Menu:Team+' => 'Všechny týmy',
'Menu:Document' => 'Dokumenty',
'Menu:Document+' => 'Všechny dokumenty',
'Menu:Location' => 'Umístění',
'Menu:Location+' => 'Všechna umístění',
'Menu:ConfigManagementCI' => 'Konfigurační položky',
'Menu:ConfigManagementCI+' => 'Konfigurační položky',
'Menu:BusinessProcess' => 'Obchodní procesy',
'Menu:BusinessProcess+' => 'Všechny obchodní procesy',
'Menu:ApplicationSolution' => 'Aplikační řešení',
'Menu:ApplicationSolution+' => 'Všechna aplikační řešení',
'Menu:ConfigManagementSoftware' => 'Správa aplikací',
'Menu:Licence' => 'Licence',
'Menu:Licence+' => 'Všechny licence',
'Menu:Patch' => 'Záplaty (patche)',
'Menu:Patch+' => 'Všechny záplaty (patche)',
'Menu:ApplicationInstance' => 'Instalovaný software',
'Menu:ApplicationInstance+' => 'Aplikace a databázové servery',
'Menu:ConfigManagementHardware' => 'Správa infrastruktury',
'Menu:Subnet' => 'Podsítě (subnety)',
'Menu:Subnet+' => 'Všechny podsítě (subnety)',
'Menu:NetworkDevice' => 'Síťová zařízení',
'Menu:NetworkDevice+' => 'Všechna síťová zařízení',
'Menu:Server' => 'Servery',
'Menu:Server+' => 'Všechny servery',
'Menu:Printer' => 'Tiskárny',
'Menu:Printer+' => 'Všechny tiskárny',
'Menu:MobilePhone' => 'Mobilní telefony',
'Menu:MobilePhone+' => 'Všechny mobilní telefony',
'Menu:PC' => 'Osobní počítače',
'Menu:PC+' => 'Všechny osobní počítače',
'Menu:NewContact' => 'Nový kontakt',
'Menu:NewContact+' => 'Nový kontakt',
'Menu:SearchContacts' => 'Hledat kontakty',
'Menu:SearchContacts+' => 'Hledat kontakty',
'Menu:NewCI' => 'Nová konfigurační položka',
'Menu:NewCI+' => 'Nová konfigurační položka',
'Menu:SearchCIs' => 'Hledat konfigurační položky',
'Menu:SearchCIs+' => 'Hledat konfigurační položky',
'Menu:ConfigManagement:Devices' => 'Zařízení',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktura',
'Menu:ConfigManagement:virtualization' => 'Virtualizace',
'Menu:ConfigManagement:EndUsers' => 'Koncová zařízení',
'Menu:ConfigManagement:SWAndApps' => 'Software a aplikace',
'Menu:ConfigManagement:Misc' => 'Ostatní',
'Menu:Group' => 'Skupiny konfiguračních položek',
'Menu:Group+' => 'Skupiny konfiguračních položek',
'Menu:ConfigManagement:Shortcuts' => 'Odkazy',
'Menu:ConfigManagement:AllContacts' => 'Všechny kontakty: %1$d',
'Menu:Typology' => 'Typologie',
'Menu:Typology+' => 'Konfigurace typologie',
'Menu:OSVersion' => 'Verze OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Katalog softwaru',
'Menu:Software+' => 'Katalog softwaru',
'UI_WelcomeMenu_AllConfigItems' => 'Souhrn',
'Menu:ConfigManagement:Typology' => 'Konfigurace typologie',
'Menu:Location+' => 'Všechna umístění',
'Menu:ConfigManagementCI' => 'Konfigurační položky',
'Menu:ConfigManagementCI+' => 'Konfigurační položky',
'Menu:BusinessProcess' => 'Obchodní procesy',
'Menu:BusinessProcess+' => 'Všechny obchodní procesy',
'Menu:ApplicationSolution' => 'Aplikační řešení',
'Menu:ApplicationSolution+' => 'Všechna aplikační řešení',
'Menu:ConfigManagementSoftware' => 'Správa aplikací',
'Menu:Licence' => 'Licence',
'Menu:Licence+' => 'Všechny licence',
'Menu:Patch' => 'Záplaty (patche)',
'Menu:Patch+' => 'Všechny záplaty (patche)',
'Menu:ApplicationInstance' => 'Instalovaný software',
'Menu:ApplicationInstance+' => 'Aplikace a databázové servery',
'Menu:ConfigManagementHardware' => 'Správa infrastruktury',
'Menu:Subnet' => 'Podsítě (subnety)',
'Menu:Subnet+' => 'Všechny podsítě (subnety)',
'Menu:NetworkDevice' => 'Síťová zařízení',
'Menu:NetworkDevice+' => 'Všechna síťová zařízení',
'Menu:Server' => 'Servery',
'Menu:Server+' => 'Všechny servery',
'Menu:Printer' => 'Tiskárny',
'Menu:Printer+' => 'Všechny tiskárny',
'Menu:MobilePhone' => 'Mobilní telefony',
'Menu:MobilePhone+' => 'Všechny mobilní telefony',
'Menu:PC' => 'Osobní počítače',
'Menu:PC+' => 'Všechny osobní počítače',
'Menu:NewContact' => 'Nový kontakt',
'Menu:NewContact+' => 'Nový kontakt',
'Menu:SearchContacts' => 'Hledat kontakty',
'Menu:SearchContacts+' => 'Hledat kontakty',
'Menu:NewCI' => 'Nová konfigurační položka',
'Menu:NewCI+' => 'Nová konfigurační položka',
'Menu:SearchCIs' => 'Hledat konfigurační položky',
'Menu:SearchCIs+' => 'Hledat konfigurační položky',
'Menu:ConfigManagement:Devices' => 'Zařízení',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktura',
'Menu:ConfigManagement:virtualization' => 'Virtualizace',
'Menu:ConfigManagement:EndUsers' => 'Koncová zařízení',
'Menu:ConfigManagement:SWAndApps' => 'Software a aplikace',
'Menu:ConfigManagement:Misc' => 'Ostatní',
'Menu:Group' => 'Skupiny konfiguračních položek',
'Menu:Group+' => 'Skupiny konfiguračních položek',
'Menu:ConfigManagement:Shortcuts' => 'Odkazy',
'Menu:ConfigManagement:AllContacts' => 'Všechny kontakty: %1$d',
'Menu:Typology' => 'Typologie',
'Menu:Typology+' => 'Konfigurace typologie',
'Menu:OSVersion' => 'Verze OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Katalog softwaru',
'Menu:Software+' => 'Katalog softwaru',
'UI_WelcomeMenu_AllConfigItems' => 'Souhrn',
'Menu:ConfigManagement:Typology' => 'Konfigurace typologie',
));
@@ -1892,18 +1892,18 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
// Add translation for Fieldsets
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Server:baseinfo' => 'Obecné informace',
'Server:Date' => 'Data',
'Server:moreinfo' => 'Více informací',
'Server:otherinfo' => 'Další informace',
'Server:power' => 'Napájení',
'Person:info' => 'Obecné informace',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Upozornění',
'Class:Subnet/Tab:IPUsage' => 'Využití IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Rozhraní, která mají IP adresu v rozsahu: <em>%1$s</em>-<em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Volné IP adresy',
'Class:Subnet/Tab:FreeIPs-count' => 'Počet volných adres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Tady je výčet volných IP adres (10)',
'Class:Document:PreviewTab' => 'Náhled',
'Server:baseinfo' => 'Obecné informace',
'Server:Date' => 'Data',
'Server:moreinfo' => 'Více informací',
'Server:otherinfo' => 'Další informace',
'Server:power' => 'Napájení',
'Person:info' => 'Obecné informace',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Upozornění',
'Class:Subnet/Tab:IPUsage' => 'Využití IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Rozhraní, která mají IP adresu v rozsahu: <em>%1$s</em>-<em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Volné IP adresy',
'Class:Subnet/Tab:FreeIPs-count' => 'Počet volných adres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Tady je výčet volných IP adres (10)',
'Class:Document:PreviewTab' => 'Náhled',
));

View File

@@ -1796,88 +1796,88 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
//
Dict::Add('DA DA', 'Danish', 'Dansk', array(
'Menu:DataAdministration' => 'Data administration',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Katalog',
'Menu:Catalogs+' => 'Datatyper',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import~~',
'Menu:CSVImport+' => 'Bulk creation or update~~',
'Menu:Organization' => 'Organisation',
'Menu:Organization+' => 'Alle Organisationer',
'Menu:Application' => 'Anvendelse',
'Menu:Application+' => 'Alle Anvendelser',
'Menu:DBServer' => 'Database server',
'Menu:DBServer+' => 'Database server',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Oversigt',
'Menu:ConfigManagementOverview+' => 'Oversigt',
'Menu:Contact' => 'Kontakt',
'Menu:Contact+' => 'Kontakt',
'Menu:Contact:Count' => '%1$d kontakter',
'Menu:Person' => 'Person',
'Menu:Person+' => 'Alle Personer',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle Teams',
'Menu:Document' => 'Dokument',
'Menu:Document+' => 'Alle Dokumenter',
'Menu:Location' => 'Placering',
'Menu:DataAdministration' => 'Data administration',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Katalog',
'Menu:Catalogs+' => 'Datatyper',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import~~',
'Menu:CSVImport+' => 'Bulk creation or update~~',
'Menu:Organization' => 'Organisation',
'Menu:Organization+' => 'Alle Organisationer',
'Menu:Application' => 'Anvendelse',
'Menu:Application+' => 'Alle Anvendelser',
'Menu:DBServer' => 'Database server',
'Menu:DBServer+' => 'Database server',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Oversigt',
'Menu:ConfigManagementOverview+' => 'Oversigt',
'Menu:Contact' => 'Kontakt',
'Menu:Contact+' => 'Kontakt',
'Menu:Contact:Count' => '%1$d kontakter',
'Menu:Person' => 'Person',
'Menu:Person+' => 'Alle Personer',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle Teams',
'Menu:Document' => 'Dokument',
'Menu:Document+' => 'Alle Dokumenter',
'Menu:Location' => 'Placering',
'Menu:Location+' => 'Alle Placeringer',
'Menu:ConfigManagementCI' => 'Configuration Items',
'Menu:ConfigManagementCI+' => 'Configuration Items',
'Menu:BusinessProcess' => 'Forretnings proces',
'Menu:BusinessProcess+' => 'Alle forretnings processer',
'Menu:ApplicationSolution' => 'Applikations løsning',
'Menu:ApplicationSolution+' => 'Alle Applikations løsninger',
'Menu:ConfigManagementSoftware' => 'Anvendelses Management',
'Menu:Licence' => 'Licenser',
'Menu:Licence+' => 'Alle Licenser',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle Patches',
'Menu:ApplicationInstance' => 'Installeret Software',
'Menu:ApplicationInstance+' => 'Applikations- og database server',
'Menu:ConfigManagementHardware' => 'Infrastruktur Management',
'Menu:Subnet' => 'Subnet',
'Menu:Subnet+' => 'Alle Subnet',
'Menu:NetworkDevice' => 'Netværksenhed',
'Menu:NetworkDevice+' => 'Alle Netværksenheder',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Alle Servere',
'Menu:Printer' => 'Printer',
'Menu:Printer+' => 'Alle Printere',
'Menu:MobilePhone' => 'Mobiltelefon',
'Menu:MobilePhone+' => 'Alle Mobiltelefoner',
'Menu:PC' => 'PC',
'Menu:PC+' => 'Alle PCer',
'Menu:NewContact' => 'Ny Kontakt',
'Menu:NewContact+' => 'Ny Kontakt',
'Menu:SearchContacts' => 'Søg efter kontakter',
'Menu:SearchContacts+' => 'Søg efter kontakter',
'Menu:NewCI' => 'Ny CI',
'Menu:NewCI+' => 'Ny CI',
'Menu:SearchCIs' => 'Søg efter CIs',
'Menu:SearchCIs+' => 'Søg efter Content Items',
'Menu:ConfigManagement:Devices' => 'Enheder',
'Menu:ConfigManagement:AllDevices' => 'Alle Enheder',
'Menu:ConfigManagement:virtualization' => 'Virtualisering',
'Menu:ConfigManagement:EndUsers' => 'Slutbruger enheder',
'Menu:ConfigManagement:SWAndApps' => 'Software og anvendelse',
'Menu:ConfigManagement:Misc' => 'Diverse',
'Menu:Group' => 'Gruppe af CIs',
'Menu:Group+' => 'Gruppe af CIs',
'Menu:ConfigManagement:Shortcuts' => 'Genveje',
'Menu:ConfigManagement:AllContacts' => 'Alle Kontakter: %1$d',
'Menu:Typology' => 'Typologi-Konfiguration',
'Menu:Typology+' => '',
'Menu:OSVersion' => 'OS versioner',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software Katalog',
'Menu:Software+' => '',
'UI_WelcomeMenu_AllConfigItems' => 'Sammenfatning',
'Menu:ConfigManagement:Typology' => 'Typologi Konfiguration',
'Menu:Location+' => 'Alle Placeringer',
'Menu:ConfigManagementCI' => 'Configuration Items',
'Menu:ConfigManagementCI+' => 'Configuration Items',
'Menu:BusinessProcess' => 'Forretnings proces',
'Menu:BusinessProcess+' => 'Alle forretnings processer',
'Menu:ApplicationSolution' => 'Applikations løsning',
'Menu:ApplicationSolution+' => 'Alle Applikations løsninger',
'Menu:ConfigManagementSoftware' => 'Anvendelses Management',
'Menu:Licence' => 'Licenser',
'Menu:Licence+' => 'Alle Licenser',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle Patches',
'Menu:ApplicationInstance' => 'Installeret Software',
'Menu:ApplicationInstance+' => 'Applikations- og database server',
'Menu:ConfigManagementHardware' => 'Infrastruktur Management',
'Menu:Subnet' => 'Subnet',
'Menu:Subnet+' => 'Alle Subnet',
'Menu:NetworkDevice' => 'Netværksenhed',
'Menu:NetworkDevice+' => 'Alle Netværksenheder',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Alle Servere',
'Menu:Printer' => 'Printer',
'Menu:Printer+' => 'Alle Printere',
'Menu:MobilePhone' => 'Mobiltelefon',
'Menu:MobilePhone+' => 'Alle Mobiltelefoner',
'Menu:PC' => 'PC',
'Menu:PC+' => 'Alle PCer',
'Menu:NewContact' => 'Ny Kontakt',
'Menu:NewContact+' => 'Ny Kontakt',
'Menu:SearchContacts' => 'Søg efter kontakter',
'Menu:SearchContacts+' => 'Søg efter kontakter',
'Menu:NewCI' => 'Ny CI',
'Menu:NewCI+' => 'Ny CI',
'Menu:SearchCIs' => 'Søg efter CIs',
'Menu:SearchCIs+' => 'Søg efter Content Items',
'Menu:ConfigManagement:Devices' => 'Enheder',
'Menu:ConfigManagement:AllDevices' => 'Alle Enheder',
'Menu:ConfigManagement:virtualization' => 'Virtualisering',
'Menu:ConfigManagement:EndUsers' => 'Slutbruger enheder',
'Menu:ConfigManagement:SWAndApps' => 'Software og anvendelse',
'Menu:ConfigManagement:Misc' => 'Diverse',
'Menu:Group' => 'Gruppe af CIs',
'Menu:Group+' => 'Gruppe af CIs',
'Menu:ConfigManagement:Shortcuts' => 'Genveje',
'Menu:ConfigManagement:AllContacts' => 'Alle Kontakter: %1$d',
'Menu:Typology' => 'Typologi-Konfiguration',
'Menu:Typology+' => '',
'Menu:OSVersion' => 'OS versioner',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software Katalog',
'Menu:Software+' => '',
'UI_WelcomeMenu_AllConfigItems' => 'Sammenfatning',
'Menu:ConfigManagement:Typology' => 'Typologi Konfiguration',
));
@@ -1885,18 +1885,18 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
// Add translation for Fieldsets
Dict::Add('DA DA', 'Danish', 'Dansk', array(
'Server:baseinfo' => 'Almindelig Informationen',
'Server:Date' => 'Dato',
'Server:moreinfo' => 'Yderligere Information',
'Server:otherinfo' => 'Øvrig Information',
'Server:power' => 'Power supply~~',
'Person:info' => 'Almindelig Information',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Underretning',
'Class:Subnet/Tab:IPUsage' => 'IP Brug',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces der har en IP i området: <em>%1$s</em> til <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Ledige IP',
'Class:Subnet/Tab:FreeIPs-count' => 'Ledige IP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Her er et udtræk af 10 ledige IP adresser',
'Class:Document:PreviewTab' => 'Preview~~',
'Server:baseinfo' => 'Almindelig Informationen',
'Server:Date' => 'Dato',
'Server:moreinfo' => 'Yderligere Information',
'Server:otherinfo' => 'Øvrig Information',
'Server:power' => 'Power supply~~',
'Person:info' => 'Almindelig Information',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Underretning',
'Class:Subnet/Tab:IPUsage' => 'IP Brug',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces der har en IP i området: <em>%1$s</em> til <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Ledige IP',
'Class:Subnet/Tab:FreeIPs-count' => 'Ledige IP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Her er et udtræk af 10 ledige IP adresser',
'Class:Document:PreviewTab' => 'Preview~~',
));

View File

@@ -1798,88 +1798,88 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:DataAdministration' => 'Data Management',
'Menu:DataAdministration+' => 'Data Management',
'Menu:Catalogs' => 'Kataloge',
'Menu:Catalogs+' => 'Datentypen',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV-Import',
'Menu:CSVImport+' => 'Massenerstellung oder -aktualisierung',
'Menu:Organization' => 'Organisationen',
'Menu:Organization+' => 'Alle Organisationen',
'Menu:Application' => 'Anwendungen',
'Menu:Application+' => 'Alle Anwendungen',
'Menu:DBServer' => 'Datenbank-Server',
'Menu:DBServer+' => 'Datenbank-Server',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Übersicht',
'Menu:ConfigManagementOverview+' => 'Übersicht',
'Menu:Contact' => 'Kontakte',
'Menu:Contact+' => 'Kontakte',
'Menu:Contact:Count' => '%1$d kontakten',
'Menu:Person' => 'Personen',
'Menu:Person+' => 'Alle Personen',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle Teams',
'Menu:Document' => 'Dokumente',
'Menu:Document+' => 'Alle Dokumente',
'Menu:Location' => 'Standorte',
'Menu:DataAdministration' => 'Data Management',
'Menu:DataAdministration+' => 'Data Management',
'Menu:Catalogs' => 'Kataloge',
'Menu:Catalogs+' => 'Datentypen',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV-Import',
'Menu:CSVImport+' => 'Massenerstellung oder -aktualisierung',
'Menu:Organization' => 'Organisationen',
'Menu:Organization+' => 'Alle Organisationen',
'Menu:Application' => 'Anwendungen',
'Menu:Application+' => 'Alle Anwendungen',
'Menu:DBServer' => 'Datenbank-Server',
'Menu:DBServer+' => 'Datenbank-Server',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Übersicht',
'Menu:ConfigManagementOverview+' => 'Übersicht',
'Menu:Contact' => 'Kontakte',
'Menu:Contact+' => 'Kontakte',
'Menu:Contact:Count' => '%1$d Kontakte',
'Menu:Person' => 'Personen',
'Menu:Person+' => 'Alle Personen',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle Teams',
'Menu:Document' => 'Dokumente',
'Menu:Document+' => 'Alle Dokumente',
'Menu:Location' => 'Standorte',
'Menu:Location+' => 'Alle Standorte',
'Menu:ConfigManagementCI' => 'Configuration Items',
'Menu:ConfigManagementCI+' => 'Configuration Items',
'Menu:BusinessProcess' => 'Business-Prozesse',
'Menu:BusinessProcess+' => 'Alle Business-Prozesse',
'Menu:ApplicationSolution' => 'Anwendungslösungen',
'Menu:ApplicationSolution+' => 'Alle Anwendungslösungen',
'Menu:ConfigManagementSoftware' => 'Anwendungs-Management',
'Menu:Licence' => 'Lizenzen',
'Menu:Licence+' => 'Alle Lizenzen',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle Patches',
'Menu:ApplicationInstance' => 'Installierte Software',
'Menu:ApplicationInstance+' => 'Anwendungen und Datenbank-Server',
'Menu:ConfigManagementHardware' => 'Infrastruktur-Management',
'Menu:Subnet' => 'Subnetze',
'Menu:Subnet+' => 'Alle Subnetze',
'Menu:NetworkDevice' => 'Netzwerkgeräte',
'Menu:NetworkDevice+' => 'Alle Netzwerkgeräte',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Alle Server',
'Menu:Printer' => 'Drucker',
'Menu:Printer+' => 'Alle Drucker',
'Menu:MobilePhone' => 'Mobiltelefone',
'Menu:MobilePhone+' => 'Alle Mobiltelefone',
'Menu:PC' => 'Rechner (PC)',
'Menu:PC+' => 'Alle Rechner (PC)',
'Menu:NewContact' => 'Neuer Kontakt',
'Menu:NewContact+' => 'Neuer Kontakt',
'Menu:SearchContacts' => 'Nach Kontakten suchen',
'Menu:SearchContacts+' => 'Nach Kontakten suchen',
'Menu:NewCI' => 'Neues CI',
'Menu:NewCI+' => 'Neues CI',
'Menu:SearchCIs' => 'Nach CIs suchen',
'Menu:SearchCIs+' => 'Nach CIs suchen',
'Menu:ConfigManagement:Devices' => 'Geräte',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktur',
'Menu:ConfigManagement:virtualization' => 'Virtualisierung',
'Menu:ConfigManagement:EndUsers' => 'Endbenutzer-Geräte',
'Menu:ConfigManagement:SWAndApps' => 'Software und Anwendungen',
'Menu:ConfigManagement:Misc' => 'Diverses',
'Menu:Group' => 'Gruppen von CIs',
'Menu:Group+' => 'Gruppen von CIs',
'Menu:ConfigManagement:Shortcuts' => 'Shortcuts',
'Menu:ConfigManagement:AllContacts' => 'Alle Kontakte: %1$d',
'Menu:Typology' => 'Typologie-Konfiguration',
'Menu:Typology+' => '',
'Menu:OSVersion' => 'OS-Versionen',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Software-Katalog',
'Menu:Software+' => '',
'UI_WelcomeMenu_AllConfigItems' => 'Zusammenfassung',
'Menu:ConfigManagement:Typology' => 'Typologie-Konfiguration',
'Menu:Location+' => 'Alle Standorte',
'Menu:ConfigManagementCI' => 'Configuration Items',
'Menu:ConfigManagementCI+' => 'Configuration Items',
'Menu:BusinessProcess' => 'Business-Prozesse',
'Menu:BusinessProcess+' => 'Alle Business-Prozesse',
'Menu:ApplicationSolution' => 'Anwendungslösungen',
'Menu:ApplicationSolution+' => 'Alle Anwendungslösungen',
'Menu:ConfigManagementSoftware' => 'Anwendungs-Management',
'Menu:Licence' => 'Lizenzen',
'Menu:Licence+' => 'Alle Lizenzen',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle Patches',
'Menu:ApplicationInstance' => 'Installierte Software',
'Menu:ApplicationInstance+' => 'Anwendungen und Datenbank-Server',
'Menu:ConfigManagementHardware' => 'Infrastruktur-Management',
'Menu:Subnet' => 'Subnetze',
'Menu:Subnet+' => 'Alle Subnetze',
'Menu:NetworkDevice' => 'Netzwerkgeräte',
'Menu:NetworkDevice+' => 'Alle Netzwerkgeräte',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Alle Server',
'Menu:Printer' => 'Drucker',
'Menu:Printer+' => 'Alle Drucker',
'Menu:MobilePhone' => 'Mobiltelefone',
'Menu:MobilePhone+' => 'Alle Mobiltelefone',
'Menu:PC' => 'Rechner (PC)',
'Menu:PC+' => 'Alle Rechner (PC)',
'Menu:NewContact' => 'Neuer Kontakt',
'Menu:NewContact+' => 'Neuer Kontakt',
'Menu:SearchContacts' => 'Nach Kontakten suchen',
'Menu:SearchContacts+' => 'Nach Kontakten suchen',
'Menu:NewCI' => 'Neues CI',
'Menu:NewCI+' => 'Neues CI',
'Menu:SearchCIs' => 'Nach CIs suchen',
'Menu:SearchCIs+' => 'Nach CIs suchen',
'Menu:ConfigManagement:Devices' => 'Geräte',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktur',
'Menu:ConfigManagement:virtualization' => 'Virtualisierung',
'Menu:ConfigManagement:EndUsers' => 'Endbenutzer-Geräte',
'Menu:ConfigManagement:SWAndApps' => 'Software und Anwendungen',
'Menu:ConfigManagement:Misc' => 'Diverses',
'Menu:Group' => 'Gruppen von CIs',
'Menu:Group+' => 'Gruppen von CIs',
'Menu:ConfigManagement:Shortcuts' => 'Shortcuts',
'Menu:ConfigManagement:AllContacts' => 'Alle Kontakte: %1$d',
'Menu:Typology' => 'Typologie-Konfiguration',
'Menu:Typology+' => '',
'Menu:OSVersion' => 'OS-Versionen',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Software-Katalog',
'Menu:Software+' => '',
'UI_WelcomeMenu_AllConfigItems' => 'Zusammenfassung',
'Menu:ConfigManagement:Typology' => 'Typologie-Konfiguration',
));
@@ -1887,18 +1887,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
// Add translation for Fieldsets
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Server:baseinfo' => 'Allgemeine Informationen',
'Server:Date' => 'Datum',
'Server:moreinfo' => 'Weitere Informationen',
'Server:otherinfo' => 'Sonstige Informationen',
'Server:power' => 'Stromversorgung',
'Person:info' => 'Allgemeine Informationen',
'Person:personal_info' => 'Persönliche Informationen',
'Person:notifiy' => 'Benachrichtigungen',
'Class:Subnet/Tab:IPUsage' => 'IP-Nutzung',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces mit einer IP in der Range: <em>%1$s</em> bis <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Freie IPs',
'Class:Subnet/Tab:FreeIPs-count' => 'Freie IPs: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Hier ist eine Aufstellung von 10 freien IP Adressen',
'Class:Document:PreviewTab' => 'Vorschau',
'Server:baseinfo' => 'Allgemeine Informationen',
'Server:Date' => 'Datum',
'Server:moreinfo' => 'Weitere Informationen',
'Server:otherinfo' => 'Sonstige Informationen',
'Server:power' => 'Stromversorgung',
'Person:info' => 'Allgemeine Informationen',
'Person:personal_info' => 'Persönliche Informationen',
'Person:notifiy' => 'Benachrichtigungen',
'Class:Subnet/Tab:IPUsage' => 'IP-Nutzung',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces mit einer IP in der Range: <em>%1$s</em> bis <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Freie IPs',
'Class:Subnet/Tab:FreeIPs-count' => 'Freie IPs: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Hier ist eine Aufstellung von 10 freien IP Adressen',
'Class:Document:PreviewTab' => 'Vorschau',
));

View File

@@ -538,9 +538,9 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:Server/Attribute:osversion_id+' => '',
'Class:Server/Attribute:osversion_name' => 'OS version name',
'Class:Server/Attribute:osversion_name+' => '',
'Class:Server/Attribute:oslicence_id' => 'OS licence',
'Class:Server/Attribute:oslicence_id' => 'OS license',
'Class:Server/Attribute:oslicence_id+' => '',
'Class:Server/Attribute:oslicence_name' => 'OS licence name',
'Class:Server/Attribute:oslicence_name' => 'OS license name',
'Class:Server/Attribute:oslicence_name+' => '',
'Class:Server/Attribute:cpu' => 'CPU',
'Class:Server/Attribute:cpu+' => '',
@@ -748,9 +748,9 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:SoftwareInstance/Attribute:software_id+' => '',
'Class:SoftwareInstance/Attribute:software_name' => 'Software name',
'Class:SoftwareInstance/Attribute:software_name+' => '',
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software licence',
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software license',
'Class:SoftwareInstance/Attribute:softwarelicence_id+' => '',
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software licence name',
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software license name',
'Class:SoftwareInstance/Attribute:softwarelicence_name+' => '',
'Class:SoftwareInstance/Attribute:path' => 'Path',
'Class:SoftwareInstance/Attribute:path+' => '',
@@ -938,9 +938,9 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:VirtualMachine/Attribute:osversion_id+' => '',
'Class:VirtualMachine/Attribute:osversion_name' => 'OS version name',
'Class:VirtualMachine/Attribute:osversion_name+' => '',
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS licence',
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS license',
'Class:VirtualMachine/Attribute:oslicence_id+' => '',
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS licence name',
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS license name',
'Class:VirtualMachine/Attribute:oslicence_name+' => '',
'Class:VirtualMachine/Attribute:cpu' => 'CPU',
'Class:VirtualMachine/Attribute:cpu+' => '',
@@ -1109,8 +1109,8 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:Software/Attribute:softwareinstance_list+' => 'All the software instances for this software',
'Class:Software/Attribute:softwarepatch_list' => 'Software Patches',
'Class:Software/Attribute:softwarepatch_list+' => 'All the patchs for this software',
'Class:Software/Attribute:softwarelicence_list' => 'Software Licences',
'Class:Software/Attribute:softwarelicence_list+' => 'All the licences for this software',
'Class:Software/Attribute:softwarelicence_list' => 'Software Licenses',
'Class:Software/Attribute:softwarelicence_list+' => 'All the licenses for this software',
));
//
@@ -1170,7 +1170,7 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:Licence/Attribute:name' => 'Name',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:documents_list' => 'Documents',
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this licence',
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this license',
'Class:Licence/Attribute:org_id' => 'Organization',
'Class:Licence/Attribute:org_id+' => '',
'Class:Licence/Attribute:organization_name' => 'Organization name',
@@ -1191,7 +1191,7 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:Licence/Attribute:perpetual/Value:no+' => 'no',
'Class:Licence/Attribute:perpetual/Value:yes' => 'yes',
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes',
'Class:Licence/Attribute:finalclass' => 'Licence sub-class',
'Class:Licence/Attribute:finalclass' => 'License sub-class',
'Class:Licence/Attribute:finalclass+' => 'Name of the final class',
));
@@ -1200,16 +1200,16 @@ Dict::Add('EN US', 'English', 'English', array(
//
Dict::Add('EN US', 'English', 'English', array(
'Class:OSLicence' => 'OS Licence',
'Class:OSLicence' => 'OS License',
'Class:OSLicence+' => '',
'Class:OSLicence/Attribute:osversion_id' => 'OS version',
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => 'OS version name',
'Class:OSLicence/Attribute:osversion_name+' => '',
'Class:OSLicence/Attribute:virtualmachines_list' => 'Virtual machines',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this licence is used',
'Class:OSLicence/Attribute:servers_list' => 'servers',
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this licence is used',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this license is used',
'Class:OSLicence/Attribute:servers_list' => 'Servers',
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this license is used',
));
//
@@ -1217,14 +1217,14 @@ Dict::Add('EN US', 'English', 'English', array(
//
Dict::Add('EN US', 'English', 'English', array(
'Class:SoftwareLicence' => 'Software Licence',
'Class:SoftwareLicence' => 'Software License',
'Class:SoftwareLicence+' => '',
'Class:SoftwareLicence/Attribute:software_id' => 'Software',
'Class:SoftwareLicence/Attribute:software_id+' => '',
'Class:SoftwareLicence/Attribute:software_name' => 'Software name',
'Class:SoftwareLicence/Attribute:software_name+' => '',
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Software instances',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this licence is used',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this license is used',
));
//
@@ -1232,11 +1232,11 @@ Dict::Add('EN US', 'English', 'English', array(
//
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkDocumentToLicence' => 'Link Document / Licence',
'Class:lnkDocumentToLicence' => 'Link Document / License',
'Class:lnkDocumentToLicence+' => '',
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Licence',
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'License',
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '',
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'Licence name',
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'License name',
'Class:lnkDocumentToLicence/Attribute:licence_name+' => '',
'Class:lnkDocumentToLicence/Attribute:document_id' => 'Document',
'Class:lnkDocumentToLicence/Attribute:document_id+' => '',
@@ -1802,88 +1802,88 @@ Dict::Add('EN US', 'English', 'English', array(
//
Dict::Add('EN US', 'English', 'English', array(
'Menu:DataAdministration' => 'Data administration',
'Menu:DataAdministration+' => 'Data administration',
'Menu:Catalogs' => 'Catalogs',
'Menu:Catalogs+' => 'Data types',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => 'Bulk creation or update',
'Menu:Organization' => 'Organizations',
'Menu:Organization+' => 'All organizations',
'Menu:Application' => 'Applications',
'Menu:Application+' => 'All applications',
'Menu:DBServer' => 'Database servers',
'Menu:DBServer+' => 'Database servers',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Overview',
'Menu:ConfigManagementOverview+' => 'Overview',
'Menu:Contact' => 'Contacts',
'Menu:Contact+' => 'Contacts',
'Menu:Contact:Count' => '%1$d contacts',
'Menu:Person' => 'Persons',
'Menu:Person+' => 'All persons',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'All teams',
'Menu:Document' => 'Documents',
'Menu:Document+' => 'All documents',
'Menu:Location' => 'Locations',
'Menu:DataAdministration' => 'Data administration',
'Menu:DataAdministration+' => 'Data administration',
'Menu:Catalogs' => 'Catalogs',
'Menu:Catalogs+' => 'Data types',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => 'Bulk creation or update',
'Menu:Organization' => 'Organizations',
'Menu:Organization+' => 'All organizations',
'Menu:Application' => 'Applications',
'Menu:Application+' => 'All applications',
'Menu:DBServer' => 'Database servers',
'Menu:DBServer+' => 'Database servers',
'Menu:ConfigManagement' => 'Configuration Management',
'Menu:ConfigManagement+' => 'Configuration Management',
'Menu:ConfigManagementOverview' => 'Overview',
'Menu:ConfigManagementOverview+' => 'Overview',
'Menu:Contact' => 'Contacts',
'Menu:Contact+' => 'Contacts',
'Menu:Contact:Count' => '%1$d contacts',
'Menu:Person' => 'Persons',
'Menu:Person+' => 'All persons',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'All teams',
'Menu:Document' => 'Documents',
'Menu:Document+' => 'All documents',
'Menu:Location' => 'Locations',
'Menu:Location+' => 'All locations',
'Menu:ConfigManagementCI' => 'Configuration items',
'Menu:ConfigManagementCI+' => 'Configuration items',
'Menu:BusinessProcess' => 'Business processes',
'Menu:BusinessProcess+' => 'All business processes',
'Menu:ApplicationSolution' => 'Application solutions',
'Menu:ApplicationSolution+' => 'All application solutions',
'Menu:ConfigManagementSoftware' => 'Application management',
'Menu:Licence' => 'Licences',
'Menu:Licence+' => 'All licences',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'All patches',
'Menu:ApplicationInstance' => 'Installed software',
'Menu:ApplicationInstance+' => 'Applications and database servers',
'Menu:ConfigManagementHardware' => 'Infrastructure management',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'All subnets',
'Menu:NetworkDevice' => 'Network devices',
'Menu:NetworkDevice+' => 'All network devices',
'Menu:Server' => 'Servers',
'Menu:Server+' => 'All servers',
'Menu:Printer' => 'Printers',
'Menu:Printer+' => 'All printers',
'Menu:MobilePhone' => 'Mobile phones',
'Menu:MobilePhone+' => 'All mobile phones',
'Menu:PC' => 'Personal computers',
'Menu:PC+' => 'All Personal computers',
'Menu:NewContact' => 'New contact',
'Menu:NewContact+' => 'New contact',
'Menu:SearchContacts' => 'Search for contacts',
'Menu:SearchContacts+' => 'Search for contacts',
'Menu:NewCI' => 'New CI',
'Menu:NewCI+' => 'New CI',
'Menu:SearchCIs' => 'Search for CIs',
'Menu:SearchCIs+' => 'Search for CIs',
'Menu:ConfigManagement:Devices' => 'Devices',
'Menu:ConfigManagement:AllDevices' => 'Infrastructure',
'Menu:ConfigManagement:virtualization' => 'Virtualization',
'Menu:ConfigManagement:EndUsers' => 'End user devices',
'Menu:ConfigManagement:SWAndApps' => 'Software and applications',
'Menu:ConfigManagement:Misc' => 'Miscellaneous',
'Menu:Group' => 'Groups of CIs',
'Menu:Group+' => 'Groups of CIs',
'Menu:ConfigManagement:Shortcuts' => 'Shortcuts',
'Menu:ConfigManagement:AllContacts' => 'All contacts: %1$d',
'Menu:Typology' => 'Typology configuration',
'Menu:Typology+' => 'Typology configuration',
'Menu:OSVersion' => 'OS versions',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Software catalog',
'Menu:Software+' => 'Software catalog',
'UI_WelcomeMenu_AllConfigItems' => 'Summary',
'Menu:ConfigManagement:Typology' => 'Typology configuration',
'Menu:Location+' => 'All locations',
'Menu:ConfigManagementCI' => 'Configuration items',
'Menu:ConfigManagementCI+' => 'Configuration items',
'Menu:BusinessProcess' => 'Business processes',
'Menu:BusinessProcess+' => 'All business processes',
'Menu:ApplicationSolution' => 'Application solutions',
'Menu:ApplicationSolution+' => 'All application solutions',
'Menu:ConfigManagementSoftware' => 'Application management',
'Menu:Licence' => 'Licenses',
'Menu:Licence+' => 'All licenses',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'All patches',
'Menu:ApplicationInstance' => 'Installed software',
'Menu:ApplicationInstance+' => 'Applications and database servers',
'Menu:ConfigManagementHardware' => 'Infrastructure management',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'All subnets',
'Menu:NetworkDevice' => 'Network devices',
'Menu:NetworkDevice+' => 'All network devices',
'Menu:Server' => 'Servers',
'Menu:Server+' => 'All servers',
'Menu:Printer' => 'Printers',
'Menu:Printer+' => 'All printers',
'Menu:MobilePhone' => 'Mobile phones',
'Menu:MobilePhone+' => 'All mobile phones',
'Menu:PC' => 'Personal computers',
'Menu:PC+' => 'All Personal computers',
'Menu:NewContact' => 'New contact',
'Menu:NewContact+' => 'New contact',
'Menu:SearchContacts' => 'Search for contacts',
'Menu:SearchContacts+' => 'Search for contacts',
'Menu:NewCI' => 'New CI',
'Menu:NewCI+' => 'New CI',
'Menu:SearchCIs' => 'Search for CIs',
'Menu:SearchCIs+' => 'Search for CIs',
'Menu:ConfigManagement:Devices' => 'Devices',
'Menu:ConfigManagement:AllDevices' => 'Infrastructure',
'Menu:ConfigManagement:virtualization' => 'Virtualization',
'Menu:ConfigManagement:EndUsers' => 'End user devices',
'Menu:ConfigManagement:SWAndApps' => 'Software and applications',
'Menu:ConfigManagement:Misc' => 'Miscellaneous',
'Menu:Group' => 'Groups of CIs',
'Menu:Group+' => 'Groups of CIs',
'Menu:ConfigManagement:Shortcuts' => 'Shortcuts',
'Menu:ConfigManagement:AllContacts' => 'All contacts: %1$d',
'Menu:Typology' => 'Typology configuration',
'Menu:Typology+' => 'Typology configuration',
'Menu:OSVersion' => 'OS versions',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Software catalog',
'Menu:Software+' => 'Software catalog',
'UI_WelcomeMenu_AllConfigItems' => 'Summary',
'Menu:ConfigManagement:Typology' => 'Typology configuration',
));
@@ -1891,18 +1891,18 @@ Dict::Add('EN US', 'English', 'English', array(
// Add translation for Fieldsets
Dict::Add('EN US', 'English', 'English', array(
'Server:baseinfo' => 'General information',
'Server:Date' => 'Dates',
'Server:moreinfo' => 'More information',
'Server:otherinfo' => 'Other information',
'Server:power' => 'Power supply',
'Person:info' => 'General information',
'Person:personal_info' => 'Personal information',
'Person:notifiy' => 'Notification',
'Class:Subnet/Tab:IPUsage' => 'IP Usage',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces having an IP in the range: <em>%1$s</em> to <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Free IPs',
'Class:Subnet/Tab:FreeIPs-count' => 'Free IPs: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Here is an extract of 10 free IP addresses',
'Class:Document:PreviewTab' => 'Preview',
'Server:baseinfo' => 'General information',
'Server:Date' => 'Dates',
'Server:moreinfo' => 'More information',
'Server:otherinfo' => 'Other information',
'Server:power' => 'Power supply',
'Person:info' => 'General information',
'Person:personal_info' => 'Personal information',
'Person:notifiy' => 'Notification',
'Class:Subnet/Tab:IPUsage' => 'IP Usage',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces having an IP in the range: <em>%1$s</em> to <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Free IPs',
'Class:Subnet/Tab:FreeIPs-count' => 'Free IPs: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Here is an extract of 10 free IP addresses',
'Class:Document:PreviewTab' => 'Preview',
));

View File

@@ -1802,88 +1802,88 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
//
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Menu:DataAdministration' => 'Administración de Datos',
'Menu:DataAdministration+' => 'Administración de Datos',
'Menu:Catalogs' => 'Catálogos',
'Menu:Catalogs+' => 'Tipos de Datos',
'Menu:Audit' => 'Auditoría',
'Menu:Audit+' => 'Auditoría',
'Menu:CSVImport' => 'Importar CSV',
'Menu:CSVImport+' => 'Creación o Actualización Másiva',
'Menu:Organization' => 'Organizaciones',
'Menu:Organization+' => 'Organizaciones',
'Menu:Application' => 'Aplicaciones',
'Menu:Application+' => 'Aplicaciones/Programas',
'Menu:DBServer' => 'Servidores de Base de Datos',
'Menu:DBServer+' => 'Servidores de Base de Datos',
'Menu:ConfigManagement' => 'Administración de la Configuración',
'Menu:ConfigManagement+' => 'Administración de la Configuración',
'Menu:ConfigManagementOverview' => 'Resumen de Infraestructura',
'Menu:ConfigManagementOverview+' => 'Resumen de Infraestructura',
'Menu:Contact' => 'Contactos',
'Menu:Contact+' => 'Contactos',
'Menu:Contact:Count' => '%1$d Contactos',
'Menu:Person' => 'Personas',
'Menu:Person+' => 'Personas',
'Menu:Team' => 'Grupos',
'Menu:Team+' => 'Grupos de Trabajo',
'Menu:Document' => 'Documentos',
'Menu:Document+' => 'Documentos',
'Menu:Location' => 'Localidades',
'Menu:DataAdministration' => 'Administración de Datos',
'Menu:DataAdministration+' => 'Administración de Datos',
'Menu:Catalogs' => 'Catálogos',
'Menu:Catalogs+' => 'Tipos de Datos',
'Menu:Audit' => 'Auditoría',
'Menu:Audit+' => 'Auditoría',
'Menu:CSVImport' => 'Importar CSV',
'Menu:CSVImport+' => 'Creación o Actualización Másiva',
'Menu:Organization' => 'Organizaciones',
'Menu:Organization+' => 'Organizaciones',
'Menu:Application' => 'Aplicaciones',
'Menu:Application+' => 'Aplicaciones/Programas',
'Menu:DBServer' => 'Servidores de Base de Datos',
'Menu:DBServer+' => 'Servidores de Base de Datos',
'Menu:ConfigManagement' => 'Administración de la Configuración',
'Menu:ConfigManagement+' => 'Administración de la Configuración',
'Menu:ConfigManagementOverview' => 'Resumen de Infraestructura',
'Menu:ConfigManagementOverview+' => 'Resumen de Infraestructura',
'Menu:Contact' => 'Contactos',
'Menu:Contact+' => 'Contactos',
'Menu:Contact:Count' => '%1$d Contactos',
'Menu:Person' => 'Personas',
'Menu:Person+' => 'Personas',
'Menu:Team' => 'Grupos',
'Menu:Team+' => 'Grupos de Trabajo',
'Menu:Document' => 'Documentos',
'Menu:Document+' => 'Documentos',
'Menu:Location' => 'Localidades',
'Menu:Location+' => 'Localidades',
'Menu:ConfigManagementCI' => 'Elementos de Configuración',
'Menu:ConfigManagementCI+' => 'Elementos de Confirguración',
'Menu:BusinessProcess' => 'Proceso de Negocio',
'Menu:BusinessProcess+' => 'Proceso de Negocios',
'Menu:ApplicationSolution' => 'Solución Aplicativa',
'Menu:ApplicationSolution+' => 'Solución Aplicativa',
'Menu:ConfigManagementSoftware' => 'Administración de Aplicaciones',
'Menu:Licence' => 'Licencias',
'Menu:Licence+' => 'Licencias',
'Menu:Patch' => 'Parches',
'Menu:Patch+' => 'Parches',
'Menu:ApplicationInstance' => 'Software Instalado',
'Menu:ApplicationInstance+' => 'Aplicaciones y Servidores de Base de Datos',
'Menu:ConfigManagementHardware' => 'Administración de Infraestructura',
'Menu:Subnet' => 'SubRedes',
'Menu:Subnet+' => 'SubRedes',
'Menu:NetworkDevice' => 'Dispositivos de Red',
'Menu:NetworkDevice+' => 'Dispositivos de Red',
'Menu:Server' => 'Servidores',
'Menu:Server+' => 'Servidores',
'Menu:Printer' => 'Impresoras',
'Menu:Printer+' => 'Impresoras',
'Menu:MobilePhone' => 'Teléfonos Móviles',
'Menu:MobilePhone+' => 'Teléfonos Móviles',
'Menu:PC' => 'PCs y Laptops',
'Menu:PC+' => 'PCs y Laptops',
'Menu:NewContact' => 'Nuevo Contacto',
'Menu:NewContact+' => 'Nuevo Contacto',
'Menu:SearchContacts' => 'Búsqueda de Contactos',
'Menu:SearchContacts+' => 'Búsqueda de Contactos',
'Menu:NewCI' => 'Nuevo EC',
'Menu:NewCI+' => 'Nuevo EC',
'Menu:SearchCIs' => 'Búsqueda de ECs',
'Menu:SearchCIs+' => 'Búsqueda de ECs',
'Menu:ConfigManagement:Devices' => 'Dispositivos',
'Menu:ConfigManagement:AllDevices' => 'Infraestructura',
'Menu:ConfigManagement:virtualization' => 'Virtualización',
'Menu:ConfigManagement:EndUsers' => 'Dispositivos de Usuario Final',
'Menu:ConfigManagement:SWAndApps' => 'Software y Aplicaciones',
'Menu:ConfigManagement:Misc' => 'Misceláneo',
'Menu:Group' => 'Grupos de ECs',
'Menu:Group+' => 'Grupos de ECs',
'Menu:ConfigManagement:Shortcuts' => 'Acceso Rápido',
'Menu:ConfigManagement:AllContacts' => 'Contactos: %1$d',
'Menu:Typology' => 'Configuración de Tipos',
'Menu:Typology+' => 'Configuración de Tipos',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Catálogo de Software',
'Menu:Software+' => 'Catálogo de Software',
'UI_WelcomeMenu_AllConfigItems' => 'Resumen',
'Menu:ConfigManagement:Typology' => 'Configuración de Tipos',
'Menu:Location+' => 'Localidades',
'Menu:ConfigManagementCI' => 'Elementos de Configuración',
'Menu:ConfigManagementCI+' => 'Elementos de Confirguración',
'Menu:BusinessProcess' => 'Proceso de Negocio',
'Menu:BusinessProcess+' => 'Proceso de Negocios',
'Menu:ApplicationSolution' => 'Solución Aplicativa',
'Menu:ApplicationSolution+' => 'Solución Aplicativa',
'Menu:ConfigManagementSoftware' => 'Administración de Aplicaciones',
'Menu:Licence' => 'Licencias',
'Menu:Licence+' => 'Licencias',
'Menu:Patch' => 'Parches',
'Menu:Patch+' => 'Parches',
'Menu:ApplicationInstance' => 'Software Instalado',
'Menu:ApplicationInstance+' => 'Aplicaciones y Servidores de Base de Datos',
'Menu:ConfigManagementHardware' => 'Administración de Infraestructura',
'Menu:Subnet' => 'SubRedes',
'Menu:Subnet+' => 'SubRedes',
'Menu:NetworkDevice' => 'Dispositivos de Red',
'Menu:NetworkDevice+' => 'Dispositivos de Red',
'Menu:Server' => 'Servidores',
'Menu:Server+' => 'Servidores',
'Menu:Printer' => 'Impresoras',
'Menu:Printer+' => 'Impresoras',
'Menu:MobilePhone' => 'Teléfonos Móviles',
'Menu:MobilePhone+' => 'Teléfonos Móviles',
'Menu:PC' => 'PCs y Laptops',
'Menu:PC+' => 'PCs y Laptops',
'Menu:NewContact' => 'Nuevo Contacto',
'Menu:NewContact+' => 'Nuevo Contacto',
'Menu:SearchContacts' => 'Búsqueda de Contactos',
'Menu:SearchContacts+' => 'Búsqueda de Contactos',
'Menu:NewCI' => 'Nuevo EC',
'Menu:NewCI+' => 'Nuevo EC',
'Menu:SearchCIs' => 'Búsqueda de ECs',
'Menu:SearchCIs+' => 'Búsqueda de ECs',
'Menu:ConfigManagement:Devices' => 'Dispositivos',
'Menu:ConfigManagement:AllDevices' => 'Infraestructura',
'Menu:ConfigManagement:virtualization' => 'Virtualización',
'Menu:ConfigManagement:EndUsers' => 'Dispositivos de Usuario Final',
'Menu:ConfigManagement:SWAndApps' => 'Software y Aplicaciones',
'Menu:ConfigManagement:Misc' => 'Misceláneo',
'Menu:Group' => 'Grupos de ECs',
'Menu:Group+' => 'Grupos de ECs',
'Menu:ConfigManagement:Shortcuts' => 'Acceso Rápido',
'Menu:ConfigManagement:AllContacts' => 'Contactos: %1$d',
'Menu:Typology' => 'Configuración de Tipos',
'Menu:Typology+' => 'Configuración de Tipos',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Catálogo de Software',
'Menu:Software+' => 'Catálogo de Software',
'UI_WelcomeMenu_AllConfigItems' => 'Resumen',
'Menu:ConfigManagement:Typology' => 'Configuración de Tipos',
));
@@ -1891,18 +1891,18 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
// Add translation for Fieldsets
Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'Server:baseinfo' => 'Información General',
'Server:Date' => 'Fecha',
'Server:moreinfo' => 'Más Información',
'Server:otherinfo' => 'Otra Información',
'Server:power' => 'Fuente de Poder',
'Person:info' => 'Información General',
'Person:personal_info' => 'Información Personal',
'Person:notifiy' => 'Notificación',
'Class:Subnet/Tab:IPUsage' => 'Uso de IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfases con IP en el rango: <em>%1$s</em> a <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IPs Libres',
'Class:Subnet/Tab:FreeIPs-count' => 'IPs Libres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Aquí está un extracto de 10 direcciones IP Libres',
'Class:Document:PreviewTab' => 'Vista Previa',
'Server:baseinfo' => 'Información General',
'Server:Date' => 'Fecha',
'Server:moreinfo' => 'Más Información',
'Server:otherinfo' => 'Otra Información',
'Server:power' => 'Fuente de Poder',
'Person:info' => 'Información General',
'Person:personal_info' => 'Información Personal',
'Person:notifiy' => 'Notificación',
'Class:Subnet/Tab:IPUsage' => 'Uso de IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfases con IP en el rango: <em>%1$s</em> a <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IPs Libres',
'Class:Subnet/Tab:FreeIPs-count' => 'IPs Libres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Aquí está un extracto de 10 direcciones IP Libres',
'Class:Document:PreviewTab' => 'Vista Previa',
));

View File

@@ -1799,88 +1799,88 @@ Dict::Add('FR FR', 'French', 'Français', array(
//
Dict::Add('FR FR', 'French', 'Français', array(
'Menu:DataAdministration' => 'Administration des données',
'Menu:DataAdministration+' => 'Administration des données',
'Menu:Catalogs' => 'Catalogues',
'Menu:Catalogs+' => 'Types de données',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'Import CSV',
'Menu:CSVImport+' => 'Import ou mise à jour en masse',
'Menu:Organization' => 'Organisations',
'Menu:Organization+' => 'Toutes les organisations',
'Menu:Application' => 'Logiciels',
'Menu:Application+' => 'Tous les logiciels',
'Menu:DBServer' => 'Serveur de base de données',
'Menu:DBServer+' => '',
'Menu:ConfigManagement' => 'Gestion des configurations',
'Menu:ConfigManagement+' => 'Gestion des configurations',
'Menu:ConfigManagementOverview' => 'Tableaux de bord',
'Menu:ConfigManagementOverview+' => 'Tableaux de bord',
'Menu:Contact' => 'Contacts',
'Menu:Contact+' => 'Contacts',
'Menu:Contact:Count' => '%1$d contacts',
'Menu:Person' => 'Personnes',
'Menu:Person+' => 'Toutes les personnes',
'Menu:Team' => 'Equipes',
'Menu:Team+' => 'Toutes les équipes',
'Menu:Document' => 'Documents',
'Menu:Document+' => 'Tous les documents',
'Menu:Location' => 'Lieux',
'Menu:DataAdministration' => 'Administration des données',
'Menu:DataAdministration+' => 'Administration des données',
'Menu:Catalogs' => 'Catalogues',
'Menu:Catalogs+' => 'Types de données',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'Import CSV',
'Menu:CSVImport+' => 'Import ou mise à jour en masse',
'Menu:Organization' => 'Organisations',
'Menu:Organization+' => 'Toutes les organisations',
'Menu:Application' => 'Logiciels',
'Menu:Application+' => 'Tous les logiciels',
'Menu:DBServer' => 'Serveur de base de données',
'Menu:DBServer+' => '',
'Menu:ConfigManagement' => 'Gestion des configurations',
'Menu:ConfigManagement+' => 'Gestion des configurations',
'Menu:ConfigManagementOverview' => 'Tableaux de bord',
'Menu:ConfigManagementOverview+' => 'Tableaux de bord',
'Menu:Contact' => 'Contacts',
'Menu:Contact+' => 'Contacts',
'Menu:Contact:Count' => '%1$d contacts',
'Menu:Person' => 'Personnes',
'Menu:Person+' => 'Toutes les personnes',
'Menu:Team' => 'Equipes',
'Menu:Team+' => 'Toutes les équipes',
'Menu:Document' => 'Documents',
'Menu:Document+' => 'Tous les documents',
'Menu:Location' => 'Lieux',
'Menu:Location+' => 'Tous les lieux',
'Menu:ConfigManagementCI' => 'CIs',
'Menu:ConfigManagementCI+' => 'CIs',
'Menu:BusinessProcess' => 'Processus métier',
'Menu:BusinessProcess+' => 'Tous les processus métiers',
'Menu:ApplicationSolution' => 'Solutions applicatives',
'Menu:ApplicationSolution+' => 'Toutes les solutions applicatives',
'Menu:ConfigManagementSoftware' => 'Gestion des logiciels',
'Menu:Licence' => 'Licences',
'Menu:Licence+' => 'Toutes les licences',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Tous les patches',
'Menu:ApplicationInstance' => 'Instances logiciels',
'Menu:ApplicationInstance+' => 'Logiciels installés',
'Menu:ConfigManagementHardware' => 'Gestion des infrastructures',
'Menu:Subnet' => 'Sous réseaux',
'Menu:Subnet+' => '',
'Menu:NetworkDevice' => 'Equipements réseaux',
'Menu:NetworkDevice+' => 'Tous les équipements réseaux',
'Menu:Server' => 'Serveurs',
'Menu:Server+' => '',
'Menu:Printer' => 'Imprimantes',
'Menu:Printer+' => 'Toutes les imprimantes',
'Menu:MobilePhone' => 'Téléphones portables',
'Menu:MobilePhone+' => 'Tous les téléphones portables',
'Menu:PC' => 'PCs',
'Menu:PC+' => 'Tous les PCs',
'Menu:NewContact' => 'Nouveau contact',
'Menu:NewContact+' => 'Nouveau contact',
'Menu:SearchContacts' => 'Rechercher des contacts',
'Menu:SearchContacts+' => 'Rechercher des contacts',
'Menu:NewCI' => 'Nouveau CI',
'Menu:NewCI+' => 'Nouveau CI',
'Menu:SearchCIs' => 'Rechercher des CIs',
'Menu:SearchCIs+' => 'Rechercher des CIs',
'Menu:ConfigManagement:Devices' => 'Equipements',
'Menu:ConfigManagement:AllDevices' => 'Infrastructures',
'Menu:ConfigManagement:virtualization' => 'Virtualisation',
'Menu:ConfigManagement:EndUsers' => 'Périphériques utilisateurs',
'Menu:ConfigManagement:SWAndApps' => 'Logiciels et applications',
'Menu:ConfigManagement:Misc' => 'Divers',
'Menu:Group' => 'Groupe de CIs',
'Menu:Group+' => 'Groupe de CIs',
'Menu:ConfigManagement:Shortcuts' => 'Raccourcis',
'Menu:ConfigManagement:AllContacts' => 'Tous les contacts: %1$d',
'Menu:Typology' => 'Typologie configuration',
'Menu:Typology+' => 'Typologie configuration',
'Menu:OSVersion' => 'Versions d\'OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Catalogue des logiciels de références',
'Menu:Software+' => 'Catalogue des logiciels de références',
'UI_WelcomeMenu_AllConfigItems' => 'Résumé',
'Menu:ConfigManagement:Typology' => 'Configuration des typologies',
'Menu:Location+' => 'Tous les lieux',
'Menu:ConfigManagementCI' => 'CIs',
'Menu:ConfigManagementCI+' => 'CIs',
'Menu:BusinessProcess' => 'Processus métier',
'Menu:BusinessProcess+' => 'Tous les processus métiers',
'Menu:ApplicationSolution' => 'Solutions applicatives',
'Menu:ApplicationSolution+' => 'Toutes les solutions applicatives',
'Menu:ConfigManagementSoftware' => 'Gestion des logiciels',
'Menu:Licence' => 'Licences',
'Menu:Licence+' => 'Toutes les licences',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Tous les patches',
'Menu:ApplicationInstance' => 'Instances logiciels',
'Menu:ApplicationInstance+' => 'Logiciels installés',
'Menu:ConfigManagementHardware' => 'Gestion des infrastructures',
'Menu:Subnet' => 'Sous réseaux',
'Menu:Subnet+' => '',
'Menu:NetworkDevice' => 'Equipements réseaux',
'Menu:NetworkDevice+' => 'Tous les équipements réseaux',
'Menu:Server' => 'Serveurs',
'Menu:Server+' => '',
'Menu:Printer' => 'Imprimantes',
'Menu:Printer+' => 'Toutes les imprimantes',
'Menu:MobilePhone' => 'Téléphones portables',
'Menu:MobilePhone+' => 'Tous les téléphones portables',
'Menu:PC' => 'PCs',
'Menu:PC+' => 'Tous les PCs',
'Menu:NewContact' => 'Nouveau contact',
'Menu:NewContact+' => 'Nouveau contact',
'Menu:SearchContacts' => 'Rechercher des contacts',
'Menu:SearchContacts+' => 'Rechercher des contacts',
'Menu:NewCI' => 'Nouveau CI',
'Menu:NewCI+' => 'Nouveau CI',
'Menu:SearchCIs' => 'Rechercher des CIs',
'Menu:SearchCIs+' => 'Rechercher des CIs',
'Menu:ConfigManagement:Devices' => 'Equipements',
'Menu:ConfigManagement:AllDevices' => 'Infrastructures',
'Menu:ConfigManagement:virtualization' => 'Virtualisation',
'Menu:ConfigManagement:EndUsers' => 'Périphériques utilisateurs',
'Menu:ConfigManagement:SWAndApps' => 'Logiciels et applications',
'Menu:ConfigManagement:Misc' => 'Divers',
'Menu:Group' => 'Groupe de CIs',
'Menu:Group+' => 'Groupe de CIs',
'Menu:ConfigManagement:Shortcuts' => 'Raccourcis',
'Menu:ConfigManagement:AllContacts' => 'Tous les contacts: %1$d',
'Menu:Typology' => 'Typologie configuration',
'Menu:Typology+' => 'Typologie configuration',
'Menu:OSVersion' => 'Versions d\'OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Catalogue des logiciels de références',
'Menu:Software+' => 'Catalogue des logiciels de références',
'UI_WelcomeMenu_AllConfigItems' => 'Résumé',
'Menu:ConfigManagement:Typology' => 'Configuration des typologies',
));
@@ -1888,18 +1888,18 @@ Dict::Add('FR FR', 'French', 'Français', array(
// Add translation for Fieldsets
Dict::Add('FR FR', 'French', 'Français', array(
'Server:baseinfo' => 'Informations générales',
'Server:Date' => 'Dates',
'Server:moreinfo' => 'Informations complémentaires',
'Server:otherinfo' => 'Autres informations',
'Server:power' => 'Alimentation électrique',
'Person:info' => 'Informations générales',
'Person:personal_info' => 'Informations personnelles',
'Person:notifiy' => 'Notification',
'Class:Subnet/Tab:IPUsage' => 'IP utilisées',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces ayant une IP dans la plage: <em>%1$s</em> à <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IP disponibles',
'Class:Subnet/Tab:FreeIPs-count' => 'IP disponibles: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Voici un échantillon de dix addresses IP disponibles',
'Class:Document:PreviewTab' => 'Aperçu',
'Server:baseinfo' => 'Informations générales',
'Server:Date' => 'Dates',
'Server:moreinfo' => 'Informations complémentaires',
'Server:otherinfo' => 'Autres informations',
'Server:power' => 'Alimentation électrique',
'Person:info' => 'Informations générales',
'Person:personal_info' => 'Informations personnelles',
'Person:notifiy' => 'Notification',
'Class:Subnet/Tab:IPUsage' => 'IP utilisées',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces ayant une IP dans la plage: <em>%1$s</em> à <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IP disponibles',
'Class:Subnet/Tab:FreeIPs-count' => 'IP disponibles: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Voici un échantillon de dix addresses IP disponibles',
'Class:Document:PreviewTab' => 'Aperçu',
));

View File

@@ -1795,88 +1795,88 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:DataAdministration' => 'Adat adminisztráció',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Katalógusok',
'Menu:Catalogs+' => '',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => '',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => '',
'Menu:Organization' => 'Szervezet',
'Menu:Organization+' => '',
'Menu:Application' => 'Alkalmazások',
'Menu:Application+' => '',
'Menu:DBServer' => 'Adatbázis szerverek',
'Menu:DBServer+' => '',
'Menu:ConfigManagement' => 'Konfiguráció menedzsment',
'Menu:ConfigManagement+' => '',
'Menu:ConfigManagementOverview' => 'Áttekintő',
'Menu:ConfigManagementOverview+' => '',
'Menu:Contact' => 'Kapcsolattartók',
'Menu:Contact+' => '',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => 'Személyek',
'Menu:Person+' => '',
'Menu:Team' => 'Csoportok',
'Menu:Team+' => '',
'Menu:Document' => 'Dokumentumok',
'Menu:Document+' => '',
'Menu:Location' => 'Helyszínek',
'Menu:DataAdministration' => 'Adat adminisztráció',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Katalógusok',
'Menu:Catalogs+' => '',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => '',
'Menu:CSVImport' => 'CSV import',
'Menu:CSVImport+' => '',
'Menu:Organization' => 'Szervezet',
'Menu:Organization+' => '',
'Menu:Application' => 'Alkalmazások',
'Menu:Application+' => '',
'Menu:DBServer' => 'Adatbázis szerverek',
'Menu:DBServer+' => '',
'Menu:ConfigManagement' => 'Konfiguráció menedzsment',
'Menu:ConfigManagement+' => '',
'Menu:ConfigManagementOverview' => 'Áttekintő',
'Menu:ConfigManagementOverview+' => '',
'Menu:Contact' => 'Kapcsolattartók',
'Menu:Contact+' => '',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => 'Személyek',
'Menu:Person+' => '',
'Menu:Team' => 'Csoportok',
'Menu:Team+' => '',
'Menu:Document' => 'Dokumentumok',
'Menu:Document+' => '',
'Menu:Location' => 'Helyszínek',
'Menu:Location+' => '',
'Menu:ConfigManagementCI' => 'Konfigurációs elemek (CI)',
'Menu:ConfigManagementCI+' => '',
'Menu:BusinessProcess' => 'Üzleti folyamatok',
'Menu:BusinessProcess+' => '',
'Menu:ApplicationSolution' => 'Egyedi alkalmazások',
'Menu:ApplicationSolution+' => '',
'Menu:ConfigManagementSoftware' => 'Alkalmazás menedzsment',
'Menu:Licence' => 'Liszenszek',
'Menu:Licence+' => '',
'Menu:Patch' => 'Frissítések',
'Menu:Patch+' => '',
'Menu:ApplicationInstance' => 'Telepített szoftverek',
'Menu:ApplicationInstance+' => '',
'Menu:ConfigManagementHardware' => 'Infrastruktúra menedzsment',
'Menu:Subnet' => 'Alhálozatok',
'Menu:Subnet+' => '',
'Menu:NetworkDevice' => 'Hálózati eszközök',
'Menu:NetworkDevice+' => '',
'Menu:Server' => 'Szerverek',
'Menu:Server+' => '',
'Menu:Printer' => 'Nyomtatók',
'Menu:Printer+' => '',
'Menu:MobilePhone' => 'Mobil telefonok',
'Menu:MobilePhone+' => '',
'Menu:PC' => 'Személyi számítógépek',
'Menu:PC+' => '',
'Menu:NewContact' => 'Új kapcsolattartó',
'Menu:NewContact+' => '',
'Menu:SearchContacts' => 'Kapcsolattartó keresés',
'Menu:SearchContacts+' => '',
'Menu:NewCI' => 'Új CI',
'Menu:NewCI+' => '',
'Menu:SearchCIs' => 'CI keresés',
'Menu:SearchCIs+' => '',
'Menu:ConfigManagement:Devices' => 'Eszközök',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktúra',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Szoftverek és egyedi alkalmazások',
'Menu:ConfigManagement:Misc' => 'Egyéb',
'Menu:Group' => 'CI csoportok',
'Menu:Group+' => '',
'Menu:ConfigManagement:Shortcuts' => 'Gyorsmenük',
'Menu:ConfigManagement:AllContacts' => 'Összes kapcsolattartó: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
'Menu:Location+' => '',
'Menu:ConfigManagementCI' => 'Konfigurációs elemek (CI)',
'Menu:ConfigManagementCI+' => '',
'Menu:BusinessProcess' => 'Üzleti folyamatok',
'Menu:BusinessProcess+' => '',
'Menu:ApplicationSolution' => 'Egyedi alkalmazások',
'Menu:ApplicationSolution+' => '',
'Menu:ConfigManagementSoftware' => 'Alkalmazás menedzsment',
'Menu:Licence' => 'Liszenszek',
'Menu:Licence+' => '',
'Menu:Patch' => 'Frissítések',
'Menu:Patch+' => '',
'Menu:ApplicationInstance' => 'Telepített szoftverek',
'Menu:ApplicationInstance+' => '',
'Menu:ConfigManagementHardware' => 'Infrastruktúra menedzsment',
'Menu:Subnet' => 'Alhálozatok',
'Menu:Subnet+' => '',
'Menu:NetworkDevice' => 'Hálózati eszközök',
'Menu:NetworkDevice+' => '',
'Menu:Server' => 'Szerverek',
'Menu:Server+' => '',
'Menu:Printer' => 'Nyomtatók',
'Menu:Printer+' => '',
'Menu:MobilePhone' => 'Mobil telefonok',
'Menu:MobilePhone+' => '',
'Menu:PC' => 'Személyi számítógépek',
'Menu:PC+' => '',
'Menu:NewContact' => 'Új kapcsolattartó',
'Menu:NewContact+' => '',
'Menu:SearchContacts' => 'Kapcsolattartó keresés',
'Menu:SearchContacts+' => '',
'Menu:NewCI' => 'Új CI',
'Menu:NewCI+' => '',
'Menu:SearchCIs' => 'CI keresés',
'Menu:SearchCIs+' => '',
'Menu:ConfigManagement:Devices' => 'Eszközök',
'Menu:ConfigManagement:AllDevices' => 'Infrastruktúra',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Szoftverek és egyedi alkalmazások',
'Menu:ConfigManagement:Misc' => 'Egyéb',
'Menu:Group' => 'CI csoportok',
'Menu:Group+' => '',
'Menu:ConfigManagement:Shortcuts' => 'Gyorsmenük',
'Menu:ConfigManagement:AllContacts' => 'Összes kapcsolattartó: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
));
@@ -1884,18 +1884,18 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
// Add translation for Fieldsets
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'IP felhasználás',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfészek a következő tartományba esnek: <em>%1$s</em> - <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Szabad IP-k',
'Class:Subnet/Tab:FreeIPs-count' => 'Szabad IP-k: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '10 szabad IP cím kivonata',
'Class:Document:PreviewTab' => 'Előnézet',
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'IP felhasználás',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfészek a következő tartományba esnek: <em>%1$s</em> - <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Szabad IP-k',
'Class:Subnet/Tab:FreeIPs-count' => 'Szabad IP-k: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '10 szabad IP cím kivonata',
'Class:Document:PreviewTab' => 'Előnézet',
));

View File

@@ -1795,88 +1795,88 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
//
Dict::Add('IT IT', 'Italian', 'Italiano', array(
'Menu:DataAdministration' => 'Dati di amministrazione',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Cataloghi',
'Menu:Catalogs+' => 'Tipi di dato',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'Importazione CSV',
'Menu:CSVImport+' => '',
'Menu:Organization' => 'Organizzazioni',
'Menu:Organization+' => 'Tutte le organizzazioni',
'Menu:Application' => 'Applicazioni',
'Menu:Application+' => 'Tutte le applicazioni',
'Menu:DBServer' => 'Database Servers',
'Menu:DBServer+' => 'Database Servers',
'Menu:ConfigManagement' => 'Gestione delle Configurazioni',
'Menu:ConfigManagement+' => 'Gestione delle Configurazioni',
'Menu:ConfigManagementOverview' => 'Panoramica',
'Menu:ConfigManagementOverview+' => 'Panoramica',
'Menu:Contact' => 'Contatti',
'Menu:Contact+' => 'Contatti',
'Menu:Contact:Count' => '%1$d contatti',
'Menu:Person' => 'Persone',
'Menu:Person+' => 'Tutte le persone',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Tutti i Teams',
'Menu:Document' => 'Documenti',
'Menu:Document+' => 'Tutti i Documenti',
'Menu:Location' => 'Posizioni',
'Menu:DataAdministration' => 'Dati di amministrazione',
'Menu:DataAdministration+' => '',
'Menu:Catalogs' => 'Cataloghi',
'Menu:Catalogs+' => 'Tipi di dato',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'Importazione CSV',
'Menu:CSVImport+' => '',
'Menu:Organization' => 'Organizzazioni',
'Menu:Organization+' => 'Tutte le organizzazioni',
'Menu:Application' => 'Applicazioni',
'Menu:Application+' => 'Tutte le applicazioni',
'Menu:DBServer' => 'Database Servers',
'Menu:DBServer+' => 'Database Servers',
'Menu:ConfigManagement' => 'Gestione delle Configurazioni',
'Menu:ConfigManagement+' => 'Gestione delle Configurazioni',
'Menu:ConfigManagementOverview' => 'Panoramica',
'Menu:ConfigManagementOverview+' => 'Panoramica',
'Menu:Contact' => 'Contatti',
'Menu:Contact+' => 'Contatti',
'Menu:Contact:Count' => '%1$d contatti',
'Menu:Person' => 'Persone',
'Menu:Person+' => 'Tutte le persone',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Tutti i Teams',
'Menu:Document' => 'Documenti',
'Menu:Document+' => 'Tutti i Documenti',
'Menu:Location' => 'Posizioni',
'Menu:Location+' => 'Tutte le pozisioni',
'Menu:ConfigManagementCI' => 'Elementi di Configurazione (CI)',
'Menu:ConfigManagementCI+' => 'Elementi di Configurazione (CI)',
'Menu:BusinessProcess' => 'Processi di business',
'Menu:BusinessProcess+' => 'Tutti i processi di business',
'Menu:ApplicationSolution' => 'Soluzioni applicative',
'Menu:ApplicationSolution+' => 'Tutte le soluzioni applicative',
'Menu:ConfigManagementSoftware' => 'Gestione delle Applicazioni',
'Menu:Licence' => 'Licenze',
'Menu:Licence+' => 'Tutte le licenze',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Tutte le patches',
'Menu:ApplicationInstance' => 'Software Installati',
'Menu:ApplicationInstance+' => 'Applicazioni e Database servers',
'Menu:ConfigManagementHardware' => 'Gestione Infrastrutture',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'Tutte le Subnets',
'Menu:NetworkDevice' => 'Dispositivi di rete',
'Menu:NetworkDevice+' => 'Tutti i dispositivi di rete',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Tutti i Server',
'Menu:Printer' => 'Stampanti',
'Menu:Printer+' => 'Tutte le stampanti',
'Menu:MobilePhone' => 'Cellulari',
'Menu:MobilePhone+' => 'Tutti i cellulari',
'Menu:PC' => 'Personal Computers',
'Menu:PC+' => 'Tutti i Personal Computers',
'Menu:NewContact' => 'Nuovo Contatto',
'Menu:NewContact+' => 'Nuovo Contatto',
'Menu:SearchContacts' => 'Ricerca contatti',
'Menu:SearchContacts+' => 'Ricerca contatti',
'Menu:NewCI' => 'Nuovo CI',
'Menu:NewCI+' => 'Nuovo CI',
'Menu:SearchCIs' => 'Ricerca CIs',
'Menu:SearchCIs+' => 'Ricerca CIs',
'Menu:ConfigManagement:Devices' => 'Dispositvi',
'Menu:ConfigManagement:AllDevices' => 'Infrastrutture',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Software e Applicazioni',
'Menu:ConfigManagement:Misc' => 'Varie',
'Menu:Group' => 'Gruppi di CIs',
'Menu:Group+' => 'Gruppi di CIs',
'Menu:ConfigManagement:Shortcuts' => 'Scorciatoie',
'Menu:ConfigManagement:AllContacts' => 'Tutti i contatti: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
'Menu:Location+' => 'Tutte le pozisioni',
'Menu:ConfigManagementCI' => 'Elementi di Configurazione (CI)',
'Menu:ConfigManagementCI+' => 'Elementi di Configurazione (CI)',
'Menu:BusinessProcess' => 'Processi di business',
'Menu:BusinessProcess+' => 'Tutti i processi di business',
'Menu:ApplicationSolution' => 'Soluzioni applicative',
'Menu:ApplicationSolution+' => 'Tutte le soluzioni applicative',
'Menu:ConfigManagementSoftware' => 'Gestione delle Applicazioni',
'Menu:Licence' => 'Licenze',
'Menu:Licence+' => 'Tutte le licenze',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Tutte le patches',
'Menu:ApplicationInstance' => 'Software Installati',
'Menu:ApplicationInstance+' => 'Applicazioni e Database servers',
'Menu:ConfigManagementHardware' => 'Gestione Infrastrutture',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'Tutte le Subnets',
'Menu:NetworkDevice' => 'Dispositivi di rete',
'Menu:NetworkDevice+' => 'Tutti i dispositivi di rete',
'Menu:Server' => 'Server',
'Menu:Server+' => 'Tutti i Server',
'Menu:Printer' => 'Stampanti',
'Menu:Printer+' => 'Tutte le stampanti',
'Menu:MobilePhone' => 'Cellulari',
'Menu:MobilePhone+' => 'Tutti i cellulari',
'Menu:PC' => 'Personal Computers',
'Menu:PC+' => 'Tutti i Personal Computers',
'Menu:NewContact' => 'Nuovo Contatto',
'Menu:NewContact+' => 'Nuovo Contatto',
'Menu:SearchContacts' => 'Ricerca contatti',
'Menu:SearchContacts+' => 'Ricerca contatti',
'Menu:NewCI' => 'Nuovo CI',
'Menu:NewCI+' => 'Nuovo CI',
'Menu:SearchCIs' => 'Ricerca CIs',
'Menu:SearchCIs+' => 'Ricerca CIs',
'Menu:ConfigManagement:Devices' => 'Dispositvi',
'Menu:ConfigManagement:AllDevices' => 'Infrastrutture',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Software e Applicazioni',
'Menu:ConfigManagement:Misc' => 'Varie',
'Menu:Group' => 'Gruppi di CIs',
'Menu:Group+' => 'Gruppi di CIs',
'Menu:ConfigManagement:Shortcuts' => 'Scorciatoie',
'Menu:ConfigManagement:AllContacts' => 'Tutti i contatti: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
));
@@ -1884,18 +1884,18 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
// Add translation for Fieldsets
Dict::Add('IT IT', 'Italian', 'Italiano', array(
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'Utilizzo IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Iterfacce che hanno un IP nell\'intervallo: <em>%1$s</em> e <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IP liberi',
'Class:Subnet/Tab:FreeIPs-count' => 'IP liberi: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Qui c\'è un estratto di 10 indirizzi IP liberi',
'Class:Document:PreviewTab' => 'Anteprima',
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'Utilizzo IP',
'Class:Subnet/Tab:IPUsage-explain' => 'Iterfacce che hanno un IP nell\'intervallo: <em>%1$s</em> e <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IP liberi',
'Class:Subnet/Tab:FreeIPs-count' => 'IP liberi: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Qui c\'è un estratto di 10 indirizzi IP liberi',
'Class:Document:PreviewTab' => 'Anteprima',
));

View File

@@ -1795,88 +1795,88 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
//
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Menu:DataAdministration' => 'データ管理',
'Menu:DataAdministration+' => 'データ管理',
'Menu:Catalogs' => 'カタログ',
'Menu:Catalogs+' => 'データタイプ',
'Menu:Audit' => '監査',
'Menu:Audit+' => '監査',
'Menu:CSVImport' => 'CSV インポート',
'Menu:CSVImport+' => '一括作成/一括更新',
'Menu:Organization' => '組織',
'Menu:Organization+' => '全組織',
'Menu:Application' => 'アプリケーション',
'Menu:Application+' => '全アプリケーション',
'Menu:DBServer' => 'DBサーバ',
'Menu:DBServer+' => 'DBサーバ',
'Menu:ConfigManagement' => '構成管理',
'Menu:ConfigManagement+' => '構成管理',
'Menu:ConfigManagementOverview' => '概要',
'Menu:ConfigManagementOverview+' => '概要',
'Menu:Contact' => '連絡先',
'Menu:Contact+' => '連絡先',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => '人物',
'Menu:Person+' => '全人物',
'Menu:Team' => 'チーム',
'Menu:Team+' => '全チーム',
'Menu:Document' => '文書',
'Menu:Document+' => '全文書',
'Menu:Location' => '場所',
'Menu:DataAdministration' => 'データ管理',
'Menu:DataAdministration+' => 'データ管理',
'Menu:Catalogs' => 'カタログ',
'Menu:Catalogs+' => 'データタイプ',
'Menu:Audit' => '監査',
'Menu:Audit+' => '監査',
'Menu:CSVImport' => 'CSV インポート',
'Menu:CSVImport+' => '一括作成/一括更新',
'Menu:Organization' => '組織',
'Menu:Organization+' => '全組織',
'Menu:Application' => 'アプリケーション',
'Menu:Application+' => '全アプリケーション',
'Menu:DBServer' => 'DBサーバ',
'Menu:DBServer+' => 'DBサーバ',
'Menu:ConfigManagement' => '構成管理',
'Menu:ConfigManagement+' => '構成管理',
'Menu:ConfigManagementOverview' => '概要',
'Menu:ConfigManagementOverview+' => '概要',
'Menu:Contact' => '連絡先',
'Menu:Contact+' => '連絡先',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => '人物',
'Menu:Person+' => '全人物',
'Menu:Team' => 'チーム',
'Menu:Team+' => '全チーム',
'Menu:Document' => '文書',
'Menu:Document+' => '全文書',
'Menu:Location' => '場所',
'Menu:Location+' => '全ての場所',
'Menu:ConfigManagementCI' => '構成管理項目',
'Menu:ConfigManagementCI+' => '構成管理項目',
'Menu:BusinessProcess' => 'ビジネスプロセス',
'Menu:BusinessProcess+' => '全ビジネスプロセス',
'Menu:ApplicationSolution' => 'アプリケーションソリューション',
'Menu:ApplicationSolution+' => '全アプリケーションソリューション',
'Menu:ConfigManagementSoftware' => 'ソフトウエア管理',
'Menu:Licence' => 'ライセンス',
'Menu:Licence+' => '全ライセンス',
'Menu:Patch' => 'パッチ',
'Menu:Patch+' => '全パッチ',
'Menu:ApplicationInstance' => 'インストールされたソフトウエア',
'Menu:ApplicationInstance+' => 'アプリケーションとデータベースサーバ',
'Menu:ConfigManagementHardware' => 'インフラ管理',
'Menu:Subnet' => 'サブネット',
'Menu:Subnet+' => '全サブネット',
'Menu:NetworkDevice' => 'ネットワークデバイス',
'Menu:NetworkDevice+' => '全ネットワークデバイス',
'Menu:Server' => 'サーバ',
'Menu:Server+' => '全サーバ',
'Menu:Printer' => 'プリンタ',
'Menu:Printer+' => '全プリンタ',
'Menu:MobilePhone' => '携帯電話',
'Menu:MobilePhone+' => '全携帯電話',
'Menu:PC' => 'パーソナルコンピュタ',
'Menu:PC+' => '全パーソナルコンピュータ',
'Menu:NewContact' => '新規連絡先',
'Menu:NewContact+' => '新規連絡先',
'Menu:SearchContacts' => '連絡先検索',
'Menu:SearchContacts+' => '連絡先検索',
'Menu:NewCI' => '新規CI',
'Menu:NewCI+' => '新規CI',
'Menu:SearchCIs' => 'CI検索',
'Menu:SearchCIs+' => 'CI検索',
'Menu:ConfigManagement:Devices' => 'デバイス',
'Menu:ConfigManagement:AllDevices' => 'インフラ',
'Menu:ConfigManagement:virtualization' => '仮想化',
'Menu:ConfigManagement:EndUsers' => 'エンドユーザデバイス',
'Menu:ConfigManagement:SWAndApps' => 'ソフトウエアとアプリケーション',
'Menu:ConfigManagement:Misc' => 'その他',
'Menu:Group' => 'CIグループ',
'Menu:Group+' => 'CIグループ',
'Menu:ConfigManagement:Shortcuts' => 'ショートカット',
'Menu:ConfigManagement:AllContacts' => '全連絡先: %1$d',
'Menu:Typology' => 'トポロジー構成',
'Menu:Typology+' => 'トポロジー構成',
'Menu:OSVersion' => 'OS バージョン',
'Menu:OSVersion+' => '',
'Menu:Software' => 'ソフトウエアカタログ',
'Menu:Software+' => 'ソフトウエアカタログ',
'UI_WelcomeMenu_AllConfigItems' => 'サマリー',
'Menu:ConfigManagement:Typology' => '分類構成',
'Menu:Location+' => '全ての場所',
'Menu:ConfigManagementCI' => '構成管理項目',
'Menu:ConfigManagementCI+' => '構成管理項目',
'Menu:BusinessProcess' => 'ビジネスプロセス',
'Menu:BusinessProcess+' => '全ビジネスプロセス',
'Menu:ApplicationSolution' => 'アプリケーションソリューション',
'Menu:ApplicationSolution+' => '全アプリケーションソリューション',
'Menu:ConfigManagementSoftware' => 'ソフトウエア管理',
'Menu:Licence' => 'ライセンス',
'Menu:Licence+' => '全ライセンス',
'Menu:Patch' => 'パッチ',
'Menu:Patch+' => '全パッチ',
'Menu:ApplicationInstance' => 'インストールされたソフトウエア',
'Menu:ApplicationInstance+' => 'アプリケーションとデータベースサーバ',
'Menu:ConfigManagementHardware' => 'インフラ管理',
'Menu:Subnet' => 'サブネット',
'Menu:Subnet+' => '全サブネット',
'Menu:NetworkDevice' => 'ネットワークデバイス',
'Menu:NetworkDevice+' => '全ネットワークデバイス',
'Menu:Server' => 'サーバ',
'Menu:Server+' => '全サーバ',
'Menu:Printer' => 'プリンタ',
'Menu:Printer+' => '全プリンタ',
'Menu:MobilePhone' => '携帯電話',
'Menu:MobilePhone+' => '全携帯電話',
'Menu:PC' => 'パーソナルコンピュタ',
'Menu:PC+' => '全パーソナルコンピュータ',
'Menu:NewContact' => '新規連絡先',
'Menu:NewContact+' => '新規連絡先',
'Menu:SearchContacts' => '連絡先検索',
'Menu:SearchContacts+' => '連絡先検索',
'Menu:NewCI' => '新規CI',
'Menu:NewCI+' => '新規CI',
'Menu:SearchCIs' => 'CI検索',
'Menu:SearchCIs+' => 'CI検索',
'Menu:ConfigManagement:Devices' => 'デバイス',
'Menu:ConfigManagement:AllDevices' => 'インフラ',
'Menu:ConfigManagement:virtualization' => '仮想化',
'Menu:ConfigManagement:EndUsers' => 'エンドユーザデバイス',
'Menu:ConfigManagement:SWAndApps' => 'ソフトウエアとアプリケーション',
'Menu:ConfigManagement:Misc' => 'その他',
'Menu:Group' => 'CIグループ',
'Menu:Group+' => 'CIグループ',
'Menu:ConfigManagement:Shortcuts' => 'ショートカット',
'Menu:ConfigManagement:AllContacts' => '全連絡先: %1$d',
'Menu:Typology' => 'トポロジー構成',
'Menu:Typology+' => 'トポロジー構成',
'Menu:OSVersion' => 'OS バージョン',
'Menu:OSVersion+' => '',
'Menu:Software' => 'ソフトウエアカタログ',
'Menu:Software+' => 'ソフトウエアカタログ',
'UI_WelcomeMenu_AllConfigItems' => 'サマリー',
'Menu:ConfigManagement:Typology' => '分類構成',
));
@@ -1884,18 +1884,18 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
// Add translation for Fieldsets
Dict::Add('JA JP', 'Japanese', '日本語', array(
'Server:baseinfo' => '基本情報',
'Server:Date' => '日付',
'Server:moreinfo' => '追加情報',
'Server:otherinfo' => '他の情報',
'Server:power' => 'Power supply~~',
'Person:info' => '情報',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => '通知',
'Class:Subnet/Tab:IPUsage' => 'IP 利用',
'Class:Subnet/Tab:IPUsage-explain' => 'インターフェースは、レンジ: <em>%1$s</em> から <em>%2$s</em>の中のIPを持っています。',
'Class:Subnet/Tab:FreeIPs' => 'フリーなIP',
'Class:Subnet/Tab:FreeIPs-count' => 'フリーIP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '10個のフリーなIPアドレス',
'Class:Document:PreviewTab' => 'プレビュー',
'Server:baseinfo' => '基本情報',
'Server:Date' => '日付',
'Server:moreinfo' => '追加情報',
'Server:otherinfo' => '他の情報',
'Server:power' => 'Power supply~~',
'Person:info' => '情報',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => '通知',
'Class:Subnet/Tab:IPUsage' => 'IP 利用',
'Class:Subnet/Tab:IPUsage-explain' => 'インターフェースは、レンジ: <em>%1$s</em> から <em>%2$s</em>の中のIPを持っています。',
'Class:Subnet/Tab:FreeIPs' => 'フリーなIP',
'Class:Subnet/Tab:FreeIPs-count' => 'フリーIP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '10個のフリーなIPアドレス',
'Class:Document:PreviewTab' => 'プレビュー',
));

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-config-mgmt/2.6.0',
'itop-config-mgmt/2.6.1',
array(
// Identification
//

View File

@@ -1807,88 +1807,88 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
//
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'Menu:DataAdministration' => 'Databeheer',
'Menu:DataAdministration+' => 'Databeheer',
'Menu:Catalogs' => 'Catalogus',
'Menu:Catalogs+' => 'Soorten data',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV-import',
'Menu:CSVImport+' => 'Grootschalige aanmaak of update',
'Menu:Organization' => 'Organisaties',
'Menu:Organization+' => 'Alle organisaties',
'Menu:Application' => 'Applicaties',
'Menu:Application+' => 'Alle Applicaties',
'Menu:DBServer' => 'Databaseservers',
'Menu:DBServer+' => 'Databaseservers',
'Menu:ConfigManagement' => 'Configuratiebeheer',
'Menu:ConfigManagement+' => 'Configuratiebeheer',
'Menu:ConfigManagementOverview' => 'Overzicht',
'Menu:ConfigManagementOverview+' => 'Overzicht',
'Menu:Contact' => 'Contacten',
'Menu:Contact+' => 'Contacten',
'Menu:Contact:Count' => '%1$d contacten',
'Menu:Person' => 'Personen',
'Menu:Person+' => 'Alle personen',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle teams',
'Menu:Document' => 'Documenten',
'Menu:Document+' => 'Alle documenten',
'Menu:Location' => 'Locaties',
'Menu:DataAdministration' => 'Databeheer',
'Menu:DataAdministration+' => 'Databeheer',
'Menu:Catalogs' => 'Catalogus',
'Menu:Catalogs+' => 'Soorten data',
'Menu:Audit' => 'Audit',
'Menu:Audit+' => 'Audit',
'Menu:CSVImport' => 'CSV-import',
'Menu:CSVImport+' => 'Grootschalige aanmaak of update',
'Menu:Organization' => 'Organisaties',
'Menu:Organization+' => 'Alle organisaties',
'Menu:Application' => 'Applicaties',
'Menu:Application+' => 'Alle Applicaties',
'Menu:DBServer' => 'Databaseservers',
'Menu:DBServer+' => 'Databaseservers',
'Menu:ConfigManagement' => 'Configuratiebeheer',
'Menu:ConfigManagement+' => 'Configuratiebeheer',
'Menu:ConfigManagementOverview' => 'Overzicht',
'Menu:ConfigManagementOverview+' => 'Overzicht',
'Menu:Contact' => 'Contacten',
'Menu:Contact+' => 'Contacten',
'Menu:Contact:Count' => '%1$d contacten',
'Menu:Person' => 'Personen',
'Menu:Person+' => 'Alle personen',
'Menu:Team' => 'Teams',
'Menu:Team+' => 'Alle teams',
'Menu:Document' => 'Documenten',
'Menu:Document+' => 'Alle documenten',
'Menu:Location' => 'Locaties',
'Menu:Location+' => 'Alle locaties',
'Menu:ConfigManagementCI' => 'Configuratie-items',
'Menu:ConfigManagementCI+' => 'Configuratie-items',
'Menu:BusinessProcess' => 'Bedrijfsprocessen',
'Menu:BusinessProcess+' => 'Alle bedrijfsprocessen',
'Menu:ApplicationSolution' => 'Applicatie-oplossing',
'Menu:ApplicationSolution+' => 'Alle applicatie-oplossingen',
'Menu:ConfigManagementSoftware' => 'Applicatiebeheer',
'Menu:Licence' => 'Licenties',
'Menu:Licence+' => 'Alle licenties',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle patches',
'Menu:ApplicationInstance' => 'Geïnstalleerde software',
'Menu:ApplicationInstance+' => 'Applicaties en databaseservers',
'Menu:ConfigManagementHardware' => 'Infrastructuurbeheer',
'Menu:Subnet' => 'Subnetten',
'Menu:Subnet+' => 'Alle subnetten',
'Menu:NetworkDevice' => 'Netwerkapparaten',
'Menu:NetworkDevice+' => 'Alle netwerkapparaten',
'Menu:Server' => 'Servers',
'Menu:Server+' => 'Alle servers',
'Menu:Printer' => 'Printers',
'Menu:Printer+' => 'Alle printers',
'Menu:MobilePhone' => 'Mobiele telefoons',
'Menu:MobilePhone+' => 'Alle mobiele telefoons',
'Menu:PC' => 'PC\'s',
'Menu:PC+' => 'Alle PC\'s',
'Menu:NewContact' => 'Nieuw contact',
'Menu:NewContact+' => 'Maak een nieuw contact aan',
'Menu:SearchContacts' => 'Zoek naar contacten',
'Menu:SearchContacts+' => 'Zoek naar contacten',
'Menu:NewCI' => 'Nieuw configuratie-item',
'Menu:NewCI+' => 'Maak een nieuw configuratie-item aan',
'Menu:SearchCIs' => 'Zoek naar CI\'s',
'Menu:SearchCIs+' => 'Zoek naar configuratie-items',
'Menu:ConfigManagement:Devices' => 'Apparaten',
'Menu:ConfigManagement:AllDevices' => 'Infrastructuur',
'Menu:ConfigManagement:virtualization' => 'Virtualisatie',
'Menu:ConfigManagement:EndUsers' => 'Apparaten van eindgebruikers',
'Menu:ConfigManagement:SWAndApps' => 'Software en applicaties',
'Menu:ConfigManagement:Misc' => 'Diversen',
'Menu:Group' => 'Groepen van CIs',
'Menu:Group+' => 'Groepen van CIs',
'Menu:ConfigManagement:Shortcuts' => 'Snelkoppelingen',
'Menu:ConfigManagement:AllContacts' => 'Alle contacten: %1$d',
'Menu:Typology' => 'Configuratie typologie',
'Menu:Typology+' => 'Configuratie van de typologie',
'Menu:OSVersion' => 'Versies besturingssysteem',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Softwarecatalogus',
'Menu:Software+' => 'Softwarecatalogus',
'UI_WelcomeMenu_AllConfigItems' => 'Samenvatting',
'Menu:ConfigManagement:Typology' => 'Configuratie typologie',
'Menu:Location+' => 'Alle locaties',
'Menu:ConfigManagementCI' => 'Configuratie-items',
'Menu:ConfigManagementCI+' => 'Configuratie-items',
'Menu:BusinessProcess' => 'Bedrijfsprocessen',
'Menu:BusinessProcess+' => 'Alle bedrijfsprocessen',
'Menu:ApplicationSolution' => 'Applicatie-oplossing',
'Menu:ApplicationSolution+' => 'Alle applicatie-oplossingen',
'Menu:ConfigManagementSoftware' => 'Applicatiebeheer',
'Menu:Licence' => 'Licenties',
'Menu:Licence+' => 'Alle licenties',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Alle patches',
'Menu:ApplicationInstance' => 'Geïnstalleerde software',
'Menu:ApplicationInstance+' => 'Applicaties en databaseservers',
'Menu:ConfigManagementHardware' => 'Infrastructuurbeheer',
'Menu:Subnet' => 'Subnetten',
'Menu:Subnet+' => 'Alle subnetten',
'Menu:NetworkDevice' => 'Netwerkapparaten',
'Menu:NetworkDevice+' => 'Alle netwerkapparaten',
'Menu:Server' => 'Servers',
'Menu:Server+' => 'Alle servers',
'Menu:Printer' => 'Printers',
'Menu:Printer+' => 'Alle printers',
'Menu:MobilePhone' => 'Mobiele telefoons',
'Menu:MobilePhone+' => 'Alle mobiele telefoons',
'Menu:PC' => 'PC\'s',
'Menu:PC+' => 'Alle PC\'s',
'Menu:NewContact' => 'Nieuw contact',
'Menu:NewContact+' => 'Maak een nieuw contact aan',
'Menu:SearchContacts' => 'Zoek naar contacten',
'Menu:SearchContacts+' => 'Zoek naar contacten',
'Menu:NewCI' => 'Nieuw configuratie-item',
'Menu:NewCI+' => 'Maak een nieuw configuratie-item aan',
'Menu:SearchCIs' => 'Zoek naar CI\'s',
'Menu:SearchCIs+' => 'Zoek naar configuratie-items',
'Menu:ConfigManagement:Devices' => 'Apparaten',
'Menu:ConfigManagement:AllDevices' => 'Infrastructuur',
'Menu:ConfigManagement:virtualization' => 'Virtualisatie',
'Menu:ConfigManagement:EndUsers' => 'Apparaten van eindgebruikers',
'Menu:ConfigManagement:SWAndApps' => 'Software en applicaties',
'Menu:ConfigManagement:Misc' => 'Diversen',
'Menu:Group' => 'Groepen van CIs',
'Menu:Group+' => 'Groepen van CIs',
'Menu:ConfigManagement:Shortcuts' => 'Snelkoppelingen',
'Menu:ConfigManagement:AllContacts' => 'Alle contacten: %1$d',
'Menu:Typology' => 'Configuratie typologie',
'Menu:Typology+' => 'Configuratie van de typologie',
'Menu:OSVersion' => 'Versies besturingssysteem',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Softwarecatalogus',
'Menu:Software+' => 'Softwarecatalogus',
'UI_WelcomeMenu_AllConfigItems' => 'Samenvatting',
'Menu:ConfigManagement:Typology' => 'Configuratie typologie',
));
@@ -1896,18 +1896,18 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
// Add translation for Fieldsets
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'Server:baseinfo' => 'Globale informatie',
'Server:Date' => 'Datum',
'Server:moreinfo' => 'Meer informatie',
'Server:otherinfo' => 'Andere informatie',
'Server:power' => 'Stroomtoevoer',
'Person:info' => 'Globale informatie',
'Person:personal_info' => 'Persoonlijke informatie',
'Person:notifiy' => 'Notificatie', // gecheckt: in datamodel.itop-config-mgmt.xml staat inderdaad ook een typfout, 'notifiy' is in die zin correct
'Class:Subnet/Tab:IPUsage' => 'IP-gebruik',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces met een IP-adres in de reeks: <em>%1$s</em> tot en met <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Beschikbare IP-adressen',
'Class:Subnet/Tab:FreeIPs-count' => 'Beschikbare IP-adressen: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Dit zijn 10 beschikbare IP-adressen',
'Class:Document:PreviewTab' => 'Voorbeeld',
'Server:baseinfo' => 'Globale informatie',
'Server:Date' => 'Datum',
'Server:moreinfo' => 'Meer informatie',
'Server:otherinfo' => 'Andere informatie',
'Server:power' => 'Stroomtoevoer',
'Person:info' => 'Globale informatie',
'Person:personal_info' => 'Persoonlijke informatie',
'Person:notifiy' => 'Notificatie',
'Class:Subnet/Tab:IPUsage' => 'IP-gebruik',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces met een IP-adres in de reeks: <em>%1$s</em> tot en met <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Beschikbare IP-adressen',
'Class:Subnet/Tab:FreeIPs-count' => 'Beschikbare IP-adressen: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Dit zijn 10 beschikbare IP-adressen',
'Class:Document:PreviewTab' => 'Voorbeeld',
));

View File

@@ -1801,88 +1801,88 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
//
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Menu:DataAdministration' => 'Administração Dados',
'Menu:DataAdministration+' => 'Administração Dados',
'Menu:Catalogs' => 'Catálogos',
'Menu:Catalogs+' => 'Tipos dados',
'Menu:Audit' => 'Auditoria',
'Menu:Audit+' => 'Auditoria',
'Menu:CSVImport' => 'Importar CSV',
'Menu:CSVImport+' => 'Criação ou atualização em massa',
'Menu:Organization' => 'Organizações',
'Menu:Organization+' => 'Todas organizações',
'Menu:Application' => 'Applicações',
'Menu:Application+' => 'Todas aplicações',
'Menu:DBServer' => 'Serviços Banco de Dados',
'Menu:DBServer+' => 'Serviços Banco de Dados',
'Menu:ConfigManagement' => 'Gerenciamento Configurações',
'Menu:ConfigManagement+' => 'Gerenciamento Configurações',
'Menu:ConfigManagementOverview' => 'Visão geral',
'Menu:ConfigManagementOverview+' => 'Visão geral',
'Menu:Contact' => 'Contatos',
'Menu:Contact+' => 'Contatos',
'Menu:Contact:Count' => '%1$d contatos',
'Menu:Person' => 'Pessoas',
'Menu:Person+' => 'Todas pessoas',
'Menu:Team' => 'Equipes',
'Menu:Team+' => 'Todas equipes',
'Menu:Document' => 'Documentos',
'Menu:Document+' => 'Todos documentos',
'Menu:Location' => 'Localidades',
'Menu:DataAdministration' => 'Administração Dados',
'Menu:DataAdministration+' => 'Administração Dados',
'Menu:Catalogs' => 'Catálogos',
'Menu:Catalogs+' => 'Tipos dados',
'Menu:Audit' => 'Auditoria',
'Menu:Audit+' => 'Auditoria',
'Menu:CSVImport' => 'Importar CSV',
'Menu:CSVImport+' => 'Criação ou atualização em massa',
'Menu:Organization' => 'Organizações',
'Menu:Organization+' => 'Todas organizações',
'Menu:Application' => 'Applicações',
'Menu:Application+' => 'Todas aplicações',
'Menu:DBServer' => 'Serviços Banco de Dados',
'Menu:DBServer+' => 'Serviços Banco de Dados',
'Menu:ConfigManagement' => 'Gerenciamento Configurações',
'Menu:ConfigManagement+' => 'Gerenciamento Configurações',
'Menu:ConfigManagementOverview' => 'Visão geral',
'Menu:ConfigManagementOverview+' => 'Visão geral',
'Menu:Contact' => 'Contatos',
'Menu:Contact+' => 'Contatos',
'Menu:Contact:Count' => '%1$d contatos',
'Menu:Person' => 'Pessoas',
'Menu:Person+' => 'Todas pessoas',
'Menu:Team' => 'Equipes',
'Menu:Team+' => 'Todas equipes',
'Menu:Document' => 'Documentos',
'Menu:Document+' => 'Todos documentos',
'Menu:Location' => 'Localidades',
'Menu:Location+' => 'Todas localidades',
'Menu:ConfigManagementCI' => 'Itens de configuração',
'Menu:ConfigManagementCI+' => 'Itens de configuração',
'Menu:BusinessProcess' => 'Processos de negócios',
'Menu:BusinessProcess+' => 'Todos processos de negócios',
'Menu:ApplicationSolution' => 'Solução aplicação',
'Menu:ApplicationSolution+' => 'Todas soluções aplicações',
'Menu:ConfigManagementSoftware' => 'Gerenciamento aplicações',
'Menu:Licence' => 'Licenças',
'Menu:Licence+' => 'Todoas licenças',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Todos patches',
'Menu:ApplicationInstance' => 'Software instalados',
'Menu:ApplicationInstance+' => 'Serviços aplicações e Banco de dados',
'Menu:ConfigManagementHardware' => 'Gerenciamento Infra-estrutura',
'Menu:Subnet' => 'Sub-redes',
'Menu:Subnet+' => 'Todas sub-redes',
'Menu:NetworkDevice' => 'Dispositivos rede',
'Menu:NetworkDevice+' => 'Todos dispositivos rede',
'Menu:Server' => 'Servidores',
'Menu:Server+' => 'Todos servidores',
'Menu:Printer' => 'Impressoras',
'Menu:Printer+' => 'Todas impressoras',
'Menu:MobilePhone' => 'Telefone celulares',
'Menu:MobilePhone+' => 'Todos telefone celulares',
'Menu:PC' => 'Estação de trabalho',
'Menu:PC+' => 'Todas estação de trabalho',
'Menu:NewContact' => 'Novo contato',
'Menu:NewContact+' => 'Novo contato',
'Menu:SearchContacts' => 'Pesquisar por contatos',
'Menu:SearchContacts+' => 'Pesquisar por contatos',
'Menu:NewCI' => 'Novo CI',
'Menu:NewCI+' => 'Novo CI',
'Menu:SearchCIs' => 'Pesquisar por CIs',
'Menu:SearchCIs+' => 'Pesquisar por CIs',
'Menu:ConfigManagement:Devices' => 'Dispositivos',
'Menu:ConfigManagement:AllDevices' => 'Infra-estrutura',
'Menu:ConfigManagement:virtualization' => 'Virtualização',
'Menu:ConfigManagement:EndUsers' => 'Dispositivos usuário final',
'Menu:ConfigManagement:SWAndApps' => 'Software e aplicações',
'Menu:ConfigManagement:Misc' => 'Diversos',
'Menu:Group' => 'Grupos de CIs',
'Menu:Group+' => 'Grupos de CIs',
'Menu:ConfigManagement:Shortcuts' => 'Atalhos',
'Menu:ConfigManagement:AllContacts' => 'Todos contatos: %1$d',
'Menu:Typology' => 'Configuração tipologia',
'Menu:Typology+' => 'Configuração tipologia',
'Menu:OSVersion' => 'Versão OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Catálogo software',
'Menu:Software+' => 'Catálogo software',
'UI_WelcomeMenu_AllConfigItems' => 'Índice',
'Menu:ConfigManagement:Typology' => 'Configuração tipologia',
'Menu:Location+' => 'Todas localidades',
'Menu:ConfigManagementCI' => 'Itens de configuração',
'Menu:ConfigManagementCI+' => 'Itens de configuração',
'Menu:BusinessProcess' => 'Processos de negócios',
'Menu:BusinessProcess+' => 'Todos processos de negócios',
'Menu:ApplicationSolution' => 'Solução aplicação',
'Menu:ApplicationSolution+' => 'Todas soluções aplicações',
'Menu:ConfigManagementSoftware' => 'Gerenciamento aplicações',
'Menu:Licence' => 'Licenças',
'Menu:Licence+' => 'Todoas licenças',
'Menu:Patch' => 'Patches',
'Menu:Patch+' => 'Todos patches',
'Menu:ApplicationInstance' => 'Software instalados',
'Menu:ApplicationInstance+' => 'Serviços aplicações e Banco de dados',
'Menu:ConfigManagementHardware' => 'Gerenciamento Infra-estrutura',
'Menu:Subnet' => 'Sub-redes',
'Menu:Subnet+' => 'Todas sub-redes',
'Menu:NetworkDevice' => 'Dispositivos rede',
'Menu:NetworkDevice+' => 'Todos dispositivos rede',
'Menu:Server' => 'Servidores',
'Menu:Server+' => 'Todos servidores',
'Menu:Printer' => 'Impressoras',
'Menu:Printer+' => 'Todas impressoras',
'Menu:MobilePhone' => 'Telefone celulares',
'Menu:MobilePhone+' => 'Todos telefone celulares',
'Menu:PC' => 'Estação de trabalho',
'Menu:PC+' => 'Todas estação de trabalho',
'Menu:NewContact' => 'Novo contato',
'Menu:NewContact+' => 'Novo contato',
'Menu:SearchContacts' => 'Pesquisar por contatos',
'Menu:SearchContacts+' => 'Pesquisar por contatos',
'Menu:NewCI' => 'Novo CI',
'Menu:NewCI+' => 'Novo CI',
'Menu:SearchCIs' => 'Pesquisar por CIs',
'Menu:SearchCIs+' => 'Pesquisar por CIs',
'Menu:ConfigManagement:Devices' => 'Dispositivos',
'Menu:ConfigManagement:AllDevices' => 'Infra-estrutura',
'Menu:ConfigManagement:virtualization' => 'Virtualização',
'Menu:ConfigManagement:EndUsers' => 'Dispositivos usuário final',
'Menu:ConfigManagement:SWAndApps' => 'Software e aplicações',
'Menu:ConfigManagement:Misc' => 'Diversos',
'Menu:Group' => 'Grupos de CIs',
'Menu:Group+' => 'Grupos de CIs',
'Menu:ConfigManagement:Shortcuts' => 'Atalhos',
'Menu:ConfigManagement:AllContacts' => 'Todos contatos: %1$d',
'Menu:Typology' => 'Configuração tipologia',
'Menu:Typology+' => 'Configuração tipologia',
'Menu:OSVersion' => 'Versão OS',
'Menu:OSVersion+' => '',
'Menu:Software' => 'Catálogo software',
'Menu:Software+' => 'Catálogo software',
'UI_WelcomeMenu_AllConfigItems' => 'Índice',
'Menu:ConfigManagement:Typology' => 'Configuração tipologia',
));
@@ -1890,18 +1890,18 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
// Add translation for Fieldsets
Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'Server:baseinfo' => 'Informações gerais',
'Server:Date' => 'Data',
'Server:moreinfo' => 'Mais informações',
'Server:otherinfo' => 'Outras informações',
'Server:power' => 'Power supply~~',
'Person:info' => 'Informações gerais',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notificação',
'Class:Subnet/Tab:IPUsage' => 'IP usado',
'Class:Subnet/Tab:IPUsage-explain' => 'Placas de rede contendo IP na faixa: <em>%1$s</em> para <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IPs livres',
'Class:Subnet/Tab:FreeIPs-count' => 'IPs livres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Aqui uma faixa de 10 endereços IPs livres',
'Class:Document:PreviewTab' => 'Visualização',
'Server:baseinfo' => 'Informações gerais',
'Server:Date' => 'Data',
'Server:moreinfo' => 'Mais informações',
'Server:otherinfo' => 'Outras informações',
'Server:power' => 'Power supply~~',
'Person:info' => 'Informações gerais',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notificação',
'Class:Subnet/Tab:IPUsage' => 'IP usado',
'Class:Subnet/Tab:IPUsage-explain' => 'Placas de rede contendo IP na faixa: <em>%1$s</em> para <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'IPs livres',
'Class:Subnet/Tab:FreeIPs-count' => 'IPs livres: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Aqui uma faixa de 10 endereços IPs livres',
'Class:Document:PreviewTab' => 'Visualização',
));

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
//////////////////////////////////////////////////////////////////////
@@ -1788,88 +1788,88 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
//
Dict::Add('RU RU', 'Russian', 'Русский', array(
'Menu:DataAdministration' => 'Администрирование данных',
'Menu:DataAdministration+' => 'Администрирование данных',
'Menu:Catalogs' => 'Каталоги',
'Menu:Catalogs+' => 'Каталоги',
'Menu:Audit' => 'Аудит',
'Menu:Audit+' => 'Аудит',
'Menu:CSVImport' => 'Импорт CSV',
'Menu:CSVImport+' => 'Массовое создание или обновление объектов',
'Menu:Organization' => 'Организации',
'Menu:Organization+' => 'Все организации',
'Menu:Application' => 'Приложения',
'Menu:Application+' => 'Все приложения',
'Menu:DBServer' => 'Серверы баз данных',
'Menu:DBServer+' => 'Серверы баз данных',
'Menu:ConfigManagement' => 'Управление конфигурациями',
'Menu:ConfigManagement+' => 'Управление конфигурациями',
'Menu:ConfigManagementOverview' => 'Обзор',
'Menu:ConfigManagementOverview+' => 'Обзор',
'Menu:Contact' => 'Контакты',
'Menu:Contact+' => 'Контакты',
'Menu:Contact:Count' => '%1$d Контактов',
'Menu:Person' => 'Персоны',
'Menu:Person+' => 'Все персоны',
'Menu:Team' => 'Команды',
'Menu:Team+' => 'Все команды',
'Menu:Document' => 'Документы',
'Menu:Document+' => 'Все документы',
'Menu:Location' => 'Расположения',
'Menu:DataAdministration' => 'Администрирование данных',
'Menu:DataAdministration+' => 'Администрирование данных',
'Menu:Catalogs' => 'Каталоги',
'Menu:Catalogs+' => 'Каталоги',
'Menu:Audit' => 'Аудит',
'Menu:Audit+' => 'Аудит',
'Menu:CSVImport' => 'Импорт CSV',
'Menu:CSVImport+' => 'Массовое создание или обновление объектов',
'Menu:Organization' => 'Организации',
'Menu:Organization+' => 'Все организации',
'Menu:Application' => 'Приложения',
'Menu:Application+' => 'Все приложения',
'Menu:DBServer' => 'Серверы баз данных',
'Menu:DBServer+' => 'Серверы баз данных',
'Menu:ConfigManagement' => 'Управление конфигурациями',
'Menu:ConfigManagement+' => 'Управление конфигурациями',
'Menu:ConfigManagementOverview' => 'Обзор',
'Menu:ConfigManagementOverview+' => 'Обзор',
'Menu:Contact' => 'Контакты',
'Menu:Contact+' => 'Контакты',
'Menu:Contact:Count' => '%1$d Контактов',
'Menu:Person' => 'Персоны',
'Menu:Person+' => 'Все персоны',
'Menu:Team' => 'Команды',
'Menu:Team+' => 'Все команды',
'Menu:Document' => 'Документы',
'Menu:Document+' => 'Все документы',
'Menu:Location' => 'Расположения',
'Menu:Location+' => 'Все расположения',
'Menu:ConfigManagementCI' => 'Конфигурационные единицы',
'Menu:ConfigManagementCI+' => 'Конфигурационные единицы',
'Menu:BusinessProcess' => 'Бизнес-процессы',
'Menu:BusinessProcess+' => 'Все бизнес-процессы',
'Menu:ApplicationSolution' => 'Прикладные решения',
'Menu:ApplicationSolution+' => 'Все прикладные решения',
'Menu:ConfigManagementSoftware' => 'Управление программным обеспечением',
'Menu:Licence' => 'Лицензии',
'Menu:Licence+' => 'Все лицензии',
'Menu:Patch' => 'Патчи',
'Menu:Patch+' => 'Все патчи',
'Menu:ApplicationInstance' => 'Установленное ПО',
'Menu:ApplicationInstance+' => 'Приложения и сервера БД',
'Menu:ConfigManagementHardware' => 'Управление инфраструктурой',
'Menu:Subnet' => 'Подсети',
'Menu:Subnet+' => 'Все подсети',
'Menu:NetworkDevice' => 'Сетевые устройства',
'Menu:NetworkDevice+' => 'Все сетевые устройства',
'Menu:Server' => 'Серверы',
'Menu:Server+' => 'Все серверы',
'Menu:Printer' => 'Принтеры',
'Menu:Printer+' => 'Все принтеры',
'Menu:MobilePhone' => 'Мобильные телефоны',
'Menu:MobilePhone+' => 'Все мобильные телефоны',
'Menu:PC' => 'Персональные компьютеры',
'Menu:PC+' => 'Все ПК',
'Menu:NewContact' => 'Новый контакт',
'Menu:NewContact+' => 'Новый контакт',
'Menu:SearchContacts' => 'Поиск контактов',
'Menu:SearchContacts+' => 'Поиск контактов',
'Menu:NewCI' => 'Новая КЕ',
'Menu:NewCI+' => 'Новая КЕ',
'Menu:SearchCIs' => 'Поиск КЕ',
'Menu:SearchCIs+' => 'Поиск КЕ',
'Menu:ConfigManagement:Devices' => 'Устройства',
'Menu:ConfigManagement:AllDevices' => 'Все устройства',
'Menu:ConfigManagement:virtualization' => 'Виртуализация',
'Menu:ConfigManagement:EndUsers' => 'Пользовательские устройства',
'Menu:ConfigManagement:SWAndApps' => 'Программное обеспечение и приложения',
'Menu:ConfigManagement:Misc' => 'Разное',
'Menu:Group' => 'Группы КЕ',
'Menu:Group+' => 'Группы КЕ',
'Menu:ConfigManagement:Shortcuts' => 'Ярлыки',
'Menu:ConfigManagement:AllContacts' => 'Все контакты: %1$d',
'Menu:Typology' => 'Типология',
'Menu:Typology+' => 'Типология',
'Menu:OSVersion' => 'Версия ОС',
'Menu:OSVersion+' => 'Версия ОС',
'Menu:Software' => 'Каталог ПО',
'Menu:Software+' => 'Каталог ПО',
'UI_WelcomeMenu_AllConfigItems' => 'Все конфигурационные единицы',
'Menu:ConfigManagement:Typology' => 'Настройка типологии',
'Menu:Location+' => 'Все расположения',
'Menu:ConfigManagementCI' => 'Конфигурационные единицы',
'Menu:ConfigManagementCI+' => 'Конфигурационные единицы',
'Menu:BusinessProcess' => 'Бизнес-процессы',
'Menu:BusinessProcess+' => 'Все бизнес-процессы',
'Menu:ApplicationSolution' => 'Прикладные решения',
'Menu:ApplicationSolution+' => 'Все прикладные решения',
'Menu:ConfigManagementSoftware' => 'Управление программным обеспечением',
'Menu:Licence' => 'Лицензии',
'Menu:Licence+' => 'Все лицензии',
'Menu:Patch' => 'Патчи',
'Menu:Patch+' => 'Все патчи',
'Menu:ApplicationInstance' => 'Установленное ПО',
'Menu:ApplicationInstance+' => 'Приложения и сервера БД',
'Menu:ConfigManagementHardware' => 'Управление инфраструктурой',
'Menu:Subnet' => 'Подсети',
'Menu:Subnet+' => 'Все подсети',
'Menu:NetworkDevice' => 'Сетевые устройства',
'Menu:NetworkDevice+' => 'Все сетевые устройства',
'Menu:Server' => 'Серверы',
'Menu:Server+' => 'Все серверы',
'Menu:Printer' => 'Принтеры',
'Menu:Printer+' => 'Все принтеры',
'Menu:MobilePhone' => 'Мобильные телефоны',
'Menu:MobilePhone+' => 'Все мобильные телефоны',
'Menu:PC' => 'Персональные компьютеры',
'Menu:PC+' => 'Все ПК',
'Menu:NewContact' => 'Новый контакт',
'Menu:NewContact+' => 'Новый контакт',
'Menu:SearchContacts' => 'Поиск контактов',
'Menu:SearchContacts+' => 'Поиск контактов',
'Menu:NewCI' => 'Новая КЕ',
'Menu:NewCI+' => 'Новая КЕ',
'Menu:SearchCIs' => 'Поиск КЕ',
'Menu:SearchCIs+' => 'Поиск КЕ',
'Menu:ConfigManagement:Devices' => 'Устройства',
'Menu:ConfigManagement:AllDevices' => 'Все устройства',
'Menu:ConfigManagement:virtualization' => 'Виртуализация',
'Menu:ConfigManagement:EndUsers' => 'Пользовательские устройства',
'Menu:ConfigManagement:SWAndApps' => 'Программное обеспечение и приложения',
'Menu:ConfigManagement:Misc' => 'Разное',
'Menu:Group' => 'Группы КЕ',
'Menu:Group+' => 'Группы КЕ',
'Menu:ConfigManagement:Shortcuts' => 'Ярлыки',
'Menu:ConfigManagement:AllContacts' => 'Все контакты: %1$d',
'Menu:Typology' => 'Типология',
'Menu:Typology+' => 'Типология',
'Menu:OSVersion' => 'Версия ОС',
'Menu:OSVersion+' => 'Версия ОС',
'Menu:Software' => 'Каталог ПО',
'Menu:Software+' => 'Каталог ПО',
'UI_WelcomeMenu_AllConfigItems' => 'Все конфигурационные единицы',
'Menu:ConfigManagement:Typology' => 'Настройка типологии',
));
@@ -1877,18 +1877,18 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
// Add translation for Fieldsets
Dict::Add('RU RU', 'Russian', 'Русский', array(
'Server:baseinfo' => 'Основное',
'Server:Date' => 'Даты',
'Server:moreinfo' => 'Спецификация',
'Server:otherinfo' => 'Дополнительно',
'Server:power' => 'Электропитание',
'Person:info' => 'Основное',
'Person:personal_info' => 'Персональная информация',
'Person:notifiy' => 'Уведомления',
'Class:Subnet/Tab:IPUsage' => 'Использование IP-адресов',
'Class:Subnet/Tab:IPUsage-explain' => 'Интерфейсы с IP-адресом в диапазоне: <em>%1$s</em> - <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Свободные IP-адреса',
'Class:Subnet/Tab:FreeIPs-count' => 'Свободных IP-адресов: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Вот выборка из 10 свободных IP-адресов',
'Class:Document:PreviewTab' => 'Просмотр',
'Server:baseinfo' => 'Основное',
'Server:Date' => 'Даты',
'Server:moreinfo' => 'Спецификация',
'Server:otherinfo' => 'Дополнительно',
'Server:power' => 'Электропитание',
'Person:info' => 'Основное',
'Person:personal_info' => 'Персональная информация',
'Person:notifiy' => 'Уведомления',
'Class:Subnet/Tab:IPUsage' => 'Использование IP-адресов',
'Class:Subnet/Tab:IPUsage-explain' => 'Интерфейсы с IP-адресом в диапазоне: <em>%1$s</em> - <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Свободные IP-адреса',
'Class:Subnet/Tab:FreeIPs-count' => 'Свободных IP-адресов: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Вот выборка из 10 свободных IP-адресов',
'Class:Document:PreviewTab' => 'Просмотр',
));

View File

@@ -1802,88 +1802,88 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Menu:DataAdministration' => 'Veri Yönetimi',
'Menu:DataAdministration+' => 'Veri Yönetimi',
'Menu:Catalogs' => 'Kataloglar',
'Menu:Catalogs+' => 'Veri tipleri',
'Menu:Audit' => 'Denetleme',
'Menu:Audit+' => 'Denetleme',
'Menu:CSVImport' => 'CSV dışardan al',
'Menu:CSVImport+' => 'Çoklu yaratım veya güncelleme',
'Menu:Organization' => 'Kurumlar',
'Menu:Organization+' => 'Tüm Kurumlar',
'Menu:Application' => 'Uygulamalar',
'Menu:Application+' => 'Tüm Uygulamalar',
'Menu:DBServer' => 'Veritabanı sunucuları',
'Menu:DBServer+' => 'Veritabanı sunucuları',
'Menu:ConfigManagement' => 'Konfigürasyon Yönetimi',
'Menu:ConfigManagement+' => 'Konfigürasyon Yönetimi',
'Menu:ConfigManagementOverview' => 'Özet',
'Menu:ConfigManagementOverview+' => 'Özet',
'Menu:Contact' => 'İrtibatlar',
'Menu:Contact+' => 'İrtibatlar',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => 'Kişiler',
'Menu:Person+' => 'Tüm Kişiler',
'Menu:Team' => 'Ekipler',
'Menu:Team+' => 'Tüm ekipler',
'Menu:Document' => 'Dokümanlar',
'Menu:Document+' => 'Tüm dokümanlar',
'Menu:Location' => 'Yerleşkeler',
'Menu:DataAdministration' => 'Veri Yönetimi',
'Menu:DataAdministration+' => 'Veri Yönetimi',
'Menu:Catalogs' => 'Kataloglar',
'Menu:Catalogs+' => 'Veri tipleri',
'Menu:Audit' => 'Denetleme',
'Menu:Audit+' => 'Denetleme',
'Menu:CSVImport' => 'CSV dışardan al',
'Menu:CSVImport+' => 'Çoklu yaratım veya güncelleme',
'Menu:Organization' => 'Kurumlar',
'Menu:Organization+' => 'Tüm Kurumlar',
'Menu:Application' => 'Uygulamalar',
'Menu:Application+' => 'Tüm Uygulamalar',
'Menu:DBServer' => 'Veritabanı sunucuları',
'Menu:DBServer+' => 'Veritabanı sunucuları',
'Menu:ConfigManagement' => 'Konfigürasyon Yönetimi',
'Menu:ConfigManagement+' => 'Konfigürasyon Yönetimi',
'Menu:ConfigManagementOverview' => 'Özet',
'Menu:ConfigManagementOverview+' => 'Özet',
'Menu:Contact' => 'İrtibatlar',
'Menu:Contact+' => 'İrtibatlar',
'Menu:Contact:Count' => '%1$d',
'Menu:Person' => 'Kişiler',
'Menu:Person+' => 'Tüm Kişiler',
'Menu:Team' => 'Ekipler',
'Menu:Team+' => 'Tüm ekipler',
'Menu:Document' => 'Dokümanlar',
'Menu:Document+' => 'Tüm dokümanlar',
'Menu:Location' => 'Yerleşkeler',
'Menu:Location+' => 'Tüm Yerleşkeler',
'Menu:ConfigManagementCI' => 'Konfigürasyon Kalemleri',
'Menu:ConfigManagementCI+' => 'Konfigürasyon Kalemleri',
'Menu:BusinessProcess' => 'İş süreçleri',
'Menu:BusinessProcess+' => 'Tüm İş süreçleri',
'Menu:ApplicationSolution' => 'Uygulama çözümleri',
'Menu:ApplicationSolution+' => 'Tüm Uygulama çözümleri',
'Menu:ConfigManagementSoftware' => 'Uygulama Yönetimi',
'Menu:Licence' => 'Lisanslar',
'Menu:Licence+' => 'Tüm Lisanslar',
'Menu:Patch' => 'Yamalar',
'Menu:Patch+' => 'Tüm Yamalar',
'Menu:ApplicationInstance' => 'Yüklenen yazılımlar',
'Menu:ApplicationInstance+' => 'Uygulama ve Veritabanı sunucuları',
'Menu:ConfigManagementHardware' => 'Altyapı Yönetimi',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'All Subnets',
'Menu:NetworkDevice' => 'Network cihazları',
'Menu:NetworkDevice+' => 'Tüm Network cihazları',
'Menu:Server' => 'Sunucular',
'Menu:Server+' => 'Tüm Sunucular',
'Menu:Printer' => 'Yazıcılar',
'Menu:Printer+' => 'Tüm Yazıcılar',
'Menu:MobilePhone' => 'Cep Telefonları',
'Menu:MobilePhone+' => 'Tüm Cep Telefonları',
'Menu:PC' => 'Kişisel Bilgisayarlar',
'Menu:PC+' => 'Tüm Kişisel Bilgisayarlar',
'Menu:NewContact' => 'Yeni İrtibat',
'Menu:NewContact+' => 'Yeni İrtibat',
'Menu:SearchContacts' => 'İrtibat ara',
'Menu:SearchContacts+' => 'İrtibat ara',
'Menu:NewCI' => 'Yeni KK',
'Menu:NewCI+' => 'Yeni KK',
'Menu:SearchCIs' => 'KK ara',
'Menu:SearchCIs+' => 'KK ara',
'Menu:ConfigManagement:Devices' => 'Cihazlar',
'Menu:ConfigManagement:AllDevices' => 'Altyapı',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Yazılım ve uygulamalar',
'Menu:ConfigManagement:Misc' => 'Diğer',
'Menu:Group' => 'KK Grupları',
'Menu:Group+' => 'KK Grupları',
'Menu:ConfigManagement:Shortcuts' => 'Kısalyollar',
'Menu:ConfigManagement:AllContacts' => 'Tüm irtibatlar: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
'Menu:Location+' => 'Tüm Yerleşkeler',
'Menu:ConfigManagementCI' => 'Konfigürasyon Kalemleri',
'Menu:ConfigManagementCI+' => 'Konfigürasyon Kalemleri',
'Menu:BusinessProcess' => 'İş süreçleri',
'Menu:BusinessProcess+' => 'Tüm İş süreçleri',
'Menu:ApplicationSolution' => 'Uygulama çözümleri',
'Menu:ApplicationSolution+' => 'Tüm Uygulama çözümleri',
'Menu:ConfigManagementSoftware' => 'Uygulama Yönetimi',
'Menu:Licence' => 'Lisanslar',
'Menu:Licence+' => 'Tüm Lisanslar',
'Menu:Patch' => 'Yamalar',
'Menu:Patch+' => 'Tüm Yamalar',
'Menu:ApplicationInstance' => 'Yüklenen yazılımlar',
'Menu:ApplicationInstance+' => 'Uygulama ve Veritabanı sunucuları',
'Menu:ConfigManagementHardware' => 'Altyapı Yönetimi',
'Menu:Subnet' => 'Subnets',
'Menu:Subnet+' => 'All Subnets',
'Menu:NetworkDevice' => 'Network cihazları',
'Menu:NetworkDevice+' => 'Tüm Network cihazları',
'Menu:Server' => 'Sunucular',
'Menu:Server+' => 'Tüm Sunucular',
'Menu:Printer' => 'Yazıcılar',
'Menu:Printer+' => 'Tüm Yazıcılar',
'Menu:MobilePhone' => 'Cep Telefonları',
'Menu:MobilePhone+' => 'Tüm Cep Telefonları',
'Menu:PC' => 'Kişisel Bilgisayarlar',
'Menu:PC+' => 'Tüm Kişisel Bilgisayarlar',
'Menu:NewContact' => 'Yeni İrtibat',
'Menu:NewContact+' => 'Yeni İrtibat',
'Menu:SearchContacts' => 'İrtibat ara',
'Menu:SearchContacts+' => 'İrtibat ara',
'Menu:NewCI' => 'Yeni KK',
'Menu:NewCI+' => 'Yeni KK',
'Menu:SearchCIs' => 'KK ara',
'Menu:SearchCIs+' => 'KK ara',
'Menu:ConfigManagement:Devices' => 'Cihazlar',
'Menu:ConfigManagement:AllDevices' => 'Altyapı',
'Menu:ConfigManagement:virtualization' => 'Virtualization~~',
'Menu:ConfigManagement:EndUsers' => 'End user devices~~',
'Menu:ConfigManagement:SWAndApps' => 'Yazılım ve uygulamalar',
'Menu:ConfigManagement:Misc' => 'Diğer',
'Menu:Group' => 'KK Grupları',
'Menu:Group+' => 'KK Grupları',
'Menu:ConfigManagement:Shortcuts' => 'Kısalyollar',
'Menu:ConfigManagement:AllContacts' => 'Tüm irtibatlar: %1$d',
'Menu:Typology' => 'Typology configuration~~',
'Menu:Typology+' => 'Typology configuration~~',
'Menu:OSVersion' => 'OS versions~~',
'Menu:OSVersion+' => '~~',
'Menu:Software' => 'Software catalog~~',
'Menu:Software+' => 'Software catalog~~',
'UI_WelcomeMenu_AllConfigItems' => 'Summary~~',
'Menu:ConfigManagement:Typology' => 'Typology configuration~~',
));
@@ -1891,18 +1891,18 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
// Add translation for Fieldsets
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'IP Kullanımı',
'Class:Subnet/Tab:IPUsage-explain' => '<em>%1$s</em> - <em>%2$s</em> aralığındaki IPye sahip arayüzler',
'Class:Subnet/Tab:FreeIPs' => 'Boş IPler',
'Class:Subnet/Tab:FreeIPs-count' => 'Boş IPler: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Boş IP adresleri',
'Class:Document:PreviewTab' => 'Ön görünüm',
'Server:baseinfo' => 'General information~~',
'Server:Date' => 'Dates~~',
'Server:moreinfo' => 'More information~~',
'Server:otherinfo' => 'Other information~~',
'Server:power' => 'Power supply~~',
'Person:info' => 'General information~~',
'Person:personal_info' => 'Personal information~~',
'Person:notifiy' => 'Notification~~',
'Class:Subnet/Tab:IPUsage' => 'IP Kullanımı',
'Class:Subnet/Tab:IPUsage-explain' => '<em>%1$s</em> - <em>%2$s</em> aralığındaki IPye sahip arayüzler',
'Class:Subnet/Tab:FreeIPs' => 'Boş IPler',
'Class:Subnet/Tab:FreeIPs-count' => 'Boş IPler: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => 'Boş IP adresleri',
'Class:Document:PreviewTab' => 'Ön görünüm',
));

View File

@@ -20,12 +20,10 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
//////////////////////////////////////////////////////////////////////
// Relations
//////////////////////////////////////////////////////////////////////
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Relation:impacts/Description' => '被影响的元素',
'Relation:impacts/DownStream' => '影响...',
@@ -104,10 +102,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Organization/Attribute:deliverymodel_name+' => '',
'Class:Organization/Attribute:parent_id_friendlyname' => '上级组织',
'Class:Organization/Attribute:parent_id_friendlyname+' => '上级组织',
'Class:Organization/Attribute:overview' => 'Overview~~',
'Organization:Overview:FunctionalCIs' => 'Configuration items of this organization~~',
'Organization:Overview:FunctionalCIs:subtitle' => 'by type~~',
'Organization:Overview:Users' => 'iTop Users within this organization~~',
'Class:Organization/Attribute:overview' => '概览',
'Organization:Overview:FunctionalCIs' => '该组织的所有配置项',
'Organization:Overview:FunctionalCIs:subtitle' => '按类型',
'Organization:Overview:Users' => '该组织里所有的iTop 用户',
));
//
@@ -175,8 +173,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Contact/Attribute:function' => '职责',
'Class:Contact/Attribute:function+' => '',
'Class:Contact/Attribute:cis_list' => '配置项',
'Class:Contact/Attribute:cis_list+' => 'All the configuration items linked to this contact',
'Class:Contact/Attribute:finalclass' => 'Contact sub-class',
'Class:Contact/Attribute:cis_list+' => '该联系人关联的所有配置项',
'Class:Contact/Attribute:finalclass' => '联系人子类别',
'Class:Contact/Attribute:finalclass+' => 'Name of the final class',
));
@@ -207,7 +205,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Person/Attribute:team_list+' => '这个人归属的所有团队',
'Class:Person/Attribute:tickets_list' => '工单',
'Class:Person/Attribute:tickets_list+' => '这个人发起的所有工单',
'Class:Person/Attribute:manager_id_friendlyname' => 'Manager friendly name',
'Class:Person/Attribute:manager_id_friendlyname' => '经理姓名',
'Class:Person/Attribute:manager_id_friendlyname+' => '',
'Class:Person/Attribute:picture' => '头像',
'Class:Person/Attribute:picture+' => '',
@@ -245,7 +243,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Document/Attribute:org_name+' => '',
'Class:Document/Attribute:documenttype_id' => '文档类型',
'Class:Document/Attribute:documenttype_id+' => '',
'Class:Document/Attribute:documenttype_name' => 'Document type name',
'Class:Document/Attribute:documenttype_name' => '文档类型名称',
'Class:Document/Attribute:documenttype_name+' => '',
'Class:Document/Attribute:version' => '版本',
'Class:Document/Attribute:version+' => '',
@@ -259,13 +257,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Document/Attribute:status/Value:obsolete+' => '',
'Class:Document/Attribute:status/Value:published' => '已发布',
'Class:Document/Attribute:status/Value:published+' => '',
'Class:Document/Attribute:cis_list' => 'CIs~~',
'Class:Document/Attribute:cis_list+' => 'All the configuration items linked to this document~~',
'Class:Document/Attribute:contracts_list' => 'Contracts~~',
'Class:Document/Attribute:contracts_list+' => 'All the contracts linked to this document~~',
'Class:Document/Attribute:services_list' => 'Services~~',
'Class:Document/Attribute:services_list+' => 'All the services linked to this document~~',
'Class:Document/Attribute:finalclass' => 'Document sub-class',
'Class:Document/Attribute:cis_list' => '配置项',
'Class:Document/Attribute:cis_list+' => '该文档关联的所有配置项',
'Class:Document/Attribute:contracts_list' => '合同',
'Class:Document/Attribute:contracts_list+' => '该文档关联的所有合同',
'Class:Document/Attribute:services_list' => '服务',
'Class:Document/Attribute:services_list+' => '该文档关联的所有服务',
'Class:Document/Attribute:finalclass' => '文档子类别',
'Class:Document/Attribute:finalclass+' => 'Name of the final class',
));
@@ -530,17 +528,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Server' => '服务器',
'Class:Server+' => '',
'Class:Server/Attribute:osfamily_id' => 'OS家族',
'Class:Server/Attribute:osfamily_id' => '操作系统家族',
'Class:Server/Attribute:osfamily_id+' => '',
'Class:Server/Attribute:osfamily_name' => 'OS家族名称',
'Class:Server/Attribute:osfamily_name' => '操作系统家族名称',
'Class:Server/Attribute:osfamily_name+' => '',
'Class:Server/Attribute:osversion_id' => 'OS版本',
'Class:Server/Attribute:osversion_id' => '操作系统版本',
'Class:Server/Attribute:osversion_id+' => '',
'Class:Server/Attribute:osversion_name' => 'OS版本名称',
'Class:Server/Attribute:osversion_name' => '操作系统版本名称',
'Class:Server/Attribute:osversion_name+' => '',
'Class:Server/Attribute:oslicence_id' => 'OS许可证',
'Class:Server/Attribute:oslicence_id' => '操作系统许可证',
'Class:Server/Attribute:oslicence_id+' => '',
'Class:Server/Attribute:oslicence_name' => 'OS许可证名称',
'Class:Server/Attribute:oslicence_name' => '操作系统许可证名称',
'Class:Server/Attribute:oslicence_name+' => '',
'Class:Server/Attribute:cpu' => 'CPU',
'Class:Server/Attribute:cpu+' => '',
@@ -601,13 +599,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:PC' => 'PC',
'Class:PC+' => '',
'Class:PC/Attribute:osfamily_id' => 'OS家族',
'Class:PC/Attribute:osfamily_id' => '操作系统家族',
'Class:PC/Attribute:osfamily_id+' => '',
'Class:PC/Attribute:osfamily_name' => 'OS 家族名称',
'Class:PC/Attribute:osfamily_name' => '操作系统家族名称',
'Class:PC/Attribute:osfamily_name+' => '',
'Class:PC/Attribute:osversion_id' => 'OS版本',
'Class:PC/Attribute:osversion_id' => '操作系统版本',
'Class:PC/Attribute:osversion_id+' => '',
'Class:PC/Attribute:osversion_name' => 'OS 版本名称',
'Class:PC/Attribute:osversion_name' => '操作系统版本名称',
'Class:PC/Attribute:osversion_name+' => '',
'Class:PC/Attribute:cpu' => 'CPU',
'Class:PC/Attribute:cpu+' => '',
@@ -701,9 +699,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:ApplicationSolution' => '应用方案',
'Class:ApplicationSolution+' => '',
'Class:ApplicationSolution/Attribute:functionalcis_list' => '配置项',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'All the configuration items that compose this application solution',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => '该应用方案包含的所有配置项',
'Class:ApplicationSolution/Attribute:businessprocess_list' => '业务流程',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'All the business processes depending on this application solution',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => '所有依赖该应用方案的业务流程',
'Class:ApplicationSolution/Attribute:status' => '状态',
'Class:ApplicationSolution/Attribute:status+' => '',
'Class:ApplicationSolution/Attribute:status/Value:active' => '启用',
@@ -724,7 +722,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:BusinessProcess' => '业务流程',
'Class:BusinessProcess+' => '',
'Class:BusinessProcess/Attribute:applicationsolutions_list' => '应用方案',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => 'All the application solutions that impact this business process',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => '所有影响该业务流程的应用方案',
'Class:BusinessProcess/Attribute:status' => '状态',
'Class:BusinessProcess/Attribute:status+' => '',
'Class:BusinessProcess/Attribute:status/Value:active' => '启用',
@@ -912,11 +910,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Farm' => '集群',
'Class:Farm+' => '',
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisor',
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些 Hypervisor 组成',
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些Hypervisor 组成',
'Class:Farm/Attribute:redundancy' => '高可用性',
'Class:Farm/Attribute:redundancy/disabled' => '所有 Hypervisor 正常,集群才正常',
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个 Hypervisor 是正常的,集群才是正常的',
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的 Hypervisor 是正常的,集群才正常',
'Class:Farm/Attribute:redundancy/disabled' => '所有Hypervisor 正常,集群才正常',
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个Hypervisor 是正常的,集群才是正常的',
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的Hypervisor 是正常的,集群才正常',
));
//
@@ -930,15 +928,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:VirtualMachine/Attribute:virtualhost_id+' => '',
'Class:VirtualMachine/Attribute:virtualhost_name' => '名称',
'Class:VirtualMachine/Attribute:virtualhost_name+' => '',
'Class:VirtualMachine/Attribute:osfamily_id' => 'OS家族',
'Class:VirtualMachine/Attribute:osfamily_id' => '操作系统家族',
'Class:VirtualMachine/Attribute:osfamily_id+' => '',
'Class:VirtualMachine/Attribute:osfamily_name' => '名称',
'Class:VirtualMachine/Attribute:osfamily_name+' => '',
'Class:VirtualMachine/Attribute:osversion_id' => 'OS版本',
'Class:VirtualMachine/Attribute:osversion_id' => '操作系统版本',
'Class:VirtualMachine/Attribute:osversion_id+' => '',
'Class:VirtualMachine/Attribute:osversion_name' => '名称',
'Class:VirtualMachine/Attribute:osversion_name+' => '',
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS许可证',
'Class:VirtualMachine/Attribute:oslicence_id' => '操作系统许可证',
'Class:VirtualMachine/Attribute:oslicence_id+' => '',
'Class:VirtualMachine/Attribute:oslicence_name' => '名称',
'Class:VirtualMachine/Attribute:oslicence_name+' => '',
@@ -1098,7 +1096,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Software/Attribute:type/Value:DBServer' => '数据库服务器',
'Class:Software/Attribute:type/Value:DBServer+' => 'DB Server',
'Class:Software/Attribute:type/Value:Middleware' => '中间件',
'Class:Software/Attribute:type/Value:Middleware+' => 'Middleware',
'Class:Software/Attribute:type/Value:Middleware+' => '中间件',
'Class:Software/Attribute:type/Value:OtherSoftware' => '其它软件',
'Class:Software/Attribute:type/Value:OtherSoftware+' => '其它软件',
'Class:Software/Attribute:type/Value:PCSoftware' => 'PC 软件',
@@ -1126,7 +1124,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Patch/Attribute:documents_list+' => '该补丁关联的所有文档',
'Class:Patch/Attribute:description' => '描述',
'Class:Patch/Attribute:description+' => '',
'Class:Patch/Attribute:finalclass' => 'Patch sub-class',
'Class:Patch/Attribute:finalclass' => '补丁子类别',
'Class:Patch/Attribute:finalclass+' => 'Name of the final class',
));
@@ -1135,11 +1133,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:OSPatch' => 'OS 补丁',
'Class:OSPatch' => '操作系统补丁',
'Class:OSPatch+' => '',
'Class:OSPatch/Attribute:functionalcis_list' => '设备',
'Class:OSPatch/Attribute:functionalcis_list+' => '已安装该补丁的所有系统',
'Class:OSPatch/Attribute:osversion_id' => 'OS 版本',
'Class:OSPatch/Attribute:osversion_id' => '操作系统版本',
'Class:OSPatch/Attribute:osversion_id+' => '',
'Class:OSPatch/Attribute:osversion_name' => '名称',
'Class:OSPatch/Attribute:osversion_name+' => '',
@@ -1188,10 +1186,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Licence/Attribute:perpetual' => '永久有效',
'Class:Licence/Attribute:perpetual+' => '',
'Class:Licence/Attribute:perpetual/Value:no' => '否',
'Class:Licence/Attribute:perpetual/Value:no+' => 'no',
'Class:Licence/Attribute:perpetual/Value:no+' => '',
'Class:Licence/Attribute:perpetual/Value:yes' => '是',
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes',
'Class:Licence/Attribute:finalclass' => 'Licence sub-class',
'Class:Licence/Attribute:perpetual/Value:yes+' => '',
'Class:Licence/Attribute:finalclass' => '许可证子类别',
'Class:Licence/Attribute:finalclass+' => 'Name of the final class',
));
@@ -1200,9 +1198,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:OSLicence' => 'OS 许可证',
'Class:OSLicence' => '操作系统许可证',
'Class:OSLicence+' => '',
'Class:OSLicence/Attribute:osversion_id' => 'OS 版本',
'Class:OSLicence/Attribute:osversion_id' => '操作系统版本',
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => '名称',
'Class:OSLicence/Attribute:osversion_name+' => '',
@@ -1217,7 +1215,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:SoftwareLicence' => 'Software Licence',
'Class:SoftwareLicence' => '软件许可证',
'Class:SoftwareLicence+' => '',
'Class:SoftwareLicence/Attribute:software_id' => '软件',
'Class:SoftwareLicence/Attribute:software_id+' => '',
@@ -1253,7 +1251,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Typology+' => '',
'Class:Typology/Attribute:name' => '名称',
'Class:Typology/Attribute:name+' => '',
'Class:Typology/Attribute:finalclass' => 'Typology sub-class',
'Class:Typology/Attribute:finalclass' => '拓扑子类别',
'Class:Typology/Attribute:finalclass+' => 'Name of the final class',
));
@@ -1262,9 +1260,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:OSVersion' => 'OS 版本',
'Class:OSVersion' => '操作系统版本',
'Class:OSVersion+' => '',
'Class:OSVersion/Attribute:osfamily_id' => 'OS家族',
'Class:OSVersion/Attribute:osfamily_id' => '操作系统家族',
'Class:OSVersion/Attribute:osfamily_id+' => '',
'Class:OSVersion/Attribute:osfamily_name' => '名称',
'Class:OSVersion/Attribute:osfamily_name+' => '',
@@ -1275,7 +1273,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:OSFamily' => 'OS家族',
'Class:OSFamily' => '操作系统家族',
'Class:OSFamily+' => '',
));
@@ -1293,7 +1291,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:ContactType' => '合同类型',
'Class:ContactType' => '联系人类型',
'Class:ContactType+' => '',
));
@@ -1306,8 +1304,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Brand+' => '',
'Class:Brand/Attribute:physicaldevices_list' => '物理设备',
'Class:Brand/Attribute:physicaldevices_list+' => '该品牌的所有物理设备',
'Class:Brand/UniquenessRule:name+' => 'The name must be unique~~',
'Class:Brand/UniquenessRule:name' => 'This brand already exists~~',
'Class:Brand/UniquenessRule:name+' => '名称必须唯一',
'Class:Brand/UniquenessRule:name' => '该品牌已存在',
));
//
@@ -1361,8 +1359,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Model/Attribute:type/Value:Phone+' => '电话',
'Class:Model/Attribute:physicaldevices_list' => '物理设备',
'Class:Model/Attribute:physicaldevices_list+' => '该型号的所有物理设备',
'Class:Model/UniquenessRule:name_brand+' => 'Name must be unique in the brand~~',
'Class:Model/UniquenessRule:name_brand' => 'this model already exists for this brand~~',
'Class:Model/UniquenessRule:name_brand+' => '名称必须唯一',
'Class:Model/UniquenessRule:name_brand' => '该型号已存在',
));
//
@@ -1428,11 +1426,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:lnkFunctionalCIToOSPatch' => '链接 功能项 / OS 补丁',
'Class:lnkFunctionalCIToOSPatch' => '链接 功能项 / 操作系统补丁',
'Class:lnkFunctionalCIToOSPatch+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS 补丁',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => '操作系统补丁',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS 补丁名称',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => '操作系统补丁名称',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => '功能项',
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '',
@@ -1505,10 +1503,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Subnet/Attribute:org_id' => '所属组织',
'Class:Subnet/Attribute:org_id+' => '',
'Class:Subnet/Attribute:org_name' => '名称',
'Class:Subnet/Attribute:org_name+' => 'Common name',
'Class:Subnet/Attribute:org_name+' => '名称',
'Class:Subnet/Attribute:ip' => 'IP',
'Class:Subnet/Attribute:ip+' => '',
'Class:Subnet/Attribute:ip_mask' => 'IP 掩码',
'Class:Subnet/Attribute:ip_mask' => '掩码',
'Class:Subnet/Attribute:ip_mask+' => '',
'Class:Subnet/Attribute:vlans_list' => 'VLAN',
'Class:Subnet/Attribute:vlans_list+' => '',
@@ -1563,7 +1561,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:NetworkInterface+' => '',
'Class:NetworkInterface/Attribute:name' => '名称',
'Class:NetworkInterface/Attribute:name+' => '',
'Class:NetworkInterface/Attribute:finalclass' => 'NetworkInterface sub-class',
'Class:NetworkInterface/Attribute:finalclass' => '网卡子类别',
'Class:NetworkInterface/Attribute:finalclass+' => 'Name of the final class',
));
@@ -1576,8 +1574,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:IPInterface+' => '',
'Class:IPInterface/Attribute:ipaddress' => 'IP 地址',
'Class:IPInterface/Attribute:ipaddress+' => '',
'Class:IPInterface/Attribute:macaddress' => 'MAC 地址',
'Class:IPInterface/Attribute:macaddress+' => '',
'Class:IPInterface/Attribute:comment' => '注释',
@@ -1681,9 +1679,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => '连接类型',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => '',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => '下联',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'down link',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => '下联',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink' => '上联',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'up link',
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => '上联',
));
//
@@ -1802,88 +1800,88 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Menu:DataAdministration' => '数据管理',
'Menu:DataAdministration+' => '数据管理',
'Menu:Catalogs' => '类别',
'Menu:Catalogs+' => '数据类型',
'Menu:Audit' => '审计',
'Menu:Audit+' => '审计',
'Menu:CSVImport' => 'CSV 导入',
'Menu:CSVImport+' => '批量创建或更新',
'Menu:Organization' => '组织',
'Menu:Organization+' => '所有组织',
'Menu:Application' => '应用',
'Menu:Application+' => '所有应用',
'Menu:DBServer' => '数据库服务器',
'Menu:DBServer+' => '数据库服务器',
'Menu:ConfigManagement' => '配置管理',
'Menu:ConfigManagement+' => '配置管理',
'Menu:ConfigManagementOverview' => '概览',
'Menu:ConfigManagementOverview+' => '概览',
'Menu:Contact' => '联系人',
'Menu:Contact+' => '联系人',
'Menu:Contact:Count' => '%1$d 个联系人',
'Menu:Person' => '个体',
'Menu:Person+' => '所有个体',
'Menu:Team' => '团队',
'Menu:Team+' => '所有团队',
'Menu:Document' => '文档',
'Menu:Document+' => '所有文档',
'Menu:Location' => '地理位置',
'Menu:DataAdministration' => '数据管理',
'Menu:DataAdministration+' => '数据管理',
'Menu:Catalogs' => '类别',
'Menu:Catalogs+' => '数据类型',
'Menu:Audit' => '审计',
'Menu:Audit+' => '审计',
'Menu:CSVImport' => 'CSV 导入',
'Menu:CSVImport+' => '批量创建或更新',
'Menu:Organization' => '组织',
'Menu:Organization+' => '所有组织',
'Menu:Application' => '应用',
'Menu:Application+' => '所有应用',
'Menu:DBServer' => '数据库服务器',
'Menu:DBServer+' => '数据库服务器',
'Menu:ConfigManagement' => '配置管理',
'Menu:ConfigManagement+' => '配置管理',
'Menu:ConfigManagementOverview' => '概览',
'Menu:ConfigManagementOverview+' => '概览',
'Menu:Contact' => '联系人',
'Menu:Contact+' => '联系人',
'Menu:Contact:Count' => '%1$d 个联系人',
'Menu:Person' => '个体',
'Menu:Person+' => '所有个体',
'Menu:Team' => '团队',
'Menu:Team+' => '所有团队',
'Menu:Document' => '文档',
'Menu:Document+' => '所有文档',
'Menu:Location' => '地理位置',
'Menu:Location+' => '所有位置',
'Menu:ConfigManagementCI' => '配置项',
'Menu:ConfigManagementCI+' => '配置项',
'Menu:BusinessProcess' => '业务流程',
'Menu:BusinessProcess+' => '所有业务流程',
'Menu:ApplicationSolution' => '应用方案',
'Menu:ApplicationSolution+' => '所有应用方案',
'Menu:ConfigManagementSoftware' => '应用管理',
'Menu:Licence' => '许可证',
'Menu:Licence+' => '所有许可证',
'Menu:Patch' => '补丁',
'Menu:Patch+' => '所有补丁',
'Menu:ApplicationInstance' => '已安装的软件',
'Menu:ApplicationInstance+' => '应用和数据库服务器',
'Menu:ConfigManagementHardware' => '基础设施管理',
'Menu:Subnet' => '子网',
'Menu:Subnet+' => '所有子网',
'Menu:NetworkDevice' => '网络设备',
'Menu:NetworkDevice+' => '所有网络设备',
'Menu:Server' => '服务器',
'Menu:Server+' => '所有服务器',
'Menu:Printer' => '打印机',
'Menu:Printer+' => '所有打印机',
'Menu:MobilePhone' => '移动电话',
'Menu:MobilePhone+' => '所有移动电话',
'Menu:PC' => '个人电脑',
'Menu:PC+' => '所有个人电脑',
'Menu:NewContact' => '新建联系人',
'Menu:NewContact+' => '新建联系人',
'Menu:SearchContacts' => '搜索联系人',
'Menu:SearchContacts+' => '搜索联系人',
'Menu:NewCI' => '新建配置项',
'Menu:NewCI+' => 'New CI',
'Menu:SearchCIs' => '搜索配置项',
'Menu:SearchCIs+' => '搜索配置项',
'Menu:ConfigManagement:Devices' => '设备',
'Menu:ConfigManagement:AllDevices' => '基础设施',
'Menu:ConfigManagement:virtualization' => '虚拟化',
'Menu:ConfigManagement:EndUsers' => '终端设备',
'Menu:ConfigManagement:SWAndApps' => '软件和应用',
'Menu:ConfigManagement:Misc' => '杂项',
'Menu:Group' => '配置组',
'Menu:Group+' => '配置组',
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
'Menu:Typology' => '配置管理',
'Menu:Typology+' => '配置管理',
'Menu:OSVersion' => 'OS 版本',
'Menu:OSVersion+' => '',
'Menu:Software' => '软件清单',
'Menu:Software+' => '软件清单',
'UI_WelcomeMenu_AllConfigItems' => '摘要',
'Menu:ConfigManagement:Typology' => '配置管理',
'Menu:Location+' => '所有位置',
'Menu:ConfigManagementCI' => '配置项',
'Menu:ConfigManagementCI+' => '配置项',
'Menu:BusinessProcess' => '业务流程',
'Menu:BusinessProcess+' => '所有业务流程',
'Menu:ApplicationSolution' => '应用方案',
'Menu:ApplicationSolution+' => '所有应用方案',
'Menu:ConfigManagementSoftware' => '应用管理',
'Menu:Licence' => '许可证',
'Menu:Licence+' => '所有许可证',
'Menu:Patch' => '补丁',
'Menu:Patch+' => '所有补丁',
'Menu:ApplicationInstance' => '已安装的软件',
'Menu:ApplicationInstance+' => '应用和数据库服务器',
'Menu:ConfigManagementHardware' => '基础设施管理',
'Menu:Subnet' => '子网',
'Menu:Subnet+' => '所有子网',
'Menu:NetworkDevice' => '网络设备',
'Menu:NetworkDevice+' => '所有网络设备',
'Menu:Server' => '服务器',
'Menu:Server+' => '所有服务器',
'Menu:Printer' => '打印机',
'Menu:Printer+' => '所有打印机',
'Menu:MobilePhone' => '移动电话',
'Menu:MobilePhone+' => '所有移动电话',
'Menu:PC' => '个人电脑',
'Menu:PC+' => '所有个人电脑',
'Menu:NewContact' => '新建联系人',
'Menu:NewContact+' => '新建联系人',
'Menu:SearchContacts' => '搜索联系人',
'Menu:SearchContacts+' => '搜索联系人',
'Menu:NewCI' => '新建配置项',
'Menu:NewCI+' => '新建配置项',
'Menu:SearchCIs' => '搜索配置项',
'Menu:SearchCIs+' => '搜索配置项',
'Menu:ConfigManagement:Devices' => '设备',
'Menu:ConfigManagement:AllDevices' => '基础设施',
'Menu:ConfigManagement:virtualization' => '虚拟化',
'Menu:ConfigManagement:EndUsers' => '终端设备',
'Menu:ConfigManagement:SWAndApps' => '软件和应用',
'Menu:ConfigManagement:Misc' => '杂项',
'Menu:Group' => '配置组',
'Menu:Group+' => '配置组',
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
'Menu:Typology' => '配置管理',
'Menu:Typology+' => '配置管理',
'Menu:OSVersion' => 'OS 版本',
'Menu:OSVersion+' => '',
'Menu:Software' => '软件清单',
'Menu:Software+' => '软件清单',
'UI_WelcomeMenu_AllConfigItems' => '摘要',
'Menu:ConfigManagement:Typology' => '配置管理',
));
@@ -1891,18 +1889,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Add translation for Fieldsets
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Server:baseinfo' => '基本信息',
'Server:Date' => '日期',
'Server:moreinfo' => '更多信息',
'Server:otherinfo' => '其它信息',
'Server:power' => '电力供应',
'Person:info' => '基本信息',
'Person:personal_info' => '个人信息',
'Person:notifiy' => '通知',
'Class:Subnet/Tab:IPUsage' => 'IP 使用率',
'Class:Subnet/Tab:IPUsage-explain' => '网卡IP范围: <em>%1$s</em> 到 <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => '空闲 IP',
'Class:Subnet/Tab:FreeIPs-count' => '空闲 IP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '以下是抽取的10个空闲IP',
'Class:Document:PreviewTab' => '预览',
'Server:baseinfo' => '基本信息',
'Server:Date' => '日期',
'Server:moreinfo' => '更多信息',
'Server:otherinfo' => '其它信息',
'Server:power' => '电力供应',
'Person:info' => '基本信息',
'Person:personal_info' => '个人信息',
'Person:notifiy' => '通知',
'Class:Subnet/Tab:IPUsage' => 'IP 使用率',
'Class:Subnet/Tab:IPUsage-explain' => '网卡IP范围: <em>%1$s</em> 到 <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => '空闲 IP',
'Class:Subnet/Tab:FreeIPs-count' => '空闲 IP: %1$s',
'Class:Subnet/Tab:FreeIPs-explain' => '以下是抽取的10个空闲IP',
'Class:Document:PreviewTab' => '预览',
));

View File

@@ -74,6 +74,21 @@ function TestConfig($sContents, $oP)
}
}
/**
* @param $sSafeContent
*
* @return bool
*/
function DBPasswordInNewConfigIsOk($sSafeContent)
{
$bIsWindows = (array_key_exists('WINDIR', $_SERVER) || array_key_exists('windir', $_SERVER));
if ($bIsWindows && (preg_match("@'db_pwd' => '[^%!\"]+',@U", $sSafeContent) === 0))
{
return false;
}
return true;
}
/////////////////////////////////////////////////////////////////////
// Main program
@@ -94,6 +109,7 @@ $oP->add_linked_script(utils::GetCurrentModuleUrl().'/js/ext-searchbox.js');
try
{
$sOperation = utils::ReadParam('operation', '');
$iEditorTopMargin = 0;
$oP->add("<h1>".Dict::S('config-edit-title')."</h1>");
@@ -109,15 +125,15 @@ try
{
$sConfigFile = APPROOT.'conf/'.utils::GetCurrentEnvironment().'/config-itop.php';
$iEditorTopMargin = 9;
$iEditorTopMargin += 9;
$sConfig = str_replace("\r\n", "\n", file_get_contents($sConfigFile));
$sOrginalConfig = $sConfig;
$sOriginalConfig = $sConfig;
if (!empty($sOperation))
{
$iEditorTopMargin = 14;
$iEditorTopMargin += 5;
$sConfig = utils::ReadParam('new_config', '', false, 'raw_data');
$sOrginalConfig = utils::ReadParam('prev_config', '', false, 'raw_data');
$sOriginalConfig = utils::ReadParam('prev_config', '', false, 'raw_data');
}
if ($sOperation == 'revert')
@@ -133,7 +149,7 @@ try
}
else
{
if ($sConfig == $sOrginalConfig)
if ($sConfig == $sOriginalConfig)
{
$oP->add('<div id="save_result" class="header_message">'.Dict::S('config-no-change').'</div>');
}
@@ -162,8 +178,15 @@ try
@unlink($sTmpFile);
@chmod($sConfigFile, 0444); // Read-only
$oP->p('<div id="save_result" class="header_message message_ok">'.Dict::S('config-saved').'</div>');
$sOrginalConfig = str_replace("\r\n", "\n", file_get_contents($sConfigFile));
if (DBPasswordInNewConfigIsOk($sConfig))
{
$oP->p('<div id="save_result" class="header_message message_ok">'.Dict::S('config-saved').'</div>');
}
else
{
$oP->p('<div id="save_result" class="header_message message_info">'.Dict::S('config-saved-warning-db-password').'</div>');
}
$sOriginalConfig = str_replace("\r\n", "\n", file_get_contents($sConfigFile));
}
catch (Exception $e)
{
@@ -175,7 +198,7 @@ try
$sConfigEscaped = htmlentities($sConfig, ENT_QUOTES, 'UTF-8');
$sOriginalConfigEscaped = htmlentities($sOrginalConfig, ENT_QUOTES, 'UTF-8');
$sOriginalConfigEscaped = htmlentities($sOriginalConfig, ENT_QUOTES, 'UTF-8');
$oP->p(Dict::S('config-edit-intro'));
$oP->add("<form method=\"POST\">");
$oP->add("<input id=\"operation\" type=\"hidden\" name=\"operation\" value=\"save\">");

View File

@@ -21,4 +21,5 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Řádek %2$d: %1$s.<br/>Soubor nebyl uložen.',
'config-current-line' => 'Řádek: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -5,8 +5,7 @@
<rank>50</rank>
<parent>AdminTools</parent>
<url>config.php</url>
<enable_class>ResourceAdminMenu</enable_class>
<enable_action>UR_ACTION_MODIFY</enable_action>
<enable_admin_only>1</enable_admin_only>
</menu>
</menus>
</itop_design>

View File

@@ -36,4 +36,5 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'config-reverted' => 'Die Konfiguration wurde zurückgesetzt',
'config-parse-error' => 'Zeile %2$d: %1$s.<br/>Die Datei wurde nicht aktualisiert.',
'config-current-line' => 'Editiere Zeile: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -35,4 +35,5 @@ Dict::Add('EN US', 'English', 'English', array(
'config-reverted' => 'The configuration has been reverted.',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.',
'config-current-line' => 'Editing line: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'config-reverted' => 'La configuración ha sido revertida.',
'config-parse-error' => 'Línea %2$d: %1$s.<br/>El archivo NO ha sido actualizado.',
'config-current-line' => 'Editando línea: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -19,4 +19,5 @@ Dict::Add('FR FR', 'French', 'Français', array(
'config-reverted' => 'Vos modifications ont été écrasées par la version enregistrée.',
'config-parse-error' => 'Ligne %2$d: %1$s.<br/>Le fichier n\'a PAS été modifié.',
'config-current-line' => 'Ligne en édition : %1$s',
'config-saved-warning-db-password' => 'Configuration enregistrée. Les sauvegardes ne fonctionneront pas à cause du format du pot de passe de la base.',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-config/2.6.0',
'itop-config/2.6.1',
array(
// Identification
//

View File

@@ -35,4 +35,5 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'config-reverted' => 'De wijzigingen zijn ongedaan gemaakt.',
'config-parse-error' => 'Regel %2$d: %1$s.<br/>Het bestand werd <b>NIET</b> opgeslagen.',
'config-current-line' => 'Huidige regel: %1$s',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

@@ -5,7 +5,7 @@
* @author Vladimir Kunin <v.b.kunin@gmail.com>
* @link http://community.itop-itsm.ru iTop Russian Community
* @link https://github.com/itop-itsm-ru/itop-rus
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
* @license http://opensource.org/licenses/AGPL-3.0
*
*/
Dict::Add('RU RU', 'Russian', 'Русский', array(
@@ -16,10 +16,11 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
'config-apply' => 'Применить',
'config-apply-title' => 'Применить (Ctrl+S)',
'config-cancel' => 'Сбросить',
'config-saved' => 'Successfully recorded.~~',
'config-saved' => 'Изменения успешно сохранены.',
'config-confirm-cancel' => 'Ваши изменения будут утеряны.',
'config-no-change' => 'Изменений нет: файл не был изменён.',
'config-reverted' => 'The configuration has been reverted.~~',
'config-reverted' => 'Изменения были сброшены.',
'config-parse-error' => 'Строка %2$d: %1$s.<br/>Файл не был обновлен.',
'config-current-line' => 'Редактируемая строка: %1$s',
'config-saved-warning-db-password' => 'Изменения успешно сохранены, но резервная копия не будет работать из-за неподдерживаемых символов в пароле базы данных.',
));

Some files were not shown because too many files have changed in this diff Show More