mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-16 17:04:11 +01:00
Compare commits
326 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
052e2a1a42 | ||
|
|
eb1ecff7d8 | ||
|
|
8141723869 | ||
|
|
8cb701bda3 | ||
|
|
1b29746806 | ||
|
|
fb9c317256 | ||
|
|
8c704951e1 | ||
|
|
24c23628d6 | ||
|
|
141c22ff67 | ||
|
|
1e3c425e81 | ||
|
|
b2e3fb6354 | ||
|
|
45ce68e16e | ||
|
|
1aef576403 | ||
|
|
bfd9be8280 | ||
|
|
96e1388dde | ||
|
|
86b48b8980 | ||
|
|
69c8791fc5 | ||
|
|
5fd8678a3a | ||
|
|
86df9ac035 | ||
|
|
3f997b416f | ||
|
|
cceb6809e7 | ||
|
|
48b559472e | ||
|
|
cddc452693 | ||
|
|
0904a21e3f | ||
|
|
66230199f8 | ||
|
|
1f1a2b660f | ||
|
|
4f36369ea1 | ||
|
|
33a906f11a | ||
|
|
82d11eeb47 | ||
|
|
b8bf66031b | ||
|
|
2596a150bf | ||
|
|
142d6c8993 | ||
|
|
d70e5dff45 | ||
|
|
c4fc0ed982 | ||
|
|
320922a13d | ||
|
|
f96d28a0a8 | ||
|
|
d3b9965283 | ||
|
|
f03d731b1d | ||
|
|
3e3ac0d83f | ||
|
|
32835f70b9 | ||
|
|
63cf78f64d | ||
|
|
8be7628668 | ||
|
|
5e64be8580 | ||
|
|
a0b76a25be | ||
|
|
e2f2afad54 | ||
|
|
f632cf3155 | ||
|
|
13dfdc3d9d | ||
|
|
62caf16153 | ||
|
|
020a37ead9 | ||
|
|
163a3afc0f | ||
|
|
35265718c1 | ||
|
|
d98e35d918 | ||
|
|
f8b54be896 | ||
|
|
a88ce075cc | ||
|
|
c6f3e36451 | ||
|
|
53dc452d61 | ||
|
|
ccaf2dc5b7 | ||
|
|
d9581a083d | ||
|
|
46738d4ba4 | ||
|
|
5d5df5ad1a | ||
|
|
8c46c99ecc | ||
|
|
02be397e8f | ||
|
|
61469a28b9 | ||
|
|
9ff54cead8 | ||
|
|
dbcbb187b2 | ||
|
|
71b4d672d4 | ||
|
|
93bba66323 | ||
|
|
0a95aa385a | ||
|
|
cab6394cba | ||
|
|
32140b360f | ||
|
|
06a8481511 | ||
|
|
59a955f491 | ||
|
|
2ffcfd2f57 | ||
|
|
e657052d17 | ||
|
|
d85767a838 | ||
|
|
e56d5ed3aa | ||
|
|
e5a8bd61b0 | ||
|
|
eeec57536b | ||
|
|
7fba61ff35 | ||
|
|
1bf156bdda | ||
|
|
1164e757de | ||
|
|
514e0b80a5 | ||
|
|
1235452a1b | ||
|
|
35f4ab4941 | ||
|
|
16ff6341d0 | ||
|
|
12ad3c2732 | ||
|
|
ac826cb9f1 | ||
|
|
9dab8679d6 | ||
|
|
4f3b25aa46 | ||
|
|
f737bcb9a0 | ||
|
|
4c78488644 | ||
|
|
b4cdf5cf6d | ||
|
|
77cc4672b0 | ||
|
|
b65e931c4c | ||
|
|
46b0dabb1d | ||
|
|
dfbfab7005 | ||
|
|
aa831b632c | ||
|
|
6cb3519308 | ||
|
|
cfb9fae648 | ||
|
|
f4e791734f | ||
|
|
6653ab0668 | ||
|
|
7ab258ba03 | ||
|
|
b5af30a93f | ||
|
|
2294fce5da | ||
|
|
ce5c05234d | ||
|
|
bbfa601ab1 | ||
|
|
c9a9ec2fed | ||
|
|
83764deedb | ||
|
|
172b1cb1ff | ||
|
|
5f35effad9 | ||
|
|
e1374a0e6b | ||
|
|
ca356859a3 | ||
|
|
5efe294895 | ||
|
|
e6fa589412 | ||
|
|
18d0b88531 | ||
|
|
3139a0b610 | ||
|
|
e0170ccc7e | ||
|
|
ffefa5495a | ||
|
|
a371b7f03b | ||
|
|
de97a6263f | ||
|
|
f0c5264fc8 | ||
|
|
367aac3e04 | ||
|
|
3b78885f38 | ||
|
|
e6814d6860 | ||
|
|
79198f51a3 | ||
|
|
f14b4c32be | ||
|
|
6be5264fe9 | ||
|
|
6a30d6caa9 | ||
|
|
bc8543d88c | ||
|
|
a51242dc36 | ||
|
|
64ba706083 | ||
|
|
ed562c9f73 | ||
|
|
85c576a986 | ||
|
|
3deb74a4d1 | ||
|
|
1f2469e1e4 | ||
|
|
22af1a8787 | ||
|
|
cd34f8b5eb | ||
|
|
8357c86361 | ||
|
|
b10d381dda | ||
|
|
9dc7b6dc0c | ||
|
|
1be67f349f | ||
|
|
8647414a33 | ||
|
|
a58f0bfc0b | ||
|
|
ff1305165e | ||
|
|
a468bf8f7e | ||
|
|
65c706fdfe | ||
|
|
25f266ef66 | ||
|
|
5a34c76cc4 | ||
|
|
5efb1a0872 | ||
|
|
7f9b60d66f | ||
|
|
1278c4b196 | ||
|
|
a7f3bf9a56 | ||
|
|
4eed5bdeb9 | ||
|
|
7b999cef50 | ||
|
|
90458f6048 | ||
|
|
3653a4bc90 | ||
|
|
bdfd956825 | ||
|
|
da99a250bf | ||
|
|
5554241877 | ||
|
|
2f30a0146e | ||
|
|
1de9e704fc | ||
|
|
f4b9a9a5fe | ||
|
|
fa5d03fc6e | ||
|
|
8ffcb01c43 | ||
|
|
5c46b4ef4a | ||
|
|
79cdb837b5 | ||
|
|
a97935ca01 | ||
|
|
87181669d1 | ||
|
|
efd7fb0f59 | ||
|
|
71a0f8b87d | ||
|
|
a4edf8cb21 | ||
|
|
dbd5ba0377 | ||
|
|
5d6f293956 | ||
|
|
65e6c84477 | ||
|
|
9cc7ccb1cd | ||
|
|
a337ef3d88 | ||
|
|
986c24d777 | ||
|
|
763112c179 | ||
|
|
a5efd981d8 | ||
|
|
c0e4d04a1c | ||
|
|
289ca7b505 | ||
|
|
2922b22478 | ||
|
|
2af05a437e | ||
|
|
71d9536bc4 | ||
|
|
b08b5297cf | ||
|
|
3e6e096f62 | ||
|
|
6377a738c5 | ||
|
|
a9f8dcc5e8 | ||
|
|
9750fec959 | ||
|
|
969a301cbb | ||
|
|
c325294e17 | ||
|
|
af2c6d9ab8 | ||
|
|
cf6e8ab22a | ||
|
|
9032dac314 | ||
|
|
a29b0a8e33 | ||
|
|
c1efad7556 | ||
|
|
f78b57521a | ||
|
|
da490739be | ||
|
|
bf4b07a366 | ||
|
|
48de13b5cf | ||
|
|
b867faa355 | ||
|
|
849c495093 | ||
|
|
e878938e25 | ||
|
|
7453cc184f | ||
|
|
3b9ca4ad18 | ||
|
|
eddc750ca8 | ||
|
|
f3abe1ff13 | ||
|
|
473cf004b6 | ||
|
|
46273dfc12 | ||
|
|
24f1cf8ca1 | ||
|
|
86bf6ba0b0 | ||
|
|
82e19f6eca | ||
|
|
8f1d8b1dc2 | ||
|
|
3cc3f0e4ff | ||
|
|
b7f43ba22b | ||
|
|
b13e0c92a5 | ||
|
|
aa81c94dad | ||
|
|
f41f2a063d | ||
|
|
095c94a917 | ||
|
|
102a4a0c75 | ||
|
|
f6fec506b1 | ||
|
|
7d0801f74f | ||
|
|
3b9f281afd | ||
|
|
bcba666483 | ||
|
|
ec465174f7 | ||
|
|
9f675fef02 | ||
|
|
1d106eb33a | ||
|
|
31bd763b90 | ||
|
|
5c12151c26 | ||
|
|
961315cf34 | ||
|
|
95fef002a6 | ||
|
|
9777ac1a5c | ||
|
|
ba0020fa63 | ||
|
|
1e83f2eb60 | ||
|
|
dd27a3ebb4 | ||
|
|
54439ad529 | ||
|
|
2c61ac4949 | ||
|
|
8f7bf00551 | ||
|
|
0483cea226 | ||
|
|
922a842e96 | ||
|
|
e4f068a518 | ||
|
|
c020de59a7 | ||
|
|
3c2350961d | ||
|
|
391c78ae42 | ||
|
|
aa53de467d | ||
|
|
bc6efc99ed | ||
|
|
bb3ab76205 | ||
|
|
0b1bdfff55 | ||
|
|
77c0cdf5aa | ||
|
|
af9fb74c54 | ||
|
|
5d6c4939f6 | ||
|
|
5663c61e51 | ||
|
|
51d0d16a11 | ||
|
|
848528567e | ||
|
|
b0634c9fbc | ||
|
|
fabeea8dba | ||
|
|
c951a33646 | ||
|
|
8f250e82f4 | ||
|
|
ed694b09b0 | ||
|
|
18deb79068 | ||
|
|
4d4cdf9e60 | ||
|
|
3868d57d28 | ||
|
|
1b3a2c8470 | ||
|
|
618d8e6468 | ||
|
|
53a2a7a8e2 | ||
|
|
9a26c37ffd | ||
|
|
cc5e105d7f | ||
|
|
7f62bd61e3 | ||
|
|
72bbc31cd9 | ||
|
|
f54d1273c9 | ||
|
|
01a955a16f | ||
|
|
669e6f93fa | ||
|
|
a5aac0caad | ||
|
|
31e29506fa | ||
|
|
3005bc1234 | ||
|
|
3f3b0cbe55 | ||
|
|
cff50f8732 | ||
|
|
a8cd9566ac | ||
|
|
dab03e5b5d | ||
|
|
87582a021b | ||
|
|
200cdefa1a | ||
|
|
8ef04bedf2 | ||
|
|
9eeb4b8751 | ||
|
|
ae3d0f9444 | ||
|
|
1fa4fe6d35 | ||
|
|
2ed0666c3b | ||
|
|
9b5988133b | ||
|
|
a61b117f71 | ||
|
|
9830178a47 | ||
|
|
83ac219ec9 | ||
|
|
c140ebcb6b | ||
|
|
fddf9e36c7 | ||
|
|
b181914d25 | ||
|
|
7a0a4e377b | ||
|
|
7fffbb60e9 | ||
|
|
03b095f246 | ||
|
|
e8c371174c | ||
|
|
b8892e9651 | ||
|
|
8cde0ce5c5 | ||
|
|
2fd9523c16 | ||
|
|
18887bf7f9 | ||
|
|
fad5571d9b | ||
|
|
48c4e2d13d | ||
|
|
5b2b9c92e1 | ||
|
|
a4f6f6e877 | ||
|
|
68fa3d0236 | ||
|
|
abb3ea3272 | ||
|
|
1de390a24d | ||
|
|
20478958ad | ||
|
|
ba99f8f5a4 | ||
|
|
379062f1f7 | ||
|
|
6042e7f74d | ||
|
|
5e233f4bec | ||
|
|
19c93249e3 | ||
|
|
94c604a6af | ||
|
|
f84e2060be | ||
|
|
6995a3c641 | ||
|
|
e007e09155 | ||
|
|
4ee70cb95a | ||
|
|
9865bf0779 | ||
|
|
2144933927 | ||
|
|
e2574a0738 | ||
|
|
3fb5c05467 | ||
|
|
17d131a9b1 | ||
|
|
fc2be85c95 | ||
|
|
e748d72c03 |
83
.github/pull_request_template.md
vendored
Normal file
83
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
<!--
|
||||
|
||||
IMPORTANT: Please follow the guidelines within this PR template before submitting it, it will greatly help us process your PR. 🙏
|
||||
|
||||
Any PRs not following the guidelines or with missing information will not be considered.
|
||||
|
||||
-->
|
||||
|
||||
## Base information
|
||||
| Question | Answer
|
||||
|---------------------------------------------------------------|--------
|
||||
| Related to a SourceForge thead / Another PR / Combodo ticket? | <!-- Put the URL -->
|
||||
| Type of change? | Bug fix / Enhancement / Translations
|
||||
|
||||
|
||||
## Symptom (bug) / Objective (enhancement)
|
||||
<!--
|
||||
If it's a bug
|
||||
- Explain the symptom in details
|
||||
- If possible put error messages, logs or screenshots (you can paste image directly in this editor).
|
||||
|
||||
If it's an enhancement
|
||||
- Describe what is blocking you, what is the objective with as much details as possible.
|
||||
- Add screenshots if it's related to UI.
|
||||
-->
|
||||
|
||||
|
||||
## Reproduction procedure (bug)
|
||||
<!--
|
||||
Remove this section only if it's NOT a bug.
|
||||
|
||||
Otherwise, explain step by step how to reproduce the issue on a standard iTop Community.
|
||||
|
||||
If it requires a custom datamodel, provide the minimal XML delta to reproduce it on a standard iTop Community.
|
||||
-->
|
||||
|
||||
1. On iTop x.y.z <!-- Put complete iTop version (eg. 3.1.0-2) -->
|
||||
2. With PHP x.y.z <!-- Put complete PHP version (eg. 8.1.24) -->
|
||||
2. First go there
|
||||
2. Then do that
|
||||
3. ...
|
||||
4. Finally, see that...
|
||||
|
||||
|
||||
## Cause (bug)
|
||||
<!--
|
||||
Remove this section only if it's NOT a bug.
|
||||
|
||||
Otherwise, explain what is the cause of the issue (where in the code and why)
|
||||
-->
|
||||
|
||||
|
||||
## Proposed solution (bug and enhancement)
|
||||
<!--
|
||||
Explain in details how you are proposing to solve this:
|
||||
- What did you do in the code and why
|
||||
- If you changed something in the UI, put before / after screenshots (you can paste image directly in this editor)
|
||||
-->
|
||||
|
||||
|
||||
## Checklist before requesting a review
|
||||
<!--
|
||||
Don't remove these lines, check them once done.
|
||||
-->
|
||||
- [ ] I have performed a self-review of my code
|
||||
- [ ] I have tested all changes I made on an iTop instance
|
||||
- [ ] I have added a unit test, otherwise I have explained why I couldn't
|
||||
- [ ] Is the PR clear and detailed enough so anyone can understand digging in the code?
|
||||
|
||||
## Checklist of things to do before PR is ready to merge
|
||||
<!--
|
||||
Things that needs to be done in the PR before it can be considered as ready to be merged
|
||||
|
||||
Examples:
|
||||
- Changes requested in the review
|
||||
- Unit test to add
|
||||
- Dictionary entries to translate
|
||||
- ...
|
||||
-->
|
||||
|
||||
- [ ] ...
|
||||
- [ ] ...
|
||||
- [ ] ...
|
||||
16
.github/workflows/action.yml
vendored
Normal file
16
.github/workflows/action.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Add PRs to Combodo PRs Dashboard
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
|
||||
jobs:
|
||||
add-to-project:
|
||||
name: Add PR to Combodo Project
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/add-to-project@v1.0.2
|
||||
with:
|
||||
project-url: https://github.com/orgs/Combodo/projects/5
|
||||
github-token: ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}
|
||||
@@ -27,7 +27,7 @@ $iTopFolder = __DIR__."/../../../";
|
||||
require_once("$iTopFolder/approot.inc.php");
|
||||
require_once(APPROOT."/application/utils.inc.php");
|
||||
|
||||
if (php_sapi_name() !== 'cli')
|
||||
if (PHP_SAPI !== 'cli')
|
||||
{
|
||||
throw new \Exception('This script can only run from CLI');
|
||||
}
|
||||
@@ -48,4 +48,4 @@ if (!file_exists($sCssFile))
|
||||
{
|
||||
fwrite(STDERR, "Failed to compile $sCssFile, exiting.");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ $iTopFolder = __DIR__ . "/../../" ;
|
||||
require_once ("$iTopFolder/approot.inc.php");
|
||||
require_once (APPROOT."/setup/setuputils.class.inc.php");
|
||||
|
||||
if (php_sapi_name() !== 'cli')
|
||||
if (PHP_SAPI !== 'cli')
|
||||
{
|
||||
throw new \Exception('This script can only run from CLI');
|
||||
}
|
||||
@@ -70,4 +70,4 @@ if (false === empty($aMissing)) {
|
||||
echo "Some new tests dirs exists !\n"
|
||||
.' They must be declared either in the allowed or denied list in '.iTopComposer::class." (see N°2651).\n"
|
||||
.' List of dirs:'."\n".var_export($aMissing, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,8 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
- Rudner, Björn (a.k.a [@rudnerbjoern](https://github.com/rudnerbjoern))
|
||||
- Seki, Shoji
|
||||
- Shilov, Vladimir
|
||||
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
|
||||
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya-stukalov))
|
||||
- Tarjányi, Csaba (a.k.a [@tacsaby](https://github.com/tacsaby))
|
||||
- Tulio, Marco
|
||||
- Turrubiates, Miguel
|
||||
|
||||
|
||||
@@ -2103,8 +2103,16 @@ class RestUtils
|
||||
elseif (is_string($key))
|
||||
{
|
||||
// OQL
|
||||
$oSearch = DBObjectSearch::FromOQL($key);
|
||||
}
|
||||
try {
|
||||
$oSearch = DBObjectSearch::FromOQL($key);
|
||||
} catch (Exception $e) {
|
||||
throw new CoreOqlException('Query failed to execute', [
|
||||
'query' => $key,
|
||||
'exception_class' => get_class($e),
|
||||
'exception_message' => $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Wrong format for key");
|
||||
|
||||
@@ -86,7 +86,7 @@ class lnkAuditCategoryToAuditDomain extends cmdbAbstractObject
|
||||
{
|
||||
$aParams = array
|
||||
(
|
||||
"category" => "application, grant_by_profile",
|
||||
"category" => "application,grant_by_profile",
|
||||
"key_type" => "autoincrement",
|
||||
"name_attcode" => "",
|
||||
"state_attcode" => "",
|
||||
|
||||
@@ -134,6 +134,8 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay
|
||||
/** @var string */
|
||||
public const ENUM_INPUT_TYPE_TAGSET = 'tagset';
|
||||
/** @var string */
|
||||
public const ENUM_INPUT_TYPE_TAGSET_LINKEDSET = 'tagset_linkedset';
|
||||
/** @var string */
|
||||
public const ENUM_INPUT_TYPE_RADIO = 'radio';
|
||||
/** @var string */
|
||||
public const ENUM_INPUT_TYPE_CHECKBOX = 'checkbox';
|
||||
@@ -2359,6 +2361,7 @@ EOF
|
||||
|
||||
case 'LinkedSet':
|
||||
if ($oAttDef->GetDisplayStyle() === LINKSET_DISPLAY_STYLE_PROPERTY) {
|
||||
$sInputType = self::ENUM_INPUT_TYPE_TAGSET_LINKEDSET;
|
||||
if (array_key_exists('bulk_context', $aArgs)) {
|
||||
$oTagSetBlock = LinkSetUIBlockFactory::MakeForBulkLinkSet($iId, $oAttDef, $value, $sWizardHelperJsVarName, $aArgs['bulk_context']);
|
||||
} else {
|
||||
@@ -3709,7 +3712,7 @@ HTML;
|
||||
if ($oAttDef->GetEditClass() == 'Document') {
|
||||
/** @var \ormDocument $oDocument */
|
||||
$oDocument = $this->Get($sAttCode);
|
||||
if (!$oDocument->IsEmpty()) {
|
||||
if (is_object($oDocument) && !$oDocument->IsEmpty()) {
|
||||
$sFieldAsHtml = $this->GetAsHTML($sAttCode);
|
||||
|
||||
$sDisplayLabel = Dict::S('UI:OpenDocumentInNewWindow_');
|
||||
@@ -4580,6 +4583,8 @@ HTML;
|
||||
/** @var \iApplicationObjectExtension $oExtensionInstance */
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnDBInsert()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$oExtensionInstance->OnDBInsert($oNewObj, self::GetCurrentChange());
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBInsert');
|
||||
@@ -4591,6 +4596,7 @@ HTML;
|
||||
public function DBUpdate()
|
||||
{
|
||||
$this->LogCRUDEnter(__METHOD__);
|
||||
$res = 0;
|
||||
|
||||
try {
|
||||
if (count($this->ListChanges()) === 0) {
|
||||
@@ -4651,6 +4657,7 @@ HTML;
|
||||
if (static::IsCrudStackEmpty()) {
|
||||
// Avoid signaling the current object that links were modified
|
||||
static::RemoveObjectAwaitingEventDbLinksChanged(get_class($this), $this->GetKey());
|
||||
$this->LogCRUDDebug(__METHOD__, var_export(self::$aObjectsAwaitingEventDbLinksChanged, true));
|
||||
static::FireEventDbLinksChangedForAllObjects();
|
||||
}
|
||||
}
|
||||
@@ -4659,6 +4666,26 @@ HTML;
|
||||
return $oDeletionPlan;
|
||||
}
|
||||
|
||||
final protected function PreDeleteActions(): void
|
||||
{
|
||||
/** @var \iApplicationObjectExtension $oExtensionInstance */
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnDBDelete()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$oExtensionInstance->OnDBDelete($this, self::GetCurrentChange());
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBDelete');
|
||||
}
|
||||
|
||||
parent::PreDeleteActions();
|
||||
}
|
||||
|
||||
final protected function PostDeleteActions(): void
|
||||
{
|
||||
parent::PostDeleteActions();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 3.1.1 3.2.0 N°6967 We will have only one DBDelete method in the future
|
||||
*/
|
||||
@@ -4668,6 +4695,8 @@ HTML;
|
||||
/** @var \iApplicationObjectExtension $oExtensionInstance */
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnDBDelete()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$oExtensionInstance->OnDBDelete($this, self::GetCurrentChange());
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBDelete');
|
||||
@@ -4689,6 +4718,7 @@ HTML;
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnIsModified()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$bIsModified = $oExtensionInstance->OnIsModified($this);
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnIsModified');
|
||||
@@ -4748,6 +4778,8 @@ HTML;
|
||||
/** @var \iApplicationObjectExtension $oExtensionInstance */
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnCheckToWrite()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$aNewIssues = $oExtensionInstance->OnCheckToWrite($this);
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnCheckToWrite');
|
||||
@@ -4798,6 +4830,8 @@ HTML;
|
||||
/** @var \iApplicationObjectExtension $oExtensionInstance */
|
||||
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
|
||||
{
|
||||
$sExtensionClass = get_class($oExtensionInstance);
|
||||
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnCheckToDelete()");
|
||||
$oKPI = new ExecutionKPI();
|
||||
$aNewIssues = $oExtensionInstance->OnCheckToDelete($this);
|
||||
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnCheckToDelete');
|
||||
@@ -5924,7 +5958,7 @@ JS
|
||||
final protected function FireEventAfterWrite(array $aChanges, bool $bIsNew): void
|
||||
{
|
||||
$this->NotifyAttachedObjectsOnLinkClassModification();
|
||||
$this->FireEventDbLinksChangedForCurrentObject();
|
||||
$this->RemoveObjectAwaitingEventDbLinksChanged(get_class($this), $this->GetKey());
|
||||
$this->FireEvent(EVENT_DB_AFTER_WRITE, ['is_new' => $bIsNew, 'changes' => $aChanges]);
|
||||
}
|
||||
|
||||
@@ -5944,6 +5978,16 @@ JS
|
||||
$this->FireEvent(EVENT_DB_CHECK_TO_DELETE, ['deletion_plan' => $oDeletionPlan]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @throws \CoreException
|
||||
* @since 3.1.2
|
||||
*/
|
||||
final protected function FireEventAboutToDelete(): void
|
||||
{
|
||||
$this->FireEvent(EVENT_DB_ABOUT_TO_DELETE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @throws \CoreException
|
||||
@@ -5953,7 +5997,6 @@ JS
|
||||
final protected function FireEventAfterDelete(): void
|
||||
{
|
||||
$this->NotifyAttachedObjectsOnLinkClassModification();
|
||||
$this->FireEventDbLinksChangedForCurrentObject();
|
||||
$this->FireEvent(EVENT_DB_AFTER_DELETE);
|
||||
}
|
||||
|
||||
@@ -5986,13 +6029,16 @@ JS
|
||||
}
|
||||
|
||||
$sTargetObjectId = $this->Get($sExternalKeyAttCode);
|
||||
$sTargetClass = $oAttDef->GetTargetClass();
|
||||
if ($sTargetObjectId > 0) {
|
||||
self::RegisterObjectAwaitingEventDbLinksChanged($oAttDef->GetTargetClass(), $sTargetObjectId);
|
||||
$this->LogCRUDDebug(__METHOD__, "Add $sTargetClass:$sTargetObjectId for DBLINKS_CHANGED");
|
||||
self::RegisterObjectAwaitingEventDbLinksChanged($sTargetClass, $sTargetObjectId);
|
||||
}
|
||||
|
||||
$sPreviousTargetObjectId = $aPreviousValues[$sExternalKeyAttCode] ?? 0;
|
||||
if ($sPreviousTargetObjectId > 0) {
|
||||
self::RegisterObjectAwaitingEventDbLinksChanged($oAttDef->GetTargetClass(), $sPreviousTargetObjectId);
|
||||
$this->LogCRUDDebug(__METHOD__, "Add $sTargetClass:$sPreviousTargetObjectId for DBLINKS_CHANGED");
|
||||
self::RegisterObjectAwaitingEventDbLinksChanged($sTargetClass, $sPreviousTargetObjectId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6025,26 +6071,6 @@ JS
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire the EVENT_DB_LINKS_CHANGED event if current object is registered
|
||||
*
|
||||
* @return void
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
*
|
||||
* @since 3.1.0 N°5906
|
||||
*/
|
||||
final protected function FireEventDbLinksChangedForCurrentObject(): void
|
||||
{
|
||||
if (true === static::IsEventDBLinksChangedBlocked()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$sClass = get_class($this);
|
||||
$sId = $this->GetKey();
|
||||
self::FireEventDbLinksChangedForClassId($sClass, $sId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire the EVENT_DB_LINKS_CHANGED event if given object is registered, and unregister it
|
||||
*
|
||||
@@ -6074,17 +6100,22 @@ JS
|
||||
// We want to avoid launching the listener twice, first here, and secondly after saving the Ticket in the listener
|
||||
// By disabling the event to be fired, we can remove the current object from the attribute !
|
||||
$oObject = MetaModel::GetObject($sClass, $sId, false);
|
||||
self::FireEventDbLinksChangedForObject($oObject);
|
||||
self::RemoveObjectAwaitingEventDbLinksChanged($sClass, $sId);
|
||||
}
|
||||
|
||||
private static function FireEventDbLinksChangedForObject(DBObject $oObject)
|
||||
{
|
||||
self::SetEventDBLinksChangedBlocked(true);
|
||||
// N°6408 The object can have been deleted
|
||||
if (!is_null($oObject)) {
|
||||
self::SetEventDBLinksChangedBlocked(true);
|
||||
MetaModel::StartReentranceProtection($oObject);
|
||||
$oObject->FireEvent(EVENT_DB_LINKS_CHANGED);
|
||||
MetaModel::StopReentranceProtection($oObject);
|
||||
|
||||
// Update the object if needed
|
||||
if (count($oObject->ListChanges()) !== 0) {
|
||||
$oObject->DBUpdate();
|
||||
}
|
||||
}
|
||||
self::RemoveObjectAwaitingEventDbLinksChanged($sClass, $sId);
|
||||
cmdbAbstractObject::SetEventDBLinksChangedBlocked(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +187,9 @@
|
||||
</menus>
|
||||
<events>
|
||||
<event id="EVENT_DB_BEFORE_WRITE" _delta="define">
|
||||
<description>An object is about to be written into the database. The object can be modified.</description>
|
||||
<name>Before create or update</name>
|
||||
<description><![CDATA[An object is about to be written into the database.
|
||||
The object can be modified.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -208,7 +210,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_CHECK_TO_WRITE" _delta="define">
|
||||
<description>Check an object before it is written into the database (no change possible). Call DBObject::AddCheckIssue() to signal an issue</description>
|
||||
<name>Check to write</name>
|
||||
<description><![CDATA[Check an object before it is written into the database (no change possible).
|
||||
Call $this->AddCheckIssue() to signal an issue.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -229,7 +233,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_AFTER_WRITE" _delta="define">
|
||||
<description>An object has been written into the database. The modifications can be propagated to other objects.</description>
|
||||
<name>After create or update</name>
|
||||
<description><![CDATA[An object has been written into the database.
|
||||
The modifications can be propagated to other objects.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -244,7 +250,7 @@
|
||||
<type>boolean</type>
|
||||
</event_datum>
|
||||
<event_datum id="changes">
|
||||
<description>For updates, the list of changes done during this operation</description>
|
||||
<description><![CDATA[For updates, the list of changes done during this operation]]></description>
|
||||
<type>array</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
@@ -254,7 +260,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_CHECK_TO_DELETE" _delta="define">
|
||||
<description>Check an object before it is deleted from the database. Call DBObject::AddDeleteIssue() to signal an issue</description>
|
||||
<name>Check to delete</name>
|
||||
<description><![CDATA[Check an object before it is deleted from the database.
|
||||
Call $this->AddDeleteIssue() to signal an issue.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -270,8 +278,27 @@
|
||||
</event_datum>
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_ABOUT_TO_DELETE" _delta="define">
|
||||
<name>Before delete</name>
|
||||
<description><![CDATA[An object is about to be deleted from the database]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
<replaces>cmdbAbstractObject::OnDelete</replaces>
|
||||
<event_data>
|
||||
<event_datum id="object">
|
||||
<description>The object about to be deleted</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
<description>Debug string</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_AFTER_DELETE" _delta="define">
|
||||
<description>An object has been deleted into the database</description>
|
||||
<name>After delete</name>
|
||||
<description><![CDATA[An object has been deleted into the database]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -287,8 +314,10 @@
|
||||
</event_datum>
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_BEFORE_APPLY_STIMULUS" _delta="define">
|
||||
<description>A stimulus is about to be applied to an object</description>
|
||||
<event id="EVENT_ENUM_TRANSITIONS" _delta="define">
|
||||
<name>Enum transitions</name>
|
||||
<description><![CDATA[Manage the allowed transitions in current object state.
|
||||
The only action allowed is to deny transitions with $this->DenyTransition()]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -297,89 +326,9 @@
|
||||
<description>The object where the stimulus is targeted</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="stimulus">
|
||||
<description>Current stimulus applied</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="previous_state">
|
||||
<description>Object previous state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="new_state">
|
||||
<description>Object new state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="save_object">
|
||||
<description>The object must be saved in the database</description>
|
||||
<type>boolean</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
<description>Debug string</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_AFTER_APPLY_STIMULUS" _delta="define">
|
||||
<description>A stimulus has been applied to an object</description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
<event_data>
|
||||
<event_datum id="object">
|
||||
<description>The object where the stimulus is targeted</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="stimulus">
|
||||
<description>Current stimulus applied</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="previous_state">
|
||||
<description>Object previous state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="new_state">
|
||||
<description>Object new state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="save_object">
|
||||
<description>The object is asked to be saved in the database</description>
|
||||
<type>boolean</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
<description>Debug string</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_APPLY_STIMULUS_FAILED" _delta="define">
|
||||
<description>A stimulus has failed</description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
<event_data>
|
||||
<event_datum id="action">
|
||||
<description>The action that failed to apply the stimulus</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="object">
|
||||
<description>The object where the stimulus is targeted</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="stimulus">
|
||||
<description>Current stimulus applied</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="previous_state">
|
||||
<description>Object previous state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="new_state">
|
||||
<description>Object new state</description>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="save_object">
|
||||
<description>The object must be saved in the database</description>
|
||||
<type>boolean</type>
|
||||
<event_datum id="allowed_stimuli">
|
||||
<description>The list of available stimuli in the current state</description>
|
||||
<type>array</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
<description>Debug string</description>
|
||||
@@ -388,7 +337,8 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_LINKS_CHANGED" _delta="define">
|
||||
<description>At least one link class was changed</description>
|
||||
<name>Links on object have changed</name>
|
||||
<description><![CDATA[At least one link class was changed]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -404,7 +354,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_OBJECT_RELOAD" _delta="define">
|
||||
<description>An object has been re-loaded from the database</description>
|
||||
<name>Object reload</name>
|
||||
<internal>true</internal>
|
||||
<description><![CDATA[An object has been re-loaded from the database]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -420,7 +372,8 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_COMPUTE_VALUES" _delta="define">
|
||||
<description>An object needs to be recomputed after changes</description>
|
||||
<name>Recompute object values</name>
|
||||
<description><![CDATA[An object needs to be recomputed after changes]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -437,7 +390,8 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_ARCHIVE" _delta="define">
|
||||
<description>An object has been archived</description>
|
||||
<name>Object archived</name>
|
||||
<description><![CDATA[An object has been archived]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -453,7 +407,8 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_UNARCHIVE" _delta="define">
|
||||
<description>An object has been unarchived</description>
|
||||
<name>Object unarchived</name>
|
||||
<description><![CDATA[An object has been unarchived]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -469,7 +424,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_SET_ATTRIBUTES_FLAGS" _delta="define">
|
||||
<description>Set object attributes flags. Call cmdbAbstractObject::AddAttributeFlags() for all the attributes to be set for this target state.</description>
|
||||
<name>Set attributes flags</name>
|
||||
<description><![CDATA[Set object attributes flags.
|
||||
Call $this->AddAttributeFlags() for all the attributes to be set for this target state.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -480,7 +437,7 @@
|
||||
</event_datum>
|
||||
<event_datum id="target_state">
|
||||
<description>The target state in which to evaluate the flags</description>
|
||||
<type>array</type>
|
||||
<type>string</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
<description>Debug string</description>
|
||||
@@ -489,7 +446,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DB_SET_INITIAL_ATTRIBUTES_FLAGS" _delta="define">
|
||||
<description>Set object initial attributes flags. Call cmdbAbstractObject::AddInitialAttributeFlags() for all the initial attributes to be set initially.</description>
|
||||
<name>Set initial attributes flags</name>
|
||||
<description><![CDATA[Set object initial attributes flags.
|
||||
Call $this->AddInitialAttributeFlags() for all the initial attributes to be set initially.]]></description>
|
||||
<sources>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
@@ -505,7 +464,8 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_DOWNLOAD_DOCUMENT" _delta="define">
|
||||
<description>A document has been downloaded from the GUI</description>
|
||||
<name>Document downloaded</name>
|
||||
<description><![CDATA[A document has been downloaded from the GUI]]></description>
|
||||
<sources>
|
||||
<source id="Document">Document</source>
|
||||
</sources>
|
||||
@@ -525,7 +485,9 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_LOGIN" _delta="define">
|
||||
<description>Inform the listeners about the connection states</description>
|
||||
<name>Login</name>
|
||||
<internal>true</internal>
|
||||
<description><![CDATA[Inform the listeners about the connection states]]></description>
|
||||
<event_data>
|
||||
<event_datum id="code">
|
||||
<description>The login step result code (LoginWebPage::EXIT_CODE_...) </description>
|
||||
|
||||
@@ -704,7 +704,7 @@ class DisplayBlock
|
||||
if ($bDoSearch)
|
||||
{
|
||||
// Keep the table_id identifying this table if we're performing a search
|
||||
$sTableId = utils::ReadParam('_table_id_', null, false, 'raw_data');
|
||||
$sTableId = utils::ReadParam('_table_id_', null, false, utils::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER);
|
||||
if ($sTableId != null)
|
||||
{
|
||||
$aExtraParams['table_id'] = $sTableId;
|
||||
|
||||
@@ -60,6 +60,24 @@ class CoreCannotSaveObjectException extends CoreException
|
||||
return $sContent;
|
||||
}
|
||||
|
||||
public function getTextMessage()
|
||||
{
|
||||
$sTitle = Dict::S('UI:Error:SaveFailed');
|
||||
$sContent = utils::HtmlEntities($sTitle);
|
||||
|
||||
if (count($this->aIssues) == 1) {
|
||||
$sIssue = reset($this->aIssues);
|
||||
$sContent .= utils::HtmlEntities($sIssue);
|
||||
} else {
|
||||
foreach ($this->aIssues as $sError) {
|
||||
$sContent .= " ".utils::HtmlEntities($sError).", ";
|
||||
}
|
||||
}
|
||||
|
||||
return $sContent;
|
||||
}
|
||||
|
||||
|
||||
public function getIssues()
|
||||
{
|
||||
return $this->aIssues;
|
||||
|
||||
@@ -119,6 +119,11 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
|
||||
protected function OnConnected(&$iErrorCode)
|
||||
{
|
||||
Session::Unset('login_temp_auth_user');
|
||||
if (is_null(UserRights::GetUserObject())){
|
||||
//N°7085 avoid infinite loop
|
||||
IssueLog::Error("No user logged in. exit");
|
||||
exit(-1);
|
||||
}
|
||||
return LoginWebPage::LOGIN_FSM_CONTINUE;
|
||||
}
|
||||
|
||||
@@ -134,4 +139,4 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ class LoginWebPage extends NiceWebPage
|
||||
parent::__construct($sTitle);
|
||||
$this->SetStyleSheet();
|
||||
$this->no_cache();
|
||||
$this->add_xframe_options();
|
||||
$this->add_http_headers();
|
||||
}
|
||||
|
||||
public function SetStyleSheet()
|
||||
|
||||
@@ -71,15 +71,16 @@ class UIHTMLEditorWidget
|
||||
// To change the default settings of the editor,
|
||||
// a) edit the file /js/ckeditor/config.js
|
||||
// b) or override some of the configuration settings, using the second parameter of ckeditor()
|
||||
$sJSDefineWidth = '';
|
||||
$aConfig = utils::GetCkeditorPref();
|
||||
$sWidthSpec = addslashes(trim($this->m_oAttDef->GetWidth()));
|
||||
if ($sWidthSpec != '')
|
||||
{
|
||||
$aConfig['width'] = $sWidthSpec;
|
||||
if ($sWidthSpec != '') {
|
||||
/*N°6543 - the function min allow to keep text inside the column when width is defined*/
|
||||
$aConfig['width'] = "min($sWidthSpec,100%)";
|
||||
$sJSDefineWidth = '$("#cke_'.$iId.' iframe").contents().find("body").css("width", "'.$sWidthSpec.'")';
|
||||
}
|
||||
$sHeightSpec = addslashes(trim($this->m_oAttDef->GetHeight()));
|
||||
if ($sHeightSpec != '')
|
||||
{
|
||||
if ($sHeightSpec != '') {
|
||||
$aConfig['height'] = $sHeightSpec;
|
||||
}
|
||||
$sConfigJS = json_encode($aConfig);
|
||||
@@ -110,6 +111,7 @@ $('#$iId').on('update', function(evt){
|
||||
else
|
||||
{
|
||||
oMe.data('ckeditorInstance').setReadOnly(oMe.prop('disabled'));
|
||||
$sJSDefineWidth
|
||||
}
|
||||
};
|
||||
setTimeout(delayedSetReadOnly, 50);
|
||||
|
||||
@@ -109,6 +109,11 @@ class utils
|
||||
* @since 2.7.10 3.0.0
|
||||
*/
|
||||
public const ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER = 'element_identifier';
|
||||
/**
|
||||
* @var string For XML / HTML node id/class selector
|
||||
* @since 3.1.2 3.2.1
|
||||
*/
|
||||
public const ENUM_SANITIZATION_FILTER_ELEMENT_SELECTOR = 'element_selector';
|
||||
/**
|
||||
* @var string For variables names
|
||||
* @since 3.0.0
|
||||
@@ -238,13 +243,8 @@ class utils
|
||||
|
||||
public static function IsModeCLI()
|
||||
{
|
||||
$sSAPIName = php_sapi_name();
|
||||
$sCleanName = strtolower(trim($sSAPIName));
|
||||
if ($sCleanName == 'cli') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
$sCleanName = strtolower(trim(PHP_SAPI));
|
||||
return ($sCleanName === 'cli');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -367,13 +367,13 @@ class utils
|
||||
}
|
||||
return self::Sanitize($retValue, $defaultValue, $sSanitizationFilter);
|
||||
}
|
||||
|
||||
|
||||
public static function ReadPostedParam($sName, $defaultValue = '', $sSanitizationFilter = 'parameter')
|
||||
{
|
||||
$retValue = isset($_POST[$sName]) ? $_POST[$sName] : $defaultValue;
|
||||
return self::Sanitize($retValue, $defaultValue, $sSanitizationFilter);
|
||||
}
|
||||
|
||||
|
||||
public static function Sanitize($value, $defaultValue, $sSanitizationFilter)
|
||||
{
|
||||
if ($value === $defaultValue)
|
||||
@@ -389,7 +389,7 @@ class utils
|
||||
$retValue = $defaultValue;
|
||||
}
|
||||
}
|
||||
return $retValue;
|
||||
return $retValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -494,8 +494,17 @@ class utils
|
||||
}
|
||||
break;
|
||||
|
||||
// For XML / HTML node identifiers
|
||||
case static::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER:
|
||||
$retValue = preg_replace('/[^a-zA-Z0-9_-]/', '', $value);
|
||||
$retValue = filter_var($retValue, FILTER_VALIDATE_REGEXP,
|
||||
['options' => ['regexp' => '/^[A-Za-z0-9][A-Za-z0-9_-]*$/']]);
|
||||
break;
|
||||
|
||||
// For XML / HTML node id selector
|
||||
case static::ENUM_SANITIZATION_FILTER_ELEMENT_SELECTOR:
|
||||
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
|
||||
['options' => ['regexp' => '/^[#\.][A-Za-z0-9][A-Za-z0-9_-]*$/']]);
|
||||
break;
|
||||
|
||||
case static::ENUM_SANITIZATION_FILTER_VARIABLE_NAME:
|
||||
@@ -545,11 +554,11 @@ class utils
|
||||
$sMimeType = self::GetFileMimeType($sTmpName);
|
||||
$oDocument = new ormDocument($doc_content, $sMimeType, $sName);
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
// no file to load, it's a normal case, just return an empty document
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadedFileTooBig', ini_get('upload_max_filesize')));
|
||||
@@ -558,7 +567,7 @@ class utils
|
||||
case UPLOAD_ERR_PARTIAL:
|
||||
throw new FileUploadException(Dict::S('UI:Error:UploadedFileTruncated.'));
|
||||
break;
|
||||
|
||||
|
||||
case UPLOAD_ERR_NO_TMP_DIR:
|
||||
throw new FileUploadException(Dict::S('UI:Error:NoTmpDir'));
|
||||
break;
|
||||
@@ -571,7 +580,7 @@ class utils
|
||||
$sName = is_null($sIndex) ? $aFileInfo['name'] : $aFileInfo['name'][$sIndex];
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadStoppedByExtension_FileName', $sName));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
throw new FileUploadException(Dict::Format('UI:Error:UploadFailedUnknownCause_Code', $sError));
|
||||
break;
|
||||
@@ -677,17 +686,17 @@ class utils
|
||||
|
||||
return $aSelectedObj;
|
||||
}
|
||||
|
||||
|
||||
public static function GetNewTransactionId()
|
||||
{
|
||||
return privUITransaction::GetNewTransactionId();
|
||||
}
|
||||
|
||||
|
||||
public static function IsTransactionValid($sId, $bRemoveTransaction = true)
|
||||
{
|
||||
return privUITransaction::IsTransactionValid($sId, $bRemoveTransaction);
|
||||
}
|
||||
|
||||
|
||||
public static function RemoveTransaction($sId)
|
||||
{
|
||||
return privUITransaction::RemoveTransaction($sId);
|
||||
@@ -871,9 +880,9 @@ class utils
|
||||
$aDateTokens = array_keys($aSpec);
|
||||
$aDateRegexps = array_values($aSpec);
|
||||
}
|
||||
|
||||
|
||||
$sDateRegexp = str_replace($aDateTokens, $aDateRegexps, $sFormat);
|
||||
|
||||
|
||||
if (preg_match('!^(?<head>)'.$sDateRegexp.'(?<tail>)$!', $sDate, $aMatches))
|
||||
{
|
||||
$sYear = isset($aMatches['year']) ? $aMatches['year'] : 0;
|
||||
@@ -890,7 +899,7 @@ class utils
|
||||
}
|
||||
// http://www.spaweditor.com/scripts/regex/index.php
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert an old date/time format specification (using % placeholders)
|
||||
* to a format compatible with DateTime::createFromFormat
|
||||
@@ -1488,7 +1497,7 @@ class utils
|
||||
$aResult = [];
|
||||
|
||||
// 1st - add standard built-in menu items
|
||||
//
|
||||
//
|
||||
switch($iMenuId)
|
||||
{
|
||||
case iPopupMenuExtension::MENU_OBJLIST_ACTIONS:
|
||||
@@ -1872,7 +1881,7 @@ SQL;
|
||||
return $sProposed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Some characters cause troubles with jQuery when used inside DOM IDs, so let's replace them by the safe _ (underscore)
|
||||
* @param string $sId The ID to sanitize
|
||||
@@ -1882,7 +1891,7 @@ SQL;
|
||||
{
|
||||
return str_replace(array(':', '[', ']', '+', '-', ' '), '_', $sId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to execute an HTTP POST request, uses CURL PHP extension
|
||||
*
|
||||
@@ -1967,7 +1976,7 @@ SQL;
|
||||
|
||||
/**
|
||||
* Get a standard list of character sets
|
||||
*
|
||||
*
|
||||
* @param array $aAdditionalEncodings Additional values
|
||||
* @return array of iconv code => english label, sorted by label
|
||||
*/
|
||||
@@ -2074,7 +2083,7 @@ SQL;
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert (?) plain text to some HTML markup by replacing newlines by <br/> tags
|
||||
* and escaping HTML entities
|
||||
@@ -2091,7 +2100,7 @@ SQL;
|
||||
|
||||
return str_replace("\n", '<br/>', utils::EscapeHtml($sText));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Eventually compiles the SASS (.scss) file into the CSS (.css) file
|
||||
*
|
||||
@@ -2205,7 +2214,7 @@ SQL;
|
||||
case 'image/png':
|
||||
$img = @imagecreatefromstring($oImage->GetData());
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
// Unsupported image type, return the image as-is
|
||||
//throw new Exception("Unsupported image type: '".$oImage->GetMimeType()."'. Cannot resize the image, original image will be used.");
|
||||
@@ -2219,14 +2228,14 @@ SQL;
|
||||
else
|
||||
{
|
||||
// Let's scale the image, preserving the transparency for GIFs and PNGs
|
||||
|
||||
|
||||
$fScale = min($iMaxImageWidth / $iWidth, $iMaxImageHeight / $iHeight);
|
||||
|
||||
$iNewWidth = $iWidth * $fScale;
|
||||
$iNewHeight = $iHeight * $fScale;
|
||||
|
||||
|
||||
$new = imagecreatetruecolor($iNewWidth, $iNewHeight);
|
||||
|
||||
|
||||
// Preserve transparency
|
||||
if(($oImage->GetMimeType() == "image/gif") || ($oImage->GetMimeType() == "image/png"))
|
||||
{
|
||||
@@ -2234,38 +2243,38 @@ SQL;
|
||||
imagealphablending($new, false);
|
||||
imagesavealpha($new, true);
|
||||
}
|
||||
|
||||
|
||||
imagecopyresampled($new, $img, 0, 0, 0, 0, $iNewWidth, $iNewHeight, $iWidth, $iHeight);
|
||||
|
||||
|
||||
ob_start();
|
||||
switch ($oImage->GetMimeType())
|
||||
{
|
||||
case 'image/gif':
|
||||
imagegif($new); // send image to output buffer
|
||||
break;
|
||||
|
||||
|
||||
case 'image/jpeg':
|
||||
imagejpeg($new, null, 80); // null = send image to output buffer, 80 = good quality
|
||||
break;
|
||||
|
||||
|
||||
case 'image/png':
|
||||
imagepng($new, null, 5); // null = send image to output buffer, 5 = medium compression
|
||||
break;
|
||||
}
|
||||
$oResampledImage = new ormDocument(ob_get_contents(), $oImage->GetMimeType(), $oImage->GetFileName());
|
||||
@ob_end_clean();
|
||||
|
||||
|
||||
imagedestroy($img);
|
||||
imagedestroy($new);
|
||||
|
||||
|
||||
return $oResampledImage;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a 128 bit UUID in the format: {########-####-####-####-############}
|
||||
*
|
||||
*
|
||||
* Note: this method can be run from the command line as well as from the web server.
|
||||
* Note2: this method is not cryptographically secure! If you need a cryptographically secure value
|
||||
* consider using open_ssl or PHP 7 methods.
|
||||
@@ -2303,7 +2312,7 @@ SQL;
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleName($iCallDepth + 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* **Warning** : returned result can be invalid as we're using backtrace to find the module dir name
|
||||
*
|
||||
@@ -2340,7 +2349,7 @@ SQL;
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleUrl(1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $sProperty The name of the property to retrieve
|
||||
* @param mixed $defaultvalue
|
||||
@@ -2350,7 +2359,7 @@ SQL;
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCurrentModuleSetting($sProperty, $defaultvalue);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $sModuleName
|
||||
* @return string|NULL compiled version of a given module, as it was seen by the compiler
|
||||
@@ -2359,7 +2368,7 @@ SQL;
|
||||
{
|
||||
return ModuleService::GetInstance()->GetCompiledModuleVersion($sModuleName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the given path/url is an http(s) URL
|
||||
* @param string $sPath
|
||||
@@ -2374,7 +2383,7 @@ SQL;
|
||||
}
|
||||
return $bRet;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the given URL is a link to download a document/image on the CURRENT iTop
|
||||
* In such a case we can read the content of the file directly in the database (if the users rights allow) and return the ormDocument
|
||||
@@ -2423,7 +2432,7 @@ SQL;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read the content of a file (and retrieve its MIME type) from either:
|
||||
* - an URL pointing to a blob (image/document) on the current iTop server
|
||||
@@ -2467,7 +2476,7 @@ SQL;
|
||||
'html' => 'text/html',
|
||||
'exe' => 'application/octet-stream',
|
||||
);
|
||||
|
||||
|
||||
$sData = null;
|
||||
$sMimeType = 'text/plain'; // Default MIME Type: treat the file as a bunch a characters...
|
||||
$sFileName = 'uploaded-file'; // Default name for downloaded-files
|
||||
@@ -2525,7 +2534,7 @@ SQL;
|
||||
}
|
||||
$sExtension = strtolower(pathinfo($sPath, PATHINFO_EXTENSION));
|
||||
$sFileName = basename($sPath);
|
||||
|
||||
|
||||
if (array_key_exists($sExtension, $aKnownExtensions))
|
||||
{
|
||||
$sMimeType = $aKnownExtensions[$sExtension];
|
||||
@@ -2539,7 +2548,7 @@ SQL;
|
||||
}
|
||||
return $oUploadedDoc;
|
||||
}
|
||||
|
||||
|
||||
protected static function ParseHeaders($aHeaders)
|
||||
{
|
||||
$aCleanHeaders = array();
|
||||
@@ -2564,7 +2573,7 @@ SQL;
|
||||
}
|
||||
return $aCleanHeaders;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string a string based on compilation time or (if not available because the datamodel has not been loaded)
|
||||
* the version of iTop. This string is useful to prevent browser side caching of content that may vary at each
|
||||
|
||||
@@ -23,7 +23,7 @@ define('ITOP_DESIGN_LATEST_VERSION', '3.1');
|
||||
* @used-by utils::GetItopVersionWikiSyntax()
|
||||
* @used-by iTopModulesPhpVersionIntegrationTest
|
||||
*/
|
||||
define('ITOP_CORE_VERSION', '3.1.1');
|
||||
define('ITOP_CORE_VERSION', '3.1.2');
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
||||
@@ -68,7 +68,7 @@ if (file_exists(MAINTENANCE_MODE_FILE) && !$bBypassMaintenance)
|
||||
http_response_code(503);
|
||||
// Display message depending on the request
|
||||
include(APPROOT.'application/maintenancemsg.php');
|
||||
$sSAPIName = strtoupper(trim(php_sapi_name()));
|
||||
$sSAPIName = strtoupper(trim(PHP_SAPI));
|
||||
|
||||
switch (true)
|
||||
{
|
||||
|
||||
@@ -629,9 +629,7 @@ class ActionEmail extends ActionNotification
|
||||
$oLog->Set('body', HTMLSanitizer::Sanitize($aMessageContent['body']));
|
||||
}
|
||||
}
|
||||
$sStyles = file_get_contents(APPROOT.'css/email.css');
|
||||
$sStyles .= MetaModel::GetConfig()->Get('email_css');
|
||||
|
||||
|
||||
if ($this->IsBeingTested()) {
|
||||
$sTestBody = $aMessageContent['body'];
|
||||
$sTestBody .= "<div style=\"border: dashed;\">\n";
|
||||
|
||||
@@ -60,14 +60,15 @@ function apc_store($key, $var = NULL, $ttl = 0)
|
||||
*/
|
||||
function apc_fetch($key)
|
||||
{
|
||||
if (is_array($key))
|
||||
{
|
||||
$aResult = array();
|
||||
foreach($key as $sKey)
|
||||
{
|
||||
if (is_array($key)) {
|
||||
$aResult = [];
|
||||
foreach ($key as $sKey) {
|
||||
$aResult[$sKey] = apcFile::FetchOneFile($sKey);
|
||||
}
|
||||
|
||||
return $aResult;
|
||||
} elseif (is_null($key)) {
|
||||
return false;
|
||||
}
|
||||
return apcFile::FetchOneFile($key);
|
||||
}
|
||||
@@ -211,21 +212,16 @@ class apcFile
|
||||
*/
|
||||
static public function StoreOneFile($sKey, $value, $iTTL)
|
||||
{
|
||||
if (empty($sKey))
|
||||
{
|
||||
if (empty($sKey)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_file(self::GetCacheFileName($sKey)))
|
||||
{
|
||||
if (is_file(self::GetCacheFileName($sKey))) {
|
||||
@unlink(self::GetCacheFileName($sKey));
|
||||
}
|
||||
if (is_file(self::GetCacheFileName('-'.$sKey)))
|
||||
{
|
||||
if (is_file(self::GetCacheFileName('-'.$sKey))) {
|
||||
@unlink(self::GetCacheFileName('-'.$sKey));
|
||||
}
|
||||
if ($iTTL > 0)
|
||||
{
|
||||
if ($iTTL > 0) {
|
||||
// hint for ttl management
|
||||
$sKey = '-'.$sKey;
|
||||
}
|
||||
@@ -233,15 +229,14 @@ class apcFile
|
||||
$sFilename = self::GetCacheFileName($sKey);
|
||||
// try to create the folder
|
||||
$sDirname = dirname($sFilename);
|
||||
if (!file_exists($sDirname))
|
||||
{
|
||||
if (!@mkdir($sDirname, 0755, true))
|
||||
{
|
||||
if (!is_dir($sDirname)) {
|
||||
if (!@mkdir($sDirname, 0755, true)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$bRes = !(@file_put_contents($sFilename, serialize($value), LOCK_EX) === false);
|
||||
self::AddFile($sFilename);
|
||||
|
||||
return $bRes;
|
||||
}
|
||||
|
||||
@@ -325,19 +320,15 @@ class apcFile
|
||||
*/
|
||||
static protected function ReadCacheLocked($sFilename)
|
||||
{
|
||||
if (!is_file($sFilename))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$sContent = false;
|
||||
$file = @fopen($sFilename, 'r');
|
||||
if ($file === false)
|
||||
{
|
||||
return false;
|
||||
if ($file !== false) {
|
||||
if (flock($file, LOCK_SH)) {
|
||||
$sContent = file_get_contents($sFilename);
|
||||
flock($file, LOCK_UN);
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
flock($file, LOCK_SH);
|
||||
$sContent = @fread($file, @filesize($sFilename));
|
||||
flock($file, LOCK_UN);
|
||||
fclose($file);
|
||||
return $sContent;
|
||||
}
|
||||
|
||||
|
||||
@@ -3061,6 +3061,11 @@ class AttributeObjectKey extends AttributeDBFieldVoid
|
||||
return ((int) $proposedValue) !== 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*
|
||||
* @param int|DBObject $proposedValue Object key or valid ({@see MetaModel::IsValidObject()}) datamodel object
|
||||
*/
|
||||
public function MakeRealValue($proposedValue, $oHostObj)
|
||||
{
|
||||
if (is_null($proposedValue))
|
||||
@@ -3073,7 +3078,6 @@ class AttributeObjectKey extends AttributeDBFieldVoid
|
||||
}
|
||||
if (MetaModel::IsValidObject($proposedValue))
|
||||
{
|
||||
/** @var \DBObject $proposedValue */
|
||||
return $proposedValue->GetKey();
|
||||
}
|
||||
|
||||
@@ -4530,7 +4534,6 @@ class AttributeText extends AttributeString
|
||||
$sStyle = '';
|
||||
if (count($aStyles) > 0)
|
||||
{
|
||||
$aStyles[] = 'overflow:auto';
|
||||
$sStyle = 'style="'.implode(';', $aStyles).'"';
|
||||
}
|
||||
|
||||
@@ -6510,6 +6513,11 @@ class AttributeDateTime extends AttributeDBField
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*
|
||||
* @param int|string $proposedValue timestamp ({@see DateTime::getTimestamp()) or date as string, following the {@see GetInternalFormat} format.
|
||||
*/
|
||||
public function MakeRealValue($proposedValue, $oHostObj)
|
||||
{
|
||||
if (is_null($proposedValue))
|
||||
@@ -8299,9 +8307,9 @@ class AttributeBlob extends AttributeDefinition
|
||||
}
|
||||
|
||||
/**
|
||||
* Users can provide the document from an URL (including an URL on iTop itself)
|
||||
* for CSV import. Administrators can even provide the path to a local file
|
||||
* {@inheritDoc}
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @param string $proposedValue Can be an URL (including an URL to iTop itself), or a local path (CSV import)
|
||||
*
|
||||
* @see AttributeDefinition::MakeRealValue()
|
||||
*/
|
||||
@@ -8542,7 +8550,7 @@ class AttributeBlob extends AttributeDefinition
|
||||
$sFingerprint = '';
|
||||
if ($value instanceOf ormDocument)
|
||||
{
|
||||
$sFingerprint = md5($value->GetData());
|
||||
$sFingerprint = $value->GetSignature();
|
||||
}
|
||||
|
||||
return $sFingerprint;
|
||||
@@ -11500,6 +11508,11 @@ class AttributeClassAttCodeSet extends AttributeSet
|
||||
}
|
||||
return '<span class="'.implode(' ', $this->aCSSClasses).'">'.$value.'</span>';
|
||||
}
|
||||
|
||||
public function IsNull($proposedValue)
|
||||
{
|
||||
return (empty($proposedValue));
|
||||
}
|
||||
}
|
||||
|
||||
class AttributeQueryAttCodeSet extends AttributeSet
|
||||
|
||||
@@ -32,11 +32,37 @@ abstract class CellChangeSpec
|
||||
return $this->m_proposedValue;
|
||||
}
|
||||
|
||||
public function GetDisplayableValue()
|
||||
/**
|
||||
* @throws \Exception
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function GetCLIValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (is_object($this->m_proposedValue)) {
|
||||
if ($this->m_proposedValue instanceof ReportValue) {
|
||||
return $this->m_proposedValue->GetAsCSV($bLocalizedValues, ',', '"');
|
||||
}
|
||||
throw new Exception('Unexpected class : '. get_class($this->m_proposedValue));
|
||||
}
|
||||
return $this->m_proposedValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function GetHTMLValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (is_object($this->m_proposedValue)) {
|
||||
if ($this->m_proposedValue instanceof ReportValue) {
|
||||
return $this->m_proposedValue->GetAsHTML($bLocalizedValues);
|
||||
}
|
||||
throw new Exception('Unexpected class : '. get_class($this->m_proposedValue));
|
||||
}
|
||||
return utils::EscapeHtml($this->m_proposedValue);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 3.1.0 N°5305
|
||||
*/
|
||||
@@ -51,12 +77,12 @@ abstract class CellChangeSpec
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.1.0 N°5305
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function GetDisplayableValueAndDescription(): string
|
||||
public function GetCLIValueAndDescription(): string
|
||||
{
|
||||
return sprintf("%s%s",
|
||||
$this->GetDisplayableValue(),
|
||||
$this->GetCLIValue(),
|
||||
$this->GetDescription()
|
||||
);
|
||||
}
|
||||
@@ -105,13 +131,25 @@ class CellStatus_Issue extends CellStatus_Modify
|
||||
parent::__construct($proposedValue, $previousValue);
|
||||
}
|
||||
|
||||
public function GetDisplayableValue()
|
||||
public function GetCLIValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (is_null($this->m_proposedValue)) {
|
||||
return Dict::Format('UI:CSVReport-Value-SetIssue');
|
||||
}
|
||||
return Dict::Format('UI:CSVReport-Value-ChangeIssue',$this->m_proposedValue);
|
||||
}
|
||||
|
||||
public function GetHTMLValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (is_null($this->m_proposedValue))
|
||||
{
|
||||
return Dict::Format('UI:CSVReport-Value-SetIssue');
|
||||
}
|
||||
return Dict::Format('UI:CSVReport-Value-ChangeIssue', \utils::EscapeHtml($this->m_proposedValue));
|
||||
if ($this->m_proposedValue instanceof ReportValue)
|
||||
{
|
||||
return Dict::Format('UI:CSVReport-Value-ChangeIssue', $this->m_proposedValue->GetAsHTML($bLocalizedValues));
|
||||
}
|
||||
return Dict::Format('UI:CSVReport-Value-ChangeIssue',utils::EscapeHtml($this->m_proposedValue));
|
||||
}
|
||||
|
||||
public function GetDescription()
|
||||
@@ -119,12 +157,12 @@ class CellStatus_Issue extends CellStatus_Modify
|
||||
return $this->m_sReason;
|
||||
}
|
||||
/*
|
||||
* @since 3.1.0 N°5305
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function GetDisplayableValueAndDescription(): string
|
||||
public function GetCLIValueAndDescription(): string
|
||||
{
|
||||
return sprintf("%s. %s",
|
||||
$this->GetDisplayableValue(),
|
||||
$this->GetCLIValue(),
|
||||
$this->GetDescription()
|
||||
);
|
||||
}
|
||||
@@ -160,7 +198,7 @@ class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
* @param null $sAllowedValues : used for additional message that provides allowed values $sAllowedValues for current class
|
||||
* @param string|null $sAllowedValuesSearch : used to search all allowed values
|
||||
*/
|
||||
public function __construct($sSerializedSearch, $sReason, $sClass=null, $sAllowedValues=null, string $sAllowedValuesSearch=null)
|
||||
public function __construct($sSerializedSearch, $sReason, $sClass = null, $sAllowedValues = null, string $sAllowedValuesSearch = null)
|
||||
{
|
||||
parent::__construct(null, null, $sReason);
|
||||
$this->sSerializedSearch = $sSerializedSearch;
|
||||
@@ -169,7 +207,7 @@ class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
$this->sAllowedValuesSearch = $sAllowedValuesSearch;
|
||||
}
|
||||
|
||||
public function GetDisplayableValue()
|
||||
public function GetCLIValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (null === $this->m_sReason) {
|
||||
return Dict::Format('UI:CSVReport-Value-NoMatch', '');
|
||||
@@ -178,6 +216,15 @@ class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
return $this->m_sReason;
|
||||
}
|
||||
|
||||
public function GetHTMLValue(bool $bLocalizedValues = false): string
|
||||
{
|
||||
if (null === $this->m_sReason) {
|
||||
return Dict::Format('UI:CSVReport-Value-NoMatch', '');
|
||||
}
|
||||
|
||||
return utils::EscapeHtml($this->m_sReason);
|
||||
}
|
||||
|
||||
public function GetDescription()
|
||||
{
|
||||
if (\utils::IsNullOrEmptyString($this->m_sAllowedValues) ||
|
||||
@@ -195,7 +242,7 @@ class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
public function GetSearchLinkUrl()
|
||||
{
|
||||
return sprintf("UI.php?operation=search&filter=%s",
|
||||
rawurlencode($this->sSerializedSearch)
|
||||
rawurlencode($this->sSerializedSearch ?? "")
|
||||
);
|
||||
}
|
||||
|
||||
@@ -206,7 +253,7 @@ class CellStatus_SearchIssue extends CellStatus_Issue
|
||||
public function GetAllowedValuesLinkUrl(): ?string
|
||||
{
|
||||
return sprintf("UI.php?operation=search&filter=%s",
|
||||
rawurlencode($this->sAllowedValuesSearch)
|
||||
rawurlencode($this->sAllowedValuesSearch ?? "")
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -224,6 +271,42 @@ class CellStatus_NullIssue extends CellStatus_Issue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Class to differ formatting depending on the caller
|
||||
*/
|
||||
class ReportValue
|
||||
{
|
||||
protected DBObject $oObject;
|
||||
protected string $sAttCode;
|
||||
protected bool $bOriginal;
|
||||
|
||||
/**
|
||||
* @param DBObject $oObject
|
||||
* @param string $sAttCode
|
||||
* @param bool $bOriginal
|
||||
*/
|
||||
public function __construct(DBObject $oObject, string $sAttCode, bool $bOriginal)
|
||||
{
|
||||
$this->oObject = $oObject;
|
||||
$this->sAttCode = $sAttCode;
|
||||
$this->bOriginal = $bOriginal;
|
||||
}
|
||||
|
||||
public function GetAsHTML(bool $bLocalizedValues)
|
||||
{
|
||||
if ($this->bOriginal) {
|
||||
return $this->oObject->GetOriginalAsHTML($this->sAttCode, $bLocalizedValues);
|
||||
}
|
||||
return $this->oObject->GetAsHTML($this->sAttCode, $bLocalizedValues);
|
||||
}
|
||||
public function GetAsCSV (bool $bLocalizedValues, string $sCsvSep, string $sCsvDelimiter) {
|
||||
if ($this->bOriginal) {
|
||||
return $this->oObject->GetOriginalAsCSV($this->sAttCode, $sCsvSep, $sCsvDelimiter, $bLocalizedValues);
|
||||
}
|
||||
return $this->oObject->GetAsCSV($this->sAttCode, $sCsvSep, $sCsvDelimiter, $bLocalizedValues);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class CellStatus_Ambiguous extends CellStatus_Issue
|
||||
{
|
||||
@@ -262,7 +345,7 @@ class CellStatus_Ambiguous extends CellStatus_Issue
|
||||
public function GetSearchLinkUrl()
|
||||
{
|
||||
return sprintf("UI.php?operation=search&filter=%s",
|
||||
rawurlencode($this->sSerializedSearch)
|
||||
rawurlencode($this->sSerializedSearch ?? "")
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -410,22 +493,6 @@ class BulkChange
|
||||
$this->m_aExtKeysMappingCache = array();
|
||||
}
|
||||
|
||||
protected $m_bReportHtml = false;
|
||||
protected $m_sReportCsvSep = ',';
|
||||
protected $m_sReportCsvDelimiter = '"';
|
||||
|
||||
public function SetReportHtml()
|
||||
{
|
||||
$this->m_bReportHtml = true;
|
||||
}
|
||||
|
||||
public function SetReportCsv($sSeparator = ',', $sDelimiter = '"')
|
||||
{
|
||||
$this->m_bReportHtml = false;
|
||||
$this->m_sReportCsvSep = $sSeparator;
|
||||
$this->m_sReportCsvDelimiter = $sDelimiter;
|
||||
}
|
||||
|
||||
protected function ResolveExternalKey($aRowData, $sAttCode, &$aResults)
|
||||
{
|
||||
$oExtKey = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
|
||||
@@ -443,7 +510,7 @@ class BulkChange
|
||||
$value = $oForeignAtt->MakeValueFromString($aRowData[$iCol], $this->m_bLocalizedValues);
|
||||
}
|
||||
$oReconFilter->AddCondition($sReconKeyAttCode, $value, '=');
|
||||
$aResults[$iCol] = new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
$aResults[$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
|
||||
$oExtObjects = new CMDBObjectSet($oReconFilter);
|
||||
@@ -467,7 +534,7 @@ class BulkChange
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DBObject $oTargetObj
|
||||
* @param DBObject $oTargetObj
|
||||
* @param array $aRowData
|
||||
* @param array $aErrors
|
||||
*
|
||||
@@ -530,7 +597,7 @@ class BulkChange
|
||||
}
|
||||
$aCacheKeys[] = $value;
|
||||
$oReconFilter->AddCondition($sReconKeyAttCode, $value, '=');
|
||||
$aResults[$iCol] = new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
$aResults[$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
$sCacheKey = implode('_|_', $aCacheKeys); // Unique key for this query...
|
||||
$iForeignKey = null;
|
||||
@@ -599,7 +666,7 @@ class BulkChange
|
||||
foreach ($aReconKeys as $sReconKeyAttCode => $iCol)
|
||||
{
|
||||
// Report the change on reconciliation values as well
|
||||
$aResults[$iCol] = new CellStatus_Modify(utils::HtmlEntities($aRowData[$iCol]));
|
||||
$aResults[$iCol] = new CellStatus_Modify($aRowData[$iCol]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -677,50 +744,32 @@ class BulkChange
|
||||
// Reporting on fields
|
||||
//
|
||||
$aChangedFields = $oTargetObj->ListChanges();
|
||||
foreach ($this->m_aAttList as $sAttCode => $iCol)
|
||||
{
|
||||
if ($sAttCode == 'id')
|
||||
{
|
||||
$aResults[$iCol]= new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
foreach ($this->m_aAttList as $sAttCode => $iCol) {
|
||||
if ($sAttCode == 'id') {
|
||||
$aResults[$iCol]= new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->m_bReportHtml)
|
||||
{
|
||||
$sCurValue = $oTargetObj->GetAsHTML($sAttCode, $this->m_bLocalizedValues);
|
||||
$sOrigValue = $oTargetObj->GetOriginalAsHTML($sAttCode, $this->m_bLocalizedValues);
|
||||
else {
|
||||
$sCurValue = new ReportValue($oTargetObj, $sAttCode, false);
|
||||
$sOrigValue = new ReportValue($oTargetObj, $sAttCode, true);
|
||||
if (isset($aErrors[$sAttCode])) {
|
||||
$aResults[$iCol]= new CellStatus_Issue($aRowData[$iCol], $sOrigValue, $aErrors[$sAttCode]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sCurValue = $oTargetObj->GetAsCSV($sAttCode, $this->m_sReportCsvSep, $this->m_sReportCsvDelimiter, $this->m_bLocalizedValues);
|
||||
$sOrigValue = $oTargetObj->GetOriginalAsCSV($sAttCode, $this->m_sReportCsvSep, $this->m_sReportCsvDelimiter, $this->m_bLocalizedValues);
|
||||
}
|
||||
if (isset($aErrors[$sAttCode]))
|
||||
{
|
||||
$aResults[$iCol]= new CellStatus_Issue(utils::HtmlEntities($aRowData[$iCol]), $sOrigValue, $aErrors[$sAttCode]);
|
||||
}
|
||||
elseif (array_key_exists($sAttCode, $aChangedFields))
|
||||
{
|
||||
if ($oTargetObj->IsNew())
|
||||
{
|
||||
elseif (array_key_exists($sAttCode, $aChangedFields)){
|
||||
if ($oTargetObj->IsNew()) {
|
||||
$aResults[$iCol]= new CellStatus_Void($sCurValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
$aResults[$iCol]= new CellStatus_Modify($sCurValue, $sOrigValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
// By default... nothing happens
|
||||
$oAttDef = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
|
||||
if ($oAttDef instanceof AttributeDateTime)
|
||||
{
|
||||
if ($oAttDef instanceof AttributeDateTime) {
|
||||
$aResults[$iCol]= new CellStatus_Void($oAttDef->GetFormat()->Format($aRowData[$iCol]));
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResults[$iCol]= new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
else {
|
||||
$aResults[$iCol]= new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -785,7 +834,7 @@ class BulkChange
|
||||
// Possibles values are displayed to UI user. we have to limit the amount of displayed values
|
||||
$oExtObjectSetWithCurrentUserPermissions->SetLimit(4);
|
||||
for($i = 0; $i < 3; $i++){
|
||||
/** @var \DBObject $oVisibleObject */
|
||||
/** @var DBObject $oVisibleObject */
|
||||
$oVisibleObject = $oExtObjectSetWithCurrentUserPermissions->Fetch();
|
||||
if (is_null($oVisibleObject)){
|
||||
break;
|
||||
@@ -1152,7 +1201,7 @@ class BulkChange
|
||||
if (!preg_match($sRegExp, $sValue))
|
||||
{
|
||||
$aResult[$iRow]["__STATUS__"]= new RowStatus_Issue(Dict::S('UI:CSVReport-Row-Issue-DateFormat'));
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Issue(utils::HtmlEntities($sValue), null, $sErrorMsg);
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Issue($sValue, null, $sErrorMsg);
|
||||
|
||||
}
|
||||
else
|
||||
@@ -1165,6 +1214,7 @@ class BulkChange
|
||||
}
|
||||
else
|
||||
{
|
||||
// almost impossible ti reproduce since even incorrect dates with correct formats are formated and $oDate will not be false
|
||||
// Leave the cell unchanged
|
||||
$aResult[$iRow]["__STATUS__"]= new RowStatus_Issue(Dict::S('UI:CSVReport-Row-Issue-DateFormat'));
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Issue($sValue, null, $sErrorMsg);
|
||||
@@ -1304,7 +1354,7 @@ class BulkChange
|
||||
{
|
||||
if (!array_key_exists($iCol, $aResult[$iRow]))
|
||||
{
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
}
|
||||
foreach($this->m_aExtKeys as $sAttCode => $aForeignAtts)
|
||||
@@ -1318,7 +1368,7 @@ class BulkChange
|
||||
if (!array_key_exists($iCol, $aResult[$iRow]))
|
||||
{
|
||||
// The foreign attribute is one of our reconciliation key
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Void(utils::HtmlEntities($aRowData[$iCol]));
|
||||
$aResult[$iRow][$iCol] = new CellStatus_Void($aRowData[$iCol]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ abstract class CMDBObject extends DBObject
|
||||
$oMyChangeOp->Set("objclass", MetaModel::GetRootClass(get_class($this)));
|
||||
$oMyChangeOp->Set("objkey", $objkey);
|
||||
$oMyChangeOp->Set("fclass", get_class($this));
|
||||
$oMyChangeOp->Set("fname", substr($this->GetRawName(), 0, 255)); // Protect against very long friendly names
|
||||
$oMyChangeOp->SetTrim("fname", $this->GetRawName()); // Protect against very long friendly names
|
||||
$iId = $oMyChangeOp->DBInsertNoReload();
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,12 @@ class CMDBSource
|
||||
const ENUM_DB_VENDOR_MARIADB = 'MariaDB';
|
||||
const ENUM_DB_VENDOR_PERCONA = 'Percona';
|
||||
|
||||
/**
|
||||
* @since 2.7.10 3.0.4 3.1.2 3.0.2 N°6889 constant creation
|
||||
* @internal will be removed in a future version
|
||||
*/
|
||||
const MYSQL_DEFAULT_PORT = 3306;
|
||||
|
||||
/**
|
||||
* Error: 1205 SQLSTATE: HY000 (ER_LOCK_WAIT_TIMEOUT)
|
||||
* Message: Lock wait timeout exceeded; try restarting transaction
|
||||
@@ -212,16 +218,19 @@ class CMDBSource
|
||||
/**
|
||||
* @param string $sDbHost initial value ("p:domain:port" syntax)
|
||||
* @param string $sServer server variable to update
|
||||
* @param int $iPort port variable to update
|
||||
* @param int|null $iPort port variable to update, will return null if nothing is specified in $sDbHost
|
||||
*
|
||||
* @since 2.7.10 3.0.4 3.1.2 3.2.0 N°6889 will return null in $iPort if port isn't present in $sDbHost. Use {@see MYSQL_DEFAULT_PORT} if needed
|
||||
*
|
||||
* @link http://php.net/manual/en/mysqli.persistconns.php documentation for the "p:" prefix (persistent connexion)
|
||||
*/
|
||||
public static function InitServerAndPort($sDbHost, &$sServer, &$iPort)
|
||||
{
|
||||
$aConnectInfo = explode(':', $sDbHost);
|
||||
|
||||
$bUsePersistentConnection = false;
|
||||
if (strcasecmp($aConnectInfo[0], 'p') == 0)
|
||||
if (strcasecmp($aConnectInfo[0], 'p') === 0)
|
||||
{
|
||||
// we might have "p:" prefix to use persistent connections (see http://php.net/manual/en/mysqli.persistconns.php)
|
||||
$bUsePersistentConnection = true;
|
||||
$sServer = $aConnectInfo[0].':'.$aConnectInfo[1];
|
||||
}
|
||||
@@ -239,10 +248,6 @@ class CMDBSource
|
||||
{
|
||||
$iPort = (int)($aConnectInfo[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$iPort = 3306;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -544,10 +549,9 @@ class CMDBSource
|
||||
/**
|
||||
* @param string $sSQLQuery
|
||||
*
|
||||
* @return \mysqli_result|null
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
* @throws \CoreException
|
||||
* @return mysqli_result|null
|
||||
* @throws MySQLException
|
||||
* @throws MySQLHasGoneAwayException
|
||||
*
|
||||
* @since 2.7.0 N°679 handles nested transactions
|
||||
*/
|
||||
@@ -1165,8 +1169,8 @@ class CMDBSource
|
||||
*/
|
||||
public static function IsSameFieldTypes($sItopGeneratedFieldType, $sDbFieldType)
|
||||
{
|
||||
list($sItopFieldDataType, $sItopFieldTypeOptions, $sItopFieldOtherOptions) = static::GetFieldDataTypeAndOptions($sItopGeneratedFieldType);
|
||||
list($sDbFieldDataType, $sDbFieldTypeOptions, $sDbFieldOtherOptions) = static::GetFieldDataTypeAndOptions($sDbFieldType);
|
||||
[$sItopFieldDataType, $sItopFieldTypeOptions, $sItopFieldOtherOptions] = static::GetFieldDataTypeAndOptions($sItopGeneratedFieldType);
|
||||
[$sDbFieldDataType, $sDbFieldTypeOptions, $sDbFieldOtherOptions] = static::GetFieldDataTypeAndOptions($sDbFieldType);
|
||||
|
||||
if (strcasecmp($sItopFieldDataType, $sDbFieldDataType) !== 0)
|
||||
{
|
||||
@@ -1599,7 +1603,19 @@ class CMDBSource
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
public static function GetClusterNb()
|
||||
{
|
||||
$result = 0;
|
||||
$sSql = "SHOW STATUS LIKE 'wsrep_cluster_size';";
|
||||
$aRows = self::QueryToArray($sSql);
|
||||
if (count($aRows) > 0)
|
||||
{
|
||||
$result = $aRows[0]['Value'];
|
||||
}
|
||||
return intval($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see https://dev.mysql.com/doc/refman/5.7/en/charset-database.html
|
||||
* @return string query to upgrade database charset and collation if needed, null if not
|
||||
* @throws \MySQLException
|
||||
|
||||
@@ -1643,6 +1643,14 @@ class Config
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'security.enable_header_xcontent_type_options' => [
|
||||
'type' => 'bool',
|
||||
'description' => 'If set to false, iTop will stop sending the X-Content-Type-Options HTTP header. This header could trigger CORB protection on certain resources (JSON, XML, HTML, text) therefore blocking them.',
|
||||
'default' => true,
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'security.disable_inline_documents_sandbox' => [
|
||||
'type' => 'bool',
|
||||
'description' => 'If true then the sandbox for documents displayed in a browser tab will be disabled; enabling scripts and other interactive content. Note that setting this to true will open the application to potential XSS attacks!',
|
||||
@@ -2313,6 +2321,24 @@ class Config
|
||||
$this->m_sAllowedLoginTypes = implode('|', $aAllowedLoginTypes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.7.11 N°7085
|
||||
* Add login mode if not configured already
|
||||
* @param string $sLoginMode
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddAllowedLoginTypes($sLoginMode)
|
||||
{
|
||||
$aAllowedLoginTypes = $this->GetAllowedLoginTypes();
|
||||
if (in_array($sLoginMode, $aAllowedLoginTypes)){
|
||||
return;
|
||||
}
|
||||
|
||||
$aAllowedLoginTypes[] = $sLoginMode;
|
||||
$this->SetAllowedLoginTypes($aAllowedLoginTypes);
|
||||
}
|
||||
|
||||
public function SetExternalAuthenticationVariable($sExtAuthVariable)
|
||||
{
|
||||
$this->m_sExtAuthVariable = $sExtAuthVariable;
|
||||
|
||||
@@ -208,6 +208,7 @@ abstract class DBObject implements iDisplay
|
||||
const MAX_UPDATE_LOOP_COUNT = 10;
|
||||
|
||||
private $aEventListeners = [];
|
||||
private array $aAllowedTransitions = [];
|
||||
|
||||
/**
|
||||
* DBObject constructor.
|
||||
@@ -606,11 +607,10 @@ abstract class DBObject implements iDisplay
|
||||
* Attributes setter
|
||||
*
|
||||
* Set $sAttCode to $value.
|
||||
* The value must be valid according to the type of attribute.
|
||||
* The value must be valid according to the type of attribute : see the different {@see AttributeDefinition::MakeRealValue()} implementations
|
||||
* The value will not be recorded into the DB until DBObject::DBWrite() is called.
|
||||
*
|
||||
* @api
|
||||
* @see DBWrite()
|
||||
*
|
||||
* @param string $sAttCode
|
||||
* @param mixed $value
|
||||
@@ -618,6 +618,8 @@ abstract class DBObject implements iDisplay
|
||||
* @return bool
|
||||
* @throws CoreException
|
||||
* @throws CoreUnexpectedValue
|
||||
*
|
||||
* @see DBWrite()
|
||||
*/
|
||||
public function Set($sAttCode, $value)
|
||||
{
|
||||
@@ -756,13 +758,62 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
|
||||
$iMaxSize = $oAttDef->GetMaxSize();
|
||||
if ($iMaxSize && (strlen($sValue) > $iMaxSize))
|
||||
{
|
||||
$sValue = substr($sValue, 0, $iMaxSize);
|
||||
$sLength = mb_strlen($sValue);
|
||||
if ($iMaxSize && ($sLength > $iMaxSize)) {
|
||||
$sMessage = " -truncated ($sLength chars)";
|
||||
$sValue = mb_substr($sValue, 0, $iMaxSize - mb_strlen($sMessage)).$sMessage;
|
||||
}
|
||||
$this->Set($sAttCode, $sValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \MySQLException
|
||||
* @throws \OQLException
|
||||
* @throws \ReflectionException
|
||||
*/
|
||||
protected function PreDeleteActions(): void
|
||||
{
|
||||
$this->SetReadOnly('No modification allowed before delete');
|
||||
$this->FireEventAboutToDelete();
|
||||
$oKPI = new ExecutionKPI();
|
||||
$this->OnDelete();
|
||||
$oKPI->ComputeStatsForExtension($this, 'OnDelete');
|
||||
|
||||
// Activate any existing trigger
|
||||
$sClass = get_class($this);
|
||||
$aParams = array('class_list' => MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL));
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT TriggerOnObjectDelete AS t WHERE t.target_class IN (:class_list)'), array(),
|
||||
$aParams);
|
||||
while ($oTrigger = $oSet->Fetch()) {
|
||||
/** @var \TriggerOnObjectDelete $oTrigger */
|
||||
try {
|
||||
$oKPI = new ExecutionKPI();
|
||||
$oTrigger->DoActivate($this->ToArgs('this'));
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$oTrigger->LogException($e, $this);
|
||||
utils::EnrichRaisedException($oTrigger, $e);
|
||||
}
|
||||
finally {
|
||||
$oKPI->ComputeStatsForExtension($this, 'TriggerOnObjectDelete');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @throws \ReflectionException
|
||||
*/
|
||||
protected function PostDeleteActions(): void
|
||||
{
|
||||
$this->FireEventAfterDelete();
|
||||
$oKPI = new ExecutionKPI();
|
||||
$this->AfterDelete();
|
||||
$oKPI->ComputeStatsForExtension($this, 'AfterDelete');
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute (and optionally start) the StopWatches deadlines
|
||||
*
|
||||
@@ -2098,33 +2149,26 @@ abstract class DBObject implements iDisplay
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($toCheck instanceof ormSet)
|
||||
{
|
||||
if ($toCheck instanceof ormSet) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return "Bad type";
|
||||
}
|
||||
elseif ($oAtt->IsScalar())
|
||||
{
|
||||
} elseif ($oAtt->IsScalar()) {
|
||||
|
||||
$aValues = $oAtt->GetAllowedValues($this->ToArgsForQuery());
|
||||
if (is_array($aValues) && (count($aValues) > 0))
|
||||
{
|
||||
if (!array_key_exists($toCheck, $aValues))
|
||||
{
|
||||
if (is_array($aValues) && (count($aValues) > 0)) {
|
||||
if (!array_key_exists($toCheck, $aValues)) {
|
||||
return "Value not allowed [$toCheck]";
|
||||
}
|
||||
}
|
||||
if (!is_null($iMaxSize = $oAtt->GetMaxSize()))
|
||||
{
|
||||
$iLen = strlen($toCheck);
|
||||
if ($iLen > $iMaxSize)
|
||||
{
|
||||
if (!is_null($iMaxSize = $oAtt->GetMaxSize())) {
|
||||
$iLen = mb_strlen($toCheck);
|
||||
if ($iLen > $iMaxSize) {
|
||||
return "String too long (found $iLen, limited to $iMaxSize)";
|
||||
}
|
||||
}
|
||||
if (!$oAtt->CheckFormat($toCheck))
|
||||
{
|
||||
if (!$oAtt->CheckFormat($toCheck)) {
|
||||
return "Wrong format [$toCheck]";
|
||||
}
|
||||
}
|
||||
@@ -2309,16 +2353,17 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aUniquenessRuleProperties uniqueness rule properties
|
||||
*
|
||||
* @param string $sUniquenessRuleId uniqueness rule ID
|
||||
* @return \DBSearch
|
||||
* @throws \OQLException
|
||||
* @throws \CoreException
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param string $sUniquenessRuleId uniqueness rule ID
|
||||
* @param array $aUniquenessRuleProperties uniqueness rule properties
|
||||
*
|
||||
* @return \DBSearch
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
* @since 2.6.0 N°659 uniqueness constraint
|
||||
* @api
|
||||
* @since 2.6.0 N°659 uniqueness constraint
|
||||
* @since 2.7.11 3.1.2 3.2.0 N°4314 Fix Uniqueness rules not working with Silo
|
||||
*/
|
||||
protected function GetSearchForUniquenessRule($sUniquenessRuleId, $aUniquenessRuleProperties)
|
||||
{
|
||||
@@ -2347,8 +2392,10 @@ abstract class DBObject implements iDisplay
|
||||
$oUniquenessQuery->AddConditionForInOperatorUsingParam('finalclass', $aChildClassesWithRuleDisabled, false);
|
||||
}
|
||||
|
||||
return $oUniquenessQuery;
|
||||
}
|
||||
$oUniquenessQuery->AllowAllData();
|
||||
|
||||
return $oUniquenessQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sAttCode
|
||||
@@ -3321,6 +3368,9 @@ abstract class DBObject implements iDisplay
|
||||
*/
|
||||
public function DBInsertNoReload()
|
||||
{
|
||||
// Prevent DBUpdate at this point (reentrancy protection with temp id)
|
||||
MetaModel::StartReentranceProtection($this);
|
||||
|
||||
$sClass = get_class($this);
|
||||
|
||||
$this->AddCurrentObjectInCrudStack('INSERT');
|
||||
@@ -3367,6 +3417,8 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
|
||||
$this->ComputeStopWatchesDeadline(true);
|
||||
// With temp id
|
||||
MetaModel::StopReentranceProtection($this);
|
||||
|
||||
$iTransactionRetry = 1;
|
||||
$bIsTransactionEnabled = MetaModel::GetConfig()->Get('db_core_transactions_enabled');
|
||||
@@ -3559,6 +3611,12 @@ abstract class DBObject implements iDisplay
|
||||
*/
|
||||
public function DBUpdate()
|
||||
{
|
||||
if (!MetaModel::StartReentranceProtection($this)) {
|
||||
$this->LogCRUDExit(__METHOD__, 'Rejected (reentrance)');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->LogCRUDEnter(__METHOD__);
|
||||
if (!$this->m_bIsInDB)
|
||||
{
|
||||
@@ -3568,12 +3626,6 @@ abstract class DBObject implements iDisplay
|
||||
|
||||
$this->AddCurrentObjectInCrudStack('UPDATE');
|
||||
|
||||
if (!MetaModel::StartReentranceProtection($this)) {
|
||||
$this->RemoveCurrentObjectInCrudStack();
|
||||
$this->LogCRUDExit(__METHOD__, 'Rejected (reentrance)');
|
||||
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
// Protect against infinite loop
|
||||
$this->iUpdateLoopCount++;
|
||||
@@ -4074,16 +4126,17 @@ abstract class DBObject implements iDisplay
|
||||
CMDBSource::DeleteFrom($sDeleteSQL);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @throws ArchivedObjectException
|
||||
* @throws CoreException
|
||||
* @throws CoreUnexpectedValue
|
||||
* @throws MySQLException
|
||||
* @throws MySQLHasGoneAwayException
|
||||
* @throws OQLException
|
||||
*/
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
* @throws \OQLException
|
||||
* @throws \Random\RandomException
|
||||
* @throws \ReflectionException
|
||||
*/
|
||||
protected function DBDeleteSingleObject()
|
||||
{
|
||||
$this->LogCRUDEnter(__METHOD__);
|
||||
@@ -4094,27 +4147,7 @@ abstract class DBObject implements iDisplay
|
||||
return;
|
||||
}
|
||||
|
||||
$oKPI = new ExecutionKPI();
|
||||
$this->OnDelete();
|
||||
$oKPI->ComputeStatsForExtension($this, 'OnDelete');
|
||||
|
||||
// Activate any existing trigger
|
||||
$sClass = get_class($this);
|
||||
$aParams = array('class_list' => MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL));
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT TriggerOnObjectDelete AS t WHERE t.target_class IN (:class_list)"), array(),
|
||||
$aParams);
|
||||
while ($oTrigger = $oSet->Fetch())
|
||||
{
|
||||
/** @var \TriggerOnObjectDelete $oTrigger */
|
||||
try
|
||||
{
|
||||
$oTrigger->DoActivate($this->ToArgs('this'));
|
||||
}
|
||||
catch(Exception $e) {
|
||||
$oTrigger->LogException($e, $this);
|
||||
utils::EnrichRaisedException($oTrigger, $e);
|
||||
}
|
||||
}
|
||||
$this->PreDeleteActions();
|
||||
|
||||
$this->RecordObjDeletion($this->m_iKey); // May cause a reload for storing history information
|
||||
|
||||
@@ -4203,15 +4236,13 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
|
||||
$this->FireEventAfterDelete();
|
||||
$oKPI = new ExecutionKPI();
|
||||
$this->AfterDelete();
|
||||
$oKPI->ComputeStatsForExtension($this, 'AfterDelete');
|
||||
$this->m_bIsInDB = false;
|
||||
|
||||
$this->PostDeleteActions();
|
||||
|
||||
// - Trigger for object pointing to the current object
|
||||
$this->ActivateOnObjectUpdateTriggersForTargetObjects();
|
||||
|
||||
$this->m_bIsInDB = false;
|
||||
$this->LogCRUDExit(__METHOD__);
|
||||
// Fix for N°926: do NOT reset m_iKey as it can be used to have it for reporting purposes (see the REST service to delete
|
||||
// objects, reported as bug N°926)
|
||||
@@ -4267,6 +4298,7 @@ abstract class DBObject implements iDisplay
|
||||
foreach ($aToDelete as $iId => $aData) {
|
||||
/** @var \DBObject $oToDelete */
|
||||
$oToDelete = $aData['to_delete'];
|
||||
|
||||
// The deletion based on a deletion plan should not be done for each object if the deletion plan is common (Trac #457)
|
||||
// because for each object we would try to update all the preceding ones... that are already deleted
|
||||
// A better approach would be to change the API to apply the DBDelete on the deletion plan itself... just once
|
||||
@@ -4392,9 +4424,32 @@ abstract class DBObject implements iDisplay
|
||||
]);
|
||||
}
|
||||
|
||||
$this->aAllowedTransitions = $aSortedTransitions;
|
||||
$this->FireEvent(EVENT_ENUM_TRANSITIONS, ['allowed_stimuli' => array_keys($aSortedTransitions)]);
|
||||
$aSortedTransitions = $this->aAllowedTransitions;
|
||||
$this->aAllowedTransitions = [];
|
||||
|
||||
return $aSortedTransitions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a transition for a specific stimulus.
|
||||
* This is only usable by EVENT_ENUM_TRANSITIONS listeners in order
|
||||
* to manage the allowed transitions in the current object state.
|
||||
*
|
||||
* @param string $sStimulus
|
||||
*
|
||||
* @return void
|
||||
* @api
|
||||
* @since 3.1.2
|
||||
*/
|
||||
public function DenyTransition(string $sStimulus): void
|
||||
{
|
||||
if (isset($this->aAllowedTransitions[$sStimulus])) {
|
||||
unset($this->aAllowedTransitions[$sStimulus]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to reset a stop-watch
|
||||
* Suitable for use as a lifecycle action
|
||||
@@ -4480,14 +4535,6 @@ abstract class DBObject implements iDisplay
|
||||
$sNewState = $aTransitionDef['target_state'];
|
||||
$this->Set($sStateAttCode, $sNewState);
|
||||
|
||||
$aEventData = [
|
||||
'stimulus' => $sStimulusCode,
|
||||
'previous_state' => $sPreviousState,
|
||||
'new_state' => $sNewState,
|
||||
'save_object' => !$bDoNotWrite,
|
||||
];
|
||||
$this->FireEvent(EVENT_DB_BEFORE_APPLY_STIMULUS, $aEventData);
|
||||
|
||||
// $aTransitionDef is an
|
||||
// array('target_state'=>..., 'actions'=>array of handlers procs, 'user_restriction'=>TBD
|
||||
|
||||
@@ -4572,8 +4619,6 @@ abstract class DBObject implements iDisplay
|
||||
if (!$bDoNotWrite) {
|
||||
$this->DBWrite();
|
||||
}
|
||||
|
||||
$this->FireEvent(EVENT_DB_AFTER_APPLY_STIMULUS, $aEventData);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4582,8 +4627,6 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
$this->m_aCurrValues[$sAttCode] = $aBackupValues[$sAttCode];
|
||||
}
|
||||
$aEventData['action'] = $sActionDesc;
|
||||
$this->FireEvent(EVENT_DB_APPLY_STIMULUS_FAILED, $aEventData);
|
||||
}
|
||||
return $bSuccess;
|
||||
}
|
||||
@@ -4720,7 +4763,7 @@ abstract class DBObject implements iDisplay
|
||||
}
|
||||
}
|
||||
$oDate->modify($sModifier);
|
||||
$this->Set($sAttCode, $oDate->format('Y-m-d H:i:s'));
|
||||
$this->Set($sAttCode, $oDate->getTimestamp());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6614,6 +6657,14 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @since 3.1.2
|
||||
*/
|
||||
protected function FireEventAboutToDelete(): void
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @since 3.1.0
|
||||
|
||||
@@ -851,11 +851,11 @@ abstract class DBSearch
|
||||
return;
|
||||
}
|
||||
|
||||
if (count($aColumns) == 0)
|
||||
{
|
||||
$aColumns = array_keys(MetaModel::ListAttributeDefs($this->GetClass()));
|
||||
// Add the standard id (as first column)
|
||||
array_unshift($aColumns, 'id');
|
||||
if (count($aColumns) == 0)
|
||||
{
|
||||
$aColumns = array_keys(MetaModel::ListAttributeDefs($this->GetClass()));
|
||||
// Add the standard id (as first column)
|
||||
array_unshift($aColumns, 'id');
|
||||
}
|
||||
|
||||
$aQueryCols = CMDBSource::GetColumns($resQuery, $sSQL);
|
||||
@@ -885,6 +885,55 @@ abstract class DBSearch
|
||||
return $aRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Selects a column ($sAttCode) from the specified class ($sClassAlias - default main class) of the DBsearch object and gives the result as an array
|
||||
* @param string $sAttCode
|
||||
* @param string|null $sClassAlias
|
||||
*
|
||||
* @return array
|
||||
* @throws ConfigException
|
||||
* @throws CoreException
|
||||
* @throws MissingQueryArgument
|
||||
* @throws MySQLException
|
||||
* @throws MySQLHasGoneAwayException
|
||||
*/
|
||||
public function SelectAttributeToArray(string $sAttCode, ?string $sClassAlias = null):array
|
||||
{
|
||||
if(is_null($sClassAlias)) {
|
||||
$sClassAlias = $this->GetClassAlias();
|
||||
}
|
||||
|
||||
$sClass = $this->GetClass();
|
||||
if($sAttCode === 'id'){
|
||||
$aAttToLoad[$sClassAlias]=[];
|
||||
} else {
|
||||
$aAttToLoad[$sClassAlias][$sAttCode] = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
}
|
||||
|
||||
$sSQL = $this->MakeSelectQuery([], [], $aAttToLoad);
|
||||
$resQuery = CMDBSource::Query($sSQL);
|
||||
if (!$resQuery)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
$sColName = $sClassAlias.$sAttCode;
|
||||
|
||||
$aRes = [];
|
||||
while ($aRow = CMDBSource::FetchArray($resQuery))
|
||||
{
|
||||
$aMappedRow = array();
|
||||
if($sAttCode === 'id') {
|
||||
$aMappedRow[$sAttCode] = $aRow[$sColName];
|
||||
} else {
|
||||
$aMappedRow[$sAttCode] = $aAttToLoad[$sClassAlias][$sAttCode]->FromSQLToValue($aRow, $sColName);
|
||||
}
|
||||
$aRes[] = $aMappedRow;
|
||||
}
|
||||
CMDBSource::FreeResult($resQuery);
|
||||
return $aRes;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Construction of the SQL queries
|
||||
|
||||
@@ -28,8 +28,13 @@ namespace Combodo\iTop;
|
||||
|
||||
use DOMDocument;
|
||||
use DOMFormatException;
|
||||
use DOMNode;
|
||||
use DOMNodeList;
|
||||
use DOMXPath;
|
||||
use Exception;
|
||||
use IssueLog;
|
||||
use LogAPI;
|
||||
use MFElement;
|
||||
use utils;
|
||||
|
||||
/**
|
||||
@@ -41,6 +46,11 @@ use utils;
|
||||
*/
|
||||
class DesignDocument extends DOMDocument
|
||||
{
|
||||
|
||||
/** To fix DOMNode::getLineNo() ref https://www.php.net/manual/en/domnode.getlineno.php */
|
||||
public const XML_PARSE_BIG_LINES = 4194304;
|
||||
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
@@ -69,10 +79,12 @@ class DesignDocument extends DOMDocument
|
||||
*/
|
||||
public function load($filename, $options = null)
|
||||
{
|
||||
libxml_clear_errors();
|
||||
if (parent::load($filename, LIBXML_NOBLANKS) === false) {
|
||||
$aErrors = libxml_get_errors();
|
||||
IssueLog::Error("Error loading $filename", LogAPI::CHANNEL_DEFAULT, $aErrors);
|
||||
if (is_file($filename)) {
|
||||
libxml_clear_errors();
|
||||
if (parent::load($filename, LIBXML_NOBLANKS | LIBXML_BIGLINES | LIBXML_PARSEHUGE | self::XML_PARSE_BIG_LINES) === false) {
|
||||
$aErrors = libxml_get_errors();
|
||||
IssueLog::Error("Error loading $filename", LogAPI::CHANNEL_DEFAULT, $aErrors);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +239,56 @@ class DesignElement extends \DOMElement
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Compatibility with PHP8.0
|
||||
*
|
||||
* @return \DOMElement|null
|
||||
*
|
||||
* @since 3.1.2
|
||||
*/
|
||||
public function GetFirstElementChild()
|
||||
{
|
||||
if (property_exists($this, 'firstElementChild')) {
|
||||
return $this->firstElementChild;
|
||||
}
|
||||
|
||||
$oChildNode = $this->firstChild;
|
||||
while (!is_null($oChildNode)) {
|
||||
if ($oChildNode instanceof \DOMElement) {
|
||||
return $oChildNode;
|
||||
}
|
||||
$oChildNode = $oChildNode->nextSibling;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compatibility with PHP8.0
|
||||
*
|
||||
* @return \DOMElement|null
|
||||
*
|
||||
* @since 3.1.2
|
||||
*/
|
||||
public function GetNextElementSibling()
|
||||
{
|
||||
if (property_exists($this, 'nextElementSibling')) {
|
||||
return $this->nextElementSibling;
|
||||
}
|
||||
|
||||
$oSibling = $this->nextSibling;
|
||||
while (!is_null($oSibling)) {
|
||||
if ($oSibling instanceof \DOMElement) {
|
||||
return $oSibling;
|
||||
}
|
||||
$oSibling = $oSibling->nextSibling;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the node directly under the given node
|
||||
* @param $sTagName
|
||||
@@ -307,4 +369,146 @@ class DesignElement extends \DOMElement
|
||||
}
|
||||
return $sRet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that the current node is actually a class node, under classes
|
||||
* @since 3.1.2 3.2.0 N°6974
|
||||
*/
|
||||
public function IsClassNode(): bool
|
||||
{
|
||||
if ($this->tagName == 'class') {
|
||||
// Beware: classes/class also exists in the group definition
|
||||
if (($this->parentNode->tagName == 'classes') && ($this->parentNode->parentNode->tagName == 'itop_design')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* True if the node is contained in a _delta="merge" tree
|
||||
* @return bool
|
||||
*/
|
||||
public function IsInSpecifiedMerge(): bool
|
||||
{
|
||||
// Iterate through the parents: reset the flag if any of them has a flag set
|
||||
for ($oParent = $this; $oParent instanceof MFElement; $oParent = $oParent->parentNode) {
|
||||
$sDeltaSpec = $oParent->getAttribute('_delta');
|
||||
if ($sDeltaSpec === 'merge') {
|
||||
return true;
|
||||
}
|
||||
if (in_array($sDeltaSpec, ['define', 'define_if_not_exists', 'force', 'redefine'])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the child node matching the given node.
|
||||
* UNSAFE: may return nodes marked as _alteration="removed"
|
||||
* A method with the same signature MUST exist in MFDocument for the recursion to work fine
|
||||
*
|
||||
* @param DesignElement $oRefNode The node to search for
|
||||
* @param null|string $sSearchId substitutes to the value of the 'id' attribute
|
||||
*
|
||||
* @return DesignElement|null
|
||||
* @throws \Exception
|
||||
* @since 3.1.2 3.2.0 N°6974
|
||||
*/
|
||||
public function _FindChildNode(DesignElement $oRefNode, $sSearchId = null): ?DesignElement
|
||||
{
|
||||
return self::_FindNode($this, $oRefNode, $sSearchId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find the child node matching the given node.
|
||||
* UNSAFE: may return nodes marked as _alteration="removed"
|
||||
* A method with the same signature MUST exist in MFDocument for the recursion to work fine
|
||||
*
|
||||
* @param DesignElement $oRefNode The node to search for
|
||||
*
|
||||
* @return DesignElement|null
|
||||
* @throws \Exception
|
||||
* @since 3.1.2 3.2.0 N°6974
|
||||
*/
|
||||
public function _FindChildNodes(DesignElement $oRefNode): ?DesignElement
|
||||
{
|
||||
return self::_FindNodes($this, $oRefNode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the child node matching the given node under the specified parent.
|
||||
* UNSAFE: may return nodes marked as _alteration="removed"
|
||||
*
|
||||
* @param \DOMNode $oParent
|
||||
* @param DesignElement $oRefNode
|
||||
* @param string|null $sSearchId
|
||||
*
|
||||
* @return DesignElement|null
|
||||
* @throws Exception
|
||||
* @since 3.1.2 3.2.0 N°6974
|
||||
*/
|
||||
public static function _FindNode(DOMNode $oParent, DesignElement $oRefNode, string $sSearchId = null): ?DesignElement
|
||||
{
|
||||
$oNodes = self::_FindNodes($oParent, $oRefNode, $sSearchId);
|
||||
if ($oNodes instanceof DOMNodeList) {
|
||||
/** @var DesignElement $oNode */
|
||||
$oNode = $oNodes->item(0);
|
||||
|
||||
return $oNode;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the child node matching the given node under the specified parent.
|
||||
* UNSAFE: may return nodes marked as _alteration="removed"
|
||||
*
|
||||
* @param \DOMNode $oParent
|
||||
* @param DesignElement $oRefNode
|
||||
* @param string|null $sSearchId
|
||||
*
|
||||
* @return \DOMNodeList|false|mixed
|
||||
* @since 3.1.2 3.2.0 N°6974
|
||||
*/
|
||||
public static function _FindNodes(DOMNode $oParent, DesignElement $oRefNode, string $sSearchId = null)
|
||||
{
|
||||
if ($oParent instanceof DOMDocument)
|
||||
{
|
||||
$oDoc = $oParent->firstChild->ownerDocument;
|
||||
$oRoot = $oParent;
|
||||
}
|
||||
else
|
||||
{
|
||||
$oDoc = $oParent->ownerDocument;
|
||||
$oRoot = $oParent;
|
||||
}
|
||||
|
||||
$oXPath = new DOMXPath($oDoc);
|
||||
if ($oRefNode->hasAttribute('id'))
|
||||
{
|
||||
// Find the elements having the same tag name and id
|
||||
if (!$sSearchId)
|
||||
{
|
||||
$sSearchId = $oRefNode->getAttribute('id');
|
||||
}
|
||||
$sXPath = './'.$oRefNode->tagName."[@id='$sSearchId']";
|
||||
|
||||
$oRes = $oXPath->query($sXPath, $oRoot);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get the elements having the same tag name
|
||||
$sXPath = './'.$oRefNode->tagName;
|
||||
|
||||
$oRes = $oXPath->query($sXPath, $oRoot);
|
||||
}
|
||||
|
||||
return $oRes;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ class DisplayableNode extends GraphNode
|
||||
|
||||
public function GetWidth()
|
||||
{
|
||||
return max(32, 5*strlen($this->GetProperty('label'))); // approximation of the text's bounding box
|
||||
return max(32, 5 * mb_strlen($this->GetProperty('label'))); // approximation of the text's bounding box
|
||||
}
|
||||
|
||||
public function GetHeight()
|
||||
@@ -491,7 +491,7 @@ class DisplayableNode extends GraphNode
|
||||
if ($bNoLabel)
|
||||
{
|
||||
// simulate a fake label with the approximate same size as the true label
|
||||
$sLabel = str_repeat('x',strlen($this->GetProperty('label', $this->GetId())));
|
||||
$sLabel = str_repeat('x', mb_strlen($this->GetProperty('label', $this->GetId())));
|
||||
$sDot = 'label="'.$sLabel.'"';
|
||||
}
|
||||
else
|
||||
|
||||
@@ -242,44 +242,33 @@ class EventIssue extends Event
|
||||
{
|
||||
if (is_string($sValue))
|
||||
{
|
||||
if (strlen($sValue) < 256)
|
||||
{
|
||||
if (mb_strlen($sValue) < 256) {
|
||||
$aPost[$sKey] = $sValue;
|
||||
} else {
|
||||
$aPost[$sKey] = "!long string: ".mb_strlen($sValue)." chars";
|
||||
}
|
||||
else
|
||||
{
|
||||
$aPost[$sKey] = "!long string: ".strlen($sValue). " chars";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// Not a string (avoid warnings in case the value cannot be easily casted into a string)
|
||||
$aPost[$sKey] = @(string) $sValue;
|
||||
$aPost[$sKey] = @(string)$sValue;
|
||||
}
|
||||
}
|
||||
$this->Set('arguments_post', $aPost);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$this->Set('arguments_post', array());
|
||||
}
|
||||
|
||||
$sLength = strlen($this->Get('issue'));
|
||||
if ($sLength > 255)
|
||||
{
|
||||
$this->Set('issue', substr($this->Get('issue'), 0, 200)." -truncated ($sLength chars)");
|
||||
$sLength = mb_strlen($this->Get('issue'));
|
||||
if ($sLength > 255) {
|
||||
$this->Set('issue', mb_substr($this->Get('issue'), 0, 210)." -truncated ($sLength chars)");
|
||||
}
|
||||
|
||||
$sLength = strlen($this->Get('impact'));
|
||||
if ($sLength > 255)
|
||||
{
|
||||
$this->Set('impact', substr($this->Get('impact'), 0, 200)." -truncated ($sLength chars)");
|
||||
$sLength = mb_strlen($this->Get('impact'));
|
||||
if ($sLength > 255) {
|
||||
$this->Set('impact', mb_substr($this->Get('impact'), 0, 210)." -truncated ($sLength chars)");
|
||||
}
|
||||
|
||||
$sLength = strlen($this->Get('page'));
|
||||
if ($sLength > 255)
|
||||
{
|
||||
$this->Set('page', substr($this->Get('page'), 0, 200)." -truncated ($sLength chars)");
|
||||
$sLength = mb_strlen($this->Get('page'));
|
||||
if ($sLength > 255) {
|
||||
$this->Set('page', mb_substr($this->Get('page'), 0, 210)." -truncated ($sLength chars)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ EOF;
|
||||
EOF;
|
||||
|
||||
SetupUtils::builddir(dirname($sFilePath));
|
||||
file_put_contents($sFilePath, $content);
|
||||
file_put_contents($sFilePath, $content, LOCK_EX);
|
||||
}
|
||||
}
|
||||
Dict::SetUserLanguage($sUserLang);
|
||||
|
||||
@@ -1301,19 +1301,7 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
$aStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
|
||||
$iStackDeprecatedMethodLevel = 1; // level 0 = current method, level 1 = method containing the `NotifyDeprecatedPhpMethod` call
|
||||
$sDeprecatedObject = $aStack[$iStackDeprecatedMethodLevel]['class'];
|
||||
$sDeprecatedMethod = $aStack[$iStackDeprecatedMethodLevel]['function'];
|
||||
$sCallerFile = $aStack[$iStackDeprecatedMethodLevel]['file'];
|
||||
$sCallerLine = $aStack[$iStackDeprecatedMethodLevel]['line'];
|
||||
$sMessage = "Call to {$sDeprecatedObject}::{$sDeprecatedMethod} in {$sCallerFile}#L{$sCallerLine}";
|
||||
|
||||
$iStackCallerMethodLevel = $iStackDeprecatedMethodLevel + 1; // level 2 = caller of the deprecated method
|
||||
if (array_key_exists($iStackCallerMethodLevel, $aStack)) {
|
||||
$sCallerObject = $aStack[$iStackCallerMethodLevel]['class'];
|
||||
$sCallerMethod = $aStack[$iStackCallerMethodLevel]['function'];
|
||||
$sMessage .= " ({$sCallerObject}::{$sCallerMethod})";
|
||||
}
|
||||
$sMessage = self::GetMessageFromStack($aStack);
|
||||
|
||||
if (!is_null($sAdditionalMessage)) {
|
||||
$sMessage .= ' : '.$sAdditionalMessage;
|
||||
@@ -1322,6 +1310,45 @@ class DeprecatedCallsLog extends LogAPI
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_METHOD);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aDebugBacktrace data from {@see debug_backtrace()}
|
||||
*
|
||||
* @return string message to print to the log
|
||||
*/
|
||||
private static function GetMessageFromStack(array $aDebugBacktrace): string
|
||||
{
|
||||
// level 0 = current method
|
||||
// level 1 = deprecated method, containing the `NotifyDeprecatedPhpMethod` call
|
||||
$sMessage = 'Call'.self::GetMessageForCurrentStackLevel($aDebugBacktrace[1], " to ");
|
||||
|
||||
// level 2 = caller of the deprecated method
|
||||
if (array_key_exists(2, $aDebugBacktrace)) {
|
||||
$sMessage .= ' (from ';
|
||||
$sMessage .= self::GetMessageForCurrentStackLevel($aDebugBacktrace[2]);
|
||||
$sMessage .= ')';
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
}
|
||||
|
||||
private static function GetMessageForCurrentStackLevel(array $aCurrentLevelDebugTrace, ?string $sPrefix = ""): string
|
||||
{
|
||||
$sMessage = "";
|
||||
if (array_key_exists('class', $aCurrentLevelDebugTrace)) {
|
||||
$sDeprecatedObject = $aCurrentLevelDebugTrace['class'];
|
||||
$sDeprecatedMethod = $aCurrentLevelDebugTrace['function'] ?? "";
|
||||
$sMessage = "{$sPrefix}{$sDeprecatedObject}::{$sDeprecatedMethod} in ";
|
||||
}
|
||||
|
||||
if (array_key_exists('file', $aCurrentLevelDebugTrace)) {
|
||||
$sCallerFile = $aCurrentLevelDebugTrace['file'];
|
||||
$sCallerLine = $aCurrentLevelDebugTrace['line'] ?? "";
|
||||
$sMessage .= "{$sCallerFile}#L{$sCallerLine}";
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $sAdditionalMessage
|
||||
* @since 3.1.0
|
||||
|
||||
@@ -6846,24 +6846,15 @@ abstract class MetaModel
|
||||
$sClass = $aRow[$sClassAlias."finalclass"];
|
||||
}
|
||||
|
||||
// if an object is already being updated, then this method will return this object instead of recreating a new one.
|
||||
// At this point the method DBUpdate of a new object with the same class and id won't do anything due to reentrance protection,
|
||||
// so to ensure that the potential modifications are correctly saved, the object currently being updated is returned.
|
||||
// DBUpdate() method then will take care that all the modifications will be saved.
|
||||
if (array_key_exists($sClassAlias.'id', $aRow)) {
|
||||
$iKey = $aRow[$sClassAlias."id"];
|
||||
$oObject = self::GetReentranceObject($sClass, $iKey);
|
||||
if ($oObject !== false) {
|
||||
return $oObject;
|
||||
}
|
||||
}
|
||||
|
||||
return new $sClass($aRow, $sClassAlias, $aAttToLoad, $aExtendedDataSpec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate an object already persisted to the Database.
|
||||
*
|
||||
* Note that LinkedSet attributes are not loaded.
|
||||
* DBObject::Reload() will be called when getting a LinkedSet attribute
|
||||
*
|
||||
* @api
|
||||
* @see MetaModel::GetObjectWithArchive to get object even if it's archived
|
||||
* @see utils::PushArchiveMode() to enable search on archived objects
|
||||
|
||||
@@ -169,7 +169,7 @@ class ormCaseLog {
|
||||
}
|
||||
|
||||
// Process the case of an eventual remainder (quick migration of AttributeText fields)
|
||||
if ($iPos < (strlen($this->m_sLog) - 1))
|
||||
if ($iPos < (utils::StrLen($this->m_sLog) - 1))
|
||||
{
|
||||
$sTextEntry = substr($this->m_sLog, $iPos);
|
||||
|
||||
@@ -292,7 +292,7 @@ class ormCaseLog {
|
||||
}
|
||||
|
||||
// Process the case of an eventual remainder (quick migration of AttributeText fields)
|
||||
if ($iPos < (strlen($this->m_sLog) - 1)) {
|
||||
if ($iPos < (utils::StrLen($this->m_sLog) - 1)) {
|
||||
$sTextEntry = substr($this->m_sLog, $iPos);
|
||||
$sTextEntry = str_replace(array("\r\n", "\n", "\r"), "<br/>", utils::EscapeHtml($sTextEntry));
|
||||
|
||||
@@ -373,7 +373,7 @@ class ormCaseLog {
|
||||
}
|
||||
|
||||
// Process the case of an eventual remainder (quick migration of AttributeText fields)
|
||||
if ($iPos < (strlen($this->m_sLog) - 1)) {
|
||||
if ($iPos < (utils::StrLen($this->m_sLog) - 1)) {
|
||||
$sTextEntry = substr($this->m_sLog, $iPos);
|
||||
$sTextEntry = str_replace(array("\r\n", "\n", "\r"), "<br/>", utils::EscapeHtml($sTextEntry));
|
||||
|
||||
@@ -467,7 +467,7 @@ class ormCaseLog {
|
||||
$oBlock->AddSubBlock($oCollapsibleBlock);
|
||||
}
|
||||
// Process the case of an eventual remainder (quick migration of AttributeText fields)
|
||||
if ($iPos < (strlen($this->m_sLog) - 1)) {
|
||||
if ($iPos < (utils::StrLen($this->m_sLog) - 1)) {
|
||||
// In this case the format is always "text"
|
||||
$sTextEntry = substr($this->m_sLog, $iPos);
|
||||
$sTextEntry = str_replace(array("\r\n", "\n", "\r"), "<br/>", utils::EscapeHtml($sTextEntry));
|
||||
|
||||
@@ -343,6 +343,6 @@ class ormDocument
|
||||
*/
|
||||
public function GetSignature(): string
|
||||
{
|
||||
return md5($this->GetData());
|
||||
return md5($this->GetData() ?? '');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -537,7 +537,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('graphviz not found (executable path: '.$sDotExecutable.')');
|
||||
throw new Exception('graphviz not found');
|
||||
}
|
||||
return $sHtml;
|
||||
}
|
||||
@@ -592,7 +592,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('graphviz not found (executable path: '.$sDotExecutable.')');
|
||||
throw new Exception('graphviz not found');
|
||||
}
|
||||
return $sHtml;
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ abstract class UserRightsAddOnAPI
|
||||
$oSearchSharers->AllowAllData();
|
||||
$oSearchSharers->AddCondition_ReferencedBy($oShareSearch, 'sharing_org_id');
|
||||
$aSharers = array();
|
||||
foreach($oSearchSharers->ToDataArray(array('id')) as $aRow)
|
||||
foreach($oSearchSharers->SelectAttributeToArray('id') as $aRow)
|
||||
{
|
||||
$aSharers[] = $aRow['id'];
|
||||
}
|
||||
@@ -186,7 +186,7 @@ abstract class UserRightsAddOnAPI
|
||||
$oOrgField = new FieldExpression('org_id', $sShareClass);
|
||||
$oSearchShares->AddConditionExpression(new BinaryExpression($oOrgField, 'IN', $oListExpr));
|
||||
$aShared = array();
|
||||
foreach($oSearchShares->ToDataArray(array($sShareAttCode)) as $aRow)
|
||||
foreach($oSearchShares->SelectAttributeToArray($sShareAttCode) as $aRow)
|
||||
{
|
||||
$aShared[] = $aRow[$sShareAttCode];
|
||||
}
|
||||
|
||||
@@ -80,16 +80,29 @@ $ibo-field--enable-bulk--checkbox--margin-left: $ibo-spacing-300 !default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*N°6543 - We need the rule to keep text inside the column when width is defined*/
|
||||
&[data-attribute-type="AttributeHtml"],
|
||||
&[data-attribute-type="AttributeText"] {
|
||||
&[data-attribute-flag-read-only="true"] {
|
||||
display: grid;
|
||||
|
||||
> .ibo-field--value {
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Large field = Label on top, value below */
|
||||
.ibo-field-large {
|
||||
display: block;
|
||||
/* Large field = Label on top, value below */
|
||||
.ibo-field-large {
|
||||
display: block;
|
||||
|
||||
.ibo-field--label {
|
||||
position: relative; /* Necessary for fullscreen toggler */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.ibo-field--label {
|
||||
position: relative; /* Necessary for fullscreen toggler */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
max-width: initial;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -123,6 +123,13 @@ $ibo-fieldsorter--selected--background-color: $ibo-color-blue-200 !default;
|
||||
.ibo-datatable--row-actions-toolbar{
|
||||
justify-content: end;
|
||||
}
|
||||
/* N°6543 - We need the rule to keep text inside the column when width is defined */
|
||||
> [data-attribute-type="AttributeHtml"],
|
||||
> [data-attribute-type="AttributeText"] {
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -58,6 +58,9 @@ $progress-bar-error-bg-color: #F56565 !default;
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes progress_bar_color_ongoing {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'authent-cas/3.1.1',
|
||||
'authent-cas/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'authent-external/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -21,6 +21,6 @@
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:UserLDAP' => 'LDAP felhasználó',
|
||||
'Class:UserLDAP+' => '',
|
||||
'Class:UserLDAP+' => 'LDAP vagy AD felhasználó',
|
||||
'UserLDAP:server' => 'LDAP specifics~~',
|
||||
));
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'authent-ldap/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -50,7 +50,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -35,7 +35,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:UserLocal' => ITOP_APPLICATION_SHORT.' felhasználó',
|
||||
'Class:UserLocal+' => '',
|
||||
'Class:UserLocal+' => 'Rendszeren belül létrehozott felhasználó',
|
||||
'Class:UserLocal/Attribute:password' => 'Jelszó',
|
||||
'Class:UserLocal/Attribute:password+' => '',
|
||||
'Class:UserLocal/Attribute:expiration' => 'Jelszó lejárati ideje',
|
||||
|
||||
@@ -48,7 +48,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -35,7 +35,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -47,7 +47,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -49,7 +49,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
|
||||
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewed on~~',
|
||||
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
|
||||
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
|
||||
'UserLocal:password:expiration' => 'The fields below require an extension~~',
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'authent-local/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -22,4 +22,4 @@
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'theme:darkmoon' => 'Dark moon',
|
||||
));
|
||||
));
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'combodo-backoffice-darkmoon-theme/3.1.1',
|
||||
'combodo-backoffice-darkmoon-theme/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -42,15 +42,15 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'DBTools:FetchCheck' => 'Lehívás ellenőrzés (hosszú)',
|
||||
'DBTools:SelectAnalysisType' => 'Válasszon elemzés típust',
|
||||
'DBTools:Analyze' => 'Elemzés',
|
||||
'DBTools:Details' => 'Részletek mutatása',
|
||||
'DBTools:ShowAll' => 'Minden hiba mutatása',
|
||||
'DBTools:Details' => 'Részletek megjelenítése',
|
||||
'DBTools:ShowAll' => 'Minden hiba megjelenítése',
|
||||
'DBTools:Inconsistencies' => 'Adatbázis inkonzisztenciák',
|
||||
'DBTools:DetailedErrorTitle' => '%2$s hiba a %1$s osztályban: %3$s',
|
||||
'DBTools:DetailedErrorLimit' => 'List limited to %1$s errors~~',
|
||||
'DBAnalyzer-Integrity-OrphanRecord' => 'Árva rekord a `%1$s` -ban, kell hogy legyen megfelelője a `%2$s` táblázatban',
|
||||
'DBAnalyzer-Integrity-InvalidExtKey' => 'Érvénytelen a %1$s külső kulcs (oszlop: `%2$s.%3$s`)',
|
||||
'DBAnalyzer-Integrity-MissingExtKey' => 'Hiányzik a %1$s külső külcs (oszlop: `%2$s.%3$s`)',
|
||||
'DBAnalyzer-Integrity-InvalidValue' => '%1$s értéke érvénytelen (oszlop: `%2$s.%3$s`)~~',
|
||||
'DBAnalyzer-Integrity-InvalidValue' => '%1$s értéke érvénytelen (oszlop: `%2$s.%3$s`)',
|
||||
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Néhány felhasználónak egyáltalán nincs fiókja',
|
||||
'DBAnalyzer-Integrity-HKInvalid' => 'Sérült a `%1$s` hierarchikus kulcs',
|
||||
'DBAnalyzer-Fetch-Count-Error' => 'Lekérési hiba a `%1$s` -nál, %2$d bejegyzés lekérve / %3$d megszámlálva',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -12,7 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'Инструменты БД',
|
||||
'DBTools:Class' => 'Класс',
|
||||
'DBTools:Title' => 'Инструменты обслуживания базы данных~~',
|
||||
'DBTools:Title' => 'Инструменты обслуживания базы данных',
|
||||
'DBTools:ErrorsFound' => 'Найденные ошибки',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -25,7 +25,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
// Database inconsistencies
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
// Dictionary entries go here
|
||||
'Menu:DBToolsMenu' => 'DB Tools~~',
|
||||
'Menu:DBToolsMenu' => 'Database integrity~~',
|
||||
'DBTools:Class' => 'Class~~',
|
||||
'DBTools:Title' => 'Database Maintenance Tools~~',
|
||||
'DBTools:Title' => 'Database integrity check~~',
|
||||
'DBTools:ErrorsFound' => 'Errors Found~~',
|
||||
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
|
||||
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/** @noinspection PhpUnhandledExceptionInspection */
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'combodo-db-tools/3.1.1',
|
||||
'combodo-db-tools/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -260,19 +260,19 @@
|
||||
</classes>
|
||||
<events>
|
||||
<event id="EVENT_ADD_ATTACHMENT_TO_OBJECT" _delta="define">
|
||||
<description>An attachment has been added to an object</description>
|
||||
<name>Attachment added</name>
|
||||
<description><![CDATA[An attachment has been added to an object]]></description>
|
||||
<replaces>Attachment::AfterUpdate</replaces>
|
||||
<sources>
|
||||
<source id="Attachment">Attachment</source>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
<event_data>
|
||||
<event_datum id="object">
|
||||
<description>The attachment updated</description>
|
||||
<description>The object where the attachment is added</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="target_object">
|
||||
<description>The object to which the attachment is linked</description>
|
||||
<event_datum id="attachment">
|
||||
<description>The attachment added to the objet</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
@@ -282,19 +282,19 @@
|
||||
</event_data>
|
||||
</event>
|
||||
<event id="EVENT_REMOVE_ATTACHMENT_FROM_OBJECT" _delta="define">
|
||||
<description>An attachment has been removed from an object</description>
|
||||
<name>Attachment removed</name>
|
||||
<description><![CDATA[An attachment has been removed from an object]]></description>
|
||||
<replaces>Attachment::AfterUpdate</replaces>
|
||||
<sources>
|
||||
<source id="Attachment">Attachment</source>
|
||||
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
|
||||
</sources>
|
||||
<event_data>
|
||||
<event_datum id="object">
|
||||
<description>The attachment updated</description>
|
||||
<description>The object where the attachment is removed</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="target_object">
|
||||
<description>The object to which the attachment is linked</description>
|
||||
<event_datum id="attachment">
|
||||
<description>The attachment removed</description>
|
||||
<type>DBObject</type>
|
||||
</event_datum>
|
||||
<event_datum id="debug_info">
|
||||
|
||||
@@ -26,9 +26,9 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Attachments:History_File_Removed' => 'Attachment %1$s removed.',
|
||||
'Attachments:AddAttachment' => 'Add attachment: ',
|
||||
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s GB)',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s MB)',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s KB)',
|
||||
'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',
|
||||
|
||||
@@ -34,7 +34,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Attachment:Max_Ko' => '(Maximum fájlméret: %1$s KB)',
|
||||
'Attachments:NoAttachment' => 'Nincs melléklet. ',
|
||||
'Attachments:PreviewNotAvailable' => 'Az előnézet nem érhető el ilyen típusú melléklethez',
|
||||
'Attachments:Error:FileTooLarge' => 'Túl nagy a fájl a feltöltéshez. %1$s',
|
||||
'Attachments:Error:FileTooLarge' => 'Túl nagy a %1$s fájl a feltöltéshez.',
|
||||
'Attachments:Error:UploadedFileEmpty' => 'A kapott fájl üres, ezért nem csatolható. Vagy egy üres fájlt húzott be, vagy kérdezze meg a rendszergazdát, hátha az iTop szerver lemeze telt meg.',
|
||||
'Attachments:Render:Icons' => 'Mutassa ikonként',
|
||||
'Attachments:Render:Table' => 'Mutassa listaként',
|
||||
@@ -52,7 +52,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Attachment/Attribute:expire+' => '~~',
|
||||
'Class:Attachment/Attribute:temp_id' => 'Átmeneti azonosító',
|
||||
'Class:Attachment/Attribute:temp_id+' => '~~',
|
||||
'Class:Attachment/Attribute:item_class' => 'Elem osztály',
|
||||
'Class:Attachment/Attribute:item_class' => 'Elem típus',
|
||||
'Class:Attachment/Attribute:item_class+' => '~~',
|
||||
'Class:Attachment/Attribute:item_id' => 'Elem',
|
||||
'Class:Attachment/Attribute:item_id+' => '~~',
|
||||
|
||||
@@ -29,9 +29,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Attachments:History_File_Removed' => 'Attachment %1$s removed.~~',
|
||||
'Attachments:AddAttachment' => 'Add attachment: ~~',
|
||||
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s GB)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s MB)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s KB)~~',
|
||||
'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~~',
|
||||
|
||||
@@ -29,9 +29,9 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Attachments:History_File_Removed' => 'Attachment %1$s removed.~~',
|
||||
'Attachments:AddAttachment' => 'Add attachment: ~~',
|
||||
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
|
||||
'Attachment:Max_Go' => '(Maximum file size: %1$s GB)~~',
|
||||
'Attachment:Max_Mo' => '(Maximum file size: %1$s MB)~~',
|
||||
'Attachment:Max_Ko' => '(Maximum file size: %1$s KB)~~',
|
||||
'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~~',
|
||||
|
||||
@@ -262,10 +262,26 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
|
||||
else
|
||||
{
|
||||
$oAttachmentsRenderer->RenderViewAttachmentsList();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see ObjectFormManager::FinalizeAttachments() for the portal version
|
||||
*
|
||||
* @param $oObject
|
||||
* @param $oChange
|
||||
*
|
||||
* @return void
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreCannotSaveObjectException
|
||||
* @throws \CoreException
|
||||
* @throws \CoreUnexpectedValue
|
||||
* @throws \DeleteException
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
protected static function UpdateAttachments($oObject, $oChange = null)
|
||||
{
|
||||
self::$m_bIsModified = false;
|
||||
@@ -291,8 +307,8 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
|
||||
// Remove attachments that are no longer attached to the current object
|
||||
if (in_array($oAttachment->GetKey(), $aRemovedAttachmentIds))
|
||||
{
|
||||
$aData = ['target_object' => $oObject];
|
||||
$oAttachment->FireEvent(EVENT_REMOVE_ATTACHMENT_FROM_OBJECT, $aData);
|
||||
$aData = ['attachment' => $oAttachment];
|
||||
$oObject->FireEvent(EVENT_REMOVE_ATTACHMENT_FROM_OBJECT, $aData);
|
||||
$oAttachment->DBDelete();
|
||||
$aActions[] = self::GetActionChangeOp($oAttachment, false /* false => deletion */);
|
||||
}
|
||||
@@ -320,8 +336,8 @@ class AttachmentPlugIn implements iApplicationUIExtension, iApplicationObjectExt
|
||||
$oAttachment->DBUpdate();
|
||||
// temporary attachment confirmed, list it in the history
|
||||
$aActions[] = self::GetActionChangeOp($oAttachment, true /* true => creation */);
|
||||
$aData = ['target_object' => $oObject];
|
||||
$oAttachment->FireEvent(EVENT_ADD_ATTACHMENT_TO_OBJECT, $aData);
|
||||
$aData = ['attachment' => $oAttachment];
|
||||
$oObject->FireEvent(EVENT_ADD_ATTACHMENT_TO_OBJECT, $aData);
|
||||
}
|
||||
}
|
||||
if (count($aActions) > 0)
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-attachments/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'bkp-backup-running' => 'A mentés fut. Kérem várjon...',
|
||||
'bkp-restore-running' => 'A visszaállítás fut. Kérem várjon...',
|
||||
'Menu:BackupStatus' => 'Ütemezett biztonsági mentés',
|
||||
'bkp-status-title' => 'Ütemezett biztonsági mentés',
|
||||
'Menu:BackupStatus' => 'Biztonsági mentés',
|
||||
'bkp-status-title' => 'Adatbázis biztonsági mentés',
|
||||
'bkp-status-checks' => 'Beállítás és ellenőrzés',
|
||||
'bkp-mysqldump-ok' => 'mysqldump megvan: %1$s',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump nem található: %1$s - Győződjön meg róla, hogy telepítve van és szerepel az elérési útvonalban, vagy szerkessze a konfigurációs fájlt a mysql_bindir beállításához..',
|
||||
@@ -43,7 +43,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'bkp-table-size+' => '~~',
|
||||
'bkp-table-actions' => 'Műveletek',
|
||||
'bkp-table-actions+' => '~~',
|
||||
'bkp-status-backups-auto' => 'Ütemezett biztonsági mentés',
|
||||
'bkp-status-backups-auto' => 'Automatikus biztonsági mentés',
|
||||
'bkp-status-backups-manual' => 'Manuális biztonsági mentés',
|
||||
'bkp-status-backups-none' => 'Még nincs biztonsági mentés',
|
||||
'bkp-next-backup' => 'A következő mentés <b>%1$s</b> (%2$s) fog lefutni %3$s -kor',
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
'Menu:BackupStatus' => 'Scheduled backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
'Menu:BackupStatus' => 'Scheduled backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'bkp-backup-running' => 'A backup is running. Please wait...~~',
|
||||
'bkp-restore-running' => 'A restore is running. Please wait...~~',
|
||||
'Menu:BackupStatus' => 'Scheduled Backups~~',
|
||||
'bkp-status-title' => 'Scheduled Backups~~',
|
||||
'Menu:BackupStatus' => 'Backups~~',
|
||||
'bkp-status-title' => 'Backups~~',
|
||||
'bkp-status-checks' => 'Settings and checks~~',
|
||||
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
|
||||
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'bkp-status-backups-auto' => 'Scheduled backups~~',
|
||||
'bkp-status-backups-manual' => 'Manual backups~~',
|
||||
'bkp-status-backups-none' => 'No backup yet~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
|
||||
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s.~~',
|
||||
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
|
||||
'bkp-button-backup-now' => 'Backup now!~~',
|
||||
'bkp-button-restore-now' => 'Restore!~~',
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-backup/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -79,7 +79,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Document/Attribute:contracts_list' => 'Szerződések',
|
||||
'Class:Document/Attribute:contracts_list+' => 'All the contracts linked to this document~~',
|
||||
'Class:Document/Attribute:contracts_list+' => 'Ehhez a dokumentumhoz kapcsolódó szerződések',
|
||||
'Class:Document/Attribute:services_list' => 'Szolgáltatások',
|
||||
'Class:Document/Attribute:services_list+' => 'All the services linked to this document~~',
|
||||
));
|
||||
'Class:Document/Attribute:services_list+' => 'Ehhez a dokumentumhoz kapcsolódó szolgáltatások',
|
||||
));
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-cmdb-services/3.1.1',
|
||||
'itop-bridge-cmdb-services/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -36,9 +36,9 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Hibajegy',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Ref',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Referenciaszám',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Hibajegy cím',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Hibajegy tárgya',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id' => 'CI',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id+' => '~~',
|
||||
@@ -46,7 +46,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name+' => '~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact' => 'Hatása (szöveg)',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact+' => '~~',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => 'Hatása',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => 'Hatás kód',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:manual' => 'Kézzel hozzáadva',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:computed' => 'Számított',
|
||||
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:not_impacted' => 'Nincs hatása',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-cmdb-ticket/3.1.1',
|
||||
'itop-bridge-cmdb-ticket/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-datacenter-mgmt-services/3.1.1',
|
||||
'itop-bridge-datacenter-mgmt-services/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-endusers-devices-services/3.1.1',
|
||||
'itop-bridge-endusers-devices-services/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-storage-mgmt-services/3.1.1',
|
||||
'itop-bridge-storage-mgmt-services/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
SetupWebPage::AddModule(
|
||||
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
||||
'itop-bridge-virtualization-mgmt-services/3.1.1',
|
||||
'itop-bridge-virtualization-mgmt-services/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-bridge-virtualization-storage/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -22,21 +22,21 @@
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Menu:ChangeManagement' => 'Változáskezelés',
|
||||
'Menu:Change:Overview' => 'Áttekintő',
|
||||
'Menu:Change:Overview+' => '~~',
|
||||
'Menu:NewChange' => 'Új változás',
|
||||
'Menu:NewChange+' => 'Új változásjegy létrehozása',
|
||||
'Menu:SearchChanges' => 'Változás keresés',
|
||||
'Menu:SearchChanges+' => 'Változásjegy keresés',
|
||||
'Menu:Change:Shortcuts' => 'Gyorsgombok',
|
||||
'Menu:Change:Shortcuts+' => '~~',
|
||||
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingAcceptance+' => '~~',
|
||||
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
|
||||
'Menu:WaitingApproval+' => '~~',
|
||||
'Menu:Changes' => 'Nyitott változási kérelmek',
|
||||
'Menu:Changes+' => 'Minden nyitott változási kérelem',
|
||||
'Menu:MyChanges' => 'Hozzám rendelt változások',
|
||||
'Menu:MyChanges+' => 'Changes assigned to me (as Agent)~~',
|
||||
'Menu:Change:Overview+' => 'Áttekintő oldal',
|
||||
'Menu:NewChange' => 'Új változás',
|
||||
'Menu:NewChange+' => 'Új változásjegy létrehozása',
|
||||
'Menu:SearchChanges' => 'Változás keresés',
|
||||
'Menu:SearchChanges+' => 'Változásjegy keresés',
|
||||
'Menu:Change:Shortcuts' => 'Gyorsgombok',
|
||||
'Menu:Change:Shortcuts+' => 'Gyorselérés gombok',
|
||||
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingAcceptance+' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
|
||||
'Menu:WaitingApproval+' => 'Jóváhagyásra váró változások',
|
||||
'Menu:Changes' => 'Nyitott változási kérelmek',
|
||||
'Menu:Changes+' => 'Nyitott változási kérelmek összesítése',
|
||||
'Menu:MyChanges' => 'Hozzám rendelt változások',
|
||||
'Menu:MyChanges+' => 'Ügyintézőként hozzám rendelt változások',
|
||||
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Változások kategóriánként az elmúlt 7 napban',
|
||||
'UI-ChangeManagementOverview-Last-7-days' => 'A változások száma az elmúlt 7 napban',
|
||||
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Változások tartományonként az elmúlt 7 napban',
|
||||
@@ -119,22 +119,22 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Change/Attribute:outage/Value:yes+' => '',
|
||||
'Class:Change/Attribute:fallback' => 'Visszavonás',
|
||||
'Class:Change/Attribute:fallback+' => '',
|
||||
'Class:Change/Attribute:parent_id' => 'Szülő változás',
|
||||
'Class:Change/Attribute:parent_id+' => '~~',
|
||||
'Class:Change/Attribute:parent_name' => 'Szülő változás Ref',
|
||||
'Class:Change/Attribute:parent_name+' => '~~',
|
||||
'Class:Change/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
|
||||
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
|
||||
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
|
||||
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
|
||||
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
|
||||
'Class:Change/Attribute:child_changes_list' => 'Gyermek változások',
|
||||
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
|
||||
'Class:Change/Attribute:parent_id_friendlyname' => 'Szülő változás rövid név',
|
||||
'Class:Change/Attribute:parent_id_friendlyname+' => '~~',
|
||||
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Változás típus',
|
||||
'Class:Change/Attribute:parent_id_finalclass_recall+' => '~~',
|
||||
'Class:Change/Attribute:parent_id' => 'Fölérendelt változás',
|
||||
'Class:Change/Attribute:parent_id+' => '',
|
||||
'Class:Change/Attribute:parent_name' => 'Referenciaszám',
|
||||
'Class:Change/Attribute:parent_name+' => '',
|
||||
'Class:Change/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
|
||||
'Class:Change/Attribute:related_request_list+' => 'Ehhez a változáshoz kapcsolódó felhasználói kérelmek',
|
||||
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
|
||||
'Class:Change/Attribute:related_problems_list+' => 'Ehhez a változáshoz kapcsolódó problémák',
|
||||
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:related_incident_list+' => 'Ehhez a változáshoz kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:child_changes_list' => 'Kapcsolódó változások',
|
||||
'Class:Change/Attribute:child_changes_list+' => 'Ehhez a változáshoz kapcsolódó változások',
|
||||
'Class:Change/Attribute:parent_id_friendlyname' => 'Fölérendelt változás rövid név',
|
||||
'Class:Change/Attribute:parent_id_friendlyname+' => '',
|
||||
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Változás típus',
|
||||
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
|
||||
'Class:Change/Stimulus:ev_validate' => 'Ellenőrzés',
|
||||
'Class:Change/Stimulus:ev_validate+' => '',
|
||||
'Class:Change/Stimulus:ev_reject' => 'Elutasítás',
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-change-mgmt-itil/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -21,23 +21,23 @@
|
||||
* along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Menu:ChangeManagement' => 'Változáskezelés',
|
||||
'Menu:Change:Overview' => 'Áttekintő',
|
||||
'Menu:Change:Overview+' => '~~',
|
||||
'Menu:NewChange' => 'Új változás',
|
||||
'Menu:NewChange+' => 'Új változásjegy létrehozása',
|
||||
'Menu:SearchChanges' => 'Változás keresés',
|
||||
'Menu:SearchChanges+' => 'Változásjegy keresés',
|
||||
'Menu:Change:Shortcuts' => 'Gyorsgombok',
|
||||
'Menu:Change:Shortcuts+' => '~~',
|
||||
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingAcceptance+' => '~~',
|
||||
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
|
||||
'Menu:WaitingApproval+' => '~~',
|
||||
'Menu:Changes' => 'Nyitott változási kérelmek',
|
||||
'Menu:Changes+' => 'Minden nyitott változási kérelem',
|
||||
'Menu:MyChanges' => 'Hozzám rendelt változások',
|
||||
'Menu:MyChanges+' => 'Changes assigned to me (as Agent)~~',
|
||||
'Menu:ChangeManagement' => 'Változáskezelés',
|
||||
'Menu:Change:Overview' => 'Áttekintő',
|
||||
'Menu:Change:Overview+' => 'Áttekintő oldal',
|
||||
'Menu:NewChange' => 'Új változás',
|
||||
'Menu:NewChange+' => 'Új változásjegy létrehozása',
|
||||
'Menu:SearchChanges' => 'Változás keresés',
|
||||
'Menu:SearchChanges+' => 'Változásjegy keresés',
|
||||
'Menu:Change:Shortcuts' => 'Gyorsgombok',
|
||||
'Menu:Change:Shortcuts+' => 'Gyorselérés gombok',
|
||||
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingAcceptance+' => 'Elfogadásra váró változások',
|
||||
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
|
||||
'Menu:WaitingApproval+' => 'Jóváhagyásra váró változások',
|
||||
'Menu:Changes' => 'Nyitott változási kérelmek',
|
||||
'Menu:Changes+' => 'Nyitott változási kérelmek összesítése',
|
||||
'Menu:MyChanges' => 'Hozzám rendelt változások',
|
||||
'Menu:MyChanges+' => 'Ügyintézőként hozzám rendelt változások',
|
||||
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Változások kategóriánként az elmúlt 7 napban',
|
||||
'UI-ChangeManagementOverview-Last-7-days' => 'A változások száma az elmúlt 7 napban',
|
||||
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Változások tartományonként az elmúlt 7 napban',
|
||||
@@ -81,26 +81,26 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Change/Attribute:category' => 'Kategória',
|
||||
'Class:Change/Attribute:category+' => '~~',
|
||||
'Class:Change/Attribute:category/Value:application' => 'Alkalmazás',
|
||||
'Class:Change/Attribute:category/Value:application+' => 'application~~',
|
||||
'Class:Change/Attribute:category/Value:application+' => '',
|
||||
'Class:Change/Attribute:category/Value:hardware' => 'Hardver',
|
||||
'Class:Change/Attribute:category/Value:hardware+' => 'hardware~~',
|
||||
'Class:Change/Attribute:category/Value:hardware+' => '',
|
||||
'Class:Change/Attribute:category/Value:network' => 'Hálózat',
|
||||
'Class:Change/Attribute:category/Value:network+' => 'network~~',
|
||||
'Class:Change/Attribute:category/Value:network+' => '',
|
||||
'Class:Change/Attribute:category/Value:other' => 'Egyéb',
|
||||
'Class:Change/Attribute:category/Value:other+' => 'other~~',
|
||||
'Class:Change/Attribute:category/Value:other+' => '',
|
||||
'Class:Change/Attribute:category/Value:software' => 'Szoftver',
|
||||
'Class:Change/Attribute:category/Value:software+' => 'software~~',
|
||||
'Class:Change/Attribute:category/Value:software+' => '',
|
||||
'Class:Change/Attribute:category/Value:system' => 'Rendszer',
|
||||
'Class:Change/Attribute:category/Value:system+' => 'system~~',
|
||||
'Class:Change/Attribute:category/Value:system+' => '',
|
||||
'Class:Change/Attribute:reject_reason' => 'Elutasítás oka',
|
||||
'Class:Change/Attribute:reject_reason+' => '~~',
|
||||
'Class:Change/Attribute:changemanager_id' => 'Változás menedzser',
|
||||
'Class:Change/Attribute:changemanager_id+' => '~~',
|
||||
'Class:Change/Attribute:changemanager_email' => 'Változás menedzser email címe',
|
||||
'Class:Change/Attribute:changemanager_email+' => '~~',
|
||||
'Class:Change/Attribute:parent_id' => 'Szülő változás',
|
||||
'Class:Change/Attribute:parent_id+' => '~~',
|
||||
'Class:Change/Attribute:parent_name' => 'Szülő változás ref.',
|
||||
'Class:Change/Attribute:parent_id' => 'Fölérendelt változás',
|
||||
'Class:Change/Attribute:parent_id+' => '~~',
|
||||
'Class:Change/Attribute:parent_name' => 'Referenciaszám',
|
||||
'Class:Change/Attribute:parent_name+' => '~~',
|
||||
'Class:Change/Attribute:creation_date' => 'Létrehozás dátuma',
|
||||
'Class:Change/Attribute:creation_date+' => '~~',
|
||||
@@ -109,14 +109,14 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Change/Attribute:fallback_plan' => 'Tartalék terv',
|
||||
'Class:Change/Attribute:fallback_plan+' => '~~',
|
||||
'Class:Change/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
|
||||
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
|
||||
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
|
||||
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
|
||||
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
|
||||
'Class:Change/Attribute:child_changes_list' => 'Gyermek változások',
|
||||
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
|
||||
'Class:Change/Attribute:parent_id_friendlyname' => 'Szülő változás rövid név',
|
||||
'Class:Change/Attribute:related_request_list+' => 'Ehhez a változáshoz kapcsolódó felhasználói kérelmek',
|
||||
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:related_incident_list+' => 'Ehhez a változáshoz kapcsolódó incidensek',
|
||||
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
|
||||
'Class:Change/Attribute:related_problems_list+' => 'Ehhez a változáshoz kapcsolódó problémák',
|
||||
'Class:Change/Attribute:child_changes_list' => 'Kapcsolódó változások',
|
||||
'Class:Change/Attribute:child_changes_list+' => 'Ehhez a változáshoz kapcsolódó változások',
|
||||
'Class:Change/Attribute:parent_id_friendlyname' => 'Fölérendelt változás rövid név',
|
||||
'Class:Change/Attribute:parent_id_friendlyname+' => '~~',
|
||||
'Class:Change/Stimulus:ev_assign' => 'Hozzárendelés',
|
||||
'Class:Change/Stimulus:ev_assign+' => '~~',
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-change-mgmt/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<default_value/>
|
||||
<is_null_allowed>true</is_null_allowed>
|
||||
</field>
|
||||
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect" _delta="define">
|
||||
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect">
|
||||
<linked_class>lnkContactToFunctionalCI</linked_class>
|
||||
<ext_key_to_me>functionalci_id</ext_key_to_me>
|
||||
<count_min>0</count_min>
|
||||
|
||||
@@ -1282,7 +1282,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Class:VLAN/Attribute:org_id' => 'Organization~~',
|
||||
'Class:VLAN/Attribute:org_id+' => '~~',
|
||||
'Class:VLAN/Attribute:org_name' => 'Organization name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => 'Common name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => '',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Subnets~~',
|
||||
'Class:VLAN/Attribute:subnets_list+' => '~~',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list' => 'Physical network interfaces~~',
|
||||
|
||||
@@ -34,7 +34,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Relation:depends on/UpStream' => 'Wirkt auf ...',
|
||||
'Relation:impacts/LoadData' => 'Daten laden',
|
||||
'Relation:impacts/FilteredData' => 'Daten sind über den Tab "Grafische Ansicht" gefiltert',
|
||||
'Relation:impacts/NoFilteredData' => 'Bitte wählen Sie Objekte ~~',
|
||||
'Relation:impacts/NoFilteredData' => 'Bitte wählen Sie Objekte',
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -20,17 +20,17 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Relation:impacts/Description' => 'Konfigurációs elem működését befolyásolják',
|
||||
'Relation:impacts/DownStream' => 'Hatás',
|
||||
'Relation:impacts/DownStream+' => 'Konfigurációs elem működését befolyásolják',
|
||||
'Relation:impacts/UpStream' => 'Függőségek',
|
||||
'Relation:impacts/UpStream+' => 'Konfigurációs elemtől függnek',
|
||||
// Legacy entries
|
||||
'Relation:depends on/Description' => 'Konfigurációs elemtől függnek',
|
||||
'Relation:depends on/DownStream' => 'Függőségek',
|
||||
'Relation:depends on/UpStream' => 'Hatások',
|
||||
'Relation:impacts/LoadData' => 'Adat betöltés',
|
||||
'Relation:impacts/NoFilteredData' => 'please select objects and load data~~',
|
||||
'Relation:impacts/Description' => 'Konfigurációs elem működését befolyásolják',
|
||||
'Relation:impacts/DownStream' => 'Hatáselemzés',
|
||||
'Relation:impacts/DownStream+' => 'Konfigurációs elem működését befolyásolják',
|
||||
'Relation:impacts/UpStream' => 'Függőségek',
|
||||
'Relation:impacts/UpStream+' => 'Konfigurációs elemtől függnek',
|
||||
// Legacy entries
|
||||
'Relation:depends on/Description' => 'Konfigurációs elemtől függnek',
|
||||
'Relation:depends on/DownStream' => 'Függőségek',
|
||||
'Relation:depends on/UpStream' => 'Hatáselemzés',
|
||||
'Relation:impacts/LoadData' => 'Adat betöltés',
|
||||
'Relation:impacts/NoFilteredData' => 'kérjük, válassza ki az objektumokat a grafikus nézetben',
|
||||
'Relation:impacts/FilteredData' => 'Filtered data~~',
|
||||
));
|
||||
|
||||
@@ -97,16 +97,16 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:FunctionalCI' => 'Funkcionális CI',
|
||||
'Class:FunctionalCI+' => '',
|
||||
'Class:FunctionalCI/Attribute:name' => 'Név',
|
||||
'Class:FunctionalCI/Attribute:name' => 'CI Név',
|
||||
'Class:FunctionalCI/Attribute:name+' => '',
|
||||
'Class:FunctionalCI/Attribute:description' => 'Leírás',
|
||||
'Class:FunctionalCI/Attribute:description+' => '~~',
|
||||
'Class:FunctionalCI/Attribute:org_id' => 'Tulajdonos szevezeti egység',
|
||||
'Class:FunctionalCI/Attribute:description+' => '',
|
||||
'Class:FunctionalCI/Attribute:org_id' => 'Tulajdonos szervezeti egység',
|
||||
'Class:FunctionalCI/Attribute:org_id+' => '',
|
||||
'Class:FunctionalCI/Attribute:organization_name' => 'Szervezeti egység név',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => 'Általános név',
|
||||
'Class:FunctionalCI/Attribute:business_criticity' => 'Üzlet kritikusság',
|
||||
'Class:FunctionalCI/Attribute:business_criticity+' => '~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity+' => '',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high' => 'magas',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high+' => 'high~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:low' => 'alacsony',
|
||||
@@ -114,7 +114,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:medium' => 'közepes',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:medium+' => 'medium~~',
|
||||
'Class:FunctionalCI/Attribute:move2production' => 'Használatba vétel dátuma',
|
||||
'Class:FunctionalCI/Attribute:move2production+' => '~~',
|
||||
'Class:FunctionalCI/Attribute:move2production+' => '',
|
||||
'Class:FunctionalCI/Attribute:contacts_list' => 'Kapcsolattartók',
|
||||
'Class:FunctionalCI/Attribute:contacts_list+' => 'Kapcsolattartók ehhez a konfigurációs elemhez',
|
||||
'Class:FunctionalCI/Attribute:documents_list' => 'Dokumentumok',
|
||||
@@ -123,9 +123,9 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'Alkalmazásmegoldások, melyek ettől a konfigurációs elemtől függenek',
|
||||
'Class:FunctionalCI/Attribute:softwares_list' => 'Szoftverek',
|
||||
'Class:FunctionalCI/Attribute:softwares_list+' => 'Szoftverek, melyek erre a konfigurációs elemre vannak telepítve',
|
||||
'Class:FunctionalCI/Attribute:finalclass' => 'Típus',
|
||||
'Class:FunctionalCI/Attribute:finalclass+' => '',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Aktív hibajegyek',
|
||||
'Class:FunctionalCI/Attribute:finalclass' => 'CI típus',
|
||||
'Class:FunctionalCI/Attribute:finalclass+' => '',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets' => 'Nyitott hibajegyek',
|
||||
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
|
||||
));
|
||||
|
||||
@@ -146,10 +146,10 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PhysicalDevice/Attribute:status' => 'Állapot',
|
||||
'Class:PhysicalDevice/Attribute:status+' => '~~',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:implementation' => 'Megvalósítás alatt',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:implementation+' => 'implementáció',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:implementation+' => 'implementation',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:obsolete' => 'Elavult',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:obsolete+' => 'obsolete~~',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:production' => 'Használatban',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:production' => 'Bevezetve',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:production+' => 'production~~',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:stock' => 'Készleten',
|
||||
'Class:PhysicalDevice/Attribute:status/Value:stock+' => 'stock~~',
|
||||
@@ -159,7 +159,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PhysicalDevice/Attribute:brand_name+' => '~~',
|
||||
'Class:PhysicalDevice/Attribute:model_id' => 'Modell',
|
||||
'Class:PhysicalDevice/Attribute:model_id+' => '~~',
|
||||
'Class:PhysicalDevice/Attribute:model_name' => 'Modellnév',
|
||||
'Class:PhysicalDevice/Attribute:model_name' => 'Modell név',
|
||||
'Class:PhysicalDevice/Attribute:model_name+' => '~~',
|
||||
'Class:PhysicalDevice/Attribute:asset_number' => 'Leltári szám',
|
||||
'Class:PhysicalDevice/Attribute:asset_number+' => '~~',
|
||||
@@ -181,8 +181,8 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Rack/Attribute:nb_u+' => '~~',
|
||||
'Class:Rack/Attribute:device_list' => 'Eszközök',
|
||||
'Class:Rack/Attribute:device_list+' => 'Minden fizikai eszköz amely ebbe a rack-be lett beszerelve',
|
||||
'Class:Rack/Attribute:enclosure_list' => 'Készülékházak',
|
||||
'Class:Rack/Attribute:enclosure_list+' => 'Minden készülékház ebben a rack-ben',
|
||||
'Class:Rack/Attribute:enclosure_list' => 'Beépítőkeretek',
|
||||
'Class:Rack/Attribute:enclosure_list+' => 'Minden beépítőkeret ebben a rack-ben',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -262,14 +262,14 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:DatacenterDevice/Attribute:rack_id+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:rack_name' => 'Rack név',
|
||||
'Class:DatacenterDevice/Attribute:rack_name+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_id' => 'Készülékház',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_id+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name' => 'Készülékház név',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u' => 'Unit magasság',
|
||||
'Class:DatacenterDevice/Attribute:nb_u+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Menedzsment IP cím',
|
||||
'Class:DatacenterDevice/Attribute:managementip+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_id' => 'Beépítőkeret',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_id+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name' => 'Beépítőkeret név',
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u' => 'Unit magasság',
|
||||
'Class:DatacenterDevice/Attribute:nb_u+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Menedzsment IP cím',
|
||||
'Class:DatacenterDevice/Attribute:managementip+' => 'Az eszköz konfigurációs felületének az ip címe',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id' => 'PowerA áramforrás',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:powerA_name' => 'PowerA áramforrás név',
|
||||
@@ -304,11 +304,11 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:NetworkDevice/Attribute:connectablecis_list' => 'Kapcsolódó eszközök',
|
||||
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Az összes eszköz, amely ehhez a hálózati eszközhöz csatlakozik',
|
||||
'Class:NetworkDevice/Attribute:iosversion_id' => 'IOS verzió',
|
||||
'Class:NetworkDevice/Attribute:iosversion_id+' => '~~',
|
||||
'Class:NetworkDevice/Attribute:iosversion_name' => 'IOS verzió név',
|
||||
'Class:NetworkDevice/Attribute:iosversion_name+' => '~~',
|
||||
'Class:NetworkDevice/Attribute:ram' => 'RAM',
|
||||
'Class:NetworkDevice/Attribute:ram+' => '',
|
||||
'Class:NetworkDevice/Attribute:iosversion_id+' => 'A hálózati eszköz firmware-je',
|
||||
'Class:NetworkDevice/Attribute:iosversion_name' => 'IOS verzió név',
|
||||
'Class:NetworkDevice/Attribute:iosversion_name+' => '',
|
||||
'Class:NetworkDevice/Attribute:ram' => 'RAM',
|
||||
'Class:NetworkDevice/Attribute:ram+' => 'Műveleti memória',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -320,21 +320,21 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Server+' => '',
|
||||
'Class:Server/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:Server/Attribute:osfamily_id' => 'OS család',
|
||||
'Class:Server/Attribute:osfamily_id+' => '~~',
|
||||
'Class:Server/Attribute:osfamily_id+' => '',
|
||||
'Class:Server/Attribute:osfamily_name' => 'OS család név',
|
||||
'Class:Server/Attribute:osfamily_name+' => '~~',
|
||||
'Class:Server/Attribute:osfamily_name+' => '',
|
||||
'Class:Server/Attribute:osversion_id' => 'OS verzió',
|
||||
'Class:Server/Attribute:osversion_id+' => '~~',
|
||||
'Class:Server/Attribute:osversion_id+' => '',
|
||||
'Class:Server/Attribute:osversion_name' => 'OS verzió név',
|
||||
'Class:Server/Attribute:osversion_name+' => '~~',
|
||||
'Class:Server/Attribute:osversion_name+' => '',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS licenc',
|
||||
'Class:Server/Attribute:oslicence_id+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_id+' => '',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS licenc név',
|
||||
'Class:Server/Attribute:oslicence_name+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_name+' => '',
|
||||
'Class:Server/Attribute:cpu' => 'CPU',
|
||||
'Class:Server/Attribute:cpu+' => '',
|
||||
'Class:Server/Attribute:ram' => 'RAM',
|
||||
'Class:Server/Attribute:ram+' => '',
|
||||
'Class:Server/Attribute:cpu+' => 'Processzor típus',
|
||||
'Class:Server/Attribute:ram' => 'RAM',
|
||||
'Class:Server/Attribute:ram+' => 'Műveleti memória',
|
||||
'Class:Server/Attribute:logicalvolumes_list' => 'Logikai kötetek',
|
||||
'Class:Server/Attribute:logicalvolumes_list+' => 'Logikai kötetek, melyek ehhez a szerverhez kapcsolódnak',
|
||||
));
|
||||
@@ -345,7 +345,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:StorageSystem' => 'Tárolórendszer',
|
||||
'Class:StorageSystem+' => '~~',
|
||||
'Class:StorageSystem+' => '',
|
||||
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:StorageSystem/Attribute:logicalvolume_list' => 'Logikai kötetek',
|
||||
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'Logikai kötetek ebben a tárolórendszerben',
|
||||
@@ -357,7 +357,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:SANSwitch' => 'SAN Switch',
|
||||
'Class:SANSwitch+' => '~~',
|
||||
'Class:SANSwitch+' => 'Tárolórendszer switch',
|
||||
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:SANSwitch/Attribute:datacenterdevice_list' => 'Kapcsolódó eszközök',
|
||||
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'Ehhez a SAN-switch-hez csatlakozó konfigurációs elemek',
|
||||
@@ -369,10 +369,10 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:TapeLibrary' => 'Szalagos tároló',
|
||||
'Class:TapeLibrary+' => '~~',
|
||||
'Class:TapeLibrary+' => 'Mágnesszalagos tároló',
|
||||
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:TapeLibrary/Attribute:tapes_list' => 'Szalagok',
|
||||
'Class:TapeLibrary/Attribute:tapes_list+' => 'Szalagok a szalagos tárolóhoz',
|
||||
'Class:TapeLibrary/Attribute:tapes_list+' => 'Szalagok (kazetták) a szalagos tárolóhoz',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -381,7 +381,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:NAS' => 'NAS',
|
||||
'Class:NAS+' => '~~',
|
||||
'Class:NAS+' => 'Hálózati adattároló',
|
||||
'Class:NAS/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:NAS/Attribute:nasfilesystem_list' => 'Fájlrendszerek',
|
||||
'Class:NAS/Attribute:nasfilesystem_list+' => 'A NAS fájlrendszerei',
|
||||
@@ -393,22 +393,22 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PC' => 'PC',
|
||||
'Class:PC+' => '',
|
||||
'Class:PC+' => 'Személyi számítógép',
|
||||
'Class:PC/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:PC/Attribute:osfamily_id' => 'OS család',
|
||||
'Class:PC/Attribute:osfamily_id+' => '~~',
|
||||
'Class:PC/Attribute:osfamily_id+' => '',
|
||||
'Class:PC/Attribute:osfamily_name' => 'OS család név',
|
||||
'Class:PC/Attribute:osfamily_name+' => '~~',
|
||||
'Class:PC/Attribute:osfamily_name+' => '',
|
||||
'Class:PC/Attribute:osversion_id' => 'OS verzió',
|
||||
'Class:PC/Attribute:osversion_id+' => '~~',
|
||||
'Class:PC/Attribute:osversion_id+' => '',
|
||||
'Class:PC/Attribute:osversion_name' => 'OS verzió név',
|
||||
'Class:PC/Attribute:osversion_name+' => '~~',
|
||||
'Class:PC/Attribute:osversion_name+' => '',
|
||||
'Class:PC/Attribute:cpu' => 'CPU',
|
||||
'Class:PC/Attribute:cpu+' => '',
|
||||
'Class:PC/Attribute:ram' => 'RAM',
|
||||
'Class:PC/Attribute:ram+' => '',
|
||||
'Class:PC/Attribute:type' => 'Típus',
|
||||
'Class:PC/Attribute:type+' => '~~',
|
||||
'Class:PC/Attribute:type+' => '',
|
||||
'Class:PC/Attribute:type/Value:desktop' => 'Desktop',
|
||||
'Class:PC/Attribute:type/Value:desktop+' => 'desktop~~',
|
||||
'Class:PC/Attribute:type/Value:laptop' => 'Laptop',
|
||||
@@ -441,7 +441,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PowerSource' => 'Áramforrás',
|
||||
'Class:PowerSource+' => '~~',
|
||||
'Class:PowerSource+' => 'UPS, generátor, akkumulátor stb.',
|
||||
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:PowerSource/Attribute:pdus_list' => 'PDU-k',
|
||||
'Class:PowerSource/Attribute:pdus_list+' => 'Tápelosztók amik ezt az áramforrást használják',
|
||||
@@ -453,16 +453,16 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PDU' => 'PDU',
|
||||
'Class:PDU+' => '~~',
|
||||
'Class:PDU+' => 'Tápelosztó a rack-ben',
|
||||
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s~~',
|
||||
'Class:PDU/Attribute:rack_id' => 'Rack',
|
||||
'Class:PDU/Attribute:rack_id+' => '~~',
|
||||
'Class:PDU/Attribute:rack_name' => 'Rack név',
|
||||
'Class:PDU/Attribute:rack_name+' => '~~',
|
||||
'Class:PDU/Attribute:powerstart_id' => 'Betápláló',
|
||||
'Class:PDU/Attribute:powerstart_id+' => '~~',
|
||||
'Class:PDU/Attribute:powerstart_name' => 'Betápláló név',
|
||||
'Class:PDU/Attribute:powerstart_name+' => '~~',
|
||||
'Class:PDU/Attribute:powerstart_id' => 'Áramforrás',
|
||||
'Class:PDU/Attribute:powerstart_id+' => '~~',
|
||||
'Class:PDU/Attribute:powerstart_name' => 'Áramforrás név',
|
||||
'Class:PDU/Attribute:powerstart_name+' => '~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -480,8 +480,8 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Enclosure' => 'Készülékház',
|
||||
'Class:Enclosure+' => '~~',
|
||||
'Class:Enclosure' => 'Beépítőkeret',
|
||||
'Class:Enclosure+' => 'Rack-be szerelhető készülékszerelvény',
|
||||
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s~~',
|
||||
'Class:Enclosure/Attribute:rack_id' => 'Rack',
|
||||
'Class:Enclosure/Attribute:rack_id+' => '~~',
|
||||
@@ -498,14 +498,14 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:ApplicationSolution' => 'Egyedi alkalmazás',
|
||||
'Class:ApplicationSolution+' => '',
|
||||
'Class:ApplicationSolution' => 'Alkalmazásmegoldás',
|
||||
'Class:ApplicationSolution+' => 'Több alkalmazás és CI kombinációja egy adott feladatra',
|
||||
'Class:ApplicationSolution/Attribute:functionalcis_list' => 'CI-k',
|
||||
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'Konfigurációs elemek, melyek ezt az alkalmazásmegoldást alkotják',
|
||||
'Class:ApplicationSolution/Attribute:businessprocess_list' => 'Üzleti folyamatok',
|
||||
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'Üzleti folyamatok, melyek ettől az alkalmazásmegoldástól függenek',
|
||||
'Class:ApplicationSolution/Attribute:status' => 'Állapot',
|
||||
'Class:ApplicationSolution/Attribute:status+' => '~~',
|
||||
'Class:ApplicationSolution/Attribute:status+' => '',
|
||||
'Class:ApplicationSolution/Attribute:status/Value:active' => 'Aktív',
|
||||
'Class:ApplicationSolution/Attribute:status/Value:active+' => 'active~~',
|
||||
'Class:ApplicationSolution/Attribute:status/Value:inactive' => 'Inaktív',
|
||||
@@ -522,11 +522,11 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:BusinessProcess' => 'Üzleti folyamat',
|
||||
'Class:BusinessProcess+' => '',
|
||||
'Class:BusinessProcess+' => 'Személyek, szolgáltatások és CI-k értékteremtő kombinációja',
|
||||
'Class:BusinessProcess/Attribute:applicationsolutions_list' => 'Alkalmazásmegoldások',
|
||||
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => 'Alkalmazásmegoldások melyek hatással vannak erre az üzleti folyamatra',
|
||||
'Class:BusinessProcess/Attribute:status' => 'Állapot',
|
||||
'Class:BusinessProcess/Attribute:status+' => '~~',
|
||||
'Class:BusinessProcess/Attribute:status+' => '',
|
||||
'Class:BusinessProcess/Attribute:status/Value:active' => 'Aktív',
|
||||
'Class:BusinessProcess/Attribute:status/Value:active+' => 'active~~',
|
||||
'Class:BusinessProcess/Attribute:status/Value:inactive' => 'Inaktív',
|
||||
@@ -539,27 +539,27 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:SoftwareInstance' => 'Szoftverpéldány',
|
||||
'Class:SoftwareInstance+' => '',
|
||||
'Class:SoftwareInstance+' => 'A szoftver telepített példányai',
|
||||
'Class:SoftwareInstance/Attribute:system_id' => 'Rendszer',
|
||||
'Class:SoftwareInstance/Attribute:system_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:system_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:system_name' => 'Rendszer név',
|
||||
'Class:SoftwareInstance/Attribute:system_name+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:system_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:software_id' => 'Szoftver',
|
||||
'Class:SoftwareInstance/Attribute:software_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:software_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:software_name' => 'Szoftvernév',
|
||||
'Class:SoftwareInstance/Attribute:software_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Szoftver licenc',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id+' => '',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Szoftver licenc név',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:path' => 'Elérési út',
|
||||
'Class:SoftwareInstance/Attribute:path+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:path+' => '',
|
||||
'Class:SoftwareInstance/Attribute:status' => 'Állapot',
|
||||
'Class:SoftwareInstance/Attribute:status+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:status+' => '',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:active' => 'Aktív',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:active+' => 'active~~',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:active+' => '',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:inactive' => 'Inaktív',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:inactive+' => 'inactive~~',
|
||||
'Class:SoftwareInstance/Attribute:status/Value:inactive+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -568,9 +568,9 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Middleware' => 'Middleware',
|
||||
'Class:Middleware+' => 'Köztes szoftver',
|
||||
'Class:Middleware/Attribute:middlewareinstance_list' => 'Middleware példány',
|
||||
'Class:Middleware/Attribute:middlewareinstance_list+' => 'Middleware példányok melyeket ez a middlaware biztosít',
|
||||
'Class:Middleware+' => 'Köztes szoftver rendszerek összekötéséhez',
|
||||
'Class:Middleware/Attribute:middlewareinstance_list' => 'Middleware példányok',
|
||||
'Class:Middleware/Attribute:middlewareinstance_list+' => 'Middleware példányok melyeket ez a middleware biztosít',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -578,8 +578,8 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:DBServer' => 'Adatbázis',
|
||||
'Class:DBServer+' => '',
|
||||
'Class:DBServer' => 'Adatbázis szerver',
|
||||
'Class:DBServer+' => 'Adatbázis kiszolgáló',
|
||||
'Class:DBServer/Attribute:dbschema_list' => 'DB sémák',
|
||||
'Class:DBServer/Attribute:dbschema_list+' => 'A DB szerver adatbázis sémái',
|
||||
));
|
||||
@@ -590,7 +590,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:WebServer' => 'Webszerver',
|
||||
'Class:WebServer+' => '~~',
|
||||
'Class:WebServer+' => 'Webkiszolgáló',
|
||||
'Class:WebServer/Attribute:webapp_list' => 'Webalkalmazások',
|
||||
'Class:WebServer/Attribute:webapp_list+' => 'Webalkalmazások, melyek elérhetőek ezen a webszerveren',
|
||||
));
|
||||
@@ -601,7 +601,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:PCSoftware' => 'PC Szoftver',
|
||||
'Class:PCSoftware+' => '~~',
|
||||
'Class:PCSoftware+' => 'Személyi számítógép szoftverei',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -671,7 +671,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:VirtualDevice/Attribute:status/Value:implementation+' => 'implementation~~',
|
||||
'Class:VirtualDevice/Attribute:status/Value:obsolete' => 'Elavult',
|
||||
'Class:VirtualDevice/Attribute:status/Value:obsolete+' => 'obsolete~~',
|
||||
'Class:VirtualDevice/Attribute:status/Value:production' => 'Használatban',
|
||||
'Class:VirtualDevice/Attribute:status/Value:production' => 'Bevezetve',
|
||||
'Class:VirtualDevice/Attribute:status/Value:production+' => 'production~~',
|
||||
'Class:VirtualDevice/Attribute:status/Value:stock' => 'Készleten',
|
||||
'Class:VirtualDevice/Attribute:status/Value:stock+' => 'stock~~',
|
||||
@@ -696,7 +696,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Hypervisor' => 'Hypervisor',
|
||||
'Class:Hypervisor+' => '~~',
|
||||
'Class:Hypervisor+' => 'Virtuális gépeket futtató szoftver',
|
||||
'Class:Hypervisor/Attribute:farm_id' => 'Szerverfarm',
|
||||
'Class:Hypervisor/Attribute:farm_id+' => '~~',
|
||||
'Class:Hypervisor/Attribute:farm_name' => 'Szerverfarm név',
|
||||
@@ -713,9 +713,9 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Farm' => 'Szerverfarm',
|
||||
'Class:Farm+' => '~~',
|
||||
'Class:Farm+' => 'Szerverek egy klaszterben',
|
||||
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisor-ok',
|
||||
'Class:Farm/Attribute:hypervisor_list+' => 'All the hypervisors that compose this farm~~',
|
||||
'Class:Farm/Attribute:hypervisor_list+' => 'Hypervisor-ok amelyek a farmot alkotják',
|
||||
'Class:Farm/Attribute:redundancy' => 'Magas rendelkezésre állás',
|
||||
'Class:Farm/Attribute:redundancy/disabled' => 'A farm működik, ha az összes hypervisor működik.',
|
||||
'Class:Farm/Attribute:redundancy/count' => 'A farm működik, ha legalább %1$s hypervisor működik',
|
||||
@@ -771,7 +771,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:LogicalVolume/Attribute:description+' => '~~',
|
||||
'Class:LogicalVolume/Attribute:raid_level' => 'Raid szint',
|
||||
'Class:LogicalVolume/Attribute:raid_level+' => '~~',
|
||||
'Class:LogicalVolume/Attribute:size' => 'Méret',
|
||||
'Class:LogicalVolume/Attribute:size' => 'Tárhely',
|
||||
'Class:LogicalVolume/Attribute:size+' => '~~',
|
||||
'Class:LogicalVolume/Attribute:storagesystem_id' => 'Tárolórendszer',
|
||||
'Class:LogicalVolume/Attribute:storagesystem_id+' => '~~',
|
||||
@@ -799,7 +799,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkServerToVolume/Attribute:server_id+' => '~~',
|
||||
'Class:lnkServerToVolume/Attribute:server_name' => 'Szerver név',
|
||||
'Class:lnkServerToVolume/Attribute:server_name+' => '~~',
|
||||
'Class:lnkServerToVolume/Attribute:size_used' => 'Felhasznált méret',
|
||||
'Class:lnkServerToVolume/Attribute:size_used' => 'Felhasznált tárhely',
|
||||
'Class:lnkServerToVolume/Attribute:size_used+' => '~~',
|
||||
));
|
||||
|
||||
@@ -819,7 +819,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_id+' => '~~',
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_name' => 'Virtuális eszköz név',
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_name+' => '~~',
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:size_used' => 'Felhasznált méret',
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:size_used' => 'Felhasznált tárhely',
|
||||
'Class:lnkVirtualDeviceToVolume/Attribute:size_used+' => '~~',
|
||||
));
|
||||
|
||||
@@ -852,11 +852,11 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Tape' => 'Szalag',
|
||||
'Class:Tape+' => '~~',
|
||||
'Class:Tape/Attribute:name' => 'Név',
|
||||
'Class:Tape/Attribute:name' => 'Szalag név',
|
||||
'Class:Tape/Attribute:name+' => '~~',
|
||||
'Class:Tape/Attribute:description' => 'Leírás',
|
||||
'Class:Tape/Attribute:description+' => '~~',
|
||||
'Class:Tape/Attribute:size' => 'Méret',
|
||||
'Class:Tape/Attribute:size' => 'Tárhely',
|
||||
'Class:Tape/Attribute:size+' => '~~',
|
||||
'Class:Tape/Attribute:tapelibrary_id' => 'Szalagos tároló',
|
||||
'Class:Tape/Attribute:tapelibrary_id+' => '~~',
|
||||
@@ -871,13 +871,13 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:NASFileSystem' => 'NAS Fájlrendszer',
|
||||
'Class:NASFileSystem+' => '~~',
|
||||
'Class:NASFileSystem/Attribute:name' => 'Név',
|
||||
'Class:NASFileSystem/Attribute:name' => 'Fájlrendszer név',
|
||||
'Class:NASFileSystem/Attribute:name+' => '~~',
|
||||
'Class:NASFileSystem/Attribute:description' => 'Leírás',
|
||||
'Class:NASFileSystem/Attribute:description+' => '~~',
|
||||
'Class:NASFileSystem/Attribute:raid_level' => 'Raid szint',
|
||||
'Class:NASFileSystem/Attribute:raid_level+' => '~~',
|
||||
'Class:NASFileSystem/Attribute:size' => 'Méret',
|
||||
'Class:NASFileSystem/Attribute:size' => 'Tárhely',
|
||||
'Class:NASFileSystem/Attribute:size+' => '~~',
|
||||
'Class:NASFileSystem/Attribute:nas_id' => 'NAS',
|
||||
'Class:NASFileSystem/Attribute:nas_id+' => '~~',
|
||||
@@ -926,16 +926,16 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Patch' => 'Javítócsomag',
|
||||
'Class:Patch+' => '',
|
||||
'Class:Patch/Attribute:name' => 'Név',
|
||||
'Class:Patch/Attribute:name+' => '',
|
||||
'Class:Patch/Attribute:documents_list' => 'Dokumentumok',
|
||||
'Class:Patch/Attribute:documents_list+' => 'A javítócsomag dokumentumai',
|
||||
'Class:Patch/Attribute:description' => 'Leírás',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:finalclass' => 'Típus',
|
||||
'Class:Patch/Attribute:finalclass+' => 'A végső osztály neve',
|
||||
'Class:Patch' => 'Szervizcsomag',
|
||||
'Class:Patch+' => 'Szoftver patch',
|
||||
'Class:Patch/Attribute:name' => 'Szervizcsomag név',
|
||||
'Class:Patch/Attribute:name+' => '',
|
||||
'Class:Patch/Attribute:documents_list' => 'Dokumentumok',
|
||||
'Class:Patch/Attribute:documents_list+' => 'A szervizcsomag dokumentumai',
|
||||
'Class:Patch/Attribute:description' => 'Leírás',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:finalclass' => 'Szervizcsomag típus',
|
||||
'Class:Patch/Attribute:finalclass+' => 'A végső osztály neve',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -944,7 +944,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:OSPatch' => 'OS javítócsomag',
|
||||
'Class:OSPatch+' => '~~',
|
||||
'Class:OSPatch+' => 'Operációs rendszer szervizcsomag',
|
||||
'Class:OSPatch/Attribute:functionalcis_list' => 'Eszközök',
|
||||
'Class:OSPatch/Attribute:functionalcis_list+' => 'Rendszerek, amelyekre telepítve lett ez az OS javítócsomag',
|
||||
'Class:OSPatch/Attribute:osversion_id' => 'OS verzió',
|
||||
@@ -958,7 +958,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:SoftwarePatch' => 'Szoftver javítócsomag',
|
||||
'Class:SoftwarePatch' => 'Szoftver szervizcsomag',
|
||||
'Class:SoftwarePatch+' => '~~',
|
||||
'Class:SoftwarePatch/Attribute:software_id' => 'Szoftver',
|
||||
'Class:SoftwarePatch/Attribute:software_id+' => '~~',
|
||||
@@ -973,34 +973,34 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Licence' => 'Licensz',
|
||||
'Class:Licence+' => '',
|
||||
'Class:Licence/Attribute:name' => 'Név',
|
||||
'Class:Licence/Attribute:name+' => '',
|
||||
'Class:Licence/Attribute:documents_list' => 'Dokumentumok',
|
||||
'Class:Licence/Attribute:documents_list+' => 'A licenc dokumentumai',
|
||||
'Class:Licence/Attribute:org_id' => 'Tulajdonos szevezeti egység',
|
||||
'Class:Licence/Attribute:org_id+' => '',
|
||||
'Class:Licence/Attribute:organization_name' => 'Szervezeti egység név',
|
||||
'Class:Licence/Attribute:organization_name+' => 'Általános név',
|
||||
'Class:Licence/Attribute:usage_limit' => 'Felhasználási korlátok',
|
||||
'Class:Licence/Attribute:usage_limit+' => '',
|
||||
'Class:Licence/Attribute:description' => 'Leírás',
|
||||
'Class:Licence/Attribute:description+' => '~~',
|
||||
'Class:Licence/Attribute:start_date' => 'Kezdő dátum',
|
||||
'Class:Licence/Attribute:start_date+' => '~~',
|
||||
'Class:Licence/Attribute:end_date' => 'Befejező dátum',
|
||||
'Class:Licence/Attribute:end_date+' => '~~',
|
||||
'Class:Licence/Attribute:licence_key' => 'Licenckulcs',
|
||||
'Class:Licence/Attribute:licence_key+' => '',
|
||||
'Class:Licence/Attribute:perpetual' => 'Öröklicenc',
|
||||
'Class:Licence/Attribute:perpetual+' => '~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:no' => 'nem',
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => 'no~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes' => 'igen',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'Típus',
|
||||
'Class:Licence/Attribute:finalclass+' => 'A végső osztály neve',
|
||||
'Class:Licence' => 'Licenc',
|
||||
'Class:Licence+' => '',
|
||||
'Class:Licence/Attribute:name' => 'Licenc név',
|
||||
'Class:Licence/Attribute:name+' => '',
|
||||
'Class:Licence/Attribute:documents_list' => 'Dokumentumok',
|
||||
'Class:Licence/Attribute:documents_list+' => 'A licenc dokumentumai',
|
||||
'Class:Licence/Attribute:org_id' => 'Tulajdonos szervezeti egység',
|
||||
'Class:Licence/Attribute:org_id+' => '',
|
||||
'Class:Licence/Attribute:organization_name' => 'Szervezeti egység név',
|
||||
'Class:Licence/Attribute:organization_name+' => 'Általános név',
|
||||
'Class:Licence/Attribute:usage_limit' => 'Felhasználási korlátok',
|
||||
'Class:Licence/Attribute:usage_limit+' => '',
|
||||
'Class:Licence/Attribute:description' => 'Leírás',
|
||||
'Class:Licence/Attribute:description+' => '',
|
||||
'Class:Licence/Attribute:start_date' => 'Érvényesség kezdete',
|
||||
'Class:Licence/Attribute:start_date+' => '',
|
||||
'Class:Licence/Attribute:end_date' => 'Érvényesség vége',
|
||||
'Class:Licence/Attribute:end_date+' => '',
|
||||
'Class:Licence/Attribute:licence_key' => 'Licenckulcs',
|
||||
'Class:Licence/Attribute:licence_key+' => '',
|
||||
'Class:Licence/Attribute:perpetual' => 'Öröklicenc',
|
||||
'Class:Licence/Attribute:perpetual+' => '',
|
||||
'Class:Licence/Attribute:perpetual/Value:no' => 'nem',
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => 'no~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes' => 'igen',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'Licenc típus',
|
||||
'Class:Licence/Attribute:finalclass+' => 'A végső osztály neve',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1108,12 +1108,12 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Model/Attribute:type/Value:PowerSource+' => 'Áramforrás',
|
||||
'Class:Model/Attribute:type/Value:DiskArray' => 'Lemez tömb',
|
||||
'Class:Model/Attribute:type/Value:DiskArray+' => '',
|
||||
'Class:Model/Attribute:type/Value:Enclosure' => 'Készülékház',
|
||||
'Class:Model/Attribute:type/Value:Enclosure+' => 'Enclosure~~',
|
||||
'Class:Model/Attribute:type/Value:Enclosure' => 'Beépítőkeret',
|
||||
'Class:Model/Attribute:type/Value:Enclosure+' => '',
|
||||
'Class:Model/Attribute:type/Value:IPPhone' => 'Egyéb eszköz',
|
||||
'Class:Model/Attribute:type/Value:IPPhone+' => 'IP Phone~~',
|
||||
'Class:Model/Attribute:type/Value:IPPhone+' => 'pl.IP telefon',
|
||||
'Class:Model/Attribute:type/Value:MobilePhone' => 'Mobiltelefon',
|
||||
'Class:Model/Attribute:type/Value:MobilePhone+' => 'Mobile Phone~~',
|
||||
'Class:Model/Attribute:type/Value:MobilePhone+' => '',
|
||||
'Class:Model/Attribute:type/Value:NAS' => 'NAS',
|
||||
'Class:Model/Attribute:type/Value:NAS+' => 'NAS~~',
|
||||
'Class:Model/Attribute:type/Value:NetworkDevice' => 'Hálózati eszköz',
|
||||
@@ -1143,7 +1143,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Model/Attribute:physicaldevices_list' => 'Fizikai eszközök',
|
||||
'Class:Model/Attribute:physicaldevices_list+' => 'Fizikai eszközök melyek ehhez a modellszámhoz tartoznak',
|
||||
'Class:Model/UniquenessRule:name_brand+' => 'A névnek egyedinek kell lennie a gyártón belül',
|
||||
'Class:Model/UniquenessRule:name_brand' => 'a gyártó ezen modellje már létezik',
|
||||
'Class:Model/UniquenessRule:name_brand' => 'A gyártó ezen modellje már létezik',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1163,7 +1163,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:IOSVersion' => 'IOS Verzió',
|
||||
'Class:IOSVersion+' => '~~',
|
||||
'Class:IOSVersion+' => 'A hálózati eszköz firmware-je',
|
||||
'Class:IOSVersion/Attribute:brand_id' => 'Gyártó',
|
||||
'Class:IOSVersion/Attribute:brand_id+' => '~~',
|
||||
'Class:IOSVersion/Attribute:brand_name' => 'Gyártó név',
|
||||
@@ -1175,12 +1175,12 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkDocumentToPatch' => 'Dokumentum / Javítócsomag',
|
||||
'Class:lnkDocumentToPatch' => 'Dokumentum / Szervizcsomag',
|
||||
'Class:lnkDocumentToPatch+' => '~~',
|
||||
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_id' => 'Javítócsomag',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_id' => 'Szervízcsomag',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_id+' => '~~',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_name' => 'Javítócsomag név',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_name' => 'Szervizcsomag név',
|
||||
'Class:lnkDocumentToPatch/Attribute:patch_name+' => '~~',
|
||||
'Class:lnkDocumentToPatch/Attribute:document_id' => 'Dokumentum',
|
||||
'Class:lnkDocumentToPatch/Attribute:document_id+' => '~~',
|
||||
@@ -1193,12 +1193,12 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Szoftverpéldány / Szoftver javítócsomag',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Szoftverpéldány / Szoftver szervizcsomag',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch+' => '~~',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => 'Szoftver javítócsomag',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id+' => '~~',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_name' => 'Szoftver javítócsomag név',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => 'Szoftver szervizcsomag',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id+' => '~~',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_name' => 'Szoftver szervizcsomag név',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_name+' => '~~',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwareinstance_id' => 'Szoftverpéldány',
|
||||
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwareinstance_id+' => '~~',
|
||||
@@ -1211,12 +1211,12 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkFunctionalCIToOSPatch' => 'Funkcionális CI / OS javítócsomag',
|
||||
'Class:lnkFunctionalCIToOSPatch' => 'Funkcionális CI / OS szervizcsomag',
|
||||
'Class:lnkFunctionalCIToOSPatch+' => '~~',
|
||||
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS javítócsomag',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '~~',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS javítócsomag név',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS szervizcsomag',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '~~',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS szervizcsomag név',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '~~',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => 'Funkcionális CI',
|
||||
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '~~',
|
||||
@@ -1254,17 +1254,17 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Subnet/Attribute:description' => 'Leírás',
|
||||
'Class:Subnet/Attribute:description+' => '',
|
||||
'Class:Subnet/Attribute:subnet_name' => 'Alhálózat név',
|
||||
'Class:Subnet/Attribute:subnet_name+' => '~~',
|
||||
'Class:Subnet/Attribute:org_id' => 'Tulajdonos szevezeti egység',
|
||||
'Class:Subnet/Attribute:org_id+' => '',
|
||||
'Class:Subnet/Attribute:org_name' => 'Név',
|
||||
'Class:Subnet/Attribute:subnet_name+' => '',
|
||||
'Class:Subnet/Attribute:org_id' => 'Tulajdonos szervezeti egység',
|
||||
'Class:Subnet/Attribute:org_id+' => '',
|
||||
'Class:Subnet/Attribute:org_name' => 'Szervezeti egység név',
|
||||
'Class:Subnet/Attribute:org_name+' => 'Általános név',
|
||||
'Class:Subnet/Attribute:ip' => 'IP cím',
|
||||
'Class:Subnet/Attribute:ip+' => '',
|
||||
'Class:Subnet/Attribute:ip_mask' => 'IP netmaszk',
|
||||
'Class:Subnet/Attribute:ip_mask+' => '',
|
||||
'Class:Subnet/Attribute:vlans_list' => 'VLAN-ok',
|
||||
'Class:Subnet/Attribute:vlans_list+' => '~~',
|
||||
'Class:Subnet/Attribute:vlans_list+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1278,11 +1278,11 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:VLAN/Attribute:vlan_tag+' => '~~',
|
||||
'Class:VLAN/Attribute:description' => 'Leírás',
|
||||
'Class:VLAN/Attribute:description+' => '~~',
|
||||
'Class:VLAN/Attribute:org_id' => 'Szervezeti egység',
|
||||
'Class:VLAN/Attribute:org_id' => 'Tulajdonos szervezeti egység',
|
||||
'Class:VLAN/Attribute:org_id+' => '~~',
|
||||
'Class:VLAN/Attribute:org_name' => 'Szervezeti egység név',
|
||||
'Class:VLAN/Attribute:org_name+' => 'Általános név',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Alhálozatok',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Alhálózatok',
|
||||
'Class:VLAN/Attribute:subnets_list+' => '~~',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list' => 'Fizikai hálózati csatolók',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list+' => '~~',
|
||||
@@ -1317,7 +1317,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:NetworkInterface+' => '',
|
||||
'Class:NetworkInterface/Attribute:name' => 'Név',
|
||||
'Class:NetworkInterface/Attribute:name+' => '~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'Típus',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'Hálózati csatoló típus',
|
||||
'Class:NetworkInterface/Attribute:finalclass+' => 'A végső osztály neve',
|
||||
));
|
||||
|
||||
@@ -1419,7 +1419,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkConnectableCIToNetworkDevice' => 'Kapcsolható CI / Hálózati eszköz',
|
||||
'Class:lnkConnectableCIToNetworkDevice+' => '~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice+' => 'Hálózati csatlakozással rendelkező eszközök',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id' => 'Hálózati eszköz',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id+' => '~~',
|
||||
@@ -1430,15 +1430,15 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connectableci_name' => 'Csatlakoztatott eszköz név',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connectableci_name+' => '~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:network_port' => 'Hálózati port',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:network_port+' => '~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port' => 'Eszköz port',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port+' => '~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => 'Csatlakozás típus',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => '~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => 'down link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'down link~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink' => 'up link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'up link~~',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:network_port+' => 'Ennek az eszköznek a hálózat felé',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port' => 'Eszköz port',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port+' => 'A másik csatlakoztatott eszköz portja',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => 'Csatlakozás típus',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => 'A hálózati topológia iránya az eszközök között',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => 'Bejövő',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'bejövő link',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink' => 'Kimenő',
|
||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:uplink+' => 'kimenő link',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1485,7 +1485,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Group' => 'Csoport',
|
||||
'Class:Group+' => '',
|
||||
'Class:Group/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:Group/Attribute:name' => 'Név',
|
||||
'Class:Group/Attribute:name' => 'CI csoport név',
|
||||
'Class:Group/Attribute:name+' => '',
|
||||
'Class:Group/Attribute:status' => 'Állapot',
|
||||
'Class:Group/Attribute:status+' => '',
|
||||
@@ -1493,24 +1493,24 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:Group/Attribute:status/Value:implementation+' => '',
|
||||
'Class:Group/Attribute:status/Value:obsolete' => 'Elavult',
|
||||
'Class:Group/Attribute:status/Value:obsolete+' => '',
|
||||
'Class:Group/Attribute:status/Value:production' => 'Használatban',
|
||||
'Class:Group/Attribute:status/Value:production+' => '',
|
||||
'Class:Group/Attribute:org_id' => 'Szevezeti egység',
|
||||
'Class:Group/Attribute:org_id+' => '',
|
||||
'Class:Group/Attribute:owner_name' => 'Név',
|
||||
'Class:Group/Attribute:owner_name+' => '',
|
||||
'Class:Group/Attribute:description' => 'Leírás',
|
||||
'Class:Group/Attribute:description+' => '',
|
||||
'Class:Group/Attribute:type' => 'Típus',
|
||||
'Class:Group/Attribute:type+' => '',
|
||||
'Class:Group/Attribute:parent_id' => 'Fölérendelt csoport',
|
||||
'Class:Group/Attribute:parent_id+' => '',
|
||||
'Class:Group/Attribute:parent_name' => 'Név',
|
||||
'Class:Group/Attribute:parent_name+' => '',
|
||||
'Class:Group/Attribute:ci_list' => 'Kapcsolódó CI-k',
|
||||
'Class:Group/Attribute:ci_list+' => 'All the configuration items linked to this group~~',
|
||||
'Class:Group/Attribute:parent_id_friendlyname' => 'Szülő csoport',
|
||||
'Class:Group/Attribute:parent_id_friendlyname+' => '~~',
|
||||
'Class:Group/Attribute:status/Value:production' => 'Bevezetve',
|
||||
'Class:Group/Attribute:status/Value:production+' => '',
|
||||
'Class:Group/Attribute:org_id' => 'Tulajdonos szervezeti egység',
|
||||
'Class:Group/Attribute:org_id+' => '',
|
||||
'Class:Group/Attribute:owner_name' => 'Tulajdonos név',
|
||||
'Class:Group/Attribute:owner_name+' => '',
|
||||
'Class:Group/Attribute:description' => 'Leírás',
|
||||
'Class:Group/Attribute:description+' => '',
|
||||
'Class:Group/Attribute:type' => 'Típus',
|
||||
'Class:Group/Attribute:type+' => '',
|
||||
'Class:Group/Attribute:parent_id' => 'Fölérendelt csoport',
|
||||
'Class:Group/Attribute:parent_id+' => '',
|
||||
'Class:Group/Attribute:parent_name' => 'Fölérendelt csoport név',
|
||||
'Class:Group/Attribute:parent_name+' => '',
|
||||
'Class:Group/Attribute:ci_list' => 'Kapcsolódó CI-k',
|
||||
'Class:Group/Attribute:ci_list+' => '',
|
||||
'Class:Group/Attribute:parent_id_friendlyname' => 'Fölérendelt csoport név',
|
||||
'Class:Group/Attribute:parent_id_friendlyname+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1518,19 +1518,19 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Class:lnkGroupToCI' => 'Csoport / CI',
|
||||
'Class:lnkGroupToCI' => 'CI csoport / CI',
|
||||
'Class:lnkGroupToCI+' => '',
|
||||
'Class:lnkGroupToCI/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkGroupToCI/Attribute:group_id' => 'Csoport',
|
||||
'Class:lnkGroupToCI/Attribute:group_id+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:group_name' => 'Név',
|
||||
'Class:lnkGroupToCI/Attribute:group_name+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkGroupToCI/Attribute:ci_id+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:ci_name' => 'Név',
|
||||
'Class:lnkGroupToCI/Attribute:ci_name+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:reason' => 'Indoklás',
|
||||
'Class:lnkGroupToCI/Attribute:reason+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:group_id' => 'CI csoport',
|
||||
'Class:lnkGroupToCI/Attribute:group_id+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:group_name' => 'CI csoport név',
|
||||
'Class:lnkGroupToCI/Attribute:group_name+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:ci_id' => 'CI',
|
||||
'Class:lnkGroupToCI/Attribute:ci_id+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:ci_name' => 'CI név',
|
||||
'Class:lnkGroupToCI/Attribute:ci_name+' => '',
|
||||
'Class:lnkGroupToCI/Attribute:reason' => 'Indoklás',
|
||||
'Class:lnkGroupToCI/Attribute:reason+' => '',
|
||||
));
|
||||
|
||||
// Add translation for Fieldsets
|
||||
@@ -1574,49 +1574,48 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
//
|
||||
|
||||
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
|
||||
'Menu:Application' => 'Alkalmazások',
|
||||
'Menu:Application+' => '',
|
||||
'Menu:DBServer' => 'Adatbázis szerverek',
|
||||
'Menu:DBServer+' => '',
|
||||
'Menu:BusinessProcess' => 'Üzleti folyamatok',
|
||||
'Menu:BusinessProcess+' => '',
|
||||
'Menu:ApplicationSolution' => 'Egyedi alkalmazások',
|
||||
'Menu:ApplicationSolution+' => '',
|
||||
'Menu:ConfigManagementSoftware' => 'Alkalmazás kezelés',
|
||||
'Menu:Licence' => 'Licencek',
|
||||
'Menu:Licence+' => '',
|
||||
'Menu:Patch' => 'Frissítések',
|
||||
'Menu:Patch+' => '',
|
||||
'Menu:ApplicationInstance' => 'Telepített szoftverek',
|
||||
'Menu:ApplicationInstance+' => '',
|
||||
'Menu:ConfigManagementHardware' => 'Infrastruktúra kezelés',
|
||||
'Menu:Subnet' => 'Alhálózatok',
|
||||
'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' => 'Mobiltelefonok',
|
||||
'Menu:MobilePhone+' => '',
|
||||
'Menu:PC' => 'PC-k',
|
||||
'Menu:PC+' => '',
|
||||
'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' => 'Virtualizáció',
|
||||
'Menu:ConfigManagement:EndUsers' => 'Végfelhasználói eszközök',
|
||||
'Menu:ConfigManagement:SWAndApps' => 'Szoftverek és egyedi alkalmazások',
|
||||
'Menu:ConfigManagement:Misc' => 'Egyéb',
|
||||
'Menu:Group' => 'CI csoportok',
|
||||
'Menu:Group+' => '',
|
||||
'Menu:OSVersion' => 'OS verziók',
|
||||
'Menu:OSVersion+' => '~~',
|
||||
'Menu:Software' => 'Szoftverkatalógus',
|
||||
'Menu:Software+' => 'Software catalog~~',
|
||||
'Menu:Application' => 'Alkalmazások',
|
||||
'Menu:Application+' => '',
|
||||
'Menu:DBServer' => 'Adatbázis szerverek',
|
||||
'Menu:DBServer+' => '',
|
||||
'Menu:BusinessProcess' => 'Üzleti folyamatok',
|
||||
'Menu:BusinessProcess+' => '',
|
||||
'Menu:ApplicationSolution' => 'Alkalmazásmegoldások',
|
||||
'Menu:ApplicationSolution+' => '',
|
||||
'Menu:ConfigManagementSoftware' => 'Alkalmazás kezelés',
|
||||
'Menu:Licence' => 'Licencek',
|
||||
'Menu:Licence+' => '',
|
||||
'Menu:Patch' => 'Szervizcsomagok',
|
||||
'Menu:Patch+' => '',
|
||||
'Menu:ApplicationInstance' => 'Telepített szoftverek',
|
||||
'Menu:ApplicationInstance+' => '',
|
||||
'Menu:ConfigManagementHardware' => 'Infrastruktúra kezelés',
|
||||
'Menu:Subnet' => 'Alhálózatok',
|
||||
'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' => 'Mobiltelefonok',
|
||||
'Menu:MobilePhone+' => '',
|
||||
'Menu:PC' => 'PC-k',
|
||||
'Menu:PC+' => '',
|
||||
'Menu:NewCI' => 'Új konfigurációs elem (CI)',
|
||||
'Menu:NewCI+' => 'Eszköz, szoftver, licenc, stb.',
|
||||
'Menu:SearchCIs' => 'CI keresés',
|
||||
'Menu:SearchCIs+' => '',
|
||||
'Menu:ConfigManagement:Devices' => 'Eszközök',
|
||||
'Menu:ConfigManagement:AllDevices' => 'Infrastruktúra',
|
||||
'Menu:ConfigManagement:virtualization' => 'Virtualizáció',
|
||||
'Menu:ConfigManagement:EndUsers' => 'Végfelhasználói eszközök',
|
||||
'Menu:ConfigManagement:SWAndApps' => 'Szoftverek és alkalmazások',
|
||||
'Menu:ConfigManagement:Misc' => 'Egyéb',
|
||||
'Menu:Group' => 'CI csoportok',
|
||||
'Menu:Group+' => '',
|
||||
'Menu:OSVersion' => 'OS verziók',
|
||||
'Menu:OSVersion+' => '',
|
||||
'Menu:Software' => 'Szoftverkatalógus',
|
||||
'Menu:Software+' => 'Szoftverek',
|
||||
));
|
||||
?>
|
||||
|
||||
@@ -105,7 +105,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:FunctionalCI/Attribute:org_id+' => '',
|
||||
'Class:FunctionalCI/Attribute:organization_name' => 'Organization name~~',
|
||||
'Class:FunctionalCI/Attribute:organization_name+' => 'Common name~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity' => 'Business criticity~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity' => 'Business criticality~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity+' => '~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high' => 'high~~',
|
||||
'Class:FunctionalCI/Attribute:business_criticity/Value:high+' => 'high~~',
|
||||
@@ -268,7 +268,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:DatacenterDevice/Attribute:enclosure_name+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u' => 'Rack units~~',
|
||||
'Class:DatacenterDevice/Attribute:nb_u+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Management ip~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip' => 'Management IP~~',
|
||||
'Class:DatacenterDevice/Attribute:managementip+' => '~~',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id' => 'PowerA source~~',
|
||||
'Class:DatacenterDevice/Attribute:powerA_id+' => '~~',
|
||||
@@ -327,9 +327,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Server/Attribute:osversion_id+' => '~~',
|
||||
'Class:Server/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:Server/Attribute:osversion_name+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS licence~~',
|
||||
'Class:Server/Attribute:oslicence_id' => 'OS license~~',
|
||||
'Class:Server/Attribute:oslicence_id+' => '~~',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS licence name~~',
|
||||
'Class:Server/Attribute:oslicence_name' => 'OS license name~~',
|
||||
'Class:Server/Attribute:oslicence_name+' => '~~',
|
||||
'Class:Server/Attribute:cpu' => 'CPU',
|
||||
'Class:Server/Attribute:cpu+' => '',
|
||||
@@ -548,9 +548,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:SoftwareInstance/Attribute:software_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:software_name' => 'Software',
|
||||
'Class:SoftwareInstance/Attribute:software_name+' => '',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software licence~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id' => 'Software license~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_id+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software licence name~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name' => 'Software license name~~',
|
||||
'Class:SoftwareInstance/Attribute:softwarelicence_name+' => '~~',
|
||||
'Class:SoftwareInstance/Attribute:path' => 'Path~~',
|
||||
'Class:SoftwareInstance/Attribute:path+' => '~~',
|
||||
@@ -742,9 +742,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:VirtualMachine/Attribute:osversion_id+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:VirtualMachine/Attribute:osversion_name+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS licence~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS license~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_id+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS licence name~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS license name~~',
|
||||
'Class:VirtualMachine/Attribute:oslicence_name+' => '~~',
|
||||
'Class:VirtualMachine/Attribute:cpu' => 'CPU~~',
|
||||
'Class:VirtualMachine/Attribute:cpu+' => '~~',
|
||||
@@ -895,7 +895,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Software/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:Software/Attribute:name' => 'Nome',
|
||||
'Class:Software/Attribute:name+' => '',
|
||||
'Class:Software/Attribute:vendor' => 'vendor~~',
|
||||
'Class:Software/Attribute:vendor' => 'Vendor~~',
|
||||
'Class:Software/Attribute:vendor+' => '~~',
|
||||
'Class:Software/Attribute:version' => 'Version~~',
|
||||
'Class:Software/Attribute:version+' => '~~',
|
||||
@@ -917,8 +917,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Software/Attribute:softwareinstance_list+' => 'All the software instances for this software~~',
|
||||
'Class:Software/Attribute:softwarepatch_list' => 'Software Patches~~',
|
||||
'Class:Software/Attribute:softwarepatch_list+' => 'All the patchs for this software~~',
|
||||
'Class:Software/Attribute:softwarelicence_list' => 'Software Licences~~',
|
||||
'Class:Software/Attribute:softwarelicence_list+' => 'All the licences for this software~~',
|
||||
'Class:Software/Attribute:softwarelicence_list' => 'Software Licenses~~',
|
||||
'Class:Software/Attribute:softwarelicence_list+' => 'All the licenses for this software~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -934,7 +934,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Patch/Attribute:documents_list+' => 'All the documents linked to this patch~~',
|
||||
'Class:Patch/Attribute:description' => 'Descrizione',
|
||||
'Class:Patch/Attribute:description+' => '',
|
||||
'Class:Patch/Attribute:finalclass' => 'Type~~',
|
||||
'Class:Patch/Attribute:finalclass' => 'Patch sub-class~~',
|
||||
'Class:Patch/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
@@ -978,7 +978,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Licence/Attribute:name' => 'Nome',
|
||||
'Class:Licence/Attribute:name+' => '',
|
||||
'Class:Licence/Attribute:documents_list' => 'Documents~~',
|
||||
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this licence~~',
|
||||
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this license~~',
|
||||
'Class:Licence/Attribute:org_id' => 'Proprietario',
|
||||
'Class:Licence/Attribute:org_id+' => '',
|
||||
'Class:Licence/Attribute:organization_name' => 'Organization name~~',
|
||||
@@ -999,7 +999,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Licence/Attribute:perpetual/Value:no+' => 'no~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes' => 'yes~~',
|
||||
'Class:Licence/Attribute:perpetual/Value:yes+' => 'yes~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'Type~~',
|
||||
'Class:Licence/Attribute:finalclass' => 'License sub-class~~',
|
||||
'Class:Licence/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
@@ -1008,7 +1008,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:OSLicence' => 'OS Licence~~',
|
||||
'Class:OSLicence' => 'OS License~~',
|
||||
'Class:OSLicence+' => '~~',
|
||||
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:OSLicence/Attribute:osversion_id' => 'OS version~~',
|
||||
@@ -1016,9 +1016,9 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:OSLicence/Attribute:osversion_name' => 'OS version name~~',
|
||||
'Class:OSLicence/Attribute:osversion_name+' => '~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list' => 'Virtual machines~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this licence is used~~',
|
||||
'Class:OSLicence/Attribute:servers_list' => 'servers~~',
|
||||
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this licence is used~~',
|
||||
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this license is used~~',
|
||||
'Class:OSLicence/Attribute:servers_list' => 'Servers~~',
|
||||
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this license is used~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1026,7 +1026,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:SoftwareLicence' => 'Software Licence~~',
|
||||
'Class:SoftwareLicence' => 'Software License~~',
|
||||
'Class:SoftwareLicence+' => '~~',
|
||||
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s~~',
|
||||
'Class:SoftwareLicence/Attribute:software_id' => 'Software~~',
|
||||
@@ -1034,7 +1034,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:SoftwareLicence/Attribute:software_name' => 'Software name~~',
|
||||
'Class:SoftwareLicence/Attribute:software_name+' => '~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Software instances~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this licence is used~~',
|
||||
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this license is used~~',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -1042,12 +1042,12 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
//
|
||||
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:lnkDocumentToLicence' => 'Link Document / Licence~~',
|
||||
'Class:lnkDocumentToLicence' => 'Link Document / License~~',
|
||||
'Class:lnkDocumentToLicence+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Licence~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'License~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'Licence name~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'License name~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:licence_name+' => '~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:document_id' => 'Document~~',
|
||||
'Class:lnkDocumentToLicence/Attribute:document_id+' => '~~',
|
||||
@@ -1257,8 +1257,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:Subnet/Attribute:subnet_name+' => '~~',
|
||||
'Class:Subnet/Attribute:org_id' => 'Organizzazione proprietaria',
|
||||
'Class:Subnet/Attribute:org_id+' => '',
|
||||
'Class:Subnet/Attribute:org_name' => 'Name~~',
|
||||
'Class:Subnet/Attribute:org_name+' => 'Common name~~',
|
||||
'Class:Subnet/Attribute:org_name' => 'Organization name~~',
|
||||
'Class:Subnet/Attribute:org_name+' => '~~',
|
||||
'Class:Subnet/Attribute:ip' => 'IP',
|
||||
'Class:Subnet/Attribute:ip+' => '',
|
||||
'Class:Subnet/Attribute:ip_mask' => 'IP Mask',
|
||||
@@ -1281,7 +1281,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:VLAN/Attribute:org_id' => 'Organization~~',
|
||||
'Class:VLAN/Attribute:org_id+' => '~~',
|
||||
'Class:VLAN/Attribute:org_name' => 'Organization name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => 'Common name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => '~~',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Subnets~~',
|
||||
'Class:VLAN/Attribute:subnets_list+' => '~~',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list' => 'Physical network interfaces~~',
|
||||
@@ -1317,7 +1317,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Class:NetworkInterface+' => '',
|
||||
'Class:NetworkInterface/Attribute:name' => 'Name~~',
|
||||
'Class:NetworkInterface/Attribute:name+' => '~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'Type~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass' => 'NetworkInterface sub-class~~',
|
||||
'Class:NetworkInterface/Attribute:finalclass+' => 'Name of the final class~~',
|
||||
));
|
||||
|
||||
|
||||
@@ -1281,7 +1281,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array(
|
||||
'Class:VLAN/Attribute:org_id' => 'Organization~~',
|
||||
'Class:VLAN/Attribute:org_id+' => '~~',
|
||||
'Class:VLAN/Attribute:org_name' => 'Organization name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => 'Common name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => '~~',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Subnets~~',
|
||||
'Class:VLAN/Attribute:subnets_list+' => '~~',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list' => 'Physical network interfaces~~',
|
||||
|
||||
@@ -1286,7 +1286,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
||||
'Class:VLAN/Attribute:org_id' => 'Organization~~',
|
||||
'Class:VLAN/Attribute:org_id+' => '~~',
|
||||
'Class:VLAN/Attribute:org_name' => 'Organization name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => 'Common name~~',
|
||||
'Class:VLAN/Attribute:org_name+' => '~~',
|
||||
'Class:VLAN/Attribute:subnets_list' => 'Subnets~~',
|
||||
'Class:VLAN/Attribute:subnets_list+' => '~~',
|
||||
'Class:VLAN/Attribute:physicalinterfaces_list' => 'Physical network interfaces~~',
|
||||
|
||||
@@ -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/3.1.1',
|
||||
'itop-config-mgmt/3.1.2',
|
||||
array(
|
||||
// Identification
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
* along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
* along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
Dict::Add('IT IT', 'Italian', 'Italiano', array(
|
||||
'Menu:ConfigEditor' => 'Configuration~~',
|
||||
'Menu:ConfigEditor' => 'General configuration~~',
|
||||
'config-edit-title' => 'Configuration File Editor~~',
|
||||
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
|
||||
'config-apply' => 'Apply~~',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user