From 7ddb47dc83fc1d7d26562aa4e55225f49e380e18 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Wed, 9 Mar 2022 20:06:19 +0100 Subject: [PATCH 01/22] =?UTF-8?q?N=C2=B04312=20-=20Activity=20panel:=20Fix?= =?UTF-8?q?=20JS=20error=20on=20object=20without=20tabs=20(typically=20DBO?= =?UTF-8?q?bject=20instead=20of=20cmdbAbstractObject)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regression from b9c5f2c52387e5329f0f5010a4a8a9c87c2c0b6b --- .../application/UI/Base/Layout/ActivityPanel/ActivityPanel.php | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php index 5570d0fd9..f41609ac4 100644 --- a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php +++ b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php @@ -50,6 +50,7 @@ class ActivityPanel extends UIBlock public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/layouts/activity-panel/layout'; public const DEFAULT_JS_TEMPLATE_REL_PATH = 'base/layouts/activity-panel/layout'; public const DEFAULT_JS_FILES_REL_PATH = [ + 'js/jquery.ba-bbq.min.js', 'js/layouts/activity-panel/activity-panel.js', ]; From 0f2cbaf186a810b386ebec10dd71472b1d619c06 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Thu, 10 Mar 2022 09:31:29 +0100 Subject: [PATCH 02/22] =?UTF-8?q?N=C2=B04849=20-=20Enable=20notification?= =?UTF-8?q?=20emails=20grouping=20in=20threads=20in=20email=20clients=20(#?= =?UTF-8?q?275)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit N°4849 - Enable notification emails grouping in threads in email clients (#275) Co-authored-by: Thomas Casteleyn --- core/action.class.inc.php | 103 +++++++++++++++++++++++++--------- core/email.class.inc.php | 21 +++++-- core/log.class.inc.php | 8 ++- test/core/ActionEmailTest.php | 91 ++++++++++++++++++++++++++++++ 4 files changed, 191 insertions(+), 32 deletions(-) create mode 100644 test/core/ActionEmailTest.php diff --git a/core/action.class.inc.php b/core/action.class.inc.php index a45529db2..e5ee3ad0b 100644 --- a/core/action.class.inc.php +++ b/core/action.class.inc.php @@ -200,6 +200,17 @@ abstract class ActionNotification extends Action */ class ActionEmail extends ActionNotification { + /** + * @var string + * @since 3.0.1 + */ + const ENUM_HEADER_NAME_MESSAGE_ID = 'Message-ID'; + /** + * @var string + * @since 3.0.1 + */ + const ENUM_HEADER_NAME_REFERENCES = 'References'; + /** * @inheritDoc */ @@ -207,13 +218,13 @@ class ActionEmail extends ActionNotification { $aParams = array ( - "category" => "grant_by_profile,core/cmdb,application", - "key_type" => "autoincrement", - "name_attcode" => "name", - "state_attcode" => "", - "reconc_keys" => array('name'), - "db_table" => "priv_action_email", - "db_key_field" => "id", + "category" => "grant_by_profile,core/cmdb,application", + "key_type" => "autoincrement", + "name_attcode" => "name", + "state_attcode" => "", + "reconc_keys" => array('name'), + "db_table" => "priv_action_email", + "db_key_field" => "id", "db_finalclass_field" => "", ); MetaModel::Init_Params($aParams); @@ -416,9 +427,8 @@ class ActionEmail extends ActionNotification $sBody = MetaModel::ApplyParams($this->Get('body'), $aContextArgs); $oObj = $aContextArgs['this->object()']; - $sMessageId = sprintf('iTop_%s_%d_%f@%s.openitop.org', get_class($oObj), $oObj->GetKey(), microtime(true /* get as float*/), - MetaModel::GetEnvironmentId()); - $sReference = '<'.$sMessageId.'>'; + $sMessageId = $this->GenerateIdentifierForHeaders($oObj, static::ENUM_HEADER_NAME_MESSAGE_ID); + $sReference = $this->GenerateIdentifierForHeaders($oObj, static::ENUM_HEADER_NAME_REFERENCES); } catch (Exception $e) { /** @noinspection PhpUnhandledExceptionInspection */ @@ -456,8 +466,7 @@ class ActionEmail extends ActionNotification $oEmail = new EMail(); - if ($this->IsBeingTested()) - { + if ($this->IsBeingTested()) { $oEmail->SetSubject('TEST['.$sSubject.']'); $sTestBody = $sBody; $sTestBody .= "
\n"; @@ -467,8 +476,8 @@ class ActionEmail extends ActionNotification $sTestBody .= "
  • TO: $sTo
  • \n"; $sTestBody .= "
  • CC: $sCC
  • \n"; $sTestBody .= "
  • BCC: $sBCC
  • \n"; - $sTestBody .= empty($sFromLabel) ? "
  • From: $sFrom
  • \n": "
  • From: $sFromLabel <$sFrom>
  • \n"; - $sTestBody .= empty($sReplyToLabel) ? "
  • Reply-To: $sReplyTo
  • \n": "
  • Reply-To: $sReplyToLabel <$sReplyTo>
  • \n"; + $sTestBody .= empty($sFromLabel) ? "
  • From: $sFrom
  • \n" : "
  • From: $sFromLabel <$sFrom>
  • \n"; + $sTestBody .= empty($sReplyToLabel) ? "
  • Reply-To: $sReplyTo
  • \n" : "
  • Reply-To: $sReplyToLabel <$sReplyTo>
  • \n"; $sTestBody .= "
  • References: $sReference
  • \n"; $sTestBody .= "\n"; $sTestBody .= "

    \n"; @@ -478,9 +487,9 @@ class ActionEmail extends ActionNotification $oEmail->SetRecipientFrom($sFrom, $sFromLabel); $oEmail->SetReferences($sReference); $oEmail->SetMessageId($sMessageId); - } - else - { + // Note: N°4849 We pass the "References" identifier instead of the "Message-ID" on purpose as we want notifications emails to group around the triggering iTop object, not just the users' replies to the notification + $oEmail->SetInReplyTo($sReference); + } else { $oEmail->SetSubject($sSubject); $oEmail->SetBody($sBody, 'text/html', $sStyles); $oEmail->SetRecipientTO($sTo); @@ -490,6 +499,8 @@ class ActionEmail extends ActionNotification $oEmail->SetRecipientReplyTo($sReplyTo, $sReplyToLabel); $oEmail->SetReferences($sReference); $oEmail->SetMessageId($sMessageId); + // Note: N°4849 We pass the "References" identifier instead of the "Message-ID" on purpose as we want notifications emails to group around the triggering iTop object, not just the users' replies to the notification + $oEmail->SetInReplyTo($sReference); } if (isset($aContextArgs['attachments'])) @@ -516,26 +527,64 @@ class ActionEmail extends ActionNotification { case EMAIL_SEND_OK: return "Sent"; - + case EMAIL_SEND_PENDING: return "Pending"; - + case EMAIL_SEND_ERROR: return "Errors: ".implode(', ', $aErrors); } } - } - else - { - if (is_array($this->m_aMailErrors) && count($this->m_aMailErrors) > 0) - { + } else { + if (is_array($this->m_aMailErrors) && count($this->m_aMailErrors) > 0) { $sError = implode(', ', $this->m_aMailErrors); - } - else - { + } else { $sError = 'Unknown reason'; } + return 'Notification was not sent: '.$sError; } } + + /** + * @param \DBObject $oObject + * @param string $sHeaderName {@see \ActionEmail::ENUM_HEADER_NAME_REFERENCES}, {@see \ActionEmail::ENUM_HEADER_NAME_MESSAGE_ID} + * + * @return string The formatted identifier for $sHeaderName based on $oObject + * @throws \Exception + * @since 3.0.1 N°4849 + */ + protected function GenerateIdentifierForHeaders(DBObject $oObject, string $sHeaderName): string + { + $sObjClass = get_class($oObject); + $sObjId = $oObject->GetKey(); + $sAppName = utils::Sanitize(ITOP_APPLICATION_SHORT, '', utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME); + + switch ($sHeaderName) { + case static::ENUM_HEADER_NAME_MESSAGE_ID: + case static::ENUM_HEADER_NAME_REFERENCES: + // Prefix + $sPrefix = sprintf('%s_%s_%d', $sAppName, $sObjClass, $sObjId); + if ($sHeaderName === static::ENUM_HEADER_NAME_MESSAGE_ID) { + $sPrefix .= sprintf('_%f', microtime(true /* get as float*/)); + } + // Suffix + $sSuffix = sprintf('@%s.openitop.org', MetaModel::GetEnvironmentId()); + // Identifier + $sIdentifier = $sPrefix.$sSuffix; + if ($sHeaderName === static::ENUM_HEADER_NAME_REFERENCES) { + $sIdentifier = "<$sIdentifier>"; + } + + return $sIdentifier; + } + + // Requested header name invalid + $sErrorMessage = sprintf('%s: Could not generate identifier for header "%s", only %s are supported', static::class, $sHeaderName, implode(' / ', [static::ENUM_HEADER_NAME_MESSAGE_ID, static::ENUM_HEADER_NAME_REFERENCES])); + IssueLog::Error($sErrorMessage, LogChannels::NOTIFICATIONS, [ + 'Object' => $sObjClass.'::'.$sObjId.' ('.$oObject->GetRawName().')', + 'Action' => get_class($this).'::'.$this->GetKey().' ('.$this->GetRawName().')', + ]); + throw new Exception($sErrorMessage); + } } diff --git a/core/email.class.inc.php b/core/email.class.inc.php index d265dc97e..1470befaf 100644 --- a/core/email.class.inc.php +++ b/core/email.class.inc.php @@ -325,20 +325,33 @@ class EMail // Note: Swift will add the angle brackets for you // so let's remove the angle brackets if present, for historical reasons $sId = str_replace(array('<', '>'), '', $sId); - + $oMsgId = $this->m_oMessage->getHeaders()->get('Message-ID'); $oMsgId->SetId($sId); } - + public function SetReferences($sReferences) { $this->AddToHeader('References', $sReferences); } + /** + * Set the "In-Reply-To" header to allow emails to group as a conversation in modern mail clients (GMail, Outlook 2016+, ...) + * + * @link https://en.wikipedia.org/wiki/Email#Header_fields + * + * @param string $sMessageId + * + * @since 3.0.1 N°4849 + */ + public function SetInReplyTo(string $sMessageId) + { + $this->AddToHeader('In-Reply-To', $sMessageId); + } + public function SetBody($sBody, $sMimeType = 'text/html', $sCustomStyles = null) { - if (($sMimeType === 'text/html') && ($sCustomStyles !== null)) - { + if (($sMimeType === 'text/html') && ($sCustomStyles !== null)) { $oDomDocument = CssInliner::fromHtml($sBody)->inlineCss($sCustomStyles)->getDomDocument(); HtmlPruner::fromDomDocument($oDomDocument)->removeElementsWithDisplayNone(); $sBody = CssToAttributeConverter::fromDomDocument($oDomDocument)->convertCssToVisualAttributes()->render(); // Adds html/body tags if not already present diff --git a/core/log.class.inc.php b/core/log.class.inc.php index 5d2d457ba..e52eaf3b7 100644 --- a/core/log.class.inc.php +++ b/core/log.class.inc.php @@ -544,7 +544,13 @@ class LogChannels { public const APC = 'apc'; - public const CLI = 'CLI'; + /** + * @var string + * @since 3.0.1 N°4849 + */ + public const NOTIFICATIONS = 'notifications'; + + public const CLI = 'CLI'; /** * @var string diff --git a/test/core/ActionEmailTest.php b/test/core/ActionEmailTest.php new file mode 100644 index 000000000..1149e3b56 --- /dev/null +++ b/test/core/ActionEmailTest.php @@ -0,0 +1,91 @@ + 'Test action', + 'status' => 'disabled', + 'from' => 'unit-test@openitop.org', + 'subject' => 'Test subject', + 'body' => 'Test body', + ]); + static::$oActionEmail->DBInsert(); + } + + /** + * @covers \ActionEmail::GenerateIdentifierForHeaders + * @dataProvider GenerateIdentifierForHeadersProvider + * @throws \Exception + */ + public function testGenerateIdentifierForHeaders(string $sHeaderName) + { + // Retrieve object + $oObject = MetaModel::GetObject('Organization', $this->getTestOrgId(), true, true); + $sObjClass = get_class($oObject); + $sObjId = $oObject->GetKey(); + + try { + $sTestedIdentifier = $this->InvokeNonPublicMethod('\ActionEmail', 'GenerateIdentifierForHeaders', static::$oActionEmail, [$oObject, $sHeaderName]); + } catch (Exception $oException) { + $sTestedIdentifier = null; + } + + $sAppName = utils::Sanitize(ITOP_APPLICATION_SHORT, '', utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME); + $sEnvironmentHash = MetaModel::GetEnvironmentId(); + + switch ($sHeaderName) { + case ActionEmail::ENUM_HEADER_NAME_MESSAGE_ID: + // Note: For this test we can't use the more readable sprintf test as the generated timestamp will never be the same as the one generated during the call of the tested method + // $sTimestamp = microtime(true /* get as float*/); + // $sExpectedIdentifier = sprintf('%s_%s_%d_%f@%s.openitop.org', $sAppName, $sObjClass, $sObjId, $sTimestamp, $sEnvironmentHash); + $this->assertEquals(1, preg_match('/'.$sAppName.'_'.$sObjClass.'_'.$sObjId.'_[\d]+\.[\d]+@'.$sEnvironmentHash.'.openitop.org/', $sTestedIdentifier), "Identifier doesn't match regexp for header $sHeaderName, got $sTestedIdentifier"); + break; + + case ActionEmail::ENUM_HEADER_NAME_REFERENCES: + $sExpectedIdentifier = '<'.sprintf('%s_%s_%d@%s.openitop.org', $sAppName, $sObjClass, $sObjId, $sEnvironmentHash).'>'; + $this->assertEquals($sExpectedIdentifier, $sTestedIdentifier); + break; + + default: + $sExpectedIdentifier = null; + $this->assertEquals($sExpectedIdentifier, $sTestedIdentifier); + break; + } + + } + + public function GenerateIdentifierForHeadersProvider() + { + return [ + 'Message-ID' => ['Message-ID'], + 'References' => ['References'], + 'IncorrectHeaderName' => ['IncorrectHeaderName'], + ]; + } +} \ No newline at end of file From 6cf781da33243e4ac71866e6e411e1b724f8a15b Mon Sep 17 00:00:00 2001 From: Christian Beer Date: Thu, 10 Mar 2022 14:16:59 +0100 Subject: [PATCH 03/22] :globe_with_meridians: Improve German translation (#277) Many thanks @ChristianBeer for this great contribution, and @larhip for the validation ! --- .../dictionaries/de.dict.authent-external.php | 4 +- .../dictionaries/de.dict.authent-local.php | 4 +- ...dict.combodo-backoffice-darkmoon-theme.php | 4 +- .../dictionaries/de.dict.combodo-db-tools.php | 4 +- .../dictionaries/de.dict.itop-backup.php | 10 +-- .../dictionaries/de.dict.itop-change-mgmt.php | 4 +- .../dictionaries/de.dict.itop-config-mgmt.php | 14 +-- .../dictionaries/de.dict.itop-core-update.php | 6 +- .../de.dict.itop-request-mgmt-itil.php | 4 +- .../de.dict.itop-request-mgmt.php | 8 +- .../de.dict.itop-service-mgmt-provider.php | 4 +- .../de.dict.itop-service-mgmt.php | 4 +- .../dictionaries/de.dict.itop-structure.php | 6 +- .../de.dict.itop-themes-compat.php | 2 +- .../dictionaries/de.dict.itop-tickets.php | 76 ++++++++-------- dictionaries/de.dictionary.itop.core.php | 69 +++++++------- dictionaries/de.dictionary.itop.ui.php | 90 +++++++++---------- .../de.dictionary.itop.breadcrumbs.php | 4 +- .../de.dictionary.itop.datatable.php | 4 +- .../input/de.dictionary.itop.input.php | 4 +- .../de.dictionary.itop.navigation-menu.php | 6 +- .../de.dictionary.itop.preferences.php | 6 +- 22 files changed, 166 insertions(+), 171 deletions(-) diff --git a/datamodels/2.x/authent-external/dictionaries/de.dict.authent-external.php b/datamodels/2.x/authent-external/dictionaries/de.dict.authent-external.php index fd662551c..6a31ed411 100644 --- a/datamodels/2.x/authent-external/dictionaries/de.dict.authent-external.php +++ b/datamodels/2.x/authent-external/dictionaries/de.dict.authent-external.php @@ -20,9 +20,9 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:UserExternal' => 'Externer Benutzer', - 'Class:UserExternal+' => 'Externe authentifizierter '.ITOP_APPLICATION_SHORT.'-Benutzer', + 'Class:UserExternal+' => 'Extern authentifizierter '.ITOP_APPLICATION_SHORT.'-Benutzer', )); diff --git a/datamodels/2.x/authent-local/dictionaries/de.dict.authent-local.php b/datamodels/2.x/authent-local/dictionaries/de.dict.authent-local.php index 2f881fee7..e18b1af5c 100644 --- a/datamodels/2.x/authent-local/dictionaries/de.dict.authent-local.php +++ b/datamodels/2.x/authent-local/dictionaries/de.dict.authent-local.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:UserLocal' => ITOP_APPLICATION_SHORT.'-Benutzer', @@ -44,5 +44,5 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Das Passwort entspricht nicht dem in den Konfigurationsregeln hinterlegten RegEx-Ausdruck', 'UserLocal:password:expiration' => 'Die folgenden Felder benötigen eine '.ITOP_APPLICATION_SHORT.' Erweiterung', - 'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => 'Setting password expiration to "One-time password" is not allowed for your own User~~', + 'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => 'Das setzen des Passwortablaufs auf "Einmalpasswort" ist für den eigenen Benutzer nicht erlaubt.', )); diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/dictionaries/de.dict.combodo-backoffice-darkmoon-theme.php b/datamodels/2.x/combodo-backoffice-darkmoon-theme/dictionaries/de.dict.combodo-backoffice-darkmoon-theme.php index c45324f9b..26fccd72f 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/dictionaries/de.dict.combodo-backoffice-darkmoon-theme.php +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/dictionaries/de.dict.combodo-backoffice-darkmoon-theme.php @@ -22,5 +22,5 @@ */ Dict::Add('DE DE', 'German', 'Deutsch', array( - 'theme:darkmoon' => 'Dark moon~~', -)); \ No newline at end of file + 'theme:darkmoon' => 'Dark moon', +)); diff --git a/datamodels/2.x/combodo-db-tools/dictionaries/de.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/dictionaries/de.dict.combodo-db-tools.php index 1d4e02eca..2da05d4f6 100644 --- a/datamodels/2.x/combodo-db-tools/dictionaries/de.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/dictionaries/de.dict.combodo-db-tools.php @@ -24,7 +24,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'DBTools:Class' => 'Klasse', 'DBTools:Title' => 'Datenbankpflege-Tools', 'DBTools:ErrorsFound' => 'Fehler gefunden', - 'DBTools:Indication' => 'Wichtig: Nach dem Fixen der Errors in der Datenbank müssen Sie die Analyse erneut laufen lassen, weil durch die Fixes eventuell weitere Inkonsistenzen enstanden sind', + 'DBTools:Indication' => 'Wichtig: Nach dem Fixen der Errors in der Datenbank müssen Sie die Analyse erneut laufen lassen, weil durch die Fixes eventuell weitere Inkonsistenzen entstanden sind', 'DBTools:Disclaimer' => 'DISCLAIMER: FERTIGEN SIE EIN BACKUP IHRER DATENBANK AN, BEVOR SIE DIE FIXES ANWENDEN!', 'DBTools:Error' => 'Fehler', 'DBTools:Count' => 'Anzahl', @@ -51,7 +51,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'DBAnalyzer-Integrity-MissingExtKey' => 'Fehlender Externer Key %1$s (Spalte: `%2$s.%3$s`)', 'DBAnalyzer-Integrity-InvalidValue' => 'Ungültiger Wert für %1$s (Spalte: `%2$s.%3$s`)', 'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Manche Benutzerkonten haben keinerlei zugewiesenes Profil', - 'DBAnalyzer-Integrity-HKInvalid' => 'Broken hierarchical key `%1$s`~~', + 'DBAnalyzer-Integrity-HKInvalid' => 'Kaputter hierarchischer Schlüssel `%1$s`', 'DBAnalyzer-Fetch-Count-Error' => 'Fetch-Count-Fehler in `%1$s`, %2$d Einträge geholt (fetched) / %3$d gezählt', 'DBAnalyzer-Integrity-FinalClass' => 'Das Feld `%2$s`.`%1$s` muss den gleichen Wert `%3$s`.`%1$s` haben', 'DBAnalyzer-Integrity-RootFinalClass' => 'Das Feld `%2$s`.`%1$s` muss eine gültige Klasse enthalten', diff --git a/datamodels/2.x/itop-backup/dictionaries/de.dict.itop-backup.php b/datamodels/2.x/itop-backup/dictionaries/de.dict.itop-backup.php index 81e86d940..13bc948d3 100644 --- a/datamodels/2.x/itop-backup/dictionaries/de.dict.itop-backup.php +++ b/datamodels/2.x/itop-backup/dictionaries/de.dict.itop-backup.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( @@ -35,15 +35,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'bkp-mysqldump-issue' => 'mysqldump konnte nicht ausgeführt werden (retcode=%1$d): Stellen Sie sicher, dass das Programm installiert und im angegebenen Pfad verfügbar ist, oder editieren Sie die Konfigurationsdatei um das MySQL bindir anzupassen.', 'bkp-missing-dir' => 'Zielverzeichniss %1$s nicht gefunden', 'bkp-free-disk-space' => '%1$s frei in %2$s', - 'bkp-dir-not-writeable' => '%1$s ist nicht schreibbar', + 'bkp-dir-not-writeable' => '%1$s ist nicht beschreibbar', 'bkp-wrong-format-spec' => 'Die verwendete Definition zur Formatierung von Dateinamen ist nicht korrekt (%1$s). Die Standard-Definition %2$s wird verwendet', 'bkp-name-sample' => 'Backup-Dateien werden abhängig von Datum, Zeit und Datenbank-Identifier erstellt. Beispiel: %1$s', 'bkp-week-days' => 'Backups werden jeden %1$s um %2$s durchgeführt', - 'bkp-retention' => 'Mindestens %1$d Backups werden im Zielverzeichniss vorgehalten', + 'bkp-retention' => 'Mindestens %1$d Backups werden im Zielverzeichnis vorgehalten', 'bkp-next-to-delete' => 'Wird gelöscht, wenn das nächste Backup angelegt wird (unter Einstellungen "Menge vorhalten")', 'bkp-table-file' => 'Datei', 'bkp-table-file+' => 'Nur Dateien mit der Endung .zip werden als Backup-Dateien berücksichtigt.', - 'bkp-table-size' => 'Grösse', + 'bkp-table-size' => 'Größe', 'bkp-table-size+' => '', 'bkp-table-actions' => 'Aktionen', 'bkp-table-actions+' => '', @@ -51,7 +51,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'bkp-status-backups-manual' => 'Manuelle Backups', 'bkp-status-backups-none' => 'Kein Backup vorhanden', 'bkp-next-backup' => 'Das nächste Backup wird am %1$s (%2$s) um %3$s durchgeführt', - 'bkp-next-backup-unknown' => 'The next backup is not scheduled yet.~~', + 'bkp-next-backup-unknown' => 'Das nächste Backup ist noch nicht geplant.', 'bkp-button-backup-now' => 'Starte Backup', 'bkp-button-restore-now' => 'Wiederherstellen!', 'bkp-confirm-backup' => 'Bitte bestätigen Sie, dass Sie jetzt ein Backup erstellen wollen.', diff --git a/datamodels/2.x/itop-change-mgmt/dictionaries/de.dict.itop-change-mgmt.php b/datamodels/2.x/itop-change-mgmt/dictionaries/de.dict.itop-change-mgmt.php index 457055b6f..a9590fcee 100644 --- a/datamodels/2.x/itop-change-mgmt/dictionaries/de.dict.itop-change-mgmt.php +++ b/datamodels/2.x/itop-change-mgmt/dictionaries/de.dict.itop-change-mgmt.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:ChangeManagement' => 'Change Management', @@ -98,7 +98,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Change/Attribute:reject_reason+' => '', 'Class:Change/Attribute:changemanager_id' => 'Change Manager', 'Class:Change/Attribute:changemanager_id+' => '', - 'Class:Change/Attribute:changemanager_email' => 'Change Manager Email', + 'Class:Change/Attribute:changemanager_email' => 'Change Manager E-Mail', 'Class:Change/Attribute:changemanager_email+' => '', 'Class:Change/Attribute:parent_id' => 'Parent Change', 'Class:Change/Attribute:parent_id+' => '', diff --git a/datamodels/2.x/itop-config-mgmt/dictionaries/de.dict.itop-config-mgmt.php b/datamodels/2.x/itop-config-mgmt/dictionaries/de.dict.itop-config-mgmt.php index 541257e33..5812de6ef 100644 --- a/datamodels/2.x/itop-config-mgmt/dictionaries/de.dict.itop-config-mgmt.php +++ b/datamodels/2.x/itop-config-mgmt/dictionaries/de.dict.itop-config-mgmt.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Relation:impacts/Description' => 'Elemente betroffen von', @@ -264,13 +264,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:DatacenterDevice/Attribute:nb_u+' => '', 'Class:DatacenterDevice/Attribute:managementip' => 'Management-IP', 'Class:DatacenterDevice/Attribute:managementip+' => '', - 'Class:DatacenterDevice/Attribute:powerA_id' => 'PowerA-Quelle', + 'Class:DatacenterDevice/Attribute:powerA_id' => 'Strom-A-Quelle', 'Class:DatacenterDevice/Attribute:powerA_id+' => '', - 'Class:DatacenterDevice/Attribute:powerA_name' => 'PowerA-Quellenname', + 'Class:DatacenterDevice/Attribute:powerA_name' => 'Strom-A-Quellenname', 'Class:DatacenterDevice/Attribute:powerA_name+' => '', - 'Class:DatacenterDevice/Attribute:powerB_id' => 'PowerB-Quelle', + 'Class:DatacenterDevice/Attribute:powerB_id' => 'Strom-B-Quelle', 'Class:DatacenterDevice/Attribute:powerB_id+' => '', - 'Class:DatacenterDevice/Attribute:powerB_name' => 'PowerB-Quellenname', + 'Class:DatacenterDevice/Attribute:powerB_name' => 'Strom-B-Quellenname', 'Class:DatacenterDevice/Attribute:powerB_name+' => '', 'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => 'FC-Ports', 'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => '', @@ -313,7 +313,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Server+' => '', 'Class:Server/Attribute:osfamily_id' => 'OS Familie', 'Class:Server/Attribute:osfamily_id+' => '', - 'Class:Server/Attribute:osfamily_name' => 'OS-Famillenname', + 'Class:Server/Attribute:osfamily_name' => 'OS-Familienname', 'Class:Server/Attribute:osfamily_name+' => '', 'Class:Server/Attribute:osversion_id' => 'OS Version', 'Class:Server/Attribute:osversion_id+' => '', @@ -1109,7 +1109,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Model/Attribute:type/Value:TapeLibrary+' => '', 'Class:Model/Attribute:type/Value:Phone' => 'Telefon', 'Class:Model/Attribute:type/Value:Phone+' => '', - 'Class:Model/Attribute:physicaldevices_list' => 'Phyische Geräte', + 'Class:Model/Attribute:physicaldevices_list' => 'Physische Geräte', 'Class:Model/Attribute:physicaldevices_list+' => '', 'Class:Model/UniquenessRule:name_brand+' => 'Der Modellname für eine Marke muss eindeutig sein', 'Class:Model/UniquenessRule:name_brand' => 'Es existiert bereits ein Modell mit diesem Namen für diese Marke', diff --git a/datamodels/2.x/itop-core-update/dictionaries/de.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/dictionaries/de.dict.itop-core-update.php index 5eb796ee2..e3e8466d4 100644 --- a/datamodels/2.x/itop-core-update/dictionaries/de.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/dictionaries/de.dict.itop-core-update.php @@ -74,7 +74,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Dateisystemprüfung fehlgeschlagen', 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Anwendungsupgrade kann durchgeführt werden', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Anwendungsupgrade nicht möglich: %1$s', - 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Vorsicht: App-Upgrade kann fehlerschlagen: %1$s', + 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Vorsicht: App-Upgrade kann fehlschlagen: %1$s', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Einige angepasste Dateien wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', 'iTopUpdate:UI:CheckInProgress' => 'Please wait during integrity check~~', @@ -87,7 +87,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Prüfung des Anwendungsupgrades', 'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade von Anwendung und Datenbank', 'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade Datenbank', - 'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Wartungsmodus deaktivert', + 'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Wartungsmodus deaktiviert', 'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade abgeschlossen', // Errors @@ -116,5 +116,3 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:ModuleInstallation/Attribute:version' => 'Version', 'Class:ModuleInstallation/Attribute:comment' => 'Kommentar', )); - - diff --git a/datamodels/2.x/itop-request-mgmt-itil/dictionaries/de.dict.itop-request-mgmt-itil.php b/datamodels/2.x/itop-request-mgmt-itil/dictionaries/de.dict.itop-request-mgmt-itil.php index 4edb18017..769e63ba7 100644 --- a/datamodels/2.x/itop-request-mgmt-itil/dictionaries/de.dict.itop-request-mgmt-itil.php +++ b/datamodels/2.x/itop-request-mgmt-itil/dictionaries/de.dict.itop-request-mgmt-itil.php @@ -31,7 +31,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:UserRequest:OpenRequests+' => '', 'UI:WelcomeMenu:MyAssignedCalls' => 'Mir zugewiesene Benutzeranfragen', 'UI-RequestManagementOverview-RequestByType-last-14-days' => 'Benutzeranfragen der letzten 14 Tage nach Typ', - 'UI-RequestManagementOverview-Last-14-days' => 'Anzahl Benutzeranfragen der letzen 14 Tage', + 'UI-RequestManagementOverview-Last-14-days' => 'Anzahl Benutzeranfragen der letzten 14 Tage', 'UI-RequestManagementOverview-OpenRequestByStatus' => 'Offene Benutzeranfragen nach Status', 'UI-RequestManagementOverview-OpenRequestByAgent' => 'Offene Benutzeranfragen nach Bearbeiter', 'UI-RequestManagementOverview-OpenRequestByType' => 'Offene Benutzeranfragen nach Typ', @@ -122,7 +122,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:UserRequest/Attribute:origin/Value:portal+' => '', 'Class:UserRequest/Attribute:approver_id' => 'Genehmiger', 'Class:UserRequest/Attribute:approver_id+' => '', - 'Class:UserRequest/Attribute:approver_email' => 'Gemehhmiger-Email', + 'Class:UserRequest/Attribute:approver_email' => 'Gemehhmiger-E-Mail', 'Class:UserRequest/Attribute:approver_email+' => '', 'Class:UserRequest/Attribute:service_id' => 'Service', 'Class:UserRequest/Attribute:service_id+' => '', diff --git a/datamodels/2.x/itop-request-mgmt/dictionaries/de.dict.itop-request-mgmt.php b/datamodels/2.x/itop-request-mgmt/dictionaries/de.dict.itop-request-mgmt.php index d9268d902..1aa8b8baa 100644 --- a/datamodels/2.x/itop-request-mgmt/dictionaries/de.dict.itop-request-mgmt.php +++ b/datamodels/2.x/itop-request-mgmt/dictionaries/de.dict.itop-request-mgmt.php @@ -128,7 +128,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:UserRequest/Attribute:origin/Value:portal+' => '', 'Class:UserRequest/Attribute:approver_id' => 'Genehmiger', 'Class:UserRequest/Attribute:approver_id+' => '', - 'Class:UserRequest/Attribute:approver_email' => 'Genehmiger-Email', + 'Class:UserRequest/Attribute:approver_email' => 'Genehmiger-E-Mail', 'Class:UserRequest/Attribute:approver_email+' => '', 'Class:UserRequest/Attribute:service_id' => 'Service', 'Class:UserRequest/Attribute:service_id+' => '', @@ -178,7 +178,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '', 'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'Bugfix', 'Class:UserRequest/Attribute:resolution_code/Value:bug fixed+' => '', - 'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => 'Hardware-Reperatur', + 'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => 'Hardware-Reparatur', 'Class:UserRequest/Attribute:resolution_code/Value:hardware repair+' => '', 'Class:UserRequest/Attribute:resolution_code/Value:other' => 'Andere', 'Class:UserRequest/Attribute:resolution_code/Value:other+' => '', @@ -260,7 +260,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Portal:SelectServiceElementFrom_Service' => 'Wählen Sie ein Service-Element für %1$s', 'Portal:ListServices' => 'Liste der Services', 'Portal:TitleDetailsFor_Service' => 'Details für Service', - 'Portal:Button:CreateRequestFromService' => 'EIne Benutzeranfrage betreffend dieses Dienstes erzeugen', + 'Portal:Button:CreateRequestFromService' => 'Eine Benutzeranfrage betreffend dieses Dienstes erzeugen', 'Portal:ListOpenRequests' => 'Offene Benutzeranfragen auflisten', 'Portal:UserRequest:MoreInfo' => 'Weitere Informationen', 'Portal:Details-Service-Element' => 'Service-Elemente', @@ -272,7 +272,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Portal:NoOpenProblem' => 'Keine offenen Problems', 'Portal:SelectLanguage' => 'Ändern Sie Ihre Spracheinstellung', 'Portal:LanguageChangedTo_Lang' => 'Spracheinstellung geändert auf: ', - 'Portal:ChooseYourFavoriteLanguage' => 'WÄhlen Sie Ihre bevorzugte Sprache', + 'Portal:ChooseYourFavoriteLanguage' => 'Wählen Sie Ihre bevorzugte Sprache', 'Class:UserRequest/Method:ResolveChildTickets' => 'Kind-Tickets lösen', 'Class:UserRequest/Method:ResolveChildTickets+' => 'Lösung auf Kind-Tickets übertragen (ev_autoresolve), und folgende Ticket-Eigenschaften angleichen: Service, Team, Agent, Lösungsinformationen', diff --git a/datamodels/2.x/itop-service-mgmt-provider/dictionaries/de.dict.itop-service-mgmt-provider.php b/datamodels/2.x/itop-service-mgmt-provider/dictionaries/de.dict.itop-service-mgmt-provider.php index 4f3b61b52..2030c9226 100644 --- a/datamodels/2.x/itop-service-mgmt-provider/dictionaries/de.dict.itop-service-mgmt-provider.php +++ b/datamodels/2.x/itop-service-mgmt-provider/dictionaries/de.dict.itop-service-mgmt-provider.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:ServiceManagement' => 'Service-Management', @@ -39,7 +39,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:ServiceSubcategory+' => '', 'Menu:Service' => 'Services', 'Menu:Service+' => '', - 'Menu:ServiceElement' => 'Sevice-Elemente', + 'Menu:ServiceElement' => 'Service-Elemente', 'Menu:ServiceElement+' => '', 'Menu:SLA' => 'SLAs', 'Menu:SLA+' => '', diff --git a/datamodels/2.x/itop-service-mgmt/dictionaries/de.dict.itop-service-mgmt.php b/datamodels/2.x/itop-service-mgmt/dictionaries/de.dict.itop-service-mgmt.php index e9ad75441..6fd2450ee 100644 --- a/datamodels/2.x/itop-service-mgmt/dictionaries/de.dict.itop-service-mgmt.php +++ b/datamodels/2.x/itop-service-mgmt/dictionaries/de.dict.itop-service-mgmt.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:ServiceManagement' => 'Service Management', @@ -38,7 +38,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Menu:ServiceSubcategory+' => 'Service-Unterkategorien', 'Menu:Service' => 'Services', 'Menu:Service+' => 'Services', - 'Menu:ServiceElement' => 'Sevice-Elemente', + 'Menu:ServiceElement' => 'Service-Elemente', 'Menu:ServiceElement+' => '', 'Menu:SLA' => 'SLAs', 'Menu:SLA+' => 'Service Level Agreements', diff --git a/datamodels/2.x/itop-structure/dictionaries/de.dict.itop-structure.php b/datamodels/2.x/itop-structure/dictionaries/de.dict.itop-structure.php index d8f1a45ec..9445698ff 100644 --- a/datamodels/2.x/itop-structure/dictionaries/de.dict.itop-structure.php +++ b/datamodels/2.x/itop-structure/dictionaries/de.dict.itop-structure.php @@ -118,7 +118,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Contact/Attribute:org_id+' => '', 'Class:Contact/Attribute:org_name' => 'Organisation', 'Class:Contact/Attribute:org_name+' => '', - 'Class:Contact/Attribute:email' => 'Email', + 'Class:Contact/Attribute:email' => 'E-Mail', 'Class:Contact/Attribute:email+' => '', 'Class:Contact/Attribute:phone' => 'Telefonnummer', 'Class:Contact/Attribute:phone+' => '', @@ -163,7 +163,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Person/Attribute:team_list+' => '', 'Class:Person/Attribute:tickets_list' => 'Tickets', 'Class:Person/Attribute:tickets_list+' => '', - 'Class:Person/Attribute:manager_id_friendlyname' => 'Manager Friendly Name', + 'Class:Person/Attribute:manager_id_friendlyname' => 'Manager-Name (lesbar)', 'Class:Person/Attribute:manager_id_friendlyname+' => '', 'Class:Person/Attribute:picture' => 'Bild', 'Class:Person/Attribute:picture+' => '', @@ -272,7 +272,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Dict::Add('DE DE', 'German', 'Deutsch', array( - 'Class:DocumentType' => 'Dokumentyp', + 'Class:DocumentType' => 'Dokumenttyp', 'Class:DocumentType+' => '', )); diff --git a/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php index 94b8fbfed..181bd28cb 100644 --- a/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php +++ b/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php @@ -7,5 +7,5 @@ */ Dict::Add('DE DE', 'German', 'Deutsch', array( - 'theme:light-grey' => 'Light Grey (deprecated)~~', + 'theme:light-grey' => 'Light Grey (veraltet)', )); diff --git a/datamodels/2.x/itop-tickets/dictionaries/de.dict.itop-tickets.php b/datamodels/2.x/itop-tickets/dictionaries/de.dict.itop-tickets.php index e74b7f85e..6d4c05e15 100644 --- a/datamodels/2.x/itop-tickets/dictionaries/de.dict.itop-tickets.php +++ b/datamodels/2.x/itop-tickets/dictionaries/de.dict.itop-tickets.php @@ -20,7 +20,7 @@ * @copyright Copyright (C) 2021 Combodo SARL * @licence http://opensource.org/licenses/AGPL-3.0 -* +* */ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Ticket' => 'Ticket', @@ -90,7 +90,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:lnkContactToTicket/Attribute:ticket_ref+' => '', 'Class:lnkContactToTicket/Attribute:contact_id' => 'Kontakt', 'Class:lnkContactToTicket/Attribute:contact_id+' => '', - 'Class:lnkContactToTicket/Attribute:contact_email' => 'Kontakt-Email', + 'Class:lnkContactToTicket/Attribute:contact_email' => 'Kontakt-E-Mail', 'Class:lnkContactToTicket/Attribute:contact_email+' => '', 'Class:lnkContactToTicket/Attribute:role' => 'Rolle (Text)', 'Class:lnkContactToTicket/Attribute:role+' => '', @@ -127,7 +127,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:WorkOrder/Attribute:team_name+' => '', 'Class:WorkOrder/Attribute:agent_id' => 'Bearbeiter', 'Class:WorkOrder/Attribute:agent_id+' => '', - 'Class:WorkOrder/Attribute:agent_email' => 'Melder-Email', + 'Class:WorkOrder/Attribute:agent_email' => 'Melder-E-Mail', 'Class:WorkOrder/Attribute:agent_email+' => '', 'Class:WorkOrder/Attribute:start_date' => 'Startdatum', 'Class:WorkOrder/Attribute:start_date+' => '', @@ -165,16 +165,16 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:cmdbAbstractObject/Method:SetCurrentDate+' => 'Ein Attribut (Feld) mit der aktuellen Zeit und Datum schreiben', 'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1' => 'Zielfeld', 'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', - 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull' => 'SetCurrentDateIfNull~~', - 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull+' => 'Set an empty field with the current date and time~~', - 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1' => 'Target Field~~', - 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1+' => 'The field to set, in the current object~~', + 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull' => 'SetCurrentDateIfNull', + 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull+' => 'Ein Attribut (Feld), wenn leer, mit der aktuellen Zeit und Datum schreiben', + 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1' => 'Zielfeld', + 'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', 'Class:cmdbAbstractObject/Method:SetCurrentUser' => 'SetCurrentUser', - 'Class:cmdbAbstractObject/Method:SetCurrentUser+' => 'Ein Attribut (Feld) mit dem dezeit eingeloggten User schreiben', + 'Class:cmdbAbstractObject/Method:SetCurrentUser+' => 'Ein Attribut (Feld) mit dem derzeit eingeloggten User schreiben', 'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1' => 'Zielfeld', 'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll. Falls das Feld vom Typ String ist, wird der FriendlyName des Users verwendet, ansonsten der Identifikator. Der FriendlyName ist der Name, der mit dem User-Account verknüpften Person (falls vorhanden), ansonsten der Accountname (Login).', 'Class:cmdbAbstractObject/Method:SetCurrentPerson' => 'SetCurrentPerson', - 'Class:cmdbAbstractObject/Method:SetCurrentPerson+' => 'Schreibe ein Attribut (Feld) mit der gerade eingeloggten Person (die \\"Person\\", die mit dem geade eingeloggten User verknüpft ist)', + 'Class:cmdbAbstractObject/Method:SetCurrentPerson+' => 'Schreibe ein Attribut (Feld) mit der gerade eingeloggten Person (die \\"Person\\", die mit dem gerade eingeloggten User verknüpft ist)', 'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1' => 'Zielfeld', 'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll. Falls das Feld vom Typ String ist, wird der FriendlyName des Users verwendet, ansonsten der Identifikator.', 'Class:cmdbAbstractObject/Method:SetElapsedTime' => 'SetElapsedTime', @@ -185,34 +185,34 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2+' => 'Das Feld, aus dem die Refernzzeit/datum gelesen werden soll', 'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3' => 'Arbeitszeiten', 'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3+' => 'Leer lassen um das Standard-Arbeitzeiten-Schema zu verwenden, oder auf \\"DefaultWorkingTimeComputer\\" setzen um ein 24x7-Schema zu erzwingen', - 'Class:cmdbAbstractObject/Method:SetIfNull' => 'SetIfNull~~', - 'Class:cmdbAbstractObject/Method:SetIfNull+' => 'Set a field only if it is empty, with a static value~~', - 'Class:cmdbAbstractObject/Method:SetIfNull/Param:1' => 'Target Field~~', - 'Class:cmdbAbstractObject/Method:SetIfNull/Param:1+' => 'The field to set, in the current object~~', - 'Class:cmdbAbstractObject/Method:SetIfNull/Param:2' => 'Value~~', - 'Class:cmdbAbstractObject/Method:SetIfNull/Param:2+' => 'The value to set~~', - 'Class:cmdbAbstractObject/Method:AddValue' => 'AddValue~~', - 'Class:cmdbAbstractObject/Method:AddValue+' => 'Add a fixed value to a field~~', - 'Class:cmdbAbstractObject/Method:AddValue/Param:1' => 'Target Field~~', - 'Class:cmdbAbstractObject/Method:AddValue/Param:1+' => 'The field to modify, in the current object~~', - 'Class:cmdbAbstractObject/Method:AddValue/Param:2' => 'Value~~', - 'Class:cmdbAbstractObject/Method:AddValue/Param:2+' => 'Decimal value which will be added, can be negative~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate' => 'SetComputedDate~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate+' => 'Set a field with a date computed from another field with extra logic~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1' => 'Target Field~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1+' => 'The field to set, in the current object~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2' => 'Modifier~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2+' => 'Textual information to modify the source date, eg. "+3 days"~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3' => 'Source field~~', - 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3+' => 'The field used as source to apply the Modifier logic~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull' => 'SetComputedDateIfNull~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull+' => 'Set non empty field with a date computed from another field with extra logic~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1' => 'Target Field~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1+' => 'The field to set, in the current object~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2' => 'Modifier~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2+' => 'Textual information to modify the source date, eg. "+3 days"~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3' => 'Source field~~', - 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3+' => 'The field used as source to apply the Modifier logic~~', + 'Class:cmdbAbstractObject/Method:SetIfNull' => 'SetIfNull', + 'Class:cmdbAbstractObject/Method:SetIfNull+' => 'Ein Attribut (Feld), wenn leer, mit einem festen Wert schreiben', + 'Class:cmdbAbstractObject/Method:SetIfNull/Param:1' => 'Zielfeld', + 'Class:cmdbAbstractObject/Method:SetIfNull/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', + 'Class:cmdbAbstractObject/Method:SetIfNull/Param:2' => 'Wert', + 'Class:cmdbAbstractObject/Method:SetIfNull/Param:2+' => 'Der Wert der geschrieben werden soll', + 'Class:cmdbAbstractObject/Method:AddValue' => 'AddValue', + 'Class:cmdbAbstractObject/Method:AddValue+' => 'Addiert einen festen Wert zu einem Attribut (Feld)', + 'Class:cmdbAbstractObject/Method:AddValue/Param:1' => 'Zielfeld', + 'Class:cmdbAbstractObject/Method:AddValue/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', + 'Class:cmdbAbstractObject/Method:AddValue/Param:2' => 'Wert', + 'Class:cmdbAbstractObject/Method:AddValue/Param:2+' => 'Dezimalwert welcher addiert werden soll, kann auch negativ sein', + 'Class:cmdbAbstractObject/Method:SetComputedDate' => 'SetComputedDate', + 'Class:cmdbAbstractObject/Method:SetComputedDate+' => 'Ein Attribut (Feld) mit einem Datum schreiben, welches aus einem anderen Feld berechnet wird', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1' => 'Zielfeld', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2' => 'Modifikator', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2+' => 'Modifikator für das Quellfeld in Textform z.B. "+3 days"', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3' => 'Quellfeld', + 'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3+' => 'Das Feld, welches als Quellfeld für den Modifikator verwendet werden soll', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull' => 'SetComputedDateIfNull', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull+' => 'Ein Attribut (Feld), wenn leer, mit einem Datum schreiben, welches aus einem anderen Feld berechnet wird', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1' => 'Zielfeld', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1+' => 'Das Feld, das im aktuellen Objekt geschrieben werden soll', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2' => 'Modifikator', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2+' => 'Modifikator für das Quellfeld in Textform z.B. "+3 days"', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3' => 'Quellfeld', + 'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3+' => 'Das Feld, welches als Quellfeld für den Modifikator verwendet werden soll', 'Class:cmdbAbstractObject/Method:Reset' => 'Reset', 'Class:cmdbAbstractObject/Method:Reset+' => 'Ein Attribut (Feld) auf seinen Default-Wert zurücksetzen', 'Class:cmdbAbstractObject/Method:Reset/Param:1' => 'Zielfeld', @@ -242,4 +242,4 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Document/Attribute:contracts_list+' => '', 'Class:Document/Attribute:services_list' => 'Services', 'Class:Document/Attribute:services_list+' => '', -)); \ No newline at end of file +)); diff --git a/dictionaries/de.dictionary.itop.core.php b/dictionaries/de.dictionary.itop.core.php index 38bb694b5..6cb66219b 100644 --- a/dictionaries/de.dictionary.itop.core.php +++ b/dictionaries/de.dictionary.itop.core.php @@ -77,7 +77,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:AttributeArchiveFlag/Value:no' => 'Nein', 'Core:AttributeArchiveFlag/Label' => 'Archiviert', 'Core:AttributeArchiveFlag/Label+' => '', - 'Core:AttributeArchiveDate/Label' => 'Archivierungs Datum', + 'Core:AttributeArchiveDate/Label' => 'Archivierungsdatum', 'Core:AttributeArchiveDate/Label+' => '', 'Core:AttributeObsolescenceFlag' => 'Obsoleszenz-Flag', @@ -107,7 +107,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:AttributeEncryptedString' => 'Verschlüsselter String', 'Core:AttributeEncryptedString+' => 'mit einem lokalen Schüssel verschlüsselter String', 'Core:AttributeEncryptUnknownLibrary' => 'Angegebene Library zur Verschlüsslung (%1$s) ist unbekannt', - 'Core:AttributeEncryptFailedToDecrypt' => '** Entschlüsslungsfehler **', + 'Core:AttributeEncryptFailedToDecrypt' => '** Entschlüsselungsfehler **', 'Core:AttributeText' => 'Text', 'Core:AttributeText+' => 'Mehrzeiliger String', @@ -115,14 +115,14 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:AttributeHTML' => 'HTML', 'Core:AttributeHTML+' => 'HTML-String', - 'Core:AttributeEmailAddress' => 'Email-Adresse', - 'Core:AttributeEmailAddress+' => 'Email-Adresse', + 'Core:AttributeEmailAddress' => 'E-Mail-Adresse', + 'Core:AttributeEmailAddress+' => 'E-Mail-Adresse', 'Core:AttributeIPAddress' => 'IP-Adresse', 'Core:AttributeIPAddress+' => 'IP-Adresse', 'Core:AttributeOQL' => 'OQL', - 'Core:AttributeOQL+' => 'Object-Query-Langage-Ausdruck', + 'Core:AttributeOQL+' => 'Object-Query-Language-Ausdruck', 'Core:AttributeEnum' => 'Enum', 'Core:AttributeEnum+' => 'Liste vordefinierter alphanumerischer Strings', @@ -175,7 +175,7 @@ Operatoren:
    'Core:AttributeExternalKey' => 'Externer Schlüssel', 'Core:AttributeExternalKey+' => 'Externer (oder fremder) Schlüssel', - 'Core:AttributeHierarchicalKey' => 'Hierarischer Key', + 'Core:AttributeHierarchicalKey' => 'Hierarchischer Key', 'Core:AttributeHierarchicalKey+' => 'Externer Key oder Foreign Key zum Parent', 'Core:AttributeExternalField' => 'Externes Feld', @@ -204,7 +204,7 @@ Operatoren:
    'Core:AttributeTag' => 'Tags', 'Core:AttributeTag+' => '', - + 'Core:Context=REST/JSON' => 'REST', 'Core:Context=Synchro' => 'Synchro', 'Core:Context=Setup' => 'Setup', @@ -381,8 +381,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Dict::Add('DE DE', 'German', 'Deutsch', array( - 'Class:EventNotificationEmail' => 'Email Emission Event', - 'Class:EventNotificationEmail+' => 'Verfolgung einer Email, die gesendet wurde', + 'Class:EventNotificationEmail' => 'E-Mail Emission Event', + 'Class:EventNotificationEmail+' => 'Verfolgung einer E-Mail, die gesendet wurde', 'Class:EventNotificationEmail/Attribute:to' => 'An', 'Class:EventNotificationEmail/Attribute:to+' => '', 'Class:EventNotificationEmail/Attribute:cc' => 'Kopie an', @@ -498,7 +498,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:Action/Attribute:trigger_list+' => 'Trigger, die mit dieser Aktion verknüpft sind', 'Class:Action/Attribute:finalclass' => 'Typ', 'Class:Action/Attribute:finalclass+' => '', - 'Action:WarningNoTriggerLinked' => 'Warning, no trigger is linked to the action. It will not be active until it has at least 1.~~', + 'Action:WarningNoTriggerLinked' => 'Warnung, es ist kein Trigger mit dieser Aktion verknüpft. Die Aktion ist nicht aktiv solange nicht mindestens 1 Trigger verknüpft ist.', )); // @@ -515,7 +515,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Dict::Add('DE DE', 'German', 'Deutsch', array( - 'Class:ActionEmail' => 'Email-Benachrichtigung', + 'Class:ActionEmail' => 'E-Mail-Benachrichtigung', 'Class:ActionEmail+' => '', 'Class:ActionEmail/Attribute:status+' => 'Dieser Zustand entscheidet, wer benachrichtigt werden soll: nur der Testempfänger, alle (To, cc und Bcc) oder niemand', 'Class:ActionEmail/Attribute:status/Value:test+' => 'Nur der Testempfänger wird benachrichtigt', @@ -524,13 +524,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:ActionEmail/Attribute:test_recipient' => 'Testempfänger', 'Class:ActionEmail/Attribute:test_recipient+' => 'Empfänger im Fall eines "Test"-Status', 'Class:ActionEmail/Attribute:from' => 'Von (E-Mail)', - 'Class:ActionEmail/Attribute:from+' => 'Absenderad­res­se wird im Email-Header mitgesendet', + 'Class:ActionEmail/Attribute:from+' => 'Absenderad­resse wird im E-Mail-Header mitgesendet', 'Class:ActionEmail/Attribute:from_label' => 'Von (Label)', - 'Class:ActionEmail/Attribute:from_label+' => 'Absendername wird im Email-Header mitgesendet', + 'Class:ActionEmail/Attribute:from_label+' => 'Absendername wird im E-Mail-Header mitgesendet', 'Class:ActionEmail/Attribute:reply_to' => 'Antworten an (E-Mail)', - 'Class:ActionEmail/Attribute:reply_to+' => 'Wird im Email-Header mitgesendet', + 'Class:ActionEmail/Attribute:reply_to+' => 'Wird im E-Mail-Header mitgesendet', 'Class:ActionEmail/Attribute:reply_to_label' => 'Antworten an (Label)', - 'Class:ActionEmail/Attribute:reply_to_label+' => 'Wird im Email-Header mitgesendet', + 'Class:ActionEmail/Attribute:reply_to_label+' => 'Wird im E-Mail-Header mitgesendet', 'Class:ActionEmail/Attribute:to' => 'An', 'Class:ActionEmail/Attribute:to+' => 'Empfänger der Nachricht', 'Class:ActionEmail/Attribute:cc' => 'Kopie an', @@ -538,7 +538,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:ActionEmail/Attribute:bcc' => 'Blindkopie (BCC)', 'Class:ActionEmail/Attribute:bcc+' => '', 'Class:ActionEmail/Attribute:subject' => 'Betreff', - 'Class:ActionEmail/Attribute:subject+' => 'Betreff der Email', + 'Class:ActionEmail/Attribute:subject+' => 'Betreff der E-Mail', 'Class:ActionEmail/Attribute:body' => 'Inhalt der Nachricht', 'Class:ActionEmail/Attribute:body+' => '', 'Class:ActionEmail/Attribute:importance' => 'Priorität', @@ -578,7 +578,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:TriggerOnObject/Attribute:target_class' => 'Zielklasse', 'Class:TriggerOnObject/Attribute:target_class+' => '', 'Class:TriggerOnObject/Attribute:filter' => 'Filter', - 'Class:TriggerOnObject/Attribute:filter+' => 'Limit the object list (of the target class) which will activate the trigger~~', + 'Class:TriggerOnObject/Attribute:filter+' => 'Einschränkung der Objekte (der Zielklasse) welche den Trigger aktivieren.', 'TriggerOnObject:WrongFilterQuery' => 'Fehlerhafter Filter-Query: %1$s', 'TriggerOnObject:WrongFilterClass' => 'Der Filter muss Objekte vom Typ \\"%1$s\\" zurückgeben.', )); @@ -657,8 +657,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:TriggerOnObjectMention' => 'Trigger (bei Objekterwähnung)', 'Class:TriggerOnObjectMention+' => 'Trigger bei Objekterwähnung (@xxx) einer Objekt mit [eine Kinderklasse von] eine gegebene Klasse in ein Log-Attribut', - 'Class:TriggerOnObjectMention/Attribute:mentioned_filter' => 'Mentioned filter~~', - 'Class:TriggerOnObjectMention/Attribute:mentioned_filter+' => 'Limit the list of mentioned objects which will activate the trigger. If empty, any mentioned object (of any class) will activate it.~~', + 'Class:TriggerOnObjectMention/Attribute:mentioned_filter' => 'Filter für Objekterwähnung', + 'Class:TriggerOnObjectMention/Attribute:mentioned_filter+' => 'Einschränkung der Objekte welche diesen Trigger aktivieren. Wenn leer, wird er von jedem Objekt (beliebige Klasse) aktiviert.', )); // @@ -713,11 +713,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:SynchroDataSource/Attribute:full_load_periodicity' => 'Intervall zwischen zwei vollständigen Reloads', 'Class:SynchroDataSource/Attribute:full_load_periodicity+' => 'Ein vollständiger Reload des gesamten Datenbestands muss mindestens in diesem Intervall erfolgen', 'Class:SynchroDataSource/Attribute:action_on_zero' => 'Verhalten bei keinen Treffern', - 'Class:SynchroDataSource/Attribute:action_on_zero+' => 'Verhalten, wenn die Suche keine Objekte zurückgibt', + 'Class:SynchroDataSource/Attribute:action_on_zero+' => 'Verhalten, wenn die Suche keine Objekte zurück gibt', 'Class:SynchroDataSource/Attribute:action_on_one' => 'Verhalten bei einem Treffer', - 'Class:SynchroDataSource/Attribute:action_on_one+' => 'Verhalten, wenn die Suche genau ein Objekt zurückgibt', + 'Class:SynchroDataSource/Attribute:action_on_one+' => 'Verhalten, wenn die Suche genau ein Objekt zurück gibt', 'Class:SynchroDataSource/Attribute:action_on_multiple' => 'Verhalten bei vielen Treffern', - 'Class:SynchroDataSource/Attribute:action_on_multiple+' => 'Verhalten, wenn die Suche mehr als ein Objekt zurückgibt', + 'Class:SynchroDataSource/Attribute:action_on_multiple+' => 'Verhalten, wenn die Suche mehr als ein Objekt zurück gibt', 'Class:SynchroDataSource/Attribute:user_delete_policy' => 'Zugelassene Benutzer', 'Class:SynchroDataSource/Attribute:user_delete_policy+' => 'Benutzer, die synchronisierte Objekte löschen dürfen', 'Class:SynchroDataSource/Attribute:delete_policy/Value:never' => 'Niemand', @@ -749,7 +749,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:SynchroUpdate:Yes' => 'Ja', 'Core:SynchroUpdate:No' => 'Nein', 'Core:Synchro:LastestStatus' => 'Neuester Status', - 'Core:Synchro:History' => 'Synchronisations-Verlauf', + 'Core:Synchro:History' => 'Synchronisationsverlauf', 'Core:Synchro:NeverRun' => 'Synchronisation noch nicht erfolgt. Kein Protokoll verfügbar.', 'Core:Synchro:SynchroEndedOn_Date' => 'Die letzte Synchronisation endete um %1$s.', 'Core:Synchro:SynchroRunningStartedOn_Date' => 'Die Synchronisation, die um %1$s gestartet wurde, läuft noch ...', @@ -773,13 +773,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:SynchroLogTitle' => '%1$s - %2$s', 'Core:Synchro:Nb_Replica' => 'Replica verarbeitet: %1$s', 'Core:Synchro:Nb_Class:Objects' => '%1$s: %2$s', - 'Class:SynchroDataSource/Error:AtLeastOneReconciliationKeyMustBeSpecified' => 'Mindestens ein Abgleichsschlüssel muss angegeben werden, oder das Abgleichsvorgehen muß den primären Schlüssel verwenden.', + 'Class:SynchroDataSource/Error:AtLeastOneReconciliationKeyMustBeSpecified' => 'Mindestens ein Abgleichsschlüssel muss angegeben werden, oder das Abgleichsvorgehen muss den primären Schlüssel verwenden.', 'Class:SynchroDataSource/Error:DeleteRetentionDurationMustBeSpecified' => 'Der Zeitraum bis zur endgültigen Löschung muss angegeben werden, da die Objekte nach einer Kennzeichnung als obsolet gelöscht werden.', 'Class:SynchroDataSource/Error:DeletePolicyUpdateMustBeSpecified' => 'Obsolete Objekte werden aktualisiert, aber es wurde keine Aktualisierung angegeben.', 'Class:SynchroDataSource/Error:DataTableAlreadyExists' => 'Tabelle %1$s existiert bereits in der Datenbank. Bitte benutzen Sie einen anderen Namen für die Datenbanktabelle aus dieser Datenquelle.', 'Core:SynchroReplica:PublicData' => 'Öffentliche Daten', 'Core:SynchroReplica:PrivateDetails' => 'Private Hinweise', - 'Core:SynchroReplica:BackToDataSource' => 'Zurück zur Synchronisations-Datenquelle: %1$s', + 'Core:SynchroReplica:BackToDataSource' => 'Zurück zur Synchronisationsdatenquelle: %1$s', 'Core:SynchroReplica:ListOfReplicas' => 'Liste der Replica', 'Core:SynchroAttExtKey:ReconciliationById' => 'id (Primärschlüssel)', 'Core:SynchroAtt:attcode' => 'Attribut', @@ -807,7 +807,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:SyncSplitModeCLIOnly' => 'Die Synchronisation kann nur in Chunks ausgeführt werden, wenn sie im CLI-Moduls verwendet wird.', 'Core:Synchro:ListReplicas_AllReplicas_Errors_Warnings' => '%1$s Replicas, %2$s Fehler, %3$s Warnung(en).', 'Core:SynchroReplica:TargetObject' => 'Synchronisiertes Objekt: %1$s', - 'Class:AsyncSendEmail' => 'Email (asynchron)', + 'Class:AsyncSendEmail' => 'E-Mail (asynchron)', 'Class:AsyncSendEmail/Attribute:to' => 'An', 'Class:AsyncSendEmail/Attribute:subject' => 'Betreff', 'Class:AsyncSendEmail/Attribute:body' => 'Body', @@ -832,7 +832,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:SynchroDataSource/Attribute:action_on_multiple/Value:create' => 'Erzeugen', 'Class:SynchroDataSource/Attribute:action_on_multiple/Value:error' => 'Fehler', 'Class:SynchroDataSource/Attribute:action_on_multiple/Value:take_first' => 'Ersten Treffer benutzen', - 'Class:SynchroDataSource/Attribute:delete_policy' => 'Löschungs-Policy', + 'Class:SynchroDataSource/Attribute:delete_policy' => 'Löschrichtlinie', 'Class:SynchroDataSource/Attribute:delete_policy/Value:delete' => 'Löschen', 'Class:SynchroDataSource/Attribute:delete_policy/Value:ignore' => 'Ignorieren', 'Class:SynchroDataSource/Attribute:delete_policy/Value:update' => 'Update', @@ -915,7 +915,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Bulk export 'Core:BulkExport:MissingParameter_Param' => 'Fehlender Parameter "%1$s"', - 'Core:BulkExport:InvalidParameter_Query' => 'ungültiger Wert für den Paramter "query". Es gibt keinen Eintrag in der Query-Bibliothek, der zu der id "%1$s" korrespondiert.', + 'Core:BulkExport:InvalidParameter_Query' => 'ungültiger Wert für den Parameter "query". Es gibt keinen Eintrag in der Query-Bibliothek, der zu der id "%1$s" korrespondiert.', 'Core:BulkExport:ExportFormatPrompt' => 'Exportformat:', 'Core:BulkExportOf_Class' => '%1$s-Export', 'Core:BulkExport:ClickHereToDownload_FileName' => 'Klicken Sie hier um %1$s herunterzuladen', @@ -926,7 +926,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:BulkExport:XLSXFormat' => 'Excel 2007 oder neuer (*.xlsx)', 'Core:BulkExport:PDFFormat' => 'PDF-Dokument (*.pdf)', 'Core:BulkExport:DragAndDropHelp' => 'Nutzen Sie Drag and Drop für die Spaltenüberschriften um die Spalten zu sortieren. Vorschau %1$s Zeilen. Gesamtzeilenzahl für den Export: %2$s.', - 'Core:BulkExport:EmptyPreview' => 'Wählen Sie die Spalten für den Export aus der obenstehenden Liste', + 'Core:BulkExport:EmptyPreview' => 'Wählen Sie die Spalten für den Export aus der oben stehenden Liste', 'Core:BulkExport:ColumnsOrder' => 'Spaltenreihenfolge', 'Core:BulkExport:AvailableColumnsFrom_Class' => 'Verfügbare Spalten für %1$s', 'Core:BulkExport:NoFieldSelected' => 'Wählen Sie mindestens eine Spalte für den Export aus', @@ -934,10 +934,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Core:BulkExport:UncheckAll' => 'Auswahl aufheben', 'Core:BulkExport:ExportCancelledByUser' => 'Export durch den Benutzer abgebrochen', 'Core:BulkExport:CSVOptions' => 'CSV-Optionen', - 'Core:BulkExport:CSVLocalization' => 'Lokaliserung', + 'Core:BulkExport:CSVLocalization' => 'Lokalisierung', 'Core:BulkExport:PDFOptions' => 'PDF-Optionen', 'Core:BulkExport:PDFPageFormat' => 'Seitenformat', - 'Core:BulkExport:PDFPageSize' => 'Seitengrösse:', + 'Core:BulkExport:PDFPageSize' => 'Seitengröße:', 'Core:BulkExport:PageSize-A4' => 'A4', 'Core:BulkExport:PageSize-A3' => 'A3', 'Core:BulkExport:PageSize-Letter' => 'Letter', @@ -1088,8 +1088,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:AsyncTask/Attribute:last_error+' => '', 'Class:AsyncTask/Attribute:last_attempt' => 'Letzter Versuch', 'Class:AsyncTask/Attribute:last_attempt+' => '', - 'Class:AsyncTask:InvalidConfig_Class_Keys' => 'Invalid format for the configuration of "async_task_retries[%1$s]". Expecting an array with the following keys: %2$s~~', - 'Class:AsyncTask:InvalidConfig_Class_InvalidKey_Keys' => 'Invalid format for the configuration of "async_task_retries[%1$s]": unexpected key "%2$s". Expecting only the following keys: %3$s~~', + 'Class:AsyncTask:InvalidConfig_Class_Keys' => 'Ungültiges Format der Konfiguration für "async_task_retries[%1$s]". Erwartet wird ein Array mit den Schlüsseln: %2$s', + 'Class:AsyncTask:InvalidConfig_Class_InvalidKey_Keys' => 'Ungültiges Format der Konfiguration für "async_task_retries[%1$s]": unerwarteter Schlüssel "%2$s". Erwartet werden nur die Schlüssel: %3$s', )); // @@ -1127,6 +1127,3 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:ResourceSystemMenu' => 'Ressource "System Menü"', 'Class:ResourceSystemMenu+' => '', )); - - - diff --git a/dictionaries/de.dictionary.itop.ui.php b/dictionaries/de.dictionary.itop.ui.php index d69780ae8..9ae46baeb 100644 --- a/dictionaries/de.dictionary.itop.ui.php +++ b/dictionaries/de.dictionary.itop.ui.php @@ -6,7 +6,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:AuditCategory' => 'Audit-Kategorie', 'Class:AuditCategory+' => 'Definition einer Objektgruppe, die durch Regeln überprüft werden soll.', - 'Class:AuditCategory/Attribute:name' => 'Kategorienname', + 'Class:AuditCategory/Attribute:name' => 'Kategoriename', 'Class:AuditCategory/Attribute:name+' => 'Kurzname für diese Kategorie', 'Class:AuditCategory/Attribute:description' => 'Beschreibung der Audit-Kategorien', 'Class:AuditCategory/Attribute:description+' => 'Ausführliche Beschreibung dieser Audit-Kategorie', @@ -33,7 +33,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:AuditRule/Attribute:query' => 'Durchzuführende Abfrage', 'Class:AuditRule/Attribute:query+' => 'Die auszuführende OQL-Abfrage', 'Class:AuditRule/Attribute:valid_flag' => 'Gültiges Objekt?', - 'Class:AuditRule/Attribute:valid_flag+' => 'true falls die Regel ein gültiges Objekt zurückgibt, andernfalls false', + 'Class:AuditRule/Attribute:valid_flag+' => 'true falls die Regel ein gültiges Objekt zurück gibt, andernfalls false', 'Class:AuditRule/Attribute:valid_flag/Value:true' => 'true', 'Class:AuditRule/Attribute:valid_flag/Value:true+' => 'true', 'Class:AuditRule/Attribute:valid_flag/Value:false' => 'false', @@ -41,7 +41,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:AuditRule/Attribute:category_id' => 'Kategorie', 'Class:AuditRule/Attribute:category_id+' => 'Kategorie für diese Regel', 'Class:AuditRule/Attribute:category_name' => 'Kategorie', - 'Class:AuditRule/Attribute:category_name+' => 'Kategorienname für diese Regel', + 'Class:AuditRule/Attribute:category_name+' => 'Kategoriename für diese Regel', )); // @@ -86,11 +86,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:User/Attribute:org_id' => 'Organisation', 'Class:User/Attribute:org_id+' => 'Organisation der verknüpften Person', 'Class:User/Attribute:last_name' => 'Nachname', - 'Class:User/Attribute:last_name+' => 'Nachname des Kontaktes', + 'Class:User/Attribute:last_name+' => 'Nachname des Kontakts', 'Class:User/Attribute:first_name' => 'Vorname', - 'Class:User/Attribute:first_name+' => 'Vorname des Kontaktes', - 'Class:User/Attribute:email' => 'Email-Adresse', - 'Class:User/Attribute:email+' => 'Email-Adresse des Kontaktes', + 'Class:User/Attribute:first_name+' => 'Vorname des Kontakts', + 'Class:User/Attribute:email' => 'E-Mail-Adresse', + 'Class:User/Attribute:email+' => 'E-Mail-Adresse des Kontakts', 'Class:User/Attribute:login' => 'Login', 'Class:User/Attribute:login+' => 'Benutzer-Anmeldename', 'Class:User/Attribute:language' => 'Sprache', @@ -110,10 +110,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Class:User/Error:LoginMustBeUnique' => 'Login-Namen müssen unterschiedlich sein - "%1s" benutzt diesen Login-Name bereits.', 'Class:User/Error:AtLeastOneProfileIsNeeded' => 'Mindestens ein Profil muss diesem Benutzer zugewiesen sein.', - 'Class:User/Error:ProfileNotAllowed' => 'Profile "%1$s" cannot be added it will deny the access to backoffice~~', - 'Class:User/Error:StatusChangeIsNotAllowed' => 'Changing status is not allowed for your own User~~', - 'Class:User/Error:AllowedOrgsMustContainUserOrg' => 'Allowed organizations must contain User organization~~', - 'Class:User/Error:CurrentProfilesHaveInsufficientRights' => 'The current list of profiles does not give sufficient access rights (Users are not modifiable anymore)~~', + 'Class:User/Error:ProfileNotAllowed' => 'Profil "%1$s" kann nicht hinzugefügt werde, es verhindert den Zugriff auf das Backoffice.', + 'Class:User/Error:StatusChangeIsNotAllowed' => 'Statusänderungen sind für den eigenen Benutzer nicht erlaubt.', + 'Class:User/Error:AllowedOrgsMustContainUserOrg' => 'Die Organisation des Benutzers muss in den erlaubten Organisationen enthalten sein.', + 'Class:User/Error:CurrentProfilesHaveInsufficientRights' => 'Die aktuelle Liste an Profilen vergibt unzureichende Berechtigungen (Benutzer können nicht mehr geändert werden)', 'Class:User/Error:AtLeastOneOrganizationIsNeeded' => 'Mindestens eine Organisation muss diesem Benutzer zugewiesen sein.', 'Class:User/Error:OrganizationNotAllowed' => 'Diese Organisation ist nicht erlaubt.', 'Class:User/Error:UserOrganizationNotAllowed' => 'Das Benutzerkonto gehört nicht zu den für Sie freigegebenen Organisationen', @@ -412,7 +412,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Button:Insert' => 'Einfügen', 'UI:Button:More' => 'Mehr', 'UI:Button:Less' => 'Weniger', - 'UI:Button:Wait' => 'Bitte warten Sie, während die Felder geupdated werden...', + 'UI:Button:Wait' => 'Bitte warten Sie, während die Felder aktualisiert werden...', 'UI:Treeview:CollapseAll' => 'Alle einklappen', 'UI:Treeview:ExpandAll' => 'Alle ausklappen', 'UI:UserPref:DoNotShowAgain' => 'Nicht wieder zeigen', @@ -424,19 +424,19 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:SearchFor_Class' => 'Suche nach Objekten vom Typ "%1$s"', 'UI:NoObjectToDisplay' => 'Kein Objekt zur Anzeige vorhanden.', 'UI:Error:SaveFailed' => 'Objekt kann nicht gespeichert werden:', - 'UI:Error:MandatoryTemplateParameter_object_id' => 'Parameter object_id ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Defintion des Display-Templates.', - 'UI:Error:MandatoryTemplateParameter_target_attr' => 'Parameter target_attr ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Defintion des Display-Templates.', - 'UI:Error:MandatoryTemplateParameter_group_by' => 'Parameter group_by ist erforderlich. Überprüfen Sie die Defintion des Display-Templates.', + 'UI:Error:MandatoryTemplateParameter_object_id' => 'Parameter object_id ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Definition des Display-Templates.', + 'UI:Error:MandatoryTemplateParameter_target_attr' => 'Parameter target_attr ist erforderlich, wenn link_attr verwendet wird. Überprüfen Sie die Definition des Display-Templates.', + 'UI:Error:MandatoryTemplateParameter_group_by' => 'Parameter group_by ist erforderlich. Überprüfen Sie die Definition des Display-Templates.', 'UI:Error:InvalidGroupByFields' => 'Ungültige Felder-Liste, um diese zu gruppieren von: "%1$s".', 'UI:Error:UnsupportedStyleOfBlock' => 'Fehler: nicht unterstützter Blockform: "%1$s".', - 'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Ungültige Link-Defintion: die Klasse der zu managenden Objekte: %1$s wurde nicht als externer Schlüssel in der Klasse %2$s gefunden.', + 'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Ungültige Link-Definition: die Klasse der zu managenden Objekte: %1$s wurde nicht als externer Schlüssel in der Klasse %2$s gefunden.', 'UI:Error:Object_Class_Id_NotFound' => 'Objekt: %1$s:%2$d wurde nicht gefunden.', 'UI:Error:WizardCircularReferenceInDependencies' => 'Fehler: gegenseitige Beziehung in den Abhängigkeiten zwischen den Feldern, überprüfen Sie das Datenmodell.', 'UI:Error:UploadedFileTooBig' => 'Die hochgeladene Datei ist zu groß. (Maximal erlaubte Dateigröße ist %1$s. Überprüfen Sie upload_max_filesize und post_max_size in der PHP-Konfiguration.', 'UI:Error:UploadedFileTruncated.' => 'Hochgeladene Datei wurde beschränkt!', 'UI:Error:NoTmpDir' => 'Der temporäre Ordner ist nicht definiert.', - 'UI:Error:CannotWriteToTmp_Dir' => 'Nicht möglich, die tempöräre Datei auf die Festplatte zu speichern: upload_tmp_dir = "%1$s".', - 'UI:Error:UploadStoppedByExtension_FileName' => 'Der Upload wurde von der Erweiterung gestoppt. (urspünglicher Dateiname = "%1$s").', + 'UI:Error:CannotWriteToTmp_Dir' => 'Nicht möglich, die temporäre Datei auf die Festplatte zu speichern: upload_tmp_dir = "%1$s".', + 'UI:Error:UploadStoppedByExtension_FileName' => 'Der Upload wurde von der Erweiterung gestoppt. (ursprünglicher Dateiname = "%1$s").', 'UI:Error:UploadFailedUnknownCause_Code' => 'Dateiupload fehlgeschlagen, unbekannte Ursache (Fehlercode = "%1$s").', 'UI:Error:1ParametersMissing' => 'Fehler: der folgende Parameter muss für diese Operation spezifiziert sein: %1$s.', @@ -492,7 +492,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Menu:New' => 'Neu...', 'UI:Menu:Add' => 'Hinzufügen...', 'UI:Menu:Manage' => 'Verwalten...', - 'UI:Menu:EMail' => 'eMail', + 'UI:Menu:EMail' => 'E-Mail', 'UI:Menu:CSVExport' => 'CSV-Export...', 'UI:Menu:Modify' => 'Modifizieren...', 'UI:Menu:Delete' => 'Löschen...', @@ -527,7 +527,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Login:ForgotPwdForm' => 'Neues Passwort zusenden', 'UI:Login:ForgotPwdForm+' => ITOP_APPLICATION_SHORT.' kann Ihnen eine Mail mit Anweisungen senden, wie Sie Ihren Account/Passwort zurücksetzen können', 'UI:Login:ResetPassword' => 'Jetzt senden!', - 'UI:Login:ResetPwdFailed' => 'Konnte keine Email versenden: %1$s', + 'UI:Login:ResetPwdFailed' => 'Konnte keine E-Mail versenden: %1$s', 'UI:Login:SeparatorOr' => 'oder', 'UI:ResetPwd-Error-WrongLogin' => '\'%1$s\' ist kein gültiger Login', @@ -535,14 +535,14 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:ResetPwd-Error-FixedPwd' => 'das Benutzerkonto erlaubt keinen Passwort-Reset. ', 'UI:ResetPwd-Error-NoContact' => 'das Benutzerkonto ist nicht mit einer Person verknüpft. ', 'UI:ResetPwd-Error-NoEmailAtt' => 'das Benutzerkonto ist nicht mit einer Person verknüpft, die eine Mailadresse besitzt. Bitte wenden Sie sich an Ihren Administrator. ', - 'UI:ResetPwd-Error-NoEmail' => 'die email Adresse dieses Accounts fehlt. Bitte kontaktieren Sie Ihren Administrator.', - 'UI:ResetPwd-Error-Send' => 'Beim Versenden der Email trat ein technisches Problem auf. Bitte kontaktieren Sie Ihren Administrator.', + 'UI:ResetPwd-Error-NoEmail' => 'die E-Mail-Adresse dieses Accounts fehlt. Bitte kontaktieren Sie Ihren Administrator.', + 'UI:ResetPwd-Error-Send' => 'Beim Versenden der E-Mail trat ein technisches Problem auf. Bitte kontaktieren Sie Ihren Administrator.', 'UI:ResetPwd-EmailSent' => 'Bitte schauen Sie in Ihre Mailbox und folgen Sie den Anweisungen.', 'UI:ResetPwd-EmailSubject' => 'Zurücksetzen Ihres '.ITOP_APPLICATION_SHORT.'-Passworts', 'UI:ResetPwd-EmailBody' => '

    Sie haben das Zurücksetzen Ihres '.ITOP_APPLICATION_SHORT.' Passworts angefordert.

    Bitte folgen Sie diesem Link (funktioniert nur einmalig) : neues Passwort eingeben

    .', 'UI:ResetPwd-Title' => 'Passwort zurücksetzen', - 'UI:ResetPwd-Error-InvalidToken' => 'Entschuldigung, aber entweder das passwort wurde bereits zurückgesetzt, oder Sie haben mehrere eMails für das Zurücksetzen erhalten. Bitte nutzen Sie den link in der letzten Mail, die Sie erhalten haben.', + 'UI:ResetPwd-Error-InvalidToken' => 'Entschuldigung, aber entweder das Passwort wurde bereits zurückgesetzt, oder Sie haben mehrere E-Mails für das Zurücksetzen erhalten. Bitte nutzen Sie den link in der letzten Mail, die Sie erhalten haben.', 'UI:ResetPwd-Error-EnterPassword' => 'Geben Sie ein neues Passwort für das Konto \'%1$s\' ein.', 'UI:ResetPwd-Ready' => 'Das Passwort wurde geändert. ', 'UI:ResetPwd-Login' => 'Klicken Sie hier um sich einzuloggen...', @@ -566,13 +566,13 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Login:Error:AccessRestricted' => 'Der '.ITOP_APPLICATION_SHORT.'-Zugang ist gesperrt. Bitte kontaktieren Sie Ihren '.ITOP_APPLICATION_SHORT.'-Administrator.', 'UI:Login:Error:AccessAdmin' => 'Zugang nur für Personen mit Administratorrechten. Bitte kontaktieren Sie Ihren '.ITOP_APPLICATION_SHORT.'-Administrator.', 'UI:Login:Error:WrongOrganizationName' => 'Unbekannte Organisation', - 'UI:Login:Error:MultipleContactsHaveSameEmail' => 'Mehrere Kontakte mit gleicher EMail-Adresse', + 'UI:Login:Error:MultipleContactsHaveSameEmail' => 'Mehrere Kontakte mit gleicher E-Mail-Adresse', 'UI:Login:Error:NoValidProfiles' => 'Kein gültiges Profil ausgewählt', 'UI:CSVImport:MappingSelectOne' => 'Bitte wählen', 'UI:CSVImport:MappingNotApplicable' => '-- Dieses Feld ignorieren --', 'UI:CSVImport:NoData' => 'Keine Daten eingegeben ... bitte geben Sie Daten ein!', 'UI:Title:DataPreview' => 'Datenvorschau', - 'UI:CSVImport:ErrorOnlyOneColumn' => 'Fehler: die Daten behinhalten nur eine Spalte. Haben Sie das dazugehörige Trennzeichen ausgewählt?', + 'UI:CSVImport:ErrorOnlyOneColumn' => 'Fehler: die Daten beinhalten nur eine Spalte. Haben Sie das dazugehörige Trennzeichen ausgewählt?', 'UI:CSVImport:FieldName' => 'Feld %1$d', 'UI:CSVImport:DataLine1' => 'Daten-Zeile 1', 'UI:CSVImport:DataLine2' => 'Daten-Zeile 2', @@ -617,7 +617,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:CSVImport:CommentsAndHeader' => 'Kommentare und Kopfzeile', 'UI:CSVImport:SelectClass' => 'Wählen Sie die Klasse zum Import:', 'UI:CSVImport:AdvancedMode' => 'Fortgeschrittener Modus', - 'UI:CSVImport:AdvancedMode+' => 'Im fortgeschrittenen Modus kann die "ID" (primärer Schlüssel) der Objekte benutzt werden, um Ojekte zu aktualisieren oder umzubenennen.Allerdings kann die Spalte "ID" (sofern vorhanden) nur als Suchkriterium verwendet werden und nicht mit anderen Suchkriterien kombiniert werden.', + 'UI:CSVImport:AdvancedMode+' => 'Im fortgeschrittenen Modus kann die "ID" (primärer Schlüssel) der Objekte benutzt werden, um Objekte zu aktualisieren oder umzubenennen.Allerdings kann die Spalte "ID" (sofern vorhanden) nur als Suchkriterium verwendet werden und nicht mit anderen Suchkriterien kombiniert werden.', 'UI:CSVImport:SelectAClassFirst' => 'Wählen Sie bitte zuerst eine Klasse aus, bevor Sie das Mapping erstellen', 'UI:CSVImport:HeaderFields' => 'Felder', 'UI:CSVImport:HeaderMappings' => 'Mappings', @@ -692,7 +692,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Audit:Dashboard:ObjectsAudited' => 'Auditierte Objekte', 'UI:Audit:Dashboard:ObjectsInError' => 'Objekte mit Fehlern', 'UI:Audit:Dashboard:ObjectsValidated' => 'Validierte Objekte', - 'UI:Audit:AuditCategory:Subtitle' => '%1$s Fehler von ingesamt %2$s - %3$s%%', + 'UI:Audit:AuditCategory:Subtitle' => '%1$s Fehler von insgesamt %2$s - %3$s%%', 'UI:RunQuery:Title' => ITOP_APPLICATION_SHORT.' - OQL-Abfrage-Auswertung', @@ -715,7 +715,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Query:UrlForExcel' => 'URL für MS Excel Web Queries', 'UI:Query:UrlV1' => 'Die Liste der Felder wurde nicht spezifiziert. Die Seite export-V2.php kann ohne diese Angabe nicht verarbeitet werden. Deswegen, zeigt die nachstehende URL zu der Legacy-Page: export.php. Diese Legacy-Version des Exports hat folgende Limitierungen: Die Liste exportierter Felder kann, abhängig vom Output-Format und vom Datenmodell von '.ITOP_APPLICATION_SHORT.', variieren. Möchten Sie garantieren, dass die Liste aller exportierten Spalten stabil bleibt, müssen Sie einen Wert für das Attribut Feld angeben und die Seite export-V2.php nutzen.', 'UI:Schema:Title' => ITOP_APPLICATION_SHORT.' Objekte-Schema', - 'UI:Schema:TitleForClass' => '%1$s Schema~~', + 'UI:Schema:TitleForClass' => '%1$s Schema', 'UI:Schema:CategoryMenuItem' => 'Kategorie %1$s', 'UI:Schema:Relationships' => 'Wechselseite Beziehungen', 'UI:Schema:AbstractClass' => 'Abstrakte Klasse: ein Objekt dieser Klasse kann nicht instanziiert werden.', @@ -830,7 +830,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'UI:Delete:SorryDeletionNotAllowed' => 'Leider ist Ihnen nicht gestattet, dieses Objekt zu löschen. Eine ausführliche Erklärung dazu finden Sie oben', 'UI:Delete:PleaseDoTheManualOperations' => 'Bitte führen Sie die oben aufgelisteten manuellen Operationen zuerst durch, bevor Sie dieses Objekt löschen.', 'UI:Delect:Confirm_Object' => 'Bitte bestätigen Sie, dass Sie %1$s löschen möchten.', - 'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Bitte bestätigen Sie, dasss Sie die folgenden %1$d Objekte der Klasse %2$s löschen möchten.', + 'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Bitte bestätigen Sie, dass Sie die folgenden %1$d Objekte der Klasse %2$s löschen möchten.', 'UI:WelcomeToITop' => 'Willkommen bei '.ITOP_APPLICATION_SHORT, 'UI:DetailsPageTitle' => ITOP_APPLICATION_SHORT.' - %1$s - %2$s Details', 'UI:ErrorPageTitle' => ITOP_APPLICATION_SHORT.' - Fehler', @@ -910,7 +910,7 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating 'Menu:AdminTools' => 'Admin-Tools',// Duplicated into itop-welcome-itil (will be removed from here...) 'Menu:AdminTools+' => 'Administrationswerkzeuge',// Duplicated into itop-welcome-itil (will be removed from here...) - 'Menu:AdminTools?' => 'Werkzeuge, die nur für Benutzer mit Adminstratorprofil zugänglich sind',// Duplicated into itop-welcome-itil (will be removed from here...) + 'Menu:AdminTools?' => 'Werkzeuge, die nur für Benutzer mit Administratorprofil zugänglich sind',// Duplicated into itop-welcome-itil (will be removed from here...) 'Menu:SystemTools' => 'System', 'UI:ChangeManagementMenu' => 'Change Management', @@ -977,24 +977,24 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
  • Einige Trigger werden ausgeführt, wenn ein Schwellenwert auf TTO oder TTR erreicht ist.
  • -Aktionen define the actions to be performed when the triggers execute. For now there are only two kind of actions: +Aktionen definieren, welche beim auslösen eines Triggers ausgeführt werden. Aktuell gibt es nur zwei Arten von Aktionen:

      -
    1. Sending an email message: Such actions also define the template to be used for sending the email as well as the other parameters of the message like the recipients, importance, etc.
      +
    2. Senden einer E-Mail: Solche Aktionen definieren die verwendete Vorlage sowie andere Parameter der Nachricht wie Empfänger, Wichtigkeit, usw.
      Eine spezielle Seite: email.test.php steht zum Testen und zur Fehlerbehebung Ihrer PHP-Mailkonfiguration bereit.
    3. -
    4. Outgoing webhooks: Allow integration with a third-party application by sending structured data to a defined URL.
    5. +
    6. Ausgehende webhooks: Erlaubt die Integration mit einer externen Anwendung indem strukturierte Daten an eine definierte URL gesendet werden.

    Um Aktionen auszuführen, müssen diese mit Trigger verknüpft sein. -Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnummer, die die Reihenfolge der auszuführenden Aktionen festlegt.

    ~~', +Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnummer, die die Reihenfolge der auszuführenden Aktionen festlegt.

    ', 'UI:NotificationsMenu:Triggers' => 'Trigger', 'UI:NotificationsMenu:AvailableTriggers' => 'Verfügbare Trigger', 'UI:NotificationsMenu:OnCreate' => 'Wenn ein Objekt erstellt wird', 'UI:NotificationsMenu:OnStateEnter' => 'Wenn ein Objekt einen gegebenen Status erlangt', 'UI:NotificationsMenu:OnStateLeave' => 'Wenn ein Objekt einen gegebenen Status verlässt', 'UI:NotificationsMenu:Actions' => 'Aktionen', - 'UI:NotificationsMenu:Actions:ActionEmail' => 'Email actions~~', - 'UI:NotificationsMenu:Actions:ActionWebhook' => 'Webhook actions (outgoing integrations)~~', - 'UI:NotificationsMenu:Actions:Action' => 'Other actions~~', + 'UI:NotificationsMenu:Actions:ActionEmail' => 'E-Mail Aktionen', + 'UI:NotificationsMenu:Actions:ActionWebhook' => 'Webhook Aktionen (ausgehende Integrationen)', + 'UI:NotificationsMenu:Actions:Action' => 'Andere Aktionen', 'UI:NotificationsMenu:AvailableActions' => 'Verfügbare Aktionen', 'Menu:TagAdminMenu' => 'Tag-Konfiguration', @@ -1088,7 +1088,7 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'Portal:NoRequestMgmt' => 'Lieber %1$s, Sie wurden hierher umgeleitet, weil Ihr Account mit dem Profil \'Portal user\' konfiguriert wurde. Leider wurde in '.ITOP_APPLICATION_SHORT.' aber das \'Request Management\'-Feature nicht installiert. Bitte kontaktieren Sie Ihren Administrator.', 'Portal:Refresh' => 'Neu laden', 'Portal:Back' => 'Zurück', - 'Portal:WelcomeUserOrg' => 'Wilkommen %1$s, von %2$s', + 'Portal:WelcomeUserOrg' => 'Willkommen %1$s, von %2$s', 'Portal:TitleDetailsFor_Request' => 'Details für Benutzeranfrage', 'Portal:ShowOngoing' => 'Zeige offene Requests', 'Portal:ShowClosed' => 'Zeige geschlossene Requests', @@ -1144,10 +1144,10 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:CaseLogTypeYourTextHere' => 'Geben Sie Ihren Text hier ein:', 'UI:CaseLog:Header_Date_UserName' => '%1$s - %2$s:', 'UI:CaseLog:InitialValue' => 'Anfangswert:', - 'UI:AttemptingToSetASlaveAttribute_Name' => 'Das Feld %1$s ist nicht schreibbar, weil es durch die Datensynchronisation geführt wird. Wert nicht gesetzt.', + 'UI:AttemptingToSetASlaveAttribute_Name' => 'Das Feld %1$s ist nicht beschreibbar, weil es durch die Datensynchronisation geführt wird. Wert nicht gesetzt.', 'UI:ActionNotAllowed' => 'Sie haben nicht die Berechtigung, diese Aktion auf diesen Objekten auszuführen.', 'UI:BulkAction:NoObjectSelected' => 'Bitte wählen Sie mindestens ein Objekt, um diese Aktion auszuführen.', - 'UI:AttemptingToChangeASlaveAttribute_Name' => 'Das Feld %1$s ist nicht schreibbar, weil es durch die Datensynchronisation geführt wird. Wert bleibt unverändert.', + 'UI:AttemptingToChangeASlaveAttribute_Name' => 'Das Feld %1$s ist nicht beschreibbar, weil es durch die Datensynchronisation geführt wird. Wert bleibt unverändert.', 'UI:Pagination:HeaderSelection' => 'Gesamt: %1$s Objekte (%2$s Objekte ausgewählt).', 'UI:Pagination:HeaderNoSelection' => 'Gesamt: %1$s Objekte.', 'UI:Pagination:PageSize' => '%1$s Objekte pro Seite', @@ -1169,7 +1169,7 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:Favorites:ShowObsoleteData+' => 'Zeige obsolete (veraltete) Daten in Suchresultaten und Auswahllisten von Objekten', 'UI:NavigateAwayConfirmationMessage' => 'Jedwede Veränderung wird verworfen.', 'UI:CancelConfirmationMessage' => 'Sie werden Ihre Änderungen verlieren. Dennoch fortfahren?', - 'UI:AutoApplyConfirmationMessage' => 'Einige Änderungen wurden noch nicht angewandt. Möchten Sie, daß '.ITOP_APPLICATION_SHORT.' diese berüchsichtigt?', + 'UI:AutoApplyConfirmationMessage' => 'Einige Änderungen wurden noch nicht angewandt. Möchten Sie, dass '.ITOP_APPLICATION_SHORT.' diese berücksichtigt?', 'UI:Create_Class_InState' => 'Erzeuge die/das %1$s in Status: ', 'UI:OrderByHint_Values' => 'Sortierreihenfolge: %1$s', 'UI:Menu:AddToDashboard' => 'Zu Dashboard hinzufügen...', @@ -1186,7 +1186,7 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:ConfigureThisList' => 'Liste konfigurieren...', 'UI:ListConfigurationTitle' => 'Listenkonfiguration', - 'UI:ColumnsAndSortOrder' => 'Spalten und Sortierrheienfolge:', + 'UI:ColumnsAndSortOrder' => 'Spalten und Sortierreihenfolge:', 'UI:UseDefaultSettings' => 'Verwende Default-Einstellungen', 'UI:UseSpecificSettings' => 'Verwende folgende Einstellungen:', 'UI:Display_X_ItemsPerPage_prefix' => '', @@ -1225,8 +1225,8 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:DashboardEdit:AutoReload' => 'Automatischer Reload', 'UI:DashboardEdit:AutoReloadSec' => 'Intervall für automatischen Reload (Sekunden)', 'UI:DashboardEdit:AutoReloadSec+' => 'Der Mindestwert beträgt %1$d Sekunden', - 'UI:DashboardEdit:Revert' => 'Revert~~', - 'UI:DashboardEdit:Apply' => 'Apply~~', + 'UI:DashboardEdit:Revert' => 'Zurücksetzen', + 'UI:DashboardEdit:Apply' => 'Anwenden', 'UI:DashboardEdit:Layout' => 'Layout', 'UI:DashboardEdit:Properties' => 'Dashboard-Einstellungen', @@ -1429,7 +1429,7 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:About:Extension_Version' => 'Version: %1$s', 'UI:About:RemoteExtensionSource' => 'Data', - 'UI:DisconnectedDlgMessage' => 'Sie sind abgemeldet. Sie müssen sich identifizeren, um die Anwendung weiter zu benutzen.', + 'UI:DisconnectedDlgMessage' => 'Sie sind abgemeldet. Sie müssen sich identifizieren, um die Anwendung weiter zu benutzen.', 'UI:DisconnectedDlgTitle' => 'Warnung!', 'UI:LoginAgain' => 'Erneut einloggen', 'UI:StayOnThePage' => 'Auf dieser Seite bleiben', diff --git a/dictionaries/ui/components/breadcrumbs/de.dictionary.itop.breadcrumbs.php b/dictionaries/ui/components/breadcrumbs/de.dictionary.itop.breadcrumbs.php index 0d8bbb430..475fb622e 100644 --- a/dictionaries/ui/components/breadcrumbs/de.dictionary.itop.breadcrumbs.php +++ b/dictionaries/ui/components/breadcrumbs/de.dictionary.itop.breadcrumbs.php @@ -19,5 +19,5 @@ // Global search Dict::Add('DE DE', 'German', 'Deutsch', array( - 'UI:Component:Breadcrumbs:PreviousItemsListToggler:Label' => 'Previous pages~~', -)); \ No newline at end of file + 'UI:Component:Breadcrumbs:PreviousItemsListToggler:Label' => 'Vorherige Seiten', +)); diff --git a/dictionaries/ui/components/datatable/de.dictionary.itop.datatable.php b/dictionaries/ui/components/datatable/de.dictionary.itop.datatable.php index 40d0b4b97..ac1b8e102 100644 --- a/dictionaries/ui/components/datatable/de.dictionary.itop.datatable.php +++ b/dictionaries/ui/components/datatable/de.dictionary.itop.datatable.php @@ -24,8 +24,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'UI:Datatables:Language:Info' => '_TOTAL_ Objekte', 'UI:Datatables:Language:InfoEmpty' => 'Keine Information', 'UI:Datatables:Language:EmptyTable' => 'Keine Daten in dieser Tabelle verfügbar', - 'UI:Datatables:Language:Error' => 'An error occured while running the query~~', + 'UI:Datatables:Language:Error' => 'Bei der Ausführung des Query ist ein Fehler aufgetreten', 'UI:Datatables:Language:DisplayLength:All' => 'Alle', 'UI:Datatables:Language:Sort:Ascending' => 'Aktivieren für aufsteigende Sortierung', 'UI:Datatables:Language:Sort:Descending' => 'Aktivieren für absteigende Sortierung', -)); \ No newline at end of file +)); diff --git a/dictionaries/ui/components/input/de.dictionary.itop.input.php b/dictionaries/ui/components/input/de.dictionary.itop.input.php index a0fff6b5c..c13e4b9a5 100644 --- a/dictionaries/ui/components/input/de.dictionary.itop.input.php +++ b/dictionaries/ui/components/input/de.dictionary.itop.input.php @@ -19,5 +19,5 @@ // Input Dict::Add('DE DE', 'German', 'Deutsch', array( - 'UI:Component:Input:Password:DoesNotMatch' => 'Passwords do not match~~', -)); \ No newline at end of file + 'UI:Component:Input:Password:DoesNotMatch' => 'Passwörter stimmen nicht überein', +)); diff --git a/dictionaries/ui/layouts/navigation-menu/de.dictionary.itop.navigation-menu.php b/dictionaries/ui/layouts/navigation-menu/de.dictionary.itop.navigation-menu.php index a1dcd4d26..b0c230e1e 100644 --- a/dictionaries/ui/layouts/navigation-menu/de.dictionary.itop.navigation-menu.php +++ b/dictionaries/ui/layouts/navigation-menu/de.dictionary.itop.navigation-menu.php @@ -19,7 +19,7 @@ // Navigation menu Dict::Add('DE DE', 'German', 'Deutsch', array( 'UI:Layout:NavigationMenu:CompanyLogo:AltText' => 'Unternehmenslogo', - 'UI:Layout:NavigationMenu:Silo:Label' => 'Select organization to filter on~~', + 'UI:Layout:NavigationMenu:Silo:Label' => 'Organisation zum filtern auswählen', 'UI:Layout:NavigationMenu:Toggler:Tooltip' => 'Ausklappen/Einklappen', 'UI:Layout:NavigationMenu:Toggler:TooltipWithSiloLabel' => 'Ausklappen/Einklappen (Gefiltert nach %1$s)', 'UI:Layout:NavigationMenu:MenuFilter:Input:Placeholder' => 'Filter...', @@ -28,7 +28,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'UI:Layout:NavigationMenu:MenuFilter:Placeholder:Hint' => 'Kein Ergebnis für diesen Menü-Filter', 'UI:Layout:NavigationMenu:UserInfo:WelcomeMessage:Text' => 'Hi %1$s!', 'UI:Layout:NavigationMenu:UserInfo:Picture:AltText' => '%1$s\'s Profilbild', - 'UI:Layout:NavigationMenu:UserMenu:Toggler:Label' => 'Open user menu~~', + 'UI:Layout:NavigationMenu:UserMenu:Toggler:Label' => 'Benutzermenü öffnen', 'UI:Layout:NavigationMenu:KeyboardShortcut:FocusFilter' => 'Filtere Menüeinträge', -)); \ No newline at end of file +)); diff --git a/dictionaries/ui/pages/preferences/de.dictionary.itop.preferences.php b/dictionaries/ui/pages/preferences/de.dictionary.itop.preferences.php index 1513986c2..5eb734d3e 100644 --- a/dictionaries/ui/pages/preferences/de.dictionary.itop.preferences.php +++ b/dictionaries/ui/pages/preferences/de.dictionary.itop.preferences.php @@ -30,12 +30,12 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'UI:Preferences:RichText:ToolbarState:Collapsed' => 'Eingeklappt', 'UI:Preferences:ActivityPanel:Title' => 'Aktives Panel', 'UI:Preferences:ActivityPanel:EntryFormOpened' => 'Formular standardmäßig geöffnet', - 'UI:Preferences:ActivityPanel:EntryFormOpened+' => 'Ob ein Formular, wenn ein Objekt angezeigt wird, standardmäßig geöffnet ist. Wenn dieser Haken nicht gesetzt ist, können Sie das Formmular mit einem Klick auf den Compose-Button trotzdem jederzeit öffnen.', + 'UI:Preferences:ActivityPanel:EntryFormOpened+' => 'Ob ein Formular, wenn ein Objekt angezeigt wird, standardmäßig geöffnet ist. Wenn dieser Haken nicht gesetzt ist, können Sie das Formular mit einem Klick auf den Compose-Button trotzdem jederzeit öffnen.', 'UI:Preferences:PersonalizeKeyboardShortcuts:Title' => 'Keyboard-Shortcuts dieser Applikation', 'UI:Preferences:PersonalizeKeyboardShortcuts:Input:Hint' => 'Geben Sie einen Keyboard-Shortcut ein', 'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Tooltip' => 'Nehmen Sie einen Keyboard-Shortcut auf', - 'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset' => 'Reset~~', - 'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset:Tooltip' => 'Back to default keyboard shortcut~~', + 'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset' => 'Zurücksetzen', + 'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset:Tooltip' => 'Auf den Standard-Keyboard-Shortcut zurücksetzen', 'UI:Preferences:Tabs:Title' => 'Tabs', 'UI:Preferences:Tabs:Layout:Label' => 'Layout', 'UI:Preferences:Tabs:Layout:Horizontal' => 'Horizontal', From 46d58e65123d1cd470748d5e545a30432ea85411 Mon Sep 17 00:00:00 2001 From: acognet Date: Thu, 10 Mar 2022 09:59:56 +0100 Subject: [PATCH 04/22] =?UTF-8?q?N=C2=B04642=20-=20Core=20Update=20:=20lim?= =?UTF-8?q?it=20the=20usage=20of=20this=20function=20-=20disable=20if=20ne?= =?UTF-8?q?w=20modules=20found?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Service/CoreUpdater.php | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php index 31648367e..a1f651206 100644 --- a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php +++ b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php @@ -9,6 +9,7 @@ namespace Combodo\iTop\CoreUpdate\Service; +use Combodo\iTop\FilesInformation\Service\FileIntegrityException; use Combodo\iTop\FilesInformation\Service\FilesIntegrity; use DBBackup; use Dict; @@ -535,7 +536,11 @@ final class CoreUpdater SetupLog::Info('itop-core-update: Archive extracted, check files integrity'); // Check files integrity - FilesIntegrity::CheckInstallationIntegrity(self::UPDATE_DIR.'web/'); + $sRootPath = self::UPDATE_DIR.'web/'; + FilesIntegrity::CheckInstallationIntegrity($sRootPath); + + ///Check new modules + self::CheckNewModules($sRootPath); SetupLog::Info('itop-core-update: Files integrity OK'); } catch (Exception $e) @@ -604,4 +609,37 @@ final class CoreUpdater throw $e; } } + + /** + * Throw an exception if there are new modules that were not already installed + * @param $sRootPath + * + * @throws \ApplicationException + * @since 2.7.7 3.0.1 + */ + private static function CheckNewModules($sRootPath) + { + $aFilesInfo = FilesIntegrity::GetInstalledFiles($sRootPath.'manifest.xml'); + + if ($aFilesInfo === false) { + throw new FileIntegrityException(Dict::Format('FilesInformation:Error:MissingFile', 'manifest.xml')); + } + + @clearstatcache(); + $sSourceDir = MetaModel::GetConfig()->Get('source_dir'); + foreach ($aFilesInfo as $aFileInfo) { + if (strpos($aFileInfo['path'], $sSourceDir) === 0) { + $aFilePath = explode('/', $aFileInfo['path']); + $sFolderPath = $aFilePath[0].'/'.$aFilePath[1].'/'.$aFilePath[2]; + //if module don't already exist in itop and if module listed in manifest.xml is included in zip + if (!is_dir(APPROOT.'/'.$sFolderPath) && !is_file(APPROOT.'/'.$sFolderPath) + && is_dir($sRootPath.'/'.$sFolderPath)) { + $sLink = utils::GetAbsoluteUrlAppRoot().'setup/'; + $sLinkManualUpdate = 'https://www.itophub.io/wiki/page?id='.utils::GetItopVersionWikiSyntax().'%3Ainstall%3Aupgrading_itop#manually'; + throw new FileIntegrityException(Dict::Format('FilesInformation:Error:CannotUpdateNewModules', $sLink, $sLinkManualUpdate).'::'.$aFilePath[2]); + } + } + // Packed with missing files... + } + } } From d122dbfdd66bfc329261e44706b52f9bdc5ec00e Mon Sep 17 00:00:00 2001 From: acognet Date: Thu, 10 Mar 2022 09:59:56 +0100 Subject: [PATCH 05/22] =?UTF-8?q?N=C2=B04642=20-=20Core=20Update=20:=20lim?= =?UTF-8?q?it=20the=20usage=20of=20this=20function=20-=20disable=20if=20ne?= =?UTF-8?q?w=20modules=20found?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/da.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/de.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/en.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/it.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php | 2 +- datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php | 1 + datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php | 1 + 16 files changed, 16 insertions(+), 1 deletion(-) diff --git a/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php index 61d197223..2a6198138 100644 --- a/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php index b4077e64e..4902d8c30 100644 --- a/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php index 7b7ad813c..0f38c7f22 100644 --- a/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Anwendungsupgrade nicht möglich: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Einige angepasste Dateien wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Einige neue Module wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php index 1382825a9..da1bd3050 100644 --- a/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('EN US', 'English', 'English', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php index 87c8cca41..46b8861dd 100644 --- a/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php @@ -77,6 +77,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'La aplicación no puede ser actualizada: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Advertencia: la actualización de la aplicación puede fallar: %1$s', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php index 446d4823e..d77588d57 100644 --- a/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('FR FR', 'French', 'Français', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'L\'application ne peut pas être mise à jour : %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Attention : la mise à jour de l\'application peut échouer : %1$s', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Des fichiers modifiés ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'De nouveaux modules ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', 'iTopUpdate:UI:CheckInProgress'=>'Veuillez patienter pendant la vérification d\'intégrité', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php index 6fadd92ee..c3d4f2130 100644 --- a/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php index 6f5776ba5..385470b4f 100644 --- a/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php index 176c05e8e..cefb64e3d 100644 --- a/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php index dc253f7fa..f7931969d 100644 --- a/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php @@ -78,6 +78,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Updaten van de toepassing is niet mogelijk: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php index f5c480a3b..c3e97c171 100644 --- a/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php index 72d32920e..3ec38c424 100644 --- a/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php @@ -64,6 +64,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Приложение не может быть обновлено: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php index 7d814f4f8..6b70b3d9e 100644 --- a/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php index a1f651206..a3c78d75d 100644 --- a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php +++ b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php @@ -636,7 +636,7 @@ final class CoreUpdater && is_dir($sRootPath.'/'.$sFolderPath)) { $sLink = utils::GetAbsoluteUrlAppRoot().'setup/'; $sLinkManualUpdate = 'https://www.itophub.io/wiki/page?id='.utils::GetItopVersionWikiSyntax().'%3Ainstall%3Aupgrading_itop#manually'; - throw new FileIntegrityException(Dict::Format('FilesInformation:Error:CannotUpdateNewModules', $sLink, $sLinkManualUpdate).'::'.$aFilePath[2]); + throw new FileIntegrityException(Dict::Format('iTopUpdate:UI:CannotUpdateNewModules' , $sLink, $sLinkManualUpdate)); } } // Packed with missing files... diff --git a/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php index 45383350f..5b3dfb2a6 100644 --- a/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php index 4fdd20398..c1676c95e 100644 --- a/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php @@ -76,6 +76,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( 'iTopUpdate:UI:CanCoreUpdate:No' => '应用无法升级: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => '警告: 应用升级可能会失败: %1$s', 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages From 5908ec51972bb4f6e97bf9f6c0e6ada6d61c1d60 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Thu, 10 Mar 2022 16:42:43 +0100 Subject: [PATCH 06/22] =?UTF-8?q?N=C2=B04515=20AttributeURLTest=20:=20add?= =?UTF-8?q?=20SF=20forum=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/core/AttributeURLTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/test/core/AttributeURLTest.php b/test/core/AttributeURLTest.php index 9d75fcbb0..5f937830a 100644 --- a/test/core/AttributeURLTest.php +++ b/test/core/AttributeURLTest.php @@ -38,6 +38,7 @@ class AttributeURLTest extends ItopTestCase { 'Sharepoint URL 1' => ['https://mydomain1.sharepoint.com/:i:/r/sites/DSIMyDept/Shared%20Documents/Architecture%20Technique/02%20-%20R%C3%A9seau/Baie%2025C/Baie%201er/Baie-25C-1er.jpg?csf=1&web=1&e=Il3txR', 1], 'Sharepoint URL 2' => ['https://mydomain2.sharepoint.com/:u:/r/sites/DIS/ITSM/00_Admin_iTOP/iTop%20-%20Upgrade%20manuel/Procedure%20upgrade%20Combodo.url?csf=1&web=1&e=DAF0i3', 1], 'Alfresco URL 2' => ['http://alfresco.mydomain3.org/share/page/site/books/document-details?nodeRef=workspace://SpacesStore/6274f55f-a25b-4762-a863-77f7066f2034', 1], + 'SF URL' => ['https://sourceforge.net/p/itop/discussion/customizing-itop/thread/707145b859/?limit=25#f53c', 1], ]; } } From 2d156bd77b369f47f1dedab10fa471bc9670e504 Mon Sep 17 00:00:00 2001 From: acognet Date: Thu, 10 Mar 2022 16:47:21 +0100 Subject: [PATCH 07/22] =?UTF-8?q?N=C2=B04642=20-=20Core=20Update=20:=20lim?= =?UTF-8?q?it=20the=20usage=20of=20this=20function=20-=20disable=20if=20ne?= =?UTF-8?q?w=20modules=20found?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig b/datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig index 1cf402bc7..1d1a458d6 100644 --- a/datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig +++ b/datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig @@ -64,7 +64,7 @@
    - {{ sError }} + {{ sError|raw }}
    From 0d4796ae2bb315051a78e7bf0f226651a87121a9 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Fri, 11 Mar 2022 09:25:14 +0100 Subject: [PATCH 08/22] =?UTF-8?q?N=C2=B04938=20-=20Fix=20background=20call?= =?UTF-8?q?s=20broken=20by=20lazy=20JS=20dictionaries=20loads?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itop-attachments/ajax.itop-attachment.php | 5 ++++- pages/ajax.render.php | 7 ++++++- sources/Controller/AjaxRenderController.php | 16 ++++++++-------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/datamodels/2.x/itop-attachments/ajax.itop-attachment.php b/datamodels/2.x/itop-attachments/ajax.itop-attachment.php index 46f6117f2..f5f45997c 100644 --- a/datamodels/2.x/itop-attachments/ajax.itop-attachment.php +++ b/datamodels/2.x/itop-attachments/ajax.itop-attachment.php @@ -65,6 +65,9 @@ try switch ($sOperation) { case 'add': + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); + $aResult = array( 'error' => '', 'att_id' => 0, @@ -111,7 +114,7 @@ try $aResult['error'] = $e->GetMessage(); } } - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); break; case 'remove': diff --git a/pages/ajax.render.php b/pages/ajax.render.php index a4d9b8aa8..383aad205 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -2060,10 +2060,14 @@ EOF break; case 'export_build': + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); $oAjaxRenderController->ExportBuild($oPage, false); break; case 'export_build_portal': + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); $oAjaxRenderController->ExportBuild($oPage, true); break; @@ -2652,7 +2656,8 @@ EOF // Navigation menu //-------------------------------- case 'get_menus_count': - + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); $oAjaxRenderController->GetMenusCount($oPage); break; diff --git a/sources/Controller/AjaxRenderController.php b/sources/Controller/AjaxRenderController.php index 4eb127624..68ba32c0f 100644 --- a/sources/Controller/AjaxRenderController.php +++ b/sources/Controller/AjaxRenderController.php @@ -123,12 +123,12 @@ class AjaxRenderController } /** - * @param \AjaxPage $oPage + * @param \JsonPage $oPage * @param bool $bTokenOnly * * @throws \Exception */ - public static function ExportBuild(AjaxPage $oPage, $bTokenOnly) + public static function ExportBuild(JsonPage $oPage, $bTokenOnly) { register_shutdown_function(function () { $aErr = error_get_last(); @@ -208,13 +208,13 @@ class AjaxRenderController $aResult['message'] = Dict::Format('Core:BulkExport:ClickHereToDownload_FileName', $oExporter->GetDownloadFileName()); } } - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); } catch (BulkExportException $e) { $aResult = array('code' => 'error', 'percentage' => 100, 'message' => utils::HtmlEntities($e->GetLocalizedMessage())); - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); } catch (Exception $e) { $aResult = array('code' => 'error', 'percentage' => 100, 'message' => utils::HtmlEntities($e->getMessage())); - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); } } @@ -224,13 +224,13 @@ class AjaxRenderController * The resulting JSON is added to the page with the format: * {"code": "done or error", "counts": {"menu_id_1": count1, "menu_id_2": count2...}} * - * @param \AjaxPage $oPage + * @param \JsonPage $oPage */ - public function GetMenusCount(AjaxPage $oPage) + public function GetMenusCount(JsonPage $oPage) { $aCounts = ApplicationMenu::GetMenusCount(); $aResult = ['code' => 'done', 'counts' => $aCounts]; - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); } /** From 5f80be75ed1bbe4f85e76bf1a320310547a07c1d Mon Sep 17 00:00:00 2001 From: Molkobain Date: Fri, 11 Mar 2022 10:47:05 +0100 Subject: [PATCH 09/22] =?UTF-8?q?N=C2=B04938=20-=20Fix=20remaining=20broke?= =?UTF-8?q?n=20AJAX=20endpoints=20in=20ajax.render.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/ajax.render.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pages/ajax.render.php b/pages/ajax.render.php index 383aad205..089412d22 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -888,6 +888,9 @@ try break; case 'import_dashboard': + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); + $sTransactionId = utils::ReadParam('transaction_id', '', false, 'transaction_id'); if (!utils::IsTransactionValid($sTransactionId, true)) { @@ -916,7 +919,7 @@ try { $aResult['error'] = 'Dashboard id="'.$sDashboardId.'" not found.'; } - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); break; case 'toggle_dashboard': @@ -1871,7 +1874,8 @@ EOF // Save the generated PDF as an attachment $sPDF = $oPage->get_pdf(); - $oPage = new AjaxPage(''); + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); $oAttachment = MetaModel::NewObject('Attachment'); $oAttachment->Set('item_class', $sObjClass); $oAttachment->Set('item_id', $iObjKey); @@ -1882,7 +1886,7 @@ EOF 'status' => 'ok', 'att_id' => $iAttachmentId, ); - $oPage->add(json_encode($aRet)); + $oPage->SetData($aRet); } break; @@ -2187,6 +2191,9 @@ EOF break; case 'cke_img_upload': + $oPage = new JsonPage(); + $oPage->SetOutputDataOnly(true); + // Image uploaded via CKEditor $aResult = array( 'uploaded' => 0, @@ -2257,7 +2264,7 @@ EOF $aResult['error'] = $e->GetMessage(); } } - $oPage->add(json_encode($aResult)); + $oPage->SetData($aResult); break; /** @noinspection PhpMissingBreakStatementInspection cke_upload_and_browse and cke_browse are chained */ From 3edfc2016d8852e69d404de0d6f842397124eec0 Mon Sep 17 00:00:00 2001 From: acognet Date: Thu, 10 Mar 2022 09:51:49 +0100 Subject: [PATCH 10/22] Fix typo --- js/tabularfieldsselector.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/tabularfieldsselector.js b/js/tabularfieldsselector.js index d4463df5b..4863e657c 100644 --- a/js/tabularfieldsselector.js +++ b/js/tabularfieldsselector.js @@ -51,8 +51,8 @@ $(function () {
    `+this._format(this.options.labels.columns_selection, i)+`
    `; sContent += ` -
    -
    +
    +
    From d29880b1b864db7a744c42d56ae2ef727fa27f2b Mon Sep 17 00:00:00 2001 From: Molkobain Date: Fri, 11 Mar 2022 17:52:10 +0100 Subject: [PATCH 11/22] Update PHPDoc --- datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php index a3c78d75d..fdb98922b 100644 --- a/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php +++ b/datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php @@ -611,8 +611,9 @@ final class CoreUpdater } /** - * Throw an exception if there are new modules that were not already installed - * @param $sRootPath + * Check if new modules (not already installed) are present, and throw an exception if that is the case as core update doesn't know how to install them automatically for know + * + * @param string $sRootPath * * @throws \ApplicationException * @since 2.7.7 3.0.1 From 107c9adf60c93c3ee23e30048dc5c2f949c2d8c5 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Sun, 13 Mar 2022 17:29:55 +0100 Subject: [PATCH 12/22] =?UTF-8?q?N=C2=B04791=20-=20Expand=20usage=20of=20O?= =?UTF-8?q?bjectFormHandlerHelper::ENUM=5FMODE=5FXXX=20constants=20for=20b?= =?UTF-8?q?etter=20robustness=20/=20comprehension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Helper/ObjectFormHandlerHelper.php | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php index ff4fcbd49..1a5e1936f 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php @@ -50,12 +50,17 @@ use UserRights; */ class ObjectFormHandlerHelper { - /** @var string ENUM_MODE_VIEW */ + /** @var string */ const ENUM_MODE_VIEW = 'view'; - /** @var string ENUM_MODE_EDIT */ + /** @var string */ const ENUM_MODE_EDIT = 'edit'; - /** @var string ENUM_MODE_CREATE */ + /** @var string */ const ENUM_MODE_CREATE = 'create'; + /** + * @var string + * @since 2.7.7 3.0.1 3.1.0 + */ + const ENUM_MODE_APPLY_STIMULUS = 'apply_stimulus'; /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ private $oRequestManipulator; @@ -172,7 +177,7 @@ class ObjectFormHandlerHelper 'label' => Dict::S('Portal:Button:Submit'), ), ); - if ($sMode !== 'apply_stimulus') + if ($sMode !== static::ENUM_MODE_APPLY_STIMULUS) { // Add transition buttons $oSetToCheckRights = DBObjectSet::FromObject($oObject); @@ -237,9 +242,9 @@ class ObjectFormHandlerHelper // Note : We might need to distinguish form & renderer endpoints switch($sMode) { - case 'create': - case 'edit': - case 'view': + case static::ENUM_MODE_CREATE: + case static::ENUM_MODE_EDIT: + case static::ENUM_MODE_VIEW: $sFormEndpoint = $this->oUrlGenerator->generate( 'p_object_'.$sMode, array( @@ -249,7 +254,7 @@ class ObjectFormHandlerHelper ); break; - case 'apply_stimulus': + case static::ENUM_MODE_APPLY_STIMULUS: $sFormEndpoint = $this->oUrlGenerator->generate( 'p_object_apply_stimulus', array( From 39fc59a8b2f2ba79ab6764489d5435790bd82804 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Sun, 13 Mar 2022 17:55:04 +0100 Subject: [PATCH 13/22] Code cleanup --- .../itop-portal-base/portal/src/Form/ObjectFormManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php index 2e5ae8caf..3b97ff593 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php @@ -189,7 +189,7 @@ class ObjectFormManager extends FormManager * * @return bool true if the data are identical * - * @since 2.7.6 3.0.0 N°4384 check formmanager_data + * @since 2.7.6 3.0.0 N°4384 Check formmanager_data */ public static function CanTrustFormLayoutContent($sPostedFormManagerData, $aOriginalFormProperties) { @@ -200,7 +200,7 @@ class ObjectFormManager extends FormManager return true; } - // we need to parse the content so that autoclose tags are returned correctly (`
    ` => `
    `) + // We need to parse the content so that autoclose tags are returned correctly (`
    ` => `
    `) $oHtmlDocument = new \DOMDocument(); $sPostedFormLayoutContent = (isset($aPostedFormManagerData['formproperties']['layout']['content'])) ? $aPostedFormManagerData['formproperties']['layout']['content'] : ''; From 0205cdf71396f57e300a0904ac9e005fa2b017d6 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Sun, 13 Mar 2022 18:15:49 +0100 Subject: [PATCH 14/22] =?UTF-8?q?N=C2=B04791=20-=20Portal:=20Fix=20"Twig?= =?UTF-8?q?=20not=20allowed"=20error=20when=20transition=20form=20has=20no?= =?UTF-8?q?=20editable=20field=20(auto=20redirect)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regression from b6fac4b4 --- .../itop-portal-base/portal/src/Controller/ObjectController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php index fd23c4c28..5e2291984 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php @@ -450,6 +450,8 @@ class ObjectController extends BrickController $oSubRequest = $oRequest; $oSubRequest->request->set('operation', 'submit'); $oSubRequest->request->set('stimulus_code', ''); + $oSubRequest->request->set('formmanager_class', $aData['form']['formmanager_class']); + $oSubRequest->request->set('formmanager_data', json_encode($aData['form']['formmanager_data'])); $aData = array('sMode' => 'apply_stimulus'); $aData['form'] = $oObjectFormHandler->HandleForm($oSubRequest, $aData['sMode'], $sObjectClass, $sObjectId, From 93c6cfffda77713c400ab0282af5a22e12731108 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Mon, 14 Mar 2022 09:29:53 +0100 Subject: [PATCH 15/22] =?UTF-8?q?N=C2=B04931=20Fix=20background=20tasks=20?= =?UTF-8?q?max=20duration=20being=20set=20to=203=20times=20its=20periodici?= =?UTF-8?q?ty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/config.class.inc.php | 8 ++++++++ webservices/cron.php | 18 +++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/core/config.class.inc.php b/core/config.class.inc.php index 6bc9ffcc9..7e0f87ac5 100644 --- a/core/config.class.inc.php +++ b/core/config.class.inc.php @@ -496,6 +496,14 @@ class Config 'source_of_value' => '', 'show_in_conf_sample' => true, ], + 'cron_task_max_execution_time' => [ + 'type' => 'integer', + 'description' => 'Backround tasks will use this value (integer) multiplicated by its periodicity (in seconds) as max duration per cron execution. 0 is unlimited time', + 'default' => 0, + 'value' => 0, + 'source_of_value' => '', + 'show_in_conf_sample' => false, + ], 'cron_sleep' => [ 'type' => 'integer', 'description' => 'Duration (seconds) before cron.php checks again if something must be done', diff --git a/webservices/cron.php b/webservices/cron.php index e2c087bad..eddd6722e 100644 --- a/webservices/cron.php +++ b/webservices/cron.php @@ -106,18 +106,18 @@ function RunTask(BackgroundTask $oTask, $iTimeLimit) $oTask->Set('system_user', utils::GetCurrentUserName()); $oTask->Set('running', 1); $oTask->DBUpdate(); + // Time in seconds allowed to the task + $iCurrTimeLimit = $iTimeLimit; // Compute allowed time - if ($oRefClass->implementsInterface('iScheduledProcess')) + if ($oRefClass->implementsInterface('iScheduledProcess') === false) { - $iCurrTimeLimit = $iTimeLimit; - } - else - { - // Periodic task, allow only 3x the period - $iCurrTimeLimit = time() + $oProcess->GetPeriodicity() * 3; - if ($iCurrTimeLimit > $iTimeLimit) + // Periodic task, allow only X times ($iMaxTaskExecutionTime) its periodicity (GetPeriodicity()) + $iMaxTaskExecutionTime = MetaModel::GetConfig()->Get('cron_task_max_execution_time'); + $iTaskLimit = time() + $oProcess->GetPeriodicity() * $iMaxTaskExecutionTime; + // If our proposed time limit is less than cron limit, and cron_task_max_execution_time is > 0 + if ($iTaskLimit < $iTimeLimit && $iMaxTaskExecutionTime > 0) { - $iCurrTimeLimit = $iTimeLimit; + $iCurrTimeLimit = $iTaskLimit; } } $sMessage = $oProcess->Process($iCurrTimeLimit); From d1e2be97d2066327cf5d1a3c005c017d4c99fae1 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Mon, 14 Mar 2022 11:46:27 +0100 Subject: [PATCH 16/22] Typo in cron_task_max_execution_time description --- core/config.class.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/config.class.inc.php b/core/config.class.inc.php index 7e0f87ac5..a47fd0b70 100644 --- a/core/config.class.inc.php +++ b/core/config.class.inc.php @@ -498,7 +498,7 @@ class Config ], 'cron_task_max_execution_time' => [ 'type' => 'integer', - 'description' => 'Backround tasks will use this value (integer) multiplicated by its periodicity (in seconds) as max duration per cron execution. 0 is unlimited time', + 'description' => 'Background tasks will use this value (integer) multiplicated by its periodicity (in seconds) as max duration per cron execution. 0 is unlimited time', 'default' => 0, 'value' => 0, 'source_of_value' => '', From 4c99f497cc39f11ebc6a5994bcf20d108909bcd8 Mon Sep 17 00:00:00 2001 From: acognet Date: Mon, 14 Mar 2022 14:43:54 +0100 Subject: [PATCH 17/22] =?UTF-8?q?N=C2=B04644=20-=20Core=20update=20:=20con?= =?UTF-8?q?fusing=20warning=20message=20when=20integrity=20of=20iTop=20std?= =?UTF-8?q?=20files=20is=20modified=20-=20List=20all=20=20modified=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cs.dict.itop-core-update.php | 4 ++-- .../da.dict.itop-core-update.php | 4 ++-- .../de.dict.itop-core-update.php | 4 ++-- .../en.dict.itop-core-update.php | 4 ++-- .../es_cr.dict.itop-core-update.php | 4 ++-- .../fr.dict.itop-core-update.php | 4 ++-- .../hu.dict.itop-core-update.php | 4 ++-- .../it.dict.itop-core-update.php | 4 ++-- .../ja.dict.itop-core-update.php | 4 ++-- .../nl.dict.itop-core-update.php | 4 ++-- .../pt_br.dict.itop-core-update.php | 4 ++-- .../ru.dict.itop-core-update.php | 4 ++-- .../sk.dict.itop-core-update.php | 4 ++-- .../tr.dict.itop-core-update.php | 4 ++-- .../view/SelectUpdateFile.html.twig | 5 +++-- .../view/SelectUpdateFile.ready.js.twig | 1 + .../zh_cn.dict.itop-core-update.php | 4 ++-- .../cs.dict.itop-files-information.php | 1 + .../da.dict.itop-files-information.php | 1 + .../de.dict.itop-files-information.php | 1 + .../en.dict.itop-files-information.php | 1 + .../es_cr.dict.itop-files-information.php | 1 + .../fr.dict.itop-files-information.php | 1 + .../hu.dict.itop-files-information.php | 1 + .../it.dict.itop-files-information.php | 1 + .../ja.dict.itop-files-information.php | 1 + .../nl.dict.itop-files-information.php | 1 + .../pt_br.dict.itop-files-information.php | 1 + .../ru.dict.itop-files-information.php | 1 + .../sk.dict.itop-files-information.php | 1 + .../src/Service/FilesInformation.php | 2 +- .../src/Service/FilesIntegrity.php | 16 ++++++++++++++-- .../tr.dict.itop-files-information.php | 1 + .../zh_cn.dict.itop-files-information.php | 1 + 34 files changed, 64 insertions(+), 35 deletions(-) diff --git a/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php index 2a6198138..1daf5fa01 100644 --- a/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php index 4902d8c30..70ecb0aa4 100644 --- a/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/da.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php index 0f38c7f22..72ad62598 100644 --- a/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/de.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Anwendungsupgrade kann durchgeführt werden', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Anwendungsupgrade nicht möglich: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Einige angepasste Dateien wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Einige neue Module wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Einige angepasste Dateien wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Einige neue Module wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php index da1bd3050..d68e136a3 100644 --- a/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/en.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('EN US', 'English', 'English', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php index 46b8861dd..546ef11ef 100644 --- a/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php @@ -76,8 +76,8 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'La aplicación puede ser actualizada', 'iTopUpdate:UI:CanCoreUpdate:No' => 'La aplicación no puede ser actualizada: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Advertencia: la actualización de la aplicación puede fallar: %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php index d77588d57..6618a4537 100644 --- a/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('FR FR', 'French', 'Français', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'L\'application peut être mise à jour', 'iTopUpdate:UI:CanCoreUpdate:No' => 'L\'application ne peut pas être mise à jour : %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Attention : la mise à jour de l\'application peut échouer : %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Des fichiers modifiés ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'De nouveaux modules ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Des fichiers modifiés ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'De nouveaux modules ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', 'iTopUpdate:UI:CheckInProgress'=>'Veuillez patienter pendant la vérification d\'intégrité', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php index c3d4f2130..67583ef4a 100644 --- a/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php index 385470b4f..ae86afa1e 100644 --- a/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/it.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php index cefb64e3d..aad058424 100644 --- a/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php index f7931969d..a5e396f95 100644 --- a/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php @@ -77,8 +77,8 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Updaten van toepassing is mogelijk', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Updaten van de toepassing is niet mogelijk: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php index c3e97c171..5c1538739 100644 --- a/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php index 3ec38c424..0909f2b95 100644 --- a/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php @@ -63,8 +63,8 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Приложение может быть обновлено', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Приложение не может быть обновлено: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php index 6b70b3d9e..e3ee182fe 100644 --- a/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php index 5b3dfb2a6..a69c8f7df 100644 --- a/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Application can be updated~~', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Application cannot be updated: %1$s~~', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Warning: application update can fail: %1$s~~', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig b/datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig index 700d2343c..57bdac538 100644 --- a/datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig +++ b/datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig @@ -11,8 +11,9 @@
    {{ 'iTopUpdate:UI:CanCoreUpdate:Loading'|dict_s }}
    - diff --git a/datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig b/datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig index ac39ffec9..395725c82 100644 --- a/datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig +++ b/datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig @@ -18,6 +18,7 @@ $.ajax({ if(data.sMessageDetails){ $("#header-requirements-details").show(); $('#can-core-update-details').html(data.sMessageDetails); + $("#toggle-requirements-details").click( function() { $("#can-core-update-details").toggle(); } ); } oRequirements.removeClass("message_info"); if (data.bStatus) diff --git a/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php index c1676c95e..f368a69a9 100644 --- a/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => '应用无法升级', 'iTopUpdate:UI:CanCoreUpdate:No' => '应用无法升级: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => '警告: 应用升级可能会失败: %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress'=>'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php index e339ee5cb..310f5b68e 100644 --- a/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php index 2a4f4700a..b1b909d64 100644 --- a/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php index d5937343b..b985672f3 100644 --- a/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Errors 'FilesInformation:Error:MissingFile' => 'Fehlende Datei: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Datei %1$s ist beschädigt', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Datei %1$s kann nicht geschrieben werden', )); diff --git a/datamodels/2.x/itop-files-information/en.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/en.dict.itop-files-information.php index f91eb17cd..f37037fe5 100644 --- a/datamodels/2.x/itop-files-information/en.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/en.dict.itop-files-information.php @@ -25,6 +25,7 @@ Dict::Add('EN US', 'English', 'English', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s', )); diff --git a/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php index 49c8848a7..8f6b609e7 100644 --- a/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php @@ -25,6 +25,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( // Errors 'FilesInformation:Error:MissingFile' => 'Archivo faltante: %1$s', 'FilesInformation:Error:CorruptedFile' => 'El archivo %1$s está corrupto', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'No se puede escribir al archivo %1$s', )); diff --git a/datamodels/2.x/itop-files-information/fr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/fr.dict.itop-files-information.php index b8c33835a..68d9066df 100644 --- a/datamodels/2.x/itop-files-information/fr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/fr.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('FR FR', 'French', 'Français', array( // Errors 'FilesInformation:Error:MissingFile' => 'Ficher manquant : %1$s', 'FilesInformation:Error:CorruptedFile' => 'Le fichier %1$s est corrompu', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s', 'FilesInformation:Error:CantWriteToFile' => 'Impossible de modifier le fichier %1$s', )); diff --git a/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php index 600c56ecc..96b115a50 100644 --- a/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php index da90731fc..88d95b45c 100644 --- a/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php index c9e10dbcf..d208276b4 100644 --- a/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php index 853304440..9752dc5f1 100644 --- a/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php @@ -26,6 +26,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( // Errors 'FilesInformation:Error:MissingFile' => 'Ontbrekend bestand: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Corrupt bestand: %1$s', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Kan niet schrijven naar bestand %1$s', )); diff --git a/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php index fd41eeeda..449fefce9 100644 --- a/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php index bf07888dd..e9dfd44d9 100644 --- a/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php @@ -12,6 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( // Errors 'FilesInformation:Error:MissingFile' => 'Файл %1$s отсутствует', 'FilesInformation:Error:CorruptedFile' => 'Файл %1$s повреждён', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Невозможно выполнить запись в файл %1$s', )); diff --git a/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php index 531778617..b05cf3fc6 100644 --- a/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/src/Service/FilesInformation.php b/datamodels/2.x/itop-files-information/src/Service/FilesInformation.php index db105ba8a..a6602808d 100644 --- a/datamodels/2.x/itop-files-information/src/Service/FilesInformation.php +++ b/datamodels/2.x/itop-files-information/src/Service/FilesInformation.php @@ -56,7 +56,7 @@ class FilesInformation try { - FilesIntegrity::CheckInstallationIntegrity(); + FilesIntegrity::CheckInstallationIntegrity(APPROOT, false); } catch (FileIntegrityException $e) { diff --git a/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php b/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php index 04e2e6fa7..b76fee647 100644 --- a/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php +++ b/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php @@ -81,8 +81,9 @@ class FilesIntegrity * @param string $sRootPath * * @throws \Combodo\iTop\FilesInformation\Service\FileIntegrityException + * @since 2.7.7 3.0.1 */ - public static function CheckInstallationIntegrity($sRootPath = APPROOT) + public static function CheckInstallationIntegrity($sRootPath = APPROOT, $bExitAtFirstError = true) { $aFilesInfo = FilesIntegrity::GetInstalledFiles($sRootPath.'manifest.xml'); @@ -91,6 +92,9 @@ class FilesIntegrity throw new FileIntegrityException(Dict::Format('FilesInformation:Error:MissingFile', 'manifest.xml')); } + $bHasErrors = false; + $sErrorFiles =""; + @clearstatcache(); foreach ($aFilesInfo as $aFileInfo) { @@ -103,11 +107,19 @@ class FilesIntegrity $sChecksum = md5($sContent); if (($iSize != $aFileInfo['size']) || ($sChecksum != $aFileInfo['md5'])) { - throw new FileIntegrityException(Dict::Format('FilesInformation:Error:CorruptedFile', $sFile)); + if($bExitAtFirstError) { + throw new FileIntegrityException(Dict::Format('FilesInformation:Error:CorruptedFile', $sFile)); + } else { + $bHasErrors = true; + $sErrorFiles .='
  • '.$aFileInfo['path'].'
  • '; + } } } // Packed with missing files... } + if($bHasErrors){ + throw new FileIntegrityException(Dict::Format('FilesInformation:Error:ListCorruptedFile','
      '.$sErrorFiles.'
    ')); + } } public static function IsInstallationConform($sRootPath, &$sErrorMsg) diff --git a/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php index 50764da99..9260f1c66 100644 --- a/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php index da73ba611..f77501f0c 100644 --- a/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php @@ -24,6 +24,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( // Errors 'FilesInformation:Error:MissingFile' => '文件丢失: %1$s~~', 'FilesInformation:Error:CorruptedFile' => '文件 %1$s 已损坏', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => '无法写入文件 %1$s', )); From 0c80a4e430d12e6b9858a50f90eb85802975ab81 Mon Sep 17 00:00:00 2001 From: acognet Date: Mon, 14 Mar 2022 15:28:47 +0100 Subject: [PATCH 18/22] =?UTF-8?q?N=C2=B04644=20-=20Core=20update=20:=20con?= =?UTF-8?q?fusing=20warning=20message=20when=20integrity=20of=20iTop=20std?= =?UTF-8?q?=20files=20is=20modified=20-=20merge=20from=202.7.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionaries/pl.dict.itop-core-update.php | 3 ++- .../dictionaries/pt_br.dict.itop-core-update.php | 4 ++-- .../dictionaries/cs.dict.itop-files-information.php | 1 - .../dictionaries/da.dict.itop-files-information.php | 1 - .../dictionaries/de.dict.itop-files-information.php | 2 -- .../dictionaries/en.dict.itop-files-information.php | 1 - .../dictionaries/es_cr.dict.itop-files-information.php | 1 - .../dictionaries/fr.dict.itop-files-information.php | 2 -- .../dictionaries/hu.dict.itop-files-information.php | 1 - .../dictionaries/it.dict.itop-files-information.php | 1 - .../dictionaries/ja.dict.itop-files-information.php | 1 - .../dictionaries/nl.dict.itop-files-information.php | 1 - .../dictionaries/pl.dict.itop-files-information.php | 2 +- .../dictionaries/pt_br.dict.itop-files-information.php | 2 +- .../dictionaries/ru.dict.itop-files-information.php | 1 - .../dictionaries/sk.dict.itop-files-information.php | 1 - .../dictionaries/tr.dict.itop-files-information.php | 1 - .../dictionaries/zh_cn.dict.itop-files-information.php | 2 +- 18 files changed, 7 insertions(+), 21 deletions(-) diff --git a/datamodels/2.x/itop-core-update/dictionaries/pl.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/dictionaries/pl.dict.itop-core-update.php index bb161dcdb..69742407f 100644 --- a/datamodels/2.x/itop-core-update/dictionaries/pl.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/dictionaries/pl.dict.itop-core-update.php @@ -75,7 +75,8 @@ Dict::Add('PL PL', 'Polish', 'Polski', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Aplikacja może być zaktualizowana', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Nie można zaktualizować aplikacji: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Ostrzeżenie: aktualizacja aplikacji może się nie powieść: %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress' => 'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-core-update/dictionaries/pt_br.dict.itop-core-update.php b/datamodels/2.x/itop-core-update/dictionaries/pt_br.dict.itop-core-update.php index c94eeaff4..6ac9e240e 100644 --- a/datamodels/2.x/itop-core-update/dictionaries/pt_br.dict.itop-core-update.php +++ b/datamodels/2.x/itop-core-update/dictionaries/pt_br.dict.itop-core-update.php @@ -75,8 +75,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( 'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Aplicação pode ser atualizada', 'iTopUpdate:UI:CanCoreUpdate:No' => 'Aplicação não pode ser atualizada: %1$s', 'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Atenção: a atualização da aplicação pode falhar: %1$s', - 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', - 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateUseSetup' => 'Some modified files were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', + 'iTopUpdate:UI:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', 'iTopUpdate:UI:CheckInProgress' => 'Please wait during integrity check~~', // Setup Messages diff --git a/datamodels/2.x/itop-files-information/dictionaries/cs.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/cs.dict.itop-files-information.php index a5a81ce71..d39078f4a 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/cs.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/cs.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/da.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/da.dict.itop-files-information.php index 560b074fd..f4ccffb2d 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/da.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/da.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/de.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/de.dict.itop-files-information.php index 3ab4cddd0..b985672f3 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/de.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/de.dict.itop-files-information.php @@ -26,8 +26,6 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'FilesInformation:Error:CorruptedFile' => 'Datei %1$s ist beschädigt', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Datei %1$s kann nicht geschrieben werden', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Einige neue Module wurden erkannt, eine Teil-Update kann nicht ausgeführt werden.
    Befolgen Sie das Verfahren, um Ihr iTop manuell zu aktualisieren. Sie müssen das Setup benutzen, um Ihre Applikation zu aktualisieren.
    ', - )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/en.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/en.dict.itop-files-information.php index 69ba9e5a7..ebbb32cc3 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/en.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/en.dict.itop-files-information.php @@ -27,7 +27,6 @@ Dict::Add('EN US', 'English', 'English', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted', 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s ', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/es_cr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/es_cr.dict.itop-files-information.php index d73692b93..8f6b609e7 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/es_cr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/es_cr.dict.itop-files-information.php @@ -27,7 +27,6 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( 'FilesInformation:Error:CorruptedFile' => 'El archivo %1$s está corrupto', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'No se puede escribir al archivo %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/fr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/fr.dict.itop-files-information.php index 4f849471b..68d9066df 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/fr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/fr.dict.itop-files-information.php @@ -26,8 +26,6 @@ Dict::Add('FR FR', 'French', 'Français', array( 'FilesInformation:Error:CorruptedFile' => 'Le fichier %1$s est corrompu', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s', 'FilesInformation:Error:CantWriteToFile' => 'Impossible de modifier le fichier %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'De nouveaux modules ont été détectés, une mise à jour partielle ne peut pas être effectuée.
    Suivez la procedure pour mettre à jour manuellement votre iTop. Vous devez utiliser la page d\'installation pour mettre à jour l\'application.', - )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/hu.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/hu.dict.itop-files-information.php index 46658e0a3..8c9d82369 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/hu.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/hu.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/it.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/it.dict.itop-files-information.php index ec771b822..4f264ffbb 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/it.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/it.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/ja.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/ja.dict.itop-files-information.php index 30fe51025..5182e990d 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/ja.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/ja.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/nl.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/nl.dict.itop-files-information.php index 036575b12..4b35b1643 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/nl.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/nl.dict.itop-files-information.php @@ -28,7 +28,6 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( 'FilesInformation:Error:CorruptedFile' => 'Corrupt bestand: %1$s', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Kan niet schrijven naar bestand %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/pl.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/pl.dict.itop-files-information.php index 592518043..74b665b5a 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/pl.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/pl.dict.itop-files-information.php @@ -25,8 +25,8 @@ Dict::Add('PL PL', 'Polish', 'Polski', array( // Errors 'FilesInformation:Error:MissingFile' => 'Brakujący plik: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Plik %1$s jest uszkodzony', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Nie można zapisać do pliku %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/pt_br.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/pt_br.dict.itop-files-information.php index f0d928866..f51eddc91 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/pt_br.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/pt_br.dict.itop-files-information.php @@ -24,8 +24,8 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( // Errors 'FilesInformation:Error:MissingFile' => 'Faltando arquivo: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Arquivo %1$s está corrompido', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Sem permissão de escrita no arquivo %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/ru.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/ru.dict.itop-files-information.php index 02969ceb4..e9dfd44d9 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/ru.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/ru.dict.itop-files-information.php @@ -14,7 +14,6 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( 'FilesInformation:Error:CorruptedFile' => 'Файл %1$s повреждён', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Невозможно выполнить запись в файл %1$s', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/sk.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/sk.dict.itop-files-information.php index 5a556e274..253300d3e 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/sk.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/sk.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/tr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/tr.dict.itop-files-information.php index ddcf4e196..79472a93a 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/tr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/tr.dict.itop-files-information.php @@ -26,7 +26,6 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); diff --git a/datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php index d2103f3cb..9227757e4 100644 --- a/datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php @@ -24,8 +24,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( // Errors 'FilesInformation:Error:MissingFile' => '文件丢失: %1$s~~', 'FilesInformation:Error:CorruptedFile' => '文件 %1$s 已损坏', + 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', 'FilesInformation:Error:CantWriteToFile' => '文件 %1$s 无法写入', - 'FilesInformation:Error:CannotUpdateNewModules' => 'Some new modules were detected, a partial update cannot be executed.
    Follow the procedure in order to manually upgrade your iTop. You must use the setup to update the application.~~', )); From a71cb97db31c2862b84d48d1d3bb70b04b78d791 Mon Sep 17 00:00:00 2001 From: acognet Date: Mon, 14 Mar 2022 15:30:35 +0100 Subject: [PATCH 19/22] =?UTF-8?q?N=C2=B04644=20-=20Core=20update=20:=20con?= =?UTF-8?q?fusing=20warning=20message=20when=20integrity=20of=20iTop=20std?= =?UTF-8?q?=20files=20is=20modified=20-=20fix=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2.x/itop-files-information/src/Service/FilesIntegrity.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php b/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php index b76fee647..b8460be46 100644 --- a/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php +++ b/datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php @@ -79,9 +79,10 @@ class FilesIntegrity * Check that files present in iTop folder corresponds to the manifest * * @param string $sRootPath + * @param bool $bExitAtFirstError * * @throws \Combodo\iTop\FilesInformation\Service\FileIntegrityException - * @since 2.7.7 3.0.1 + * @since 2.7.7 3.0.1 Add $bExitAtFirstError parameter */ public static function CheckInstallationIntegrity($sRootPath = APPROOT, $bExitAtFirstError = true) { From 9cd076131fd3edd0c7541e611b0f2f1f2f006f8e Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Mon, 14 Mar 2022 15:30:36 +0100 Subject: [PATCH 20/22] =?UTF-8?q?=20N=C2=B03541=20Add=20event=20listener?= =?UTF-8?q?=20to=20enable/disable=20loading=20state=20for=20buttons=20grou?= =?UTF-8?q?p=20block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/components/button.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/js/components/button.js b/js/components/button.js index 5d5b23806..c1050659d 100644 --- a/js/components/button.js +++ b/js/components/button.js @@ -17,10 +17,26 @@ */ ; -// Apply a listener to element so we don't havec to create one for every button on the page +// Apply a listener to element so we don't have to create one for every button on the page + +// ibo-button elements $('body').on('enter_loading_state.button.itop', '[data-role="ibo-button"]', function(){ $(this).addClass('ibo-is-loading').prop('disabled', true); }) .on('leave_loading_state.button.itop', '[data-role="ibo-button"]', function(){ $(this).removeClass('ibo-is-loading').prop('disabled', false); }); + +// ibo-button-group elements +$('body').on('enter_loading_state.button_group.itop', '[data-role="ibo-button-group"]', function(){ + $(this).find('[data-role="ibo-button"]').each(function(){ + $(this).prop('disabled', true); + }); + $(this).find('[data-role="ibo-button"]:first').trigger('enter_loading_state.button.itop'); +}) +.on('leave_loading_state.button_group.itop', '[data-role="ibo-button-group"]', function(){ + $(this).find('[data-role="ibo-button"]').each(function(){ + $(this).prop('disabled', false); + }); + $(this).find('[data-role="ibo-button"]:first').trigger('leave_loading_state.button.itop'); +}); \ No newline at end of file From 7f4fddb3783de92a8a6a900e98448378641cd35c Mon Sep 17 00:00:00 2001 From: acognet Date: Tue, 15 Mar 2022 10:52:19 +0100 Subject: [PATCH 21/22] =?UTF-8?q?N=C2=B04644=20-=20Core=20update=20:=20con?= =?UTF-8?q?fusing=20warning=20message=20when=20integrity=20of=20iTop=20std?= =?UTF-8?q?=20files=20is=20modified=20-=20fix=20default=20translation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itop-files-information/cs.dict.itop-files-information.php | 2 +- .../itop-files-information/da.dict.itop-files-information.php | 2 +- .../itop-files-information/de.dict.itop-files-information.php | 2 +- .../es_cr.dict.itop-files-information.php | 2 +- .../itop-files-information/hu.dict.itop-files-information.php | 2 +- .../itop-files-information/it.dict.itop-files-information.php | 2 +- .../itop-files-information/ja.dict.itop-files-information.php | 2 +- .../itop-files-information/nl.dict.itop-files-information.php | 2 +- .../pt_br.dict.itop-files-information.php | 2 +- .../itop-files-information/ru.dict.itop-files-information.php | 2 +- .../itop-files-information/sk.dict.itop-files-information.php | 2 +- .../itop-files-information/tr.dict.itop-files-information.php | 2 +- .../zh_cn.dict.itop-files-information.php | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php index 310f5b68e..1ecb418c3 100644 --- a/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/cs.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php index b1b909d64..0e787b0d9 100644 --- a/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/da.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php index b985672f3..fb7003cf8 100644 --- a/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/de.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Errors 'FilesInformation:Error:MissingFile' => 'Fehlende Datei: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Datei %1$s ist beschädigt', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Datei %1$s kann nicht geschrieben werden', )); diff --git a/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php index 8f6b609e7..d1430ca9a 100644 --- a/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/es_cr.dict.itop-files-information.php @@ -25,7 +25,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( // Errors 'FilesInformation:Error:MissingFile' => 'Archivo faltante: %1$s', 'FilesInformation:Error:CorruptedFile' => 'El archivo %1$s está corrupto', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'No se puede escribir al archivo %1$s', )); diff --git a/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php index 96b115a50..83a3e5337 100644 --- a/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/hu.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php index 88d95b45c..dbd3e67bf 100644 --- a/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/it.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php index d208276b4..3fca00168 100644 --- a/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/ja.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php index 9752dc5f1..039047a83 100644 --- a/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/nl.dict.itop-files-information.php @@ -26,7 +26,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( // Errors 'FilesInformation:Error:MissingFile' => 'Ontbrekend bestand: %1$s', 'FilesInformation:Error:CorruptedFile' => 'Corrupt bestand: %1$s', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Kan niet schrijven naar bestand %1$s', )); diff --git a/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php index 449fefce9..88ae6d27e 100644 --- a/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/pt_br.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php index e9dfd44d9..d1e2b297f 100644 --- a/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/ru.dict.itop-files-information.php @@ -12,7 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( // Errors 'FilesInformation:Error:MissingFile' => 'Файл %1$s отсутствует', 'FilesInformation:Error:CorruptedFile' => 'Файл %1$s повреждён', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Невозможно выполнить запись в файл %1$s', )); diff --git a/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php index b05cf3fc6..8112b3233 100644 --- a/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/sk.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php index 9260f1c66..76bc0b5bc 100644 --- a/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/tr.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( // Errors 'FilesInformation:Error:MissingFile' => 'Missing file: %1$s~~', 'FilesInformation:Error:CorruptedFile' => 'File %1$s is corrupted~~', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => 'Can not write to file %1$s~~', )); diff --git a/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php b/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php index f77501f0c..4dba9e2f4 100644 --- a/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php +++ b/datamodels/2.x/itop-files-information/zh_cn.dict.itop-files-information.php @@ -24,7 +24,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( // Errors 'FilesInformation:Error:MissingFile' => '文件丢失: %1$s~~', 'FilesInformation:Error:CorruptedFile' => '文件 %1$s 已损坏', - 'FilesInformation:Error:ListCorruptedFile' => 'Fichier(s) corrompu(s): %1$s~~', + 'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~', 'FilesInformation:Error:CantWriteToFile' => '无法写入文件 %1$s', )); From ea043960ff7df4a9e097c741a232a36a1d84c227 Mon Sep 17 00:00:00 2001 From: acognet Date: Tue, 15 Mar 2022 11:23:57 +0100 Subject: [PATCH 22/22] Rename the map file. We are using the min version --- .../css/{bootstrap-theme.css.map => bootstrap-theme.min.css.map} | 0 .../bootstrap/css/{bootstrap.css.map => bootstrap.min.css.map} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/{bootstrap-theme.css.map => bootstrap-theme.min.css.map} (100%) rename datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/{bootstrap.css.map => bootstrap.min.css.map} (100%) diff --git a/datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap-theme.css.map b/datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap-theme.min.css.map similarity index 100% rename from datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap-theme.css.map rename to datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap-theme.min.css.map diff --git a/datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap.css.map b/datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap.min.css.map similarity index 100% rename from datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap.css.map rename to datamodels/2.x/itop-portal-base/portal/public/lib/bootstrap/css/bootstrap.min.css.map