Compare commits

...

106 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
301 changed files with 4349 additions and 2229 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

@@ -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

@@ -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
{
@@ -4221,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,6 +444,16 @@ EOF
$sClass = $oQuery->GetClass();
foreach($this->oModelReflection->ListAttributes($sClass) as $sAttCode => $sAttType)
{
// 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;
@@ -456,15 +466,6 @@ EOF
{
continue;
}
// For external fields, find the real type of the target
while (is_a($sAttType, 'AttributeExternalField', true))
{
$sExtKeyAttCode = $this->oModelReflection->GetAttributeProperty($sClass, $sAttCode, 'extkey_attcode');
$sTargetClass = $this->oModelReflection->GetAttributeProperty($sClass, $sExtKeyAttCode, 'targetclass');
$sTargetAttCode = $this->oModelReflection->GetAttributeProperty($sClass, $sAttCode, 'target_attcode');
$aTargetAttCodes = $this->oModelReflection->ListAttributes($sTargetClass);
$sAttType = $aTargetAttCodes[$sTargetAttCode];
}
$sLabel = $this->oModelReflection->GetLabel($sClass, $sAttCode);
if (!in_array($sLabel, $aGroupBy))

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

@@ -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';
}

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

@@ -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

@@ -1224,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
}
@@ -1577,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())
@@ -1596,6 +1601,12 @@ abstract class DBObject implements iDisplay
$oUniquenessQuery->AddCondition($sAttributeCode, $attributeValue, '=');
}
$aChildClassesWithRuleDisabled = MetaModel::GetChildClassesWithDisabledUniquenessRule($sRuleRootClass, $sUniquenessRuleId);
if (!empty($aChildClassesWithRuleDisabled))
{
$oUniquenessQuery->AddConditionForInOperatorUsingParam('finalclass', $aChildClassesWithRuleDisabled, false);
}
return $oUniquenessQuery;
}
@@ -3864,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));
}
@@ -3927,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

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

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;
@@ -2169,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;
@@ -2390,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 {
@@ -2531,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;
@@ -2693,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;
@@ -2927,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

@@ -2762,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;
@@ -3353,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

@@ -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

@@ -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

@@ -1901,4 +1901,4 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'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

@@ -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' => '影响...',
@@ -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' => '注释',

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' => 'Изменения успешно сохранены, но резервная копия не будет работать из-за неподдерживаемых символов в пароле базы данных.',
));

View File

@@ -34,4 +34,5 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', 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

@@ -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:ConfigEditor' => '编辑配置文件',
@@ -29,10 +28,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'config-apply' => '应用',
'config-apply-title' => '应用 (Ctrl+S)',
'config-cancel' => '重置',
'config-saved' => '成功保存.',
'config-saved' => '成功保存.',
'config-confirm-cancel' => '您的修改将被丢弃.',
'config-no-change' => '没有变化: 配置文件将保持不变.',
'config-reverted' => '配置文件已恢复.',
'config-reverted' => '配置文件已恢复.',
'config-parse-error' => '第 %2$d 行: %1$s.<br/>配置文件尚未更新.',
'config-current-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

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

View File

@@ -1,24 +1,12 @@
<?php
/**
* Localized data
* Локализация интерфейса Combodo iTop подготовлена сообществом iTop по-русски http://community.itop-itsm.ru.
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @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://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* 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('RU RU', 'Russian', 'Русский', array(
// Dictionary entries go here

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(
// Dictionary entries go here
));

View File

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

View File

@@ -1,24 +1,12 @@
<?php
/**
* Localized data
* Локализация интерфейса Combodo iTop подготовлена сообществом iTop по-русски http://community.itop-itsm.ru.
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @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://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* 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('RU RU', 'Russian', 'Русский', array(
// Dictionary entries go here

View File

@@ -6,7 +6,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-full-itil/2.6.0', array(
'itop-full-itil/2.6.1', array(
// Identification
//
'label' => 'Bridge - Request management ITIL + Incident management ITIL',

View File

@@ -47,7 +47,8 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'iTopHub:Landing:Install' => 'Deploying extensions...~~',
'iTopHub:CompiledOK' => 'Compilation successful.~~',
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br/>iTop configuration has NOT been modified.~~',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:InstalledExtensions' => 'Extensions deployed on this instance~~',
'iTopHub:ExtensionCategory:Manual' => 'Extensions deployed manually~~',
'iTopHub:ExtensionCategory:Manual+' => 'The following extensions have been deployed by copying them manually in the %1$s directory of iTop:~~',

View File

@@ -47,7 +47,8 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
'iTopHub:Landing:Install' => 'Deploying extensions...~~',
'iTopHub:CompiledOK' => 'Compilation successful.~~',
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br/>iTop configuration has NOT been modified.~~',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:InstalledExtensions' => 'Extensions deployed on this instance~~',
'iTopHub:ExtensionCategory:Manual' => 'Extensions deployed manually~~',
'iTopHub:ExtensionCategory:Manual+' => 'The following extensions have been deployed by copying them manually in the %1$s directory of iTop:~~',

View File

@@ -47,7 +47,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'iTopHub:Landing:Install' => 'Erweiterungen werden installiert...',
'iTopHub:CompiledOK' => 'Installation erfolgreich',
'iTopHub:ConfigurationSafelyReverted' => 'Fehler während der Installation!<br/>iTop Konfiguration wurde NICHT angepasst.',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:InstalledExtensions' => 'Erweiterung, die auf dieser Instanz installiert sind',
'iTopHub:ExtensionCategory:Manual' => 'Manuell installierte Erweiterungen',
'iTopHub:ExtensionCategory:Manual+' => 'Die folgenden Erweiterungen installiert, indem sie manuell in das iTop-Verzeichnis %1$s kopiert wurden:',

View File

@@ -50,7 +50,6 @@ Dict::Add('EN US', 'English', 'English', array(
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br/>iTop configuration has NOT been modified.',
'iTopHub:FailAuthent' => 'Authentication failed for this action.',
'iTopHub:InstalledExtensions' => 'Extensions deployed on this instance',
'iTopHub:ExtensionCategory:Manual' => 'Extensions deployed manually',
'iTopHub:ExtensionCategory:Manual+' => 'The following extensions have been deployed by copying them manually in the %1$s directory of iTop:',

View File

@@ -47,7 +47,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array(
'iTopHub:Landing:Install' => 'Instalando extensiones...',
'iTopHub:CompiledOK' => 'Compilación éxitosa.',
'iTopHub:ConfigurationSafelyReverted' => 'Error detectado durante la instalación!<br/>La configuración de iTop NO fue modificada.',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:InstalledExtensions' => 'Extensiones instaladas en esta instancia',
'iTopHub:ExtensionCategory:Manual' => 'Extensiones instaladas manualmente',
'iTopHub:ExtensionCategory:Manual+' => 'Las siguientes extensiones fueron instaladas copiandolas manualmente en el directorio %1$s de iTop:',

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