Compare commits

..

5 Commits

316 changed files with 9757 additions and 12026 deletions

6
.gitignore vendored
View File

@@ -37,9 +37,7 @@ tests/*/vendor/*
# iTop extensions
/extensions/**
!/extensions/.htaccess
!/extensions/readme.txt
!/extensions/web.config
# all logs but listing prevention
/log/**
@@ -47,10 +45,8 @@ tests/*/vendor/*
!/log/index.php
!/log/web.config
# PHPUnit: Cache file, local XML working copies
# PHPUnit cache file
/tests/php-unit-tests/.phpunit.result.cache
/tests/php-unit-tests/phpunit.xml
/tests/php-unit-tests/postbuild_integration.xml
# Jetbrains

View File

@@ -19,24 +19,17 @@
* The target license file path is in `$xmlFilePath`
*/
$iTopFolder = __DIR__."/../../";
$xmlFilePath = $iTopFolder."setup/licenses/community-licenses.xml";
$iTopFolder = __DIR__ . "/../../" ;
$xmlFilePath = $iTopFolder . "setup/licenses/community-licenses.xml";
$jqExec = shell_exec("jq -V"); // a param is mandatory otherwise the script will freeze
if ((null === $jqExec) || (false === $jqExec)) {
echo "/!\ JQ is required but cannot be launched :( \n";
echo "Check this script PHPDoc block for instructions\n";
die(-1);
}
function get_scope($product_node) {
function get_scope($product_node)
{
$scope = $product_node->getAttribute("scope");
if ($scope === "") { //put iTop first
if ($scope === "")
{ //put iTop first
return "aaaaaaaaa";
}
return $scope;
}

View File

@@ -102,8 +102,7 @@ We would like to give a special thank you 🤗 to the people from the community
- Rosenke, Stephan
- Seki, Shoji
- Shilov, Vladimir
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya-stukalov))
- Tarjányi, Csaba (a.k.a [@tacsaby](https://github.com/tacsaby))
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
- Tulio, Marco
- Turrubiates, Miguel

View File

@@ -432,12 +432,6 @@ class UserRightsProfile extends UserRightsAddOnAPI
UR_ACTION_BULK_DELETE => 'bd',
);
/**
* @var array $aUsersProfilesList Cache of users' profiles. Hash array of user ID => [profile ID => profile friendlyname, profile ID => profile friendlyname, ...]
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6887
*/
private $aUsersProfilesList = [];
// Installation: create the very first user
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
@@ -496,7 +490,6 @@ class UserRightsProfile extends UserRightsAddOnAPI
}
protected $m_aUserOrgs = array(); // userid -> array of orgid
protected $m_aAdministrators = null; // [user id]
// Built on demand, could be optimized if necessary (doing a query for each attribute that needs to be read)
protected $m_aObjectActionGrants = array();
@@ -553,7 +546,6 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Cache
$this->m_aObjectActionGrants = array();
$this->m_aAdministrators = null;
}
public function LoadCache()
@@ -696,10 +688,12 @@ class UserRightsProfile extends UserRightsAddOnAPI
*/
private function GetAdministrators()
{
if ($this->m_aAdministrators === null)
static $aAdministrators = null;
if ($aAdministrators === null)
{
// Find all administrators
$this->m_aAdministrators = array();
$aAdministrators = array();
$oAdministratorsFilter = new DBObjectSearch('User');
$oLnkFilter = new DBObjectSearch('URP_UserProfile');
$oExpression = new FieldExpression('profileid', 'URP_UserProfile');
@@ -712,10 +706,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
$oSet->OptimizeColumnLoad(array('User' => array('login')));
while($oUser = $oSet->Fetch())
{
$this->m_aAdministrators[] = $oUser->GetKey();
$aAdministrators[] = $oUser->GetKey();
}
}
return $this->m_aAdministrators;
return $aAdministrators;
}
/**
@@ -752,12 +746,8 @@ class UserRightsProfile extends UserRightsAddOnAPI
$sAction = self::$m_aActionCodes[$iActionCode];
$bStatus = null;
// Cache user's profiles
if(false === array_key_exists($iUser, $this->aUsersProfilesList)){
$this->aUsersProfilesList[$iUser] = UserRights::ListProfiles($oUser);
}
// Call the API of UserRights because it caches the list for us
foreach($this->aUsersProfilesList[$iUser] as $iProfile => $oProfile)
foreach(UserRights::ListProfiles($oUser) as $iProfile => $oProfile)
{
$bGrant = $this->GetProfileActionGrant($iProfile, $sClass, $sAction);
if (!is_null($bGrant))
@@ -883,16 +873,11 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Note: this code is VERY close to the code of IsActionAllowed()
$iUser = $oUser->GetKey();
// Cache user's profiles
if(false === array_key_exists($iUser, $this->aUsersProfilesList)){
$this->aUsersProfilesList[$iUser] = UserRights::ListProfiles($oUser);
}
// Note: The object set is ignored because it was interesting to optimize for huge data sets
// and acceptable to consider only the root class of the object set
$bStatus = null;
// Call the API of UserRights because it caches the list for us
foreach($this->aUsersProfilesList[$iUser] as $iProfile => $oProfile)
foreach(UserRights::ListProfiles($oUser) as $iProfile => $oProfile)
{
$bGrant = $this->GetClassStimulusGrant($iProfile, $sClass, $sStimulusCode);
if (!is_null($bGrant))
@@ -921,9 +906,8 @@ class UserRightsProfile extends UserRightsAddOnAPI
}
/**
* @param string $sClass
* @return string|null Find out which attribute is corresponding the dimension 'owner org'
* returns null if no such attribute has been found (no filtering should occur)
* Find out which attribute is corresponding the the dimension 'owner org'
* returns null if no such attribute has been found (no filtering should occur)
*/
public static function GetOwnerOrganizationAttCode($sClass)
{

View File

@@ -586,10 +586,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
/**
* Read and cache organizations allowed to the given user
*
* @param User $oUser
* @param string $sClass (not used here but can be used in overloads)
* @param $oUser
* @param $sClass (not used here but can be used in overloads)
*
* @return array keys of the User allowed org
* @return array
* @throws \CoreException
* @throws \Exception
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/AjaxPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/AjaxPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1949,8 +1949,6 @@ class RestUtils
*
* @return DBObject The object found
* @throws Exception If the input structure is not valid or it could not find exactly one object
*
* @see DBObject::CheckChangedExtKeysValues() generic method to check that we can access the linked object isn't used in that use case because values can be literal, OQL, friendlyname
*/
public static function FindObjectFromKey($sClass, $key, $bAllowNullValue = false)
{
@@ -2187,28 +2185,4 @@ class RestUtils
interface iModuleExtension
{
public function __construct();
}
/**
* KPI logging extensibility point
*
* KPI Logger extension
*/
interface iKPILoggerExtension
{
/**
* Init the statistics collected
*
* @return void
*/
public function InitStats();
/**
* Add a new KPI to the stats
*
* @param \Combodo\iTop\Core\Kpi\KpiLogData $oKpiLogData
*
* @return mixed
*/
public function LogOperation($oKpiLogData);
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/CaptureWebPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CaptureWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/CLIPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CLIPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1234,7 +1234,7 @@ HTML
/**
* @param \WebPage $oPage
* @param \CMDBObjectSet $oSet
* @param array $aExtraParams See possible values in {@see DataTableUIBlockFactory::RenderDataTable()}
* @param array $aExtraParams
*
* @throws \ApplicationException
* @throws \CoreException
@@ -3063,14 +3063,11 @@ EOF
}
$sCancelButtonOnClickScript .= "$('#form_{$this->m_iFormId} button.cancel').on('click', fOnClick{$this->m_iFormId}CancelButton);";
$oPage->add_ready_script($sCancelButtonOnClickScript);
$iFieldsCount = count($aFieldsMap);
$sJsonFieldsMap = json_encode($aFieldsMap);
$sLifecycleStateForWizardHelper = '';
if (MetaModel::HasLifecycle($sClass)) {
$sLifecycleStateForWizardHelper = $this->GetState();
}
$sState = $this->GetState();
$sSessionStorageKey = $sClass.'_'.$iKey;
$sTempId = utils::GetUploadTempId($iTransactionId);
$oPage->add_ready_script(InlineImage::EnableCKEditorImageUpload($this, $sTempId));
@@ -3080,7 +3077,7 @@ EOF
sessionStorage.removeItem('$sSessionStorageKey');
// Create the object once at the beginning of the page...
var oWizardHelper$sPrefix = new WizardHelper('$sClass', '$sPrefix', '$sLifecycleStateForWizardHelper');
var oWizardHelper$sPrefix = new WizardHelper('$sClass', '$sPrefix', '$sState');
oWizardHelper$sPrefix.SetFieldsMap($sJsonFieldsMap);
oWizardHelper$sPrefix.SetFieldsCount($iFieldsCount);
EOF
@@ -4493,9 +4490,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$oExtensionInstance->OnDBInsert($this, self::GetCurrentChange());
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBInsert');
$oExtensionInstance->OnDBInsert($this, self::GetCurrentChange());
}
return $res;
@@ -4512,16 +4507,13 @@ HTML;
protected function DBCloneTracked_Internal($newKey = null)
{
/** @var cmdbAbstractObject $oNewObj */
$oNewObj = MetaModel::GetObject(get_class($this), parent::DBCloneTracked_Internal($newKey));
$oNewObj = parent::DBCloneTracked_Internal($newKey);
// Invoke extensions after insertion (the object must exist, have an id, etc.)
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$oExtensionInstance->OnDBInsert($oNewObj, self::GetCurrentChange());
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBInsert');
}
return $oNewObj;
@@ -4549,9 +4541,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$oExtensionInstance->OnDBUpdate($this, self::GetCurrentChange());
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBUpdate');
}
}
catch (Exception $e)
@@ -4597,9 +4587,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$oExtensionInstance->OnDBDelete($this, self::GetCurrentChange());
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnDBDelete');
}
return parent::DBDeleteTracked_Internal($oDeletionPlan);
@@ -4617,10 +4605,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$bIsModified = $oExtensionInstance->OnIsModified($this);
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnIsModified');
if ($bIsModified)
if ($oExtensionInstance->OnIsModified($this))
{
return true;
}
@@ -4674,9 +4659,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$aNewIssues = $oExtensionInstance->OnCheckToWrite($this);
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnCheckToWrite');
if (is_array($aNewIssues) && (count($aNewIssues) > 0)) // Some extensions return null instead of an empty array
{
$this->m_aCheckIssues = array_merge($this->m_aCheckIssues, $aNewIssues);
@@ -4724,9 +4707,7 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
$oKPI = new ExecutionKPI();
$aNewIssues = $oExtensionInstance->OnCheckToDelete($this);
$oKPI->ComputeStatsForExtension($oExtensionInstance, 'OnCheckToDelete');
if (is_array($aNewIssues) && count($aNewIssues) > 0)
{
$this->m_aDeleteIssues = array_merge($this->m_aDeleteIssues, $aNewIssues);
@@ -5281,11 +5262,6 @@ EOF
'errors' => '<p>'.($bResult ? '' : implode('</p><p>', $aErrorsToDisplay)).'</p>',
);
if ($bResult && (!$bPreview)) {
// doing the check will load multiple times same objects :/
// but it shouldn't cost too much on execution time
// user can mitigate by selecting less extkeys/lnk to set and/or less objects to update 🤷‍♂️
$oObj->CheckChangedExtKeysValues();
$oObj->DBUpdate();
}
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/CSVPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CSVPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -918,11 +918,6 @@ class RuntimeDashboard extends Dashboard
{
$bCustomized = false;
$sDashboardFileSanitized = utils::RealPath(APPROOT.$sDashboardFile, APPROOT);
if (false === $sDashboardFileSanitized) {
throw new SecurityException('Invalid dashboard file !');
}
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
@@ -934,7 +929,7 @@ class RuntimeDashboard extends Dashboard
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
$sDashboardDefinition = @file_get_contents($sDashboardFile);
}
@@ -942,7 +937,7 @@ class RuntimeDashboard extends Dashboard
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFileSanitized);
$oDashboard->SetDefinitionFile($sDashboardFile);
} else {
$oDashboard = null;
}
@@ -1141,7 +1136,7 @@ JS
$oToolbar->AddSubBlock($oActionButton);
$aActions = array();
$sFile = addslashes(utils::LocalPath($this->sDefinitionFile));
$sFile = addslashes($this->sDefinitionFile);
$sJSExtraParams = json_encode($aExtraParams);
if ($this->HasCustomDashboard()) {
$oEdit = new JSPopupMenuItem('UI:Dashboard:Edit', Dict::S('UI:Dashboard:EditCustom'), "return EditDashboard('{$this->sId}', '$sFile', $sJSExtraParams)");
@@ -1264,12 +1259,12 @@ EOF
$sOkButtonLabel = Dict::S('UI:Button:Save');
$sCancelButtonLabel = Dict::S('UI:Button:Cancel');
$sId = utils::HtmlEntities($this->sId);
$sLayoutClass = utils::HtmlEntities($this->sLayoutClass);
$sId = addslashes($this->sId);
$sLayoutClass = addslashes($this->sLayoutClass);
$sAutoReload = $this->bAutoReload ? 'true' : 'false';
$sAutoReloadSec = (string) $this->iAutoReloadSec;
$sTitle = utils::HtmlEntities($this->sTitle);
$sFile = utils::HtmlEntities($this->GetDefinitionFile());
$sTitle = addslashes($this->sTitle);
$sFile = addslashes($this->GetDefinitionFile());
$sUrl = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php';
$sReloadURL = $this->GetReloadURL();

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/ErrorPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/ErrorPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1,36 +0,0 @@
<?php
/**
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6458 object creation
*/
class InvalidExternalKeyValueException extends CoreUnexpectedValue
{
private const ENUM_PARAMS_OBJECT = 'current_object';
private const ENUM_PARAMS_ATTCODE = 'attcode';
private const ENUM_PARAMS_ATTVALUE = 'attvalue';
private const ENUM_PARAMS_USER = 'current_user';
public function __construct($oObject, $sAttCode, $aContextData = null, $oPrevious = null)
{
$aContextData[self::ENUM_PARAMS_OBJECT] = get_class($oObject) . '::' . $oObject->GetKey();
$aContextData[self::ENUM_PARAMS_ATTCODE] = $sAttCode;
$aContextData[self::ENUM_PARAMS_ATTVALUE] = $oObject->Get($sAttCode);
$oCurrentUser = UserRights::GetUserObject();
if (false === is_null($oCurrentUser)) {
$aContextData[self::ENUM_PARAMS_USER] = get_class($oCurrentUser) . '::' . $oCurrentUser->GetKey();
}
parent::__construct('Attribute pointing to an object that is either non existing or not readable by the current user', $aContextData, '', $oPrevious);
}
public function GetAttCode(): string
{
return $this->getContextData()[self::ENUM_PARAMS_ATTCODE];
}
public function GetAttValue(): string
{
return $this->getContextData()[self::ENUM_PARAMS_ATTVALUE];
}
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWebPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWizardWebPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWizardWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -80,11 +80,6 @@ class LoginBasic extends AbstractLoginFSMExtension
{
if (Session::Get('login_mode') == 'basic')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -79,7 +79,7 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
{
self::ResetLoginSession();
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
if ($iOnExit == LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
@@ -95,12 +95,6 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
{
if (!Session::IsSet('login_mode'))
{
// N°6358 - if EXIT_RETURN was asked, send an error
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
// If no plugin validated the user, exit
self::ResetLoginSession();
exit();

View File

@@ -73,11 +73,6 @@ class LoginExternal extends AbstractLoginFSMExtension
{
if (Session::Get('login_mode') == 'external')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -44,10 +44,6 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
exit;
}
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
// No credentials yet, display the form
$oPage = LoginWebPage::NewLoginWebPage();
$oPage->DisplayLoginForm($this->bForceFormOnError);

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2023 Combodo SARL
// Copyright (C) 2010-2021 Combodo SARL
//
// This file is part of iTop.
//
@@ -35,7 +35,7 @@ class LoginWebPage extends NiceWebPage
{
const EXIT_PROMPT = 0;
const EXIT_HTTP_401 = 1;
const EXIT_RETURN = 2; // Non interactive mode (ajax, rest, ...)
const EXIT_RETURN = 2;
const EXIT_CODE_OK = 0;
const EXIT_CODE_MISSINGLOGIN = 1;
@@ -88,7 +88,7 @@ class LoginWebPage extends NiceWebPage
parent::__construct($sTitle);
$this->SetStyleSheet();
$this->no_cache();
$this->add_http_headers();
$this->add_xframe_options();
}
public function SetStyleSheet()
@@ -105,7 +105,6 @@ class LoginWebPage extends NiceWebPage
/**
* @param $oUser
* @param array $aProfiles
* @param $sOrigin
*
* @return array
* @throws \CoreException
@@ -386,20 +385,14 @@ class LoginWebPage extends NiceWebPage
$this->output();
}
public static function ResetSession($bFullCleanup = false)
public static function ResetSession()
{
if ($bFullCleanup) {
// Unset all of the session variables.
foreach (array_keys($_SESSION) as $sKey) {
Session::Unset($sKey);
}
} else {
Session::Unset('auth_user');
Session::Unset('login_state');
Session::Unset('can_logoff');
Session::Unset('archive_mode');
Session::Unset('impersonate_user');
}
// Unset all of the session variables.
Session::Unset('auth_user');
Session::Unset('login_state');
Session::Unset('can_logoff');
Session::Unset('archive_mode');
Session::Unset('impersonate_user');
UserRights::_ResetSessionCache();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
@@ -964,7 +957,7 @@ class LoginWebPage extends NiceWebPage
}
else
{
if ($iOnExit === self::EXIT_RETURN)
if ($iOnExit == self::EXIT_RETURN)
{
return self::EXIT_CODE_PORTALUSERNOTAUTHORIZED;
}
@@ -1019,7 +1012,7 @@ class LoginWebPage extends NiceWebPage
{
if ($bMustBeAdmin && !UserRights::IsAdministrator())
{
if ($iOnExit === self::EXIT_RETURN)
if ($iOnExit == self::EXIT_RETURN)
{
return self::EXIT_CODE_MUSTBEADMIN;
}
@@ -1035,7 +1028,7 @@ class LoginWebPage extends NiceWebPage
}
$iRet = call_user_func(array(self::$sHandlerClass, 'ChangeLocation'), $sRequestedPortalId, $iOnExit);
}
if ($iOnExit === self::EXIT_RETURN)
if ($iOnExit == self::EXIT_RETURN)
{
return $iRet;
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/NiceWebPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/NiceWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/PDFPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/PDFPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -98,10 +98,4 @@ else
Session::Set('itop_env', ITOP_DEFAULT_ENV);
}
$sConfigFile = APPCONF.$sEnv.'/'.ITOP_CONFIG_FILE;
try {
MetaModel::Startup($sConfigFile, false /* $bModelOnly */, $bAllowCache, false /* $bTraceSourceFiles */, $sEnv);
}
catch (MySQLException $e) {
IssueLog::Debug($e->getMessage());
throw new MySQLException('Could not connect to the DB server', []);
}
MetaModel::Startup($sConfigFile, false /* $bModelOnly */, $bAllowCache, false /* $bTraceSourceFiles */, $sEnv);

View File

@@ -20,7 +20,6 @@
use Combodo\iTop\Application\Helper\Session;
use Combodo\iTop\Application\UI\Base\iUIBlock;
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
use Combodo\iTop\Service\Module\ModuleService;
use ScssPhp\ScssPhp\Compiler;
use ScssPhp\ScssPhp\OutputStyle;
use ScssPhp\ScssPhp\ValueConverter;
@@ -52,51 +51,42 @@ class utils
{
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_INTEGER = 'integer';
/**
* Datamodel class
* @var string
* @since 2.7.10 3.0.0
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6606 update PHPDoc
* @uses MetaModel::IsValidClass()
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_CLASS = 'class';
/**
* @var string
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6606
* @uses class_exists()
*/
public const ENUM_SANITIZATION_FILTER_PHP_CLASS = 'php_class';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_STRING = 'string';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_CONTEXT_PARAM = 'context_param';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_PARAMETER = 'parameter';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_FIELD_NAME = 'field_name';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_TRANSACTION_ID = 'transaction_id';
/**
* @var string For XML / HTML node identifiers
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER = 'element_identifier';
/**
@@ -106,13 +96,12 @@ class utils
public const ENUM_SANITIZATION_FILTER_VARIABLE_NAME = 'variable_name';
/**
* @var string
* @since 2.7.10 3.0.0
* @since 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_RAW_DATA = 'raw_data';
/**
* @var string
* @since 3.0.2 3.1.0 N°4899
* @since 2.7.10 N°6606
* @since 3.0.2, 3.1.0 N°4899
*/
public const ENUM_SANITIZATION_FILTER_URL = 'url';
@@ -155,8 +144,6 @@ class utils
private static $iNextId = 0;
private static $m_sAppRootUrl = null;
protected static function LoadParamFile($sParamFile)
{
if (!file_exists($sParamFile)) {
@@ -398,10 +385,6 @@ class utils
* @since 2.7.0 new 'element_identifier' filter
* @since 3.0.0 new utils::ENUM_SANITIZATION_* const
* @since 2.7.7, 3.0.2, 3.1.0 N°4899 - new 'url' filter
* @since 2.7.10 N°6606 use the utils::ENUM_SANITIZATION_* const
* @since 2.7.10 N°6606 new case for ENUM_SANITIZATION_FILTER_PHP_CLASS
*
* @link https://www.php.net/manual/en/filter.filters.sanitize.php PHP sanitization filters
*/
protected static function Sanitize_Internal($value, $sSanitizationFilter)
{
@@ -422,13 +405,6 @@ class utils
$retValue = filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS);
break;
case static::ENUM_SANITIZATION_FILTER_PHP_CLASS:
$retValue = $value;
if (!class_exists($value)) {
$retValue = false;
}
break;
case static::ENUM_SANITIZATION_FILTER_CONTEXT_PARAM:
case static::ENUM_SANITIZATION_FILTER_PARAMETER:
case static::ENUM_SANITIZATION_FILTER_FIELD_NAME:
@@ -488,8 +464,7 @@ class utils
// For URL
case static::ENUM_SANITIZATION_FILTER_URL:
// N°6350 - returns only valid URLs
$retValue = filter_var($value, FILTER_VALIDATE_URL);
$retValue = filter_var($value, FILTER_SANITIZE_URL);
break;
default:
@@ -994,7 +969,7 @@ class utils
*/
public static function GetAbsoluteUrlAppRoot($bForceTrustProxy = false)
{
$sUrl = static::$m_sAppRootUrl;
static $sUrl = null;
if ($sUrl === null || $bForceTrustProxy)
{
$sUrl = self::GetConfig()->Get('app_root_url');
@@ -1015,9 +990,8 @@ class utils
}
$sUrl = str_replace(SERVER_NAME_PLACEHOLDER, $sServerName, $sUrl);
}
static::$m_sAppRootUrl = $sUrl;
}
return static::$m_sAppRootUrl;
return $sUrl;
}
/**
@@ -1368,23 +1342,13 @@ class utils
return APPROOT . 'env-' . MetaModel::GetEnvironment() . '/';
}
/**
* @return string A path to the folder into which data can be written
* @internal
* @since N°6097 2.7.10 3.0.4 3.1.1
*/
public static function GetDataPath(): string
{
return APPROOT.'data/';
}
/**
* @return string A path to a folder into which any module can store cache data
* The corresponding folder is created or cleaned upon code compilation
*/
public static function GetCachePath()
{
return static::GetDataPath().'cache-'.MetaModel::GetEnvironment().'/';
return APPROOT.'data/cache-'.MetaModel::GetEnvironment().'/';
}
/**
@@ -2167,7 +2131,24 @@ class utils
*/
public static function GetCurrentModuleName($iCallDepth = 0)
{
return ModuleService::GetInstance()->GetCurrentModuleName($iCallDepth + 1);
$sCurrentModuleName = '';
$aCallStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$sCallerFile = realpath($aCallStack[$iCallDepth]['file']);
foreach(GetModulesInfo() as $sModuleName => $aInfo)
{
if ($aInfo['root_dir'] !== '')
{
$sRootDir = realpath(APPROOT.$aInfo['root_dir']);
if(substr($sCallerFile, 0, strlen($sRootDir)) === $sRootDir)
{
$sCurrentModuleName = $sModuleName;
break;
}
}
}
return $sCurrentModuleName;
}
/**
@@ -2189,7 +2170,24 @@ class utils
*/
public static function GetCurrentModuleDir($iCallDepth)
{
return ModuleService::GetInstance()->GetCurrentModuleDir($iCallDepth);
$sCurrentModuleDir = '';
$aCallStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$sCallerFile = realpath($aCallStack[$iCallDepth]['file']);
foreach(GetModulesInfo() as $sModuleName => $aInfo)
{
if ($aInfo['root_dir'] !== '')
{
$sRootDir = realpath(APPROOT.$aInfo['root_dir']);
if(substr($sCallerFile, 0, strlen($sRootDir)) === $sRootDir)
{
$sCurrentModuleDir = basename($sRootDir);
break;
}
}
}
return $sCurrentModuleDir;
}
/**
@@ -2204,7 +2202,12 @@ class utils
*/
public static function GetCurrentModuleUrl()
{
return ModuleService::GetInstance()->GetCurrentModuleUrl(1);
$sDir = static::GetCurrentModuleDir(1);
if ( $sDir !== '')
{
return static::GetAbsoluteUrlModulesRoot().'/'.$sDir;
}
return '';
}
/**
@@ -2214,7 +2217,8 @@ class utils
*/
public static function GetCurrentModuleSetting($sProperty, $defaultvalue = null)
{
return ModuleService::GetInstance()->GetCurrentModuleSetting($sProperty, $defaultvalue);
$sModuleName = static::GetCurrentModuleName(1);
return MetaModel::GetModuleSetting($sModuleName, $sProperty, $defaultvalue);
}
/**
@@ -2223,7 +2227,12 @@ class utils
*/
public static function GetCompiledModuleVersion($sModuleName)
{
return ModuleService::GetInstance()->GetCompiledModuleVersion($sModuleName);
$aModulesInfo = GetModulesInfo();
if (array_key_exists($sModuleName, $aModulesInfo))
{
return $aModulesInfo[$sModuleName]['version'];
}
return null;
}
/**
@@ -2747,7 +2756,7 @@ HTML;
foreach ($aClassMap as $sPHPClass => $sPHPFile) {
$bSkipped = false;
// Check if our class matches name filter, or is in an excluded path
if ($sClassNameFilter !== '' && strpos($sPHPClass, $sClassNameFilter) === false) {
$bSkipped = true;
@@ -2767,7 +2776,7 @@ HTML;
$bSkipped = true; // file not found
}
}
if(!$bSkipped){
try {
$oRefClass = new ReflectionClass($sPHPClass);
@@ -2877,7 +2886,6 @@ HTML;
*
* @return bool if string null or empty
* @since 3.0.2 N°5302
* @since 2.7.10 N°6458 add method in the 2.7 branch
*/
public static function IsNullOrEmptyString(?string $sString): bool
{
@@ -2893,7 +2901,6 @@ HTML;
*
* @return bool if string is not null and not empty
* @since 3.0.2 N°5302
* @since 2.7.10 N°6458 add method in the 2.7 branch
*/
public static function IsNotNullOrEmptyString(?string $sString): bool
{

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/WebPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/WebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -347,7 +347,6 @@ class WizardHelper
/**
* @return string JS code to be executed for fields update
* @since 3.0.0 N°3198
* @deprecated 3.0.3-2 3.0.4 3.1.1 3.2.0 Use {@see \WizardHelper::AddJsForUpdateFields()} instead
*/
public function GetJsForUpdateFields()
{
@@ -360,39 +359,15 @@ class WizardHelper
JS;
}
/**
* Add necessary JS snippets (to the page) to be executed for fields update
*
* @param \WebPage $oPage
* @return void
* @since 3.0.3-2 3.0.4 3.1.1 3.2.0 N°6766
*/
public function AddJsForUpdateFields(WebPage $oPage)
{
$sWizardHelperJsVar = (!is_null($this->m_aData['m_sWizHelperJsVarName'])) ? utils::Sanitize($this->m_aData['m_sWizHelperJsVarName'], '', utils::ENUM_SANITIZATION_FILTER_PARAMETER) : 'oWizardHelper'.$this->GetFormPrefix();
$sWizardHelperJson = $this->ToJSON();
$oPage->add_script(<<<JS
{$sWizardHelperJsVar}.m_oData = {$sWizardHelperJson};
{$sWizardHelperJsVar}.UpdateFields();
JS
);
$oPage->add_ready_script(<<<JS
if ({$sWizardHelperJsVar}.m_oDependenciesUpdatedPromiseResolve !== null){
{$sWizardHelperJsVar}.m_oDependenciesUpdatedPromiseResolve();
}
JS
);
}
static function ParseJsonSet($oMe, $sLinkClass, $sExtKeyToMe, $sJsonSet)
{
$aSet = json_decode($sJsonSet, true); // true means hash array instead of object
$oSet = CMDBObjectSet::FromScratch($sLinkClass);
foreach ($aSet as $aLinkObj) {
foreach ($aSet as $aLinkObj)
{
$oLink = MetaModel::NewObject($sLinkClass);
foreach ($aLinkObj as $sAttCode => $value) {
foreach ($aLinkObj as $sAttCode => $value)
{
$oAttDef = MetaModel::GetAttributeDef($sLinkClass, $sAttCode);
if (($oAttDef->IsExternalKey()) && ($value != '') && ($value > 0))
{

View File

@@ -1,6 +1,6 @@
<?php
/**
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/application/WebPage/XMLPage.php, now loadable using autoloader
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/XMLPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
*/

View File

@@ -23,13 +23,6 @@ define('ITOP_DESIGN_LATEST_VERSION', '3.0');
* @used-by utils::GetItopVersionWikiSyntax()
* @used-by iTopModulesPhpVersionIntegrationTest
*/
define('ITOP_CORE_VERSION', '3.0.4');
/**
* @var string
* @since 3.0.4 3.1.0 3.2.0 N°6274 Allow to test if PHPUnit is currently running. Starting with PHPUnit 9.5 we'll be able to replace it with $GLOBALS['phpunit_version']
* @since 3.0.4 3.1.1 3.2.0 N°6976 Fix constant name (DeprecatedCallsLog error handler was never set)
*/
const ITOP_PHPUNIT_RUNNING_CONSTANT_NAME = 'ITOP_PHPUNIT_RUNNING';
define('ITOP_CORE_VERSION', '3.0.3');
require_once APPROOT.'bootstrap.inc.php';

View File

@@ -45,7 +45,6 @@ define('MAINTENANCE_MODE_FILE', APPROOT.'data/.maintenance');
define('READONLY_MODE_FILE', APPROOT.'data/.readonly');
$fItopStarted = microtime(true);
$iItopInitialMemory = memory_get_usage(true);
if (!isset($GLOBALS['bBypassAutoload']) || $GLOBALS['bBypassAutoload'] == false) {
require_once APPROOT.'/lib/autoload.php';

View File

@@ -15,7 +15,6 @@
"combodo/tcpdf": "~6.4.4",
"firebase/php-jwt": "~6.4.0",
"guzzlehttp/guzzle": "^6.5.8",
"guzzlehttp/psr7": "~1.9.1",
"laminas/laminas-mail": "^2.11",
"laminas/laminas-servicemanager": "^3.5",
"league/oauth2-google": "^3.0",

View File

@@ -59,16 +59,9 @@ class DbConnectionWrapper
* Use this to register a mock that will handle {@see mysqli::query()}
*
* @param \mysqli|null $oMysqli
* @since 3.0.4 3.1.1 3.2.0 Param $oMysqli becomes nullable
*/
public static function SetDbConnectionMockForQuery(?mysqli $oMysqli = null): void
public static function SetDbConnectionMockForQuery(?mysqli $oMysqli): void
{
if (is_null($oMysqli)) {
// Reset to standard connection
static::$oDbCnxMockableForQuery = static::$oDbCnxStandard;
}
else {
static::$oDbCnxMockableForQuery = $oMysqli;
}
static::$oDbCnxMockableForQuery = $oMysqli;
}
}

View File

@@ -419,7 +419,6 @@ class MyHelpers
//}
return $sOutput;
}
}
/**
@@ -524,3 +523,5 @@ class Str
return (strtolower($sString) == $sString);
}
}
?>

View File

@@ -149,9 +149,7 @@ abstract class BulkExport
$this->oSearch = null;
$this->iChunkSize = 0;
$this->sFormatCode = null;
$this->aStatusInfo = [
'show_obsolete_data' => utils::ShowObsoleteData(),
];
$this->aStatusInfo = array();
$this->oBulkExportResult = null;
$this->sTmpFile = '';
$this->bLocalizeOutput = false;
@@ -205,17 +203,15 @@ abstract class BulkExport
if ($oInfo && ($oInfo->Get('user_id') == UserRights::GetUserId()))
{
$sFormatCode = $oInfo->Get('format');
$aStatusInfo = json_decode($oInfo->Get('status_info'),true);
$oSearch = DBObjectSearch::unserialize($oInfo->Get('search'));
$oSearch->SetShowObsoleteData($aStatusInfo['show_obsolete_data']);
$oBulkExporter = self::FindExporter($sFormatCode, $oSearch);
if ($oBulkExporter)
{
$oBulkExporter->SetFormat($sFormatCode);
$oBulkExporter->SetObjectList($oSearch);
$oBulkExporter->SetChunkSize($oInfo->Get('chunk_size'));
$oBulkExporter->SetStatusInfo($aStatusInfo);
$oBulkExporter->SetStatusInfo(json_decode($oInfo->Get('status_info'), true));
$oBulkExporter->SetLocalizeOutput($oInfo->Get('localize_output'));
@@ -293,7 +289,6 @@ abstract class BulkExport
*/
public function SetObjectList(DBSearch $oSearch)
{
$oSearch->SetShowObsoleteData($this->aStatusInfo['show_obsolete_data']);
$this->oSearch = $oSearch;
}

View File

@@ -42,12 +42,6 @@ class CMDBSource
const ENUM_DB_VENDOR_MARIADB = 'MariaDB';
const ENUM_DB_VENDOR_PERCONA = 'Percona';
/**
* @since 2.7.10 3.0.4 3.1.2 3.0.2 N°6889 constant creation
* @internal will be removed in a future version
*/
const MYSQL_DEFAULT_PORT = 3306;
/**
* Error: 1205 SQLSTATE: HY000 (ER_LOCK_WAIT_TIMEOUT)
* Message: Lock wait timeout exceeded; try restarting transaction
@@ -219,19 +213,16 @@ class CMDBSource
/**
* @param string $sDbHost initial value ("p:domain:port" syntax)
* @param string $sServer server variable to update
* @param int|null $iPort port variable to update, will return null if nothing is specified in $sDbHost
*
* @since 2.7.10 3.0.4 3.1.2 3.2.0 N°6889 will return null in $iPort if port isn't present in $sDbHost. Use {@see MYSQL_DEFAULT_PORT} if needed
*
* @link http://php.net/manual/en/mysqli.persistconns.php documentation for the "p:" prefix (persistent connexion)
* @param int $iPort port variable to update
*/
public static function InitServerAndPort($sDbHost, &$sServer, &$iPort)
{
$aConnectInfo = explode(':', $sDbHost);
$bUsePersistentConnection = false;
if (strcasecmp($aConnectInfo[0], 'p') === 0)
if (strcasecmp($aConnectInfo[0], 'p') == 0)
{
// we might have "p:" prefix to use persistent connections (see http://php.net/manual/en/mysqli.persistconns.php)
$bUsePersistentConnection = true;
$sServer = $aConnectInfo[0].':'.$aConnectInfo[1];
}
@@ -249,6 +240,10 @@ class CMDBSource
{
$iPort = (int)($aConnectInfo[1]);
}
else
{
$iPort = 3306;
}
}
/**
@@ -435,7 +430,6 @@ class CMDBSource
{
self::$m_sDBName = '';
}
self::_TablesInfoCacheReset(); // reset the table info cache!
}
public static function CreateTable($sQuery)
@@ -612,9 +606,8 @@ class CMDBSource
{
self::LogDeadLock($e, true);
throw new MySQLException('Failed to issue SQL query', array('query' => $sSql, $e));
} finally {
$oKPI->ComputeStats('Query exec (mySQL)', $sSql);
}
}
$oKPI->ComputeStats('Query exec (mySQL)', $sSql);
if ($oResult === false) {
$aContext = array('query' => $sSql);
@@ -632,24 +625,18 @@ class CMDBSource
}
/**
* @param Exception $e
* @param \Exception $e
* @param bool $bForQuery to get the proper DB connection
* @param bool $bCheckMysqliErrno if false won't try to check for mysqli::errno value
*
* @since 2.7.1
* @since 3.0.0 N°4325 add new optional parameter to use the correct DB connection
* @since 3.0.4 3.1.1 3.2.0 N°6643 new bCheckMysqliErrno parameter as a workaround for mysqli::errno cannot be mocked
*/
private static function LogDeadLock(Exception $e, $bForQuery = false, $bCheckMysqliErrno = true)
private static function LogDeadLock(Exception $e, $bForQuery = false)
{
// checks MySQL error code
if ($bCheckMysqliErrno) {
$iMySqlErrorNo = DbConnectionWrapper::GetDbConnection($bForQuery)->errno;
if (!in_array($iMySqlErrorNo, array(self::MYSQL_ERRNO_WAIT_TIMEOUT, self::MYSQL_ERRNO_DEADLOCK))) {
return;
}
} else {
$iMySqlErrorNo = "N/A";
$iMySqlErrorNo = DbConnectionWrapper::GetDbConnection($bForQuery)->errno;
if (!in_array($iMySqlErrorNo, array(self::MYSQL_ERRNO_WAIT_TIMEOUT, self::MYSQL_ERRNO_DEADLOCK))) {
return;
}
// Get error info
@@ -676,10 +663,7 @@ class CMDBSource
);
DeadLockLog::Info($sMessage, $iMySqlErrorNo, $aLogContext);
IssueLog::Error($sMessage, LogChannels::DEADLOCK, [
'exception.class' => get_class($e),
'exception.message' => $e->getMessage(),
]);
IssueLog::Error($sMessage, LogChannels::DEADLOCK, $e->getMessage());
}
/**

View File

@@ -584,22 +584,22 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'email_transport_smtp.allow_self_signed' => [
'email_transport_smtp.allow_self_signed' => array(
'type' => 'bool',
'description' => 'Allow self signed peer certificates',
'default' => false,
'value' => false,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'email_transport_smtp.verify_peer' => [
),
'email_transport_smtp.verify_peer' => array(
'type' => 'bool',
'description' => 'Verify peer certificate',
'default' => true,
'value' => true,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
),
'email_css' => [
'type' => 'string',
'description' => 'CSS that will override the standard stylesheet used for the notifications',
@@ -989,14 +989,6 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'log_kpi_generate_legacy_report' => [
'type' => 'bool',
'description' => 'Generate the legacy KPI report (kpi.html)',
'default' => true,
'value' => '',
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'max_linkset_output' => [
'type' => 'integer',
'description' => 'Maximum number of items shown when getting a list of related items in an email, using the form $this->some_list$. 0 means no limit.',
@@ -1443,14 +1435,6 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'allow_rest_services_via_tokens' => [
'type' => 'bool',
'description' => 'When set to true, REST endpoint token authorization works even with secure_rest_services set.',
'default' => false,
'value' => false,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'search_manual_submit' => [
'type' => 'array',
'description' => 'Force manual submit of search all requests',
@@ -1531,14 +1515,6 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'security.enable_header_xcontent_type_options' => [
'type' => 'bool',
'description' => 'If set to false, iTop will stop sending the X-Content-Type-Options HTTP header. This header could trigger CORB protection on certain resources (JSON, XML, HTML, text) therefore blocking them.',
'default' => true,
'value' => '',
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'security.disable_inline_documents_sandbox' => [
'type' => 'bool',
'description' => 'If true then the sandbox for documents displayed in a browser tab will be disabled; enabling scripts and other interactive content. Note that setting this to true will open the application to potential XSS attacks!',

View File

@@ -1,11 +1,8 @@
<?php
/**
* This file is only here for compatibility reasons.
* It will be removed in future iTop versions (N°6533)
* This file is only here for compatibility issues. Will be removed in iTop 3.1.0 (N°3664)
*
* @deprecated 3.0.0 N°3663 Exception classes were moved to `/application/exceptions`, use autoloader instead of require !
*/
require_once __DIR__ . '/../approot.inc.php';
DeprecatedCallsLog::NotifyDeprecatedFile('Classes were moved to /application/exceptions and can be used directly with the autoloader');
require_once '../approot.inc.php';
DeprecatedCallsLog::NotifyDeprecatedFile('Classes were moved to /application/exceptions');

View File

@@ -188,8 +188,8 @@ final class ItopCounter
if (!$hDBLink)
{
throw new MySQLException('Could not connect to the DB server '.mysqli_connect_error().' (mysql errno: '.mysqli_connect_errno(), array('host' => $sDBHost, 'user' => $sDBUser));
}
throw new Exception("Could not connect to the DB server (host=$sDBHost, user=$sDBUser): ".mysqli_connect_error().' (mysql errno: '.mysqli_connect_errno().')');
}
return $hDBLink;
}

View File

@@ -12,7 +12,6 @@ use Combodo\iTop\Application\UI\Base\Component\Input\SelectUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\Column\ColumnUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\MultiColumnUIBlockFactory;
use Combodo\iTop\Application\Helper\ExportHelper;
/**
* Bulk export: CSV export
@@ -115,7 +114,6 @@ class CSVBulkExport extends TabularBulkExport
case 'csv_options':
$oPanel = PanelUIBlockFactory::MakeNeutral(Dict::S('Core:BulkExport:CSVOptions'));
$oPanel->AddSubBlock(ExportHelper::GetAlertForExcelMaliciousInjection());
$oMulticolumn = MultiColumnUIBlockFactory::MakeStandard();
$oPanel->AddSubBlock($oMulticolumn);
@@ -166,7 +164,7 @@ class CSVBulkExport extends TabularBulkExport
foreach ($aQualifiers as $sVal => $sLabel) {
$oRadio = InputUIBlockFactory::MakeForInputWithLabel($sLabel, "text-qualifier", htmlentities($sVal, ENT_QUOTES, 'UTF-8'), $sLabel, "radio");
$oRadio->GetInput()->SetIsChecked(($sVal == $sRawQualifier));
$oRadio->GetInput()->SetIsChecked(($sVal == $sRawSeparator));
$oRadio->SetBeforeInput(false);
$oRadio->GetInput()->AddCSSClass('ibo-input--label-right');
$oRadio->GetInput()->AddCSSClass('ibo-input-checkbox');

View File

@@ -1581,9 +1581,10 @@ abstract class DBObject implements iDisplay
/**
* Helper to get the friendly name in a safe manner for displaying inside a web page
*
* @internal
* @return string
* @throws \CoreException
* @since 3.0.0 N°4106 Method should be overloaded anymore for performances reasons. It will be set final in 3.1.0 (N°4107)
* @since 3.0.0 N°4106 This method is now internal. It will be set final in 3.1.0 (N°4107)
* @since 3.0.0 N°580 New $sType parameter
*
*/
@@ -1930,7 +1931,7 @@ abstract class DBObject implements iDisplay
/** @var \AttributeExternalKey $oAtt */
$sTargetClass = $oAtt->GetTargetClass();
if (false === MetaModel::IsObjectInDB($sTargetClass, $toCheck)) {
return "Target object not found ({$sTargetClass}::{$toCheck})";
return "Target object not found (".$sTargetClass.".::".$toCheck.")";
}
}
if ($oAtt->IsHierarchicalKey())
@@ -2237,6 +2238,7 @@ abstract class DBObject implements iDisplay
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*
*/
public function DoCheckToWrite()
{
@@ -2290,6 +2292,7 @@ abstract class DBObject implements iDisplay
}
/**
*
* @api
* @api-advanced
*
@@ -2305,6 +2308,7 @@ abstract class DBObject implements iDisplay
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \OQLException
*
*/
final public function CheckToWrite()
{
@@ -2318,7 +2322,7 @@ abstract class DBObject implements iDisplay
$oKPI = new ExecutionKPI();
$this->DoCheckToWrite();
$oKPI->ComputeStatsForExtension($this, 'DoCheckToWrite');
$oKPI->ComputeStats('CheckToWrite', get_class($this));
if (count($this->m_aCheckIssues) == 0)
{
$this->m_bCheckStatus = true;
@@ -2331,87 +2335,6 @@ abstract class DBObject implements iDisplay
return array($this->m_bCheckStatus, $this->m_aCheckIssues, $this->m_bSecurityIssue);
}
/**
* Checks for extkey attributes values. This will throw exception on non-existing as well as non-accessible objects (silo, scopes).
* That's why the test is done for all users including Administrators
*
* Note that due to perf issues, this isn't called directly by the ORM, but has to be called by consumers when possible.
*
* @param callable(string, string):bool|null $oIsObjectLoadableCallback Override to check if object is accessible.
* Parameters are object class and key
* Return value should be false if cannot access object, true otherwise
* @return void
*
* @throws ArchivedObjectException
* @throws CoreException if cannot get object attdef list
* @throws CoreUnexpectedValue
* @throws InvalidExternalKeyValueException
* @throws MySQLException
* @throws SecurityException if one extkey is pointing to an invalid value
*
* @link https://github.com/Combodo/iTop/security/advisories/GHSA-245j-66p9-pwmh
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6458
*
* @see \RestUtils::FindObjectFromKey for the same check in the REST endpoint
*/
final public function CheckChangedExtKeysValues(callable $oIsObjectLoadableCallback = null)
{
if (is_null($oIsObjectLoadableCallback)) {
$oIsObjectLoadableCallback = function ($sClass, $sId) {
$oRemoteObject = MetaModel::GetObject($sClass, $sId, false);
if (is_null($oRemoteObject)) {
return false;
}
return true;
};
}
$aChanges = $this->ListChanges();
$aAttCodesChanged = array_keys($aChanges);
foreach ($aAttCodesChanged as $sAttDefCode) {
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttDefCode);
if ($oAttDef instanceof AttributeLinkedSetIndirect) {
/** @var ormLinkSet $oOrmSet */
$oOrmSet = $this->Get($sAttDefCode);
while ($oLnk = $oOrmSet->Fetch()) {
$oLnk->CheckChangedExtKeysValues($oIsObjectLoadableCallback);
}
continue;
}
/** @noinspection PhpConditionCheckedByNextConditionInspection */
/** @noinspection NotOptimalIfConditionsInspection */
if (($oAttDef instanceof AttributeHierarchicalKey) || ($oAttDef instanceof AttributeExternalKey)) {
$sRemoteObjectClass = $oAttDef->GetTargetClass();
$sRemoteObjectKey = $this->Get($sAttDefCode);
} else if ($oAttDef instanceof AttributeObjectKey) {
$sRemoteObjectClassAttCode = $oAttDef->Get('class_attcode');
$sRemoteObjectClass = $this->Get($sRemoteObjectClassAttCode);
$sRemoteObjectKey = $this->Get($sAttDefCode);
} else {
continue;
}
if (utils::IsNullOrEmptyString($sRemoteObjectClass)
|| utils::IsNullOrEmptyString($sRemoteObjectKey)
) {
continue;
}
// 0 : Undefined ext. key (EG. non-mandatory and no value provided)
// < 0 : Non yet persisted object
/** @noinspection TypeUnsafeComparisonInspection Non-strict comparison as object ID can be string */
if ($sRemoteObjectKey <= 0) {
continue;
}
if (false === $oIsObjectLoadableCallback($sRemoteObjectClass, $sRemoteObjectKey)) {
throw new InvalidExternalKeyValueException($this, $sAttDefCode);
}
}
}
/**
* Check if it is allowed to delete the existing object from the database
*
@@ -2557,11 +2480,11 @@ abstract class DBObject implements iDisplay
* @api
* @api-advanced
*
* @return array attcode => currentvalue List the attributes that have been changed using {@see DBObject::Set()}.
* Reset during {@see DBObject::DBUpdate()}
* @throws Exception
* @see \DBObject::ListPreviousValuesForUpdatedAttributes() to get previous values anywhere in the CRUD stack
* @see https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Asequence_crud iTop CRUD stack documentation
* @return array attname => currentvalue List the attributes that have been changed using {@see DBObject::Set()}.
* Reset during {@see DBObject::DBUpdate()}
* @throws Exception
* @uses m_aCurrValues
*/
public function ListChanges()
@@ -2853,6 +2776,7 @@ abstract class DBObject implements iDisplay
* @throws \Exception
*
* @internal
*
*/
public function DBInsertNoReload()
{
@@ -2865,12 +2789,8 @@ abstract class DBObject implements iDisplay
$sRootClass = MetaModel::GetRootClass($sClass);
// Ensure the update of the values (we are accessing the data directly)
$oKPI = new ExecutionKPI();
$this->DoComputeValues();
$oKPI->ComputeStatsForExtension($this, 'DoComputeValues');
$oKPI = new ExecutionKPI();
$this->OnInsert();
$oKPI->ComputeStatsForExtension($this, 'OnInsert');
// If not automatically computed, then check that the key is given by the caller
if (!MetaModel::IsAutoIncrementKey($sRootClass))
@@ -2882,7 +2802,7 @@ abstract class DBObject implements iDisplay
}
// Ultimate check - ensure DB integrity
[$bRes, $aIssues] = $this->CheckToWrite();
list($bRes, $aIssues) = $this->CheckToWrite();
if (!$bRes)
{
throw new CoreCannotSaveObjectException(array('issues' => $aIssues, 'class' => get_class($this), 'id' => $this->GetKey()));
@@ -2997,9 +2917,7 @@ abstract class DBObject implements iDisplay
$this->m_aOrigValues[$sAttCode] = $value;
}
$oKPI = new ExecutionKPI();
$this->AfterInsert();
$oKPI->ComputeStatsForExtension($this, 'AfterInsert');
// Activate any existing trigger
$sClass = get_class($this);
@@ -3136,6 +3054,8 @@ abstract class DBObject implements iDisplay
* Persist an object to the DB, for the first time
*
* @api
* @see DBWrite
*
* @return int|null inserted object key
*
* @throws \ArchivedObjectException
@@ -3145,12 +3065,10 @@ abstract class DBObject implements iDisplay
* @throws \CoreWarning
* @throws \MySQLException
* @throws \OQLException
*
* @see DBWrite
*/
public function DBInsert()
{
$this->DBInsertNoReload();
$this->DBInsertNoReload();
if (MetaModel::DBIsReadOnly())
{
@@ -3209,13 +3127,13 @@ abstract class DBObject implements iDisplay
* Update an object in DB
*
* @api
* @see DBObject::DBWrite()
*
* @return int object key
*
* @throws \CoreException
* @throws \CoreCannotSaveObjectException if CheckToWrite() returns issues
* @throws \Exception
*
* @see DBObject::DBWrite()
*/
public function DBUpdate()
{
@@ -3223,7 +3141,6 @@ abstract class DBObject implements iDisplay
{
throw new CoreException("DBUpdate: could not update a newly created object, please call DBInsert instead");
}
// Protect against reentrance (e.g. cascading the update of ticket logs)
static $aUpdateReentrance = array();
$sKey = get_class($this).'::'.$this->GetKey();
@@ -3237,11 +3154,8 @@ abstract class DBObject implements iDisplay
try
{
$oKPI = new ExecutionKPI();
$this->DoComputeValues();
$oKPI->ComputeStatsForExtension($this, 'DoComputeValues');
// Stop watches
// Stop watches
$sState = $this->GetState();
if ($sState != '')
{
@@ -3260,9 +3174,7 @@ abstract class DBObject implements iDisplay
}
}
}
$oKPI = new ExecutionKPI();
$this->OnUpdate();
$oKPI->ComputeStatsForExtension($this, 'OnUpdate');
$this->OnUpdate();
$aChanges = $this->ListChanges();
if (count($aChanges) == 0)
@@ -3274,7 +3186,7 @@ abstract class DBObject implements iDisplay
}
// Ultimate check - ensure DB integrity
[$bRes, $aIssues] = $this->CheckToWrite();
list($bRes, $aIssues) = $this->CheckToWrite();
if (!$bRes)
{
throw new CoreCannotSaveObjectException(array(
@@ -3458,9 +3370,7 @@ abstract class DBObject implements iDisplay
$this->m_aModifiedAtt = array();
try {
$oKPI = new ExecutionKPI();
$this->AfterUpdate();
$oKPI->ComputeStatsForExtension($this, 'AfterUpdate');
$this->AfterUpdate();
// Reload to get the external attributes
if ($bNeedReload) {
@@ -3600,18 +3510,13 @@ abstract class DBObject implements iDisplay
/**
* Make the current changes persistent - clever wrapper for Insert or Update
*
* @api
*
* @api
*
* @return int
*
* @throws ArchivedObjectException
* @throws CoreCannotSaveObjectException
* @throws CoreException
* @throws CoreUnexpectedValue
* @throws CoreWarning
* @throws MySQLException
* @throws OQLException
*
* @throws \CoreCannotSaveObjectException
* @throws \CoreException
*/
public function DBWrite()
{

View File

@@ -767,10 +767,7 @@ class DBObjectSet implements iDBObjectSetIterator
try
{
$oKPI = new ExecutionKPI();
$this->m_oSQLResult = CMDBSource::Query($sSQL);
$sOQL = $this->GetPseudoOQL($this->m_oFilter, $this->GetRealSortOrder(), $this->m_iLimitCount, $this->m_iLimitStart, false);
$oKPI->ComputeStats('OQL Query Exec', $sOQL);
} catch (MySQLException $e)
{
// 1116 = ER_TOO_MANY_TABLES
@@ -850,11 +847,8 @@ class DBObjectSet implements iDBObjectSetIterator
{
if (is_null($this->m_iNumTotalDBRows))
{
$oKPI = new ExecutionKPI();
$sSQL = $this->m_oFilter->MakeSelectQuery(array(), $this->m_aArgs, null, null, 0, 0, true);
$resQuery = CMDBSource::Query($sSQL);
$sOQL = $this->GetPseudoOQL($this->m_oFilter, array(), 0, 0, true);
$oKPI->ComputeStats('OQL Query Exec', $sOQL);
if (!$resQuery) return 0;
$aRow = CMDBSource::FetchArray($resQuery);
@@ -865,42 +859,6 @@ class DBObjectSet implements iDBObjectSetIterator
return $this->m_iNumTotalDBRows + count($this->m_aAddedObjects); // Does it fix Trac #887 ??
}
/**
* @param \DBSearch $oFilter
* @param array $aOrder
* @param int $iLimitCount
* @param int $iLimitStart
* @param bool $bCount
*
* @return string
*/
private function GetPseudoOQL($oFilter, $aOrder, $iLimitCount, $iLimitStart, $bCount)
{
$sOQL = '';
if ($bCount) {
$sOQL .= 'COUNT ';
}
$sOQL .= $oFilter->ToOQL();
if ($iLimitCount > 0) {
$sOQL .= ' LIMIT ';
if ($iLimitStart > 0) {
$sOQL .= "$iLimitStart, ";
}
$sOQL .= "$iLimitCount";
}
if (count($aOrder) > 0) {
$sOQL .= ' ORDER BY ';
$aOrderBy = [];
foreach ($aOrder as $sAttCode => $bAsc) {
$aOrderBy[] = $sAttCode.' '.($bAsc ? 'ASC' : 'DESC');
}
$sOQL .= implode(', ', $aOrderBy);
}
return $sOQL;
}
/**
* Check if the count exceeds a given limit
*
@@ -917,11 +875,8 @@ class DBObjectSet implements iDBObjectSetIterator
{
if (is_null($this->m_iNumTotalDBRows))
{
$oKPI = new ExecutionKPI();
$sSQL = $this->m_oFilter->MakeSelectQuery(array(), $this->m_aArgs, null, null, $iLimit + 2, 0, true);
$resQuery = CMDBSource::Query($sSQL);
$sOQL = $this->GetPseudoOQL($this->m_oFilter, array(), $iLimit + 2, 0, true);
$oKPI->ComputeStats('OQL Query Exec', $sOQL);
if ($resQuery)
{
$aRow = CMDBSource::FetchArray($resQuery);
@@ -932,7 +887,7 @@ class DBObjectSet implements iDBObjectSetIterator
{
$iCount = 0;
}
}
}
else
{
$iCount = $this->m_iNumTotalDBRows;
@@ -957,11 +912,8 @@ class DBObjectSet implements iDBObjectSetIterator
{
if (is_null($this->m_iNumTotalDBRows))
{
$oKPI = new ExecutionKPI();
$sSQL = $this->m_oFilter->MakeSelectQuery(array(), $this->m_aArgs, null, null, $iLimit + 2, 0, true);
$resQuery = CMDBSource::Query($sSQL);
$sOQL = $this->GetPseudoOQL($this->m_oFilter, array(), $iLimit + 2, 0, true);
$oKPI->ComputeStats('OQL Query Exec', $sOQL);
if ($resQuery)
{
$aRow = CMDBSource::FetchArray($resQuery);
@@ -972,7 +924,7 @@ class DBObjectSet implements iDBObjectSetIterator
{
$iCount = 0;
}
}
}
else
{
$iCount = $this->m_iNumTotalDBRows;

View File

@@ -3,7 +3,7 @@
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
@@ -56,11 +56,10 @@ class Dict
* @param $sLanguageCode
*
* @throws \DictExceptionUnknownLanguage
* @since 3.0.4 3.1.1 3.2.0 Param $sLanguageCode becomes nullable
*/
public static function SetUserLanguage($sLanguageCode = null)
public static function SetUserLanguage($sLanguageCode)
{
if (!is_null($sLanguageCode) && !array_key_exists($sLanguageCode, self::$m_aLanguages))
if (!array_key_exists($sLanguageCode, self::$m_aLanguages))
{
throw new DictExceptionUnknownLanguage($sLanguageCode);
}
@@ -116,50 +115,33 @@ class Dict
* @return string
*/
public static function S($sStringCode, $sDefault = null, $bUserLanguageOnly = false)
{
$aInfo = self::GetLabelAndLangCode($sStringCode, $sDefault, $bUserLanguageOnly);
return $aInfo['label'];
}
/**
* Returns a localised string from the dictonary with its associated lang code
*
* @param string $sStringCode The code identifying the dictionary entry
* @param string $sDefault Default value if there is no match in the dictionary
* @param bool $bUserLanguageOnly True to allow the use of the default language as a fallback, false otherwise
*
* @return array{
* lang: string, label: string
* } with localized label string and used lang code
*/
private static function GetLabelAndLangCode($sStringCode, $sDefault = null, $bUserLanguageOnly = false)
{
// Attempt to find the string in the user language
//
$sLangCode = self::GetUserLanguage();
self::InitLangIfNeeded($sLangCode);
if (! array_key_exists($sLangCode, self::$m_aData))
if (!array_key_exists($sLangCode, self::$m_aData))
{
IssueLog::Warning("Cannot find $sLangCode in all registered dictionaries.");
IssueLog::Warning("Cannot find $sLangCode in dictionnaries. default labels displayed");
// It may happen, when something happens before the dictionaries get loaded
return [ 'label' => $sStringCode, 'lang' => $sLangCode ];
return $sStringCode;
}
$aCurrentDictionary = self::$m_aData[$sLangCode];
if (is_array($aCurrentDictionary) && array_key_exists($sStringCode, $aCurrentDictionary))
{
return [ 'label' => $aCurrentDictionary[$sStringCode], 'lang' => $sLangCode ];
return $aCurrentDictionary[$sStringCode];
}
if (!$bUserLanguageOnly)
{
// Attempt to find the string in the default language
//
self::InitLangIfNeeded(self::$m_sDefaultLanguage);
$aDefaultDictionary = self::$m_aData[self::$m_sDefaultLanguage];
if (is_array($aDefaultDictionary) && array_key_exists($sStringCode, $aDefaultDictionary))
{
return [ 'label' => $aDefaultDictionary[$sStringCode], 'lang' => self::$m_sDefaultLanguage ];
return $aDefaultDictionary[$sStringCode];
}
// Attempt to find the string in english
//
@@ -168,17 +150,17 @@ class Dict
$aDefaultDictionary = self::$m_aData['EN US'];
if (is_array($aDefaultDictionary) && array_key_exists($sStringCode, $aDefaultDictionary))
{
return [ 'label' => $aDefaultDictionary[$sStringCode], 'lang' => 'EN US' ];
return $aDefaultDictionary[$sStringCode];
}
}
// Could not find the string...
//
if (is_null($sDefault))
{
return [ 'label' => $sStringCode, 'lang' => null ];
return $sStringCode;
}
return [ 'label' => $sDefault, 'lang' => null ];
return $sDefault;
}
@@ -194,25 +176,19 @@ class Dict
*/
public static function Format($sFormatCode /*, ... arguments ....*/)
{
['label' => $sLocalizedFormat, 'lang' => $sLangCode] = self::GetLabelAndLangCode($sFormatCode);
$sLocalizedFormat = self::S($sFormatCode);
$aArguments = func_get_args();
array_shift($aArguments);
if ($sLocalizedFormat == $sFormatCode)
{
// Make sure the information will be displayed (ex: an error occuring before the dictionary gets loaded)
return $sFormatCode.' - '.implode(', ', $aArguments);
}
try{
return vsprintf($sLocalizedFormat, $aArguments);
} catch(\Throwable $e){
\IssueLog::Error("Cannot format dict key", null, ["sFormatCode" => $sFormatCode, "sLangCode" => $sLangCode, 'exception_msg' => $e->getMessage() ]);
return $sFormatCode.' - '.implode(', ', $aArguments);
}
return vsprintf($sLocalizedFormat, $aArguments);
}
/**
* Initialize a the entries for a given language (replaces the former Add() method)
* @param string $sLanguageCode Code identifying the language i.e. 'FR-FR', 'EN-US'
@@ -222,7 +198,7 @@ class Dict
{
self::$m_aData[$sLanguageCode] = $aEntries;
}
/**
* Set the list of available languages
* @param hash $aLanguagesList
@@ -283,7 +259,7 @@ class Dict
{
$sDictFile = APPROOT.'env-'.utils::GetCurrentEnvironment().'/dictionaries/'.str_replace(' ', '-', strtolower($sLangCode)).'.dict.php';
require_once($sDictFile);
if (self::GetApcService()->function_exists('apc_store')
&& (self::$m_sApplicationPrefix !== null))
{
@@ -293,7 +269,7 @@ class Dict
}
return $bResult;
}
/**
* Enable caching (cached using APC)
* @param string $sApplicationPrefix The prefix for uniquely identiying this iTop instance
@@ -336,14 +312,14 @@ class Dict
}
}
}
public static function MakeStats($sLanguageCode, $sLanguageRef = 'EN US')
{
$aMissing = array(); // Strings missing for the target language
$aUnexpected = array(); // Strings defined for the target language, but not found in the reference dictionary
$aNotTranslated = array(); // Strings having the same value in both dictionaries
$aOK = array(); // Strings having different values in both dictionaries
foreach (self::$m_aData[$sLanguageRef] as $sStringCode => $sValue)
{
if (!array_key_exists($sStringCode, self::$m_aData[$sLanguageCode]))
@@ -351,7 +327,7 @@ class Dict
$aMissing[$sStringCode] = $sValue;
}
}
foreach (self::$m_aData[$sLanguageCode] as $sStringCode => $sValue)
{
if (!array_key_exists($sStringCode, self::$m_aData[$sLanguageRef]))
@@ -374,7 +350,7 @@ class Dict
}
return array($aMissing, $aUnexpected, $aNotTranslated, $aOK);
}
public static function Dump()
{
MyHelpers::var_dump_html(self::$m_aData);
@@ -397,7 +373,7 @@ class Dict
// No need to actually load the strings since it's only used to know the list of languages
// at setup time !!
}
/**
* Export all the dictionary entries - of the given language - whose code matches the given prefix
* missing entries in the current language will be replaced by entries in the default language
@@ -410,7 +386,7 @@ class Dict
self::InitLangIfNeeded(self::$m_sDefaultLanguage);
$aEntries = array();
$iLength = strlen($sStartingWith);
// First prefill the array with entries from the default language
foreach(self::$m_aData[self::$m_sDefaultLanguage] as $sCode => $sEntry)
{
@@ -419,7 +395,7 @@ class Dict
$aEntries[$sCode] = $sEntry;
}
}
// Now put (overwrite) the entries for the user language
foreach(self::$m_aData[self::GetUserLanguage()] as $sCode => $sEntry)
{

View File

@@ -10,7 +10,6 @@ use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\Column\ColumnUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\MultiColumn\MultiColumnUIBlockFactory;
use Combodo\iTop\Application\Helper\ExportHelper;
require_once(APPROOT.'application/xlsxwriter.class.php');
@@ -83,7 +82,6 @@ class ExcelBulkExport extends TabularBulkExport
case 'xlsx_options':
$oPanel = PanelUIBlockFactory::MakeNeutral(Dict::S('Core:BulkExport:XLSXOptions'));
$oPanel->AddSubBlock(ExportHelper::GetAlertForExcelMaliciousInjection());
$oMulticolumn = MultiColumnUIBlockFactory::MakeStandard();
$oPanel->AddSubBlock($oMulticolumn);

View File

@@ -1,14 +1,27 @@
<?php
/**
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Core\Kpi\KpiLogData;
use Combodo\iTop\Service\Module\ModuleService;
// Copyright (C) 2010-2021 Combodo SARL
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Measures operations duration, memory usage, etc. (and some other KPIs)
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class ExecutionKPI
@@ -17,8 +30,6 @@ class ExecutionKPI
static protected $m_bEnabled_Memory = false;
static protected $m_bBlameCaller = false;
static protected $m_sAllowedUser = '*';
static protected $m_bGenerateLegacyReport = true;
static protected $m_fSlowQueries = 0;
static protected $m_aStats = []; // Recurrent operations
static protected $m_aExecData = []; // One shot operations
@@ -75,39 +86,14 @@ class ExecutionKPI
return false;
}
static public function SetGenerateLegacyReport($bReportExtensionsOnly)
{
self::$m_bGenerateLegacyReport = $bReportExtensionsOnly;
}
static public function SetSlowQueries($fSlowQueries)
{
self::$m_fSlowQueries = $fSlowQueries;
}
static public function GetDescription()
{
$aFeatures = array();
if (self::$m_bEnabled_Duration) $aFeatures[] = 'Duration';
if (self::$m_bEnabled_Memory) $aFeatures[] = 'Memory usage';
$sFeatures = 'Measures: '.implode(', ', $aFeatures);
$sFeatures = implode(', ', $aFeatures);
$sFor = self::$m_sAllowedUser == '*' ? 'EVERYBODY' : "'".trim(self::$m_sAllowedUser)."'";
$sSlowQueries = '';
if (self::$m_fSlowQueries > 0) {
$sSlowQueries = ". Slow Queries: ".self::$m_fSlowQueries."s";
}
$aExtensions = [];
/** @var \iKPILoggerExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iKPILoggerExtension') as $oExtensionInstance) {
$aExtensions[] = ModuleService::GetInstance()->GetModuleNameFromObject($oExtensionInstance);
}
$sExtensions = '';
if (count($aExtensions) > 0) {
$sExtensions = '. KPI Extensions: ['.implode(', ', $aExtensions).']';
}
return "KPI logging is active for $sFor. $sFeatures$sSlowQueries$sExtensions";
return "KPI logging is active for $sFor. Measures: $sFeatures";
}
static public function ReportStats()
@@ -115,28 +101,7 @@ class ExecutionKPI
if (!self::IsEnabled()) return;
global $fItopStarted;
global $iItopInitialMemory;
$sExecId = microtime(); // id to differentiate the hrefs!
$sRequest = $_SERVER['REQUEST_URI'].' ('.$_SERVER['REQUEST_METHOD'].')';
if (isset($_POST['operation'])) {
$sRequest .= ' operation: '.$_POST['operation'];
}
$fStop = MyHelpers::getmicrotime();
if (($fStop - $fItopStarted) > self::$m_fSlowQueries) {
// Invoke extensions to log the KPI operation
/** @var \iKPILoggerExtension $oExtensionInstance */
$iCurrentMemory = self::memory_get_usage();
$iPeakMemory = self::memory_get_peak_usage();
foreach (MetaModel::EnumPlugins('iKPILoggerExtension') as $oExtensionInstance) {
$oKPILogData = new KpiLogData(KpiLogData::TYPE_REQUEST, 'Page', $sRequest, $fItopStarted, $fStop, '', $iItopInitialMemory, $iCurrentMemory, $iPeakMemory);
$oExtensionInstance->LogOperation($oKPILogData);
}
}
if (!self::$m_bGenerateLegacyReport) {
return;
}
$aBeginTimes = array();
foreach (self::$m_aExecData as $aOpStats)
@@ -149,9 +114,9 @@ class ExecutionKPI
$sHtml = "<hr/>";
$sHtml .= "<div style=\"background-color: grey; padding: 10px;\">";
$sHtml .= "<h3><a name=\"".md5($sExecId)."\">KPIs</a> - $sRequest</h3>";
$sHtml .= "<h3><a name=\"".md5($sExecId)."\">KPIs</a> - ".$_SERVER['REQUEST_URI']." (".$_SERVER['REQUEST_METHOD'].")</h3>";
$oStarted = DateTime::createFromFormat('U.u', $fItopStarted);
$sHtml .= '<p>'.$oStarted->format('Y-m-d H:i:s.u').'</p>';
$sHtml .= "<p>".$oStarted->format('Y-m-d H:i:s.u')."</p>";
$sHtml .= "<p>log_kpi_user_id: ".UserRights::GetUserId()."</p>";
$sHtml .= "<div>";
$sHtml .= "<table border=\"1\" style=\"$sTableStyle\">";
@@ -292,7 +257,7 @@ class ExecutionKPI
$sTotalInter = round($fTotalInter, 3);
$sMinInter = round($fMinInter, 3);
$sMaxInter = round($fMaxInter, 3);
if (($fTotalInter >= self::$m_fSlowQueries))
if (($fTotalInter >= $fSlowQueries))
{
if ($bDisplayHeader)
{
@@ -320,19 +285,37 @@ class ExecutionKPI
self::Report($sHtml);
}
public static function InitStats()
{
// Invoke extensions to initialize the KPI statistics
/** @var \iKPILoggerExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iKPILoggerExtension') as $oExtensionInstance) {
$oExtensionInstance->InitStats();
}
}
public function __construct()
{
$this->ResetCounters();
}
self::Push($this);
}
/**
* Stack executions to remove children duration from stats
*
* @param \ExecutionKPI $oExecutionKPI
*/
private static function Push(ExecutionKPI $oExecutionKPI)
{
array_push(self::$m_aExecutionStack, $oExecutionKPI);
}
/**
* Pop current child and count its duration in its parent
*
* @param float|int $fChildDuration
*/
private static function Pop(float $fChildDuration = 0)
{
array_pop(self::$m_aExecutionStack);
// Update the parent's children duration
$oPrevExecutionKPI = end(self::$m_aExecutionStack);
if ($oPrevExecutionKPI) {
$oPrevExecutionKPI->m_fChildrenDuration += $fChildDuration;
}
}
// Get the duration since startup, and reset the counter for the next measure
//
@@ -340,15 +323,9 @@ class ExecutionKPI
{
global $fItopStarted;
if (!self::IsEnabled()) {
return;
}
$aNewEntry = null;
$fStarted = $this->m_fStarted;
$fStopped = $this->m_fStarted;
if (self::$m_bEnabled_Duration) {
if (self::$m_bEnabled_Duration) {
$fStopped = MyHelpers::getmicrotime();
$aNewEntry = array(
'op' => $sOperationDesc,
@@ -359,9 +336,6 @@ class ExecutionKPI
$this->m_fStarted = $fStopped;
}
$iInitialMemory = is_null($this->m_iInitialMemory) ? 0 : $this->m_iInitialMemory;
$iCurrentMemory = 0;
$iPeakMemory = 0;
if (self::$m_bEnabled_Memory)
{
$iCurrentMemory = self::memory_get_usage();
@@ -371,103 +345,40 @@ class ExecutionKPI
}
$aNewEntry['mem_begin'] = $this->m_iInitialMemory;
$aNewEntry['mem_end'] = $iCurrentMemory;
$iPeakMemory = self::memory_get_peak_usage();
$aNewEntry['mem_peak'] = $iPeakMemory;
if (function_exists('memory_get_peak_usage'))
{
$aNewEntry['mem_peak'] = memory_get_peak_usage();
}
// Reset for the next operation (if the object is recycled)
$this->m_iInitialMemory = $iCurrentMemory;
}
if (self::$m_bEnabled_Duration || self::$m_bEnabled_Memory) {
// Invoke extensions to log the KPI operation
/** @var \iKPILoggerExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iKPILoggerExtension') as $oExtensionInstance)
{
$sExtension = ModuleService::GetInstance()->GetModuleNameFromCallStack(1);
$oKPILogData = new KpiLogData(
KpiLogData::TYPE_REPORT,
'Step',
$sOperationDesc,
$fStarted,
$fStopped,
$sExtension,
$iInitialMemory,
$iCurrentMemory,
$iPeakMemory);
$oExtensionInstance->LogOperation($oKPILogData);
}
}
if (!is_null($aNewEntry) && self::$m_bGenerateLegacyReport)
if (!is_null($aNewEntry))
{
self::$m_aExecData[] = $aNewEntry;
}
$this->ResetCounters();
}
public function ComputeStatsForExtension($object, $sMethod)
{
if (!self::IsEnabled()) {
return;
}
$sSignature = ModuleService::GetInstance()->GetModuleMethodSignature($object, $sMethod);
if (utils::StartsWith($sSignature, '[')) {
$this->ComputeStats('Extension', $sSignature);
}
}
public function ComputeStats($sOperation, $sArguments)
{
if (!self::IsEnabled()) {
return;
}
$fDuration = 0;
if (self::$m_bEnabled_Duration) {
$fStopped = MyHelpers::getmicrotime();
$fDuration = $fStopped - $this->m_fStarted;
$aCallstack = [];
if (self::$m_bGenerateLegacyReport) {
if (self::$m_bBlameCaller) {
$aCallstack = MyHelpers::get_callstack(1);
self::$m_aStats[$sOperation][$sArguments][] = [
'time' => $fDuration,
'callers' => $aCallstack,
];
} else {
self::$m_aStats[$sOperation][$sArguments][] = [
'time' => $fDuration
];
}
}
$iInitialMemory = is_null($this->m_iInitialMemory) ? 0 : $this->m_iInitialMemory;
$iCurrentMemory = 0;
$iPeakMemory = 0;
if (self::$m_bEnabled_Memory)
{
$iCurrentMemory = self::memory_get_usage();
$iPeakMemory = self::memory_get_peak_usage();
}
// Invoke extensions to log the KPI operation
/** @var \iKPILoggerExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iKPILoggerExtension') as $oExtensionInstance) {
$sExtension = ModuleService::GetInstance()->GetModuleNameFromCallStack(1);
$oKPILogData = new KpiLogData(
KpiLogData::TYPE_STATS,
$sOperation,
$sArguments,
$this->m_fStarted,
$fStopped,
$sExtension,
$iInitialMemory,
$iCurrentMemory,
$iPeakMemory,
$aCallstack);
$oExtensionInstance->LogOperation($oKPILogData);
}
}
$fSelfDuration = $fDuration - $this->m_fChildrenDuration;
if (self::$m_bBlameCaller) {
self::$m_aStats[$sOperation][$sArguments][] = array(
'time' => $fSelfDuration,
'callers' => MyHelpers::get_callstack(1),
);
} else {
self::$m_aStats[$sOperation][$sArguments][] = array(
'time' => $fSelfDuration,
);
}
}
self::Pop($fDuration);
}
protected function ResetCounters()
@@ -497,7 +408,35 @@ class ExecutionKPI
static protected function memory_get_usage()
{
return memory_get_usage(true);
if (function_exists('memory_get_usage'))
{
return memory_get_usage(true);
}
// Copied from the PHP manual
//
//If its Windows
//Tested on Win XP Pro SP2. Should work on Win 2003 Server too
//Doesn't work for 2000
//If you need it to work for 2000 look at http://us2.php.net/manual/en/function.memory-get-usage.php#54642
if (substr(PHP_OS,0,3) == 'WIN')
{
$output = array();
exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST', $output);
return preg_replace( '/[\D]/', '', $output[5] ) * 1024;
}
else
{
//We now assume the OS is UNIX
//Tested on Mac OS X 10.4.6 and Linux Red Hat Enterprise 4
//This should work on most UNIX systems
$pid = getmypid();
exec("ps -eo%mem,rss,pid | grep $pid", $output);
$output = explode(" ", $output[0]);
//rss is given in 1024 byte units
return $output[1] * 1024;
}
}
static public function memory_get_peak_usage($bRealUsage = false)

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2023 Combodo SARL
// Copyright (C) 2010-2021 Combodo SARL
//
// This file is part of iTop.
//
@@ -448,7 +448,7 @@ class LogFileNameBuilderFactory
/**
* File logging
*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @since 2.7.0 N°2518 N°2793 file log rotation
*/
@@ -1071,23 +1071,16 @@ class DeprecatedCallsLog extends LogAPI
* @uses \set_error_handler() to catch deprecated notices
*
* @since 3.0.0 N°3002 logs deprecated notices in called code
* @since 3.0.4 N°6274 do not set handler when in PHPUnit context (otherwise PHP notices won't be caught)
*/
public static function Enable($sTargetFile = null): void {
public static function Enable($sTargetFile = null): void
{
if (empty($sTargetFile)) {
$sTargetFile = APPROOT.'log/deprecated-calls.log';
}
parent::Enable($sTargetFile);
if (
(
(false === defined(ITOP_PHPUNIT_RUNNING_CONSTANT_NAME))
|| (defined(ITOP_PHPUNIT_RUNNING_CONSTANT_NAME) && (constant(ITOP_PHPUNIT_RUNNING_CONSTANT_NAME) !== true))
)
&& static::IsLogLevelEnabledSafe(self::LEVEL_WARNING, self::ENUM_CHANNEL_PHP_LIBMETHOD)
) {
IssueLog::Trace('Setting '.static::class.' error handler to catch DEPRECATED', static::ENUM_CHANNEL_PHP_LIBMETHOD);
set_error_handler([static::class, 'DeprecatedNoticesErrorHandler'], E_DEPRECATED | E_USER_DEPRECATED);
if (static::IsLogLevelEnabledSafe(self::LEVEL_WARNING, self::ENUM_CHANNEL_PHP_LIBMETHOD)) {
set_error_handler([static::class, 'DeprecatedNoticesErrorHandler']);
}
}
@@ -1184,9 +1177,7 @@ class DeprecatedCallsLog extends LogAPI
}
/**
* @since 3.0.1 3.1.0 N°4725 silently handles ConfigException
* @since 3.0.4 3.1.0 N°4725 remove forgotten throw PHPDoc annotation
*
* @throws \ConfigException
* @link https://www.php.net/debug_backtrace
* @uses \debug_backtrace()
*/
@@ -1515,8 +1506,6 @@ class ExceptionLog extends LogAPI
*/
private static function GetLastEventIssue()
{
$oRet = self::$oLastEventIssue;
self::$oLastEventIssue = null;
return $oRet;
return self::$oLastEventIssue;
}
}

View File

@@ -1430,10 +1430,8 @@ abstract class MetaModel
*
* @return AttributeDefinition[]
* @throws \CoreException
*
* @see GetAttributesList for attcode list
*/
final public static function ListAttributeDefs($sClass)
final static public function ListAttributeDefs($sClass)
{
self::_check_subclass($sClass);
return self::$m_aAttribDefs[$sClass];
@@ -1446,10 +1444,8 @@ abstract class MetaModel
* @param string[] $aDesiredAttTypes Array of AttributeDefinition classes to filter the list on
* @param string|null $sListCode If provided, attributes will be limited to those in this zlist
*
* @return string[] list of attcodes
* @return array
* @throws \CoreException
*
* @see ListAttributeDefs to get AttributeDefinition array instead
*/
final public static function GetAttributesList(string $sClass, array $aDesiredAttTypes = [], ?string $sListCode = null)
{
@@ -3006,12 +3002,14 @@ abstract class MetaModel
// Build the list of available extensions
//
$aInterfaces = [
'iLoginFSMExtension',
'iLogoutExtension',
'iLoginUIExtension',
'iPreferencesExtension',
'iApplicationUIExtension',
'iPreferencesExtension',
'iApplicationObjectExtension',
'iLoginFSMExtension',
'iLoginUIExtension',
'iLogoutExtension',
'iQueryModifier',
'iOnClassInitialization',
'iPopupMenuExtension',
'iPageUIExtension',
'iPageUIBlockExtension',
@@ -3025,12 +3023,9 @@ abstract class MetaModel
'iBackofficeDictEntriesExtension',
'iBackofficeDictEntriesPrefixesExtension',
'iPortalUIExtension',
'iQueryModifier',
'iOnClassInitialization',
'iModuleExtension',
'iKPILoggerExtension',
'ModuleHandlerApiInterface',
'iNewsroomProvider',
'iModuleExtension',
];
foreach($aInterfaces as $sInterface)
{
@@ -6516,13 +6511,6 @@ abstract class MetaModel
*/
public static function Startup($config, $bModelOnly = false, $bAllowCache = true, $bTraceSourceFiles = false, $sEnvironment = 'production')
{
// Startup on a new environment is not supported
static $bStarted = false;
if ($bStarted) {
return;
}
$bStarted = true;
self::$m_sEnvironment = $sEnvironment;
if (!defined('MODULESROOT'))
@@ -6600,9 +6588,7 @@ abstract class MetaModel
ExecutionKPI::EnableDuration(self::$m_oConfig->Get('log_kpi_duration'));
ExecutionKPI::EnableMemory(self::$m_oConfig->Get('log_kpi_memory'));
ExecutionKPI::SetAllowedUser(self::$m_oConfig->Get('log_kpi_user_id'));
ExecutionKPI::SetGenerateLegacyReport(self::$m_oConfig->Get('log_kpi_generate_legacy_report'));
ExecutionKPI::SetSlowQueries(self::$m_oConfig->Get('log_kpi_slow_queries'));
ExecutionKPI::SetAllowedUser(self::$m_oConfig->Get('log_kpi_user_id'));
self::$m_bSkipCheckToWrite = self::$m_oConfig->Get('skip_check_to_write');
self::$m_bSkipCheckExtKeys = self::$m_oConfig->Get('skip_check_ext_keys');
@@ -6727,7 +6713,6 @@ abstract class MetaModel
CMDBSource::InitFromConfig(self::$m_oConfig);
// Later when timezone implementation is correctly done: CMDBSource::SetTimezone($sDBTimezone);
ExecutionKPI::InitStats();
}
/**
@@ -6759,19 +6744,6 @@ abstract class MetaModel
return $value;
}
/**
* @internal Used for resetting the configuration during automated tests
* @param \Config $oConfiguration
*
* @return void
* @since 3.0.4 3.1.1 3.2.0
*/
public static function SetConfig(Config $oConfiguration)
{
self::$m_oConfig = $oConfiguration;
}
/**
* @return Config
*/
@@ -6960,13 +6932,7 @@ abstract class MetaModel
if ($bMustBeFound && empty($aRow))
{
$sNotFoundErrorMessage = "No result for the single row query";
IssueLog::Info($sNotFoundErrorMessage, LogChannels::CMDB_SOURCE, [
'class' => $sClass,
'key' => $iKey,
'sql_query' => $sSQL,
]);
throw new CoreException($sNotFoundErrorMessage);
throw new CoreException("No result for the single row query: '$sSQL'");
}
return $aRow;
@@ -7046,21 +7012,25 @@ abstract class MetaModel
* $bMustBeFound=false)
* @throws CoreException if no result found and $bMustBeFound=true
* @throws ArchivedObjectException if archive mode disabled and result is archived and $bMustBeFound=true
* @throws \Exception
*
*/
public static function GetObject($sClass, $iKey, $bMustBeFound = true, $bAllowAllData = false, $aModifierProperties = null)
{
$oObject = self::GetObjectWithArchive($sClass, $iKey, $bMustBeFound, $bAllowAllData, $aModifierProperties);
if (empty($oObject)) {
if (empty($oObject))
{
return null;
}
if (!utils::IsArchiveMode() && $oObject->IsArchived()) {
if (!utils::IsArchiveMode() && $oObject->IsArchived())
{
if ($bMustBeFound) {
throw new ArchivedObjectException("The object $sClass::$iKey is archived");
} else {
return null;
}
return null;
}
return $oObject;

View File

@@ -22,9 +22,7 @@
* A class to serialize the execution of some code sections
* Emulates the API of PECL Mutex class
* Relies on MySQL locks because the API sem_get is not always present in the
* installed PHP.
*
* @link https://dev.mysql.com/doc/refman/5.7/en/locking-functions.html MySQL locking functions documentation
* installed PHP.
*
* @copyright Copyright (C) 2013-2021 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
@@ -259,7 +257,7 @@ class iTopMutex
$this->hDBLink = CMDBSource::GetMysqliInstance($sServer, $sUser, $sPwd, $sSource, $bTlsEnabled, $sTlsCA, false);
if (!$this->hDBLink) {
throw new MySQLException('Could not connect to the DB server '.mysqli_connect_error().' (mysql errno: '.mysqli_connect_errno(), array('host' => $sDBHost, 'user' => $sDBUser));
throw new Exception("Could not connect to the DB server (host=$sServer, user=$sUser): ".mysqli_connect_error().' (mysql errno: '.mysqli_connect_errno().')');
}
// Make sure that the server variable `wait_timeout` is at least 86400 seconds for this connection,

View File

@@ -117,9 +117,7 @@ abstract class Trigger extends cmdbAbstractObject
$oAction = MetaModel::GetObject('Action', $iActionId);
if ($oAction->IsActive())
{
$oKPI = new ExecutionKPI();
$oAction->DoExecute($this, $aContextArgs);
$oKPI->ComputeStatsForExtension($oAction, 'DoExecute');
}
}
}

View File

@@ -750,25 +750,14 @@ class UserRights
protected static $m_aCacheContactPictureAbsUrl = [];
/** @var UserRightsAddOnAPI $m_oAddOn */
protected static $m_oAddOn;
protected static $m_oUser = null;
protected static $m_oRealUser = null;
protected static $m_oUser;
protected static $m_oRealUser;
protected static $m_sSelfRegisterAddOn = null;
protected static $m_aAdmins = array();
protected static $m_aPortalUsers = array();
/** @var array array('sName' => $sName, 'bSuccess' => $bSuccess); */
private static $m_sLastLoginStatus = null;
/**
* @return void
* @since 3.0.4 3.1.1 3.2.0
*/
protected static function ResetCurrentUserData()
{
self::$m_oUser = null;
self::$m_oRealUser = null;
self::$m_sLastLoginStatus = null;
}
/**
* @param string $sModuleName
*
@@ -787,7 +776,8 @@ class UserRights
}
self::$m_oAddOn = new $sModuleName;
self::$m_oAddOn->Init();
self::ResetCurrentUserData();
self::$m_oUser = null;
self::$m_oRealUser = null;
}
/**
@@ -845,8 +835,6 @@ class UserRights
}
/**
* Set the current user (as part of the login process)
*
* @param string $sLogin Login of the concerned user
* @param string $sAuthentication
*
@@ -873,19 +861,6 @@ class UserRights
return true;
}
/**
* Reset current user and cleanup associated SESSION data
*
* @return void
* @since 3.0.4 3.1.1 3.2.0
*/
public static function Logoff()
{
self::ResetCurrentUserData();
Dict::SetUserLanguage(null);
self::_ResetSessionCache();
}
/**
* @param string $sLogin Login of the user to check the credentials for
* @param string $sPassword
@@ -1110,7 +1085,9 @@ class UserRights
}
/**
* @return string connected {@see User} login field value, otherwise empty string
* Return the current user login or an empty string if nobody connected.
*
* @return string
*/
public static function GetUser()
{
@@ -1558,9 +1535,9 @@ class UserRights
/**
* @param string $sClass
* @param int $iActionCode see UR_ACTION_* constants
* @param DBObjectSet $oInstanceSet
* @param User $oUser
* @param int $iActionCode
* @param \DBObjectSet $oInstanceSet
* @param \User $oUser
*
* @return int (UR_ALLOWED_YES|UR_ALLOWED_NO|UR_ALLOWED_DEPENDS)
* @throws \CoreException

File diff suppressed because one or more lines are too long

View File

@@ -6,7 +6,7 @@
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'CAS:Error:UserNotAllowed' => 'Nem engedélyezett felhasználó',
'CAS:Login:SignIn' => 'Bejelentkezés CAS szerverrel',
'CAS:Login:SignInTooltip' => 'Kattintson ide az azonosításhoz a CAS szerveren',
'CAS:Error:UserNotAllowed' => 'User not allowed~~',
'CAS:Login:SignIn' => 'Sign in with CAS~~',
'CAS:Login:SignInTooltip' => 'Click here to authenticate yourself with the CAS server~~',
));

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-cas/3.0.4',
'authent-cas/3.0.3',
array(
// Identification
//

View File

@@ -49,11 +49,6 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte
protected function OnReadCredentials(&$iErrorCode)
{
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
// Not allowed if not already connected
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
if (empty(Session::Get('login_mode')) || Session::Get('login_mode') == static::LOGIN_MODE)
{
static::InitCASClient();
@@ -119,10 +114,6 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte
if (Session::Get('login_mode') == static::LOGIN_MODE)
{
Session::Unset('phpCAS');
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
// don't display the login page
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
if ($iErrorCode != LoginWebPage::EXIT_CODE_MISSINGLOGIN)
{
$oLoginWebPage = new LoginWebPage();

View File

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

View File

@@ -21,5 +21,5 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:UserLDAP' => 'LDAP felhasználó',
'Class:UserLDAP+' => 'LDAP vagy AD felhasználó',
'Class:UserLDAP+' => '',
));

View File

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

View File

@@ -20,26 +20,26 @@
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:UserLocal' => ITOP_APPLICATION_SHORT.' felhasználó',
'Class:UserLocal+' => 'Rendszeren belül létrehozott felhasználó',
'Class:UserLocal/Attribute:password' => 'Jelszó',
'Class:UserLocal/Attribute:password+' => '',
'Class:UserLocal' => ITOP_APPLICATION_SHORT.' felhasználó',
'Class:UserLocal+' => '',
'Class:UserLocal/Attribute:password' => 'Jelszó',
'Class:UserLocal/Attribute:password+' => '',
'Class:UserLocal/Attribute:expiration' => 'Jelszó lejárati ideje',
'Class:UserLocal/Attribute:expiration+' => 'Jelszó lejárati státusz (bővítmény szükséges hozzá)',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => 'Lejár',
'Class:UserLocal/Attribute:expiration/Value:can_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:never_expire' => 'Soha nem jár le',
'Class:UserLocal/Attribute:expiration/Value:never_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:force_expire' => 'Lejárt',
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'Egyszeri jelszó',
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'A felhasználó nem változtathat jelszót.',
'Class:UserLocal/Attribute:password_renewed_date' => 'Jelszó megújítás ideje',
'Class:UserLocal/Attribute:password_renewed_date+' => 'A jelszó legutóbbi módosításának időpontja',
'Class:UserLocal/Attribute:expiration' => 'Password expiration~~',
'Class:UserLocal/Attribute:expiration+' => 'Password expiration status (requires an extension to have an effect)~~',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => 'Can expire~~',
'Class:UserLocal/Attribute:expiration/Value:can_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:never_expire' => 'Never expire~~',
'Class:UserLocal/Attribute:expiration/Value:never_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:force_expire' => 'Expired~~',
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '~~',
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => 'One-time Password~~',
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => 'Password cannot be changed by the user.~~',
'Class:UserLocal/Attribute:password_renewed_date' => 'Password renewal~~',
'Class:UserLocal/Attribute:password_renewed_date+' => 'When the password was last changed~~',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'A jelszónak legalább 8 karakterből kell állnia, és tartalmaznia kell nagybetűket, kisbetűket, numerikus és speciális karaktereket.',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => 'Password must be at least 8 characters and include uppercase, lowercase, numeric and special characters.~~',
'UserLocal:password:expiration' => 'Az alábbi mezőkhöz egy bővítmény szükséges',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => 'A jelszó lejárati idejének beállítása "Egyszeri jelszóra" nem engedélyezett a saját felhasználó számára.',
'UserLocal:password:expiration' => 'The fields below require an extension~~',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => 'Setting password expiration to "One-time password" is not allowed for your own User~~',
));

View File

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

View File

@@ -22,5 +22,5 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'theme:darkmoon' => 'Dark moon',
));
'theme:darkmoon' => 'Dark moon~~',
));

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'combodo-backoffice-darkmoon-theme/3.0.4',
'combodo-backoffice-darkmoon-theme/3.0.3',
array(
// Identification
//

View File

@@ -22,73 +22,73 @@
*/
// Database inconsistencies
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
// Dictionary entries go here
'Menu:DBToolsMenu' => 'DB eszközök',
'DBTools:Class' => 'Osztály',
'DBTools:Title' => 'Adatbázis karbantartó eszközök',
'DBTools:ErrorsFound' => 'Hibák vannak',
'DBTools:Indication' => 'Fontos: az adatbázisban lévő hibák kijavítása után újra kell futtatni az elemzést, mivel új következetlenségek keletkezhetnek.',
'DBTools:Disclaimer' => 'A JAVÍTÁSOK FUTTATÁSA ELŐTT MINDIG KÉSZÍTSEN BIZTONSÁGI MENTÉST AZ ADATBÁZISÁRÓL.',
'DBTools:Error' => 'Hiba',
'DBTools:Count' => 'Sorszám',
'DBTools:SQLquery' => 'SQL lekérdezés',
'DBTools:FixitSQLquery' => 'SQL lekérdezés To Fix it (indication)',
'DBTools:SQLresult' => 'SQL eredmény',
'DBTools:NoError' => 'Az adatbázis OK',
'DBTools:HideIds' => 'Hibalista',
'DBTools:ShowIds' => 'Részletes nézet',
'DBTools:ShowReport' => 'Jelentés',
'DBTools:IntegrityCheck' => 'Integritás ellenőrzés',
'DBTools:FetchCheck' => 'Lehívás ellenőrzés (hosszú)',
'DBTools:SelectAnalysisType' => 'Válasszon elemzés típust',
// Dictionary entries go here
'Menu:DBToolsMenu' => 'DB Tools~~',
'DBTools:Class' => 'Class~~',
'DBTools:Title' => 'Database Maintenance Tools~~',
'DBTools:ErrorsFound' => 'Errors Found~~',
'DBTools:Indication' => 'Important: after fixing errors in the database you\'ll have to run the analysis again as new inconsistencies will be generated~~',
'DBTools:Disclaimer' => 'DISCLAIMER: BACKUP YOUR DATABASE BEFORE RUNNING THE FIXES~~',
'DBTools:Error' => 'Error~~',
'DBTools:Count' => 'Count~~',
'DBTools:SQLquery' => 'SQL query~~',
'DBTools:FixitSQLquery' => 'SQL query To Fix it (indication)~~',
'DBTools:SQLresult' => 'SQL result~~',
'DBTools:NoError' => 'The database is OK~~',
'DBTools:HideIds' => 'Error List~~',
'DBTools:ShowIds' => 'Detailed view~~',
'DBTools:ShowReport' => 'Report~~',
'DBTools:IntegrityCheck' => 'Integrity check~~',
'DBTools:FetchCheck' => 'Fetch Check (long)~~',
'DBTools:SelectAnalysisType' => 'Select analysis type~~',
'DBTools:Analyze' => 'Elemzés',
'DBTools:Details' => 'Részletek megjelenítése',
'DBTools:ShowAll' => 'Minden hiba megjelenítése',
'DBTools:Analyze' => 'Analyze~~',
'DBTools:Details' => 'Show Details~~',
'DBTools:ShowAll' => 'Show All Errors~~',
'DBTools:Inconsistencies' => 'Adatbázis inkonzisztenciák',
'DBTools:DetailedErrorTitle' => '%2$s hiba a %1$s osztályban: %3$s',
'DBTools:Inconsistencies' => 'Database inconsistencies~~',
'DBTools:DetailedErrorTitle' => '%2$s error(s) in class %1$s: %3$s~~',
'DBAnalyzer-Integrity-OrphanRecord' => 'Árva rekord a %1$s -ban, kell hogy legyen megfelelője a %2$s táblázatban',
'DBAnalyzer-Integrity-InvalidExtKey' => 'Érvénytelen a %1$s külső kulcs (oszlop: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-MissingExtKey' => 'Hiányzik a %1$s külső külcs (oszlop: %2$s.%3$s)',
'DBAnalyzer-Integrity-InvalidValue' => '%1$s értéke érvénytelen (oszlop: %2$s.%3$s)',
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Néhány felhasználónak egyáltalán nincs fiókja',
'DBAnalyzer-Integrity-HKInvalid' => 'Sérült a %1$s hierarchikus kulcs',
'DBAnalyzer-Fetch-Count-Error' => 'Lekérési hiba a %1$s -nál, %2$d bejegyzés lekérve / %3$d megszámlálva',
'DBAnalyzer-Integrity-FinalClass' => 'A %2$s.%1$s mezőnek ugyanolyan értékűnek kell lennie mint a %3$s.%1$s',
'DBAnalyzer-Integrity-RootFinalClass' => '%2$s.%1$s mezőnek érvényes osztályt kell tartalmaznia',
'DBAnalyzer-Integrity-OrphanRecord' => 'Orphan record in `%1$s`, it should have its counterpart in table `%2$s`~~',
'DBAnalyzer-Integrity-InvalidExtKey' => 'Invalid external key %1$s (column: `%2$s.%3$s`)~~',
'DBAnalyzer-Integrity-MissingExtKey' => 'Missing external key %1$s (column: `%2$s.%3$s`)~~',
'DBAnalyzer-Integrity-InvalidValue' => 'Invalid value for %1$s (column: `%2$s.%3$s`)~~',
'DBAnalyzer-Integrity-UsersWithoutProfile' => 'Some user accounts have no profile at all~~',
'DBAnalyzer-Integrity-HKInvalid' => 'Broken hierarchical key `%1$s`~~',
'DBAnalyzer-Fetch-Count-Error' => 'Fetch count error in `%1$s`, %2$d entries fetched / %3$d counted~~',
'DBAnalyzer-Integrity-FinalClass' => 'Field `%2$s`.`%1$s` must have the same value as `%3$s`.`%1$s`~~',
'DBAnalyzer-Integrity-RootFinalClass' => 'Field `%2$s`.`%1$s` must contains a valid class~~',
));
// Database Info
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'DBTools:DatabaseInfo' => 'Adatbázis információ',
'DBTools:Base' => 'Bázis',
'DBTools:Size' => 'Méret',
'DBTools:DatabaseInfo' => 'Database Information~~',
'DBTools:Base' => 'Base~~',
'DBTools:Size' => 'Size~~',
));
// Lost attachments
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'DBTools:LostAttachments' => 'Elveszett mellékletek',
'DBTools:LostAttachments:Disclaimer' => 'Itt kereshet az adatbázisban elveszett vagy elkeveredett mellékletek után. Ez NEM egy adat-visszaállítási eszköz, nem állítja vissza a törölt adatokat.',
'DBTools:LostAttachments' => 'Lost attachments~~',
'DBTools:LostAttachments:Disclaimer' => 'Here you can search your database for lost or misplaced attachments. This is NOT a data recovery tool, is does not retrieve deleted data.~~',
'DBTools:LostAttachments:Button:Analyze' => 'Elemzés',
'DBTools:LostAttachments:Button:Restore' => 'Visszaállítás',
'DBTools:LostAttachments:Button:Restore:Confirm' => 'Ez a művelet nem vonható vissza, kérjük, erősítse meg, hogy vissza kívánja-e állítani a kiválasztott fájlokat.',
'DBTools:LostAttachments:Button:Busy' => 'Kérem várjon...',
'DBTools:LostAttachments:Button:Analyze' => 'Analyze~~',
'DBTools:LostAttachments:Button:Restore' => 'Restore~~',
'DBTools:LostAttachments:Button:Restore:Confirm' => 'This action cannot be undone, please confirm that you want to restore the selected files.~~',
'DBTools:LostAttachments:Button:Busy' => 'Please wait...~~',
'DBTools:LostAttachments:Step:Analyze' => 'Először az adatbázis elemzésével keresse meg az elveszett/áthelyezett mellékleteket.',
'DBTools:LostAttachments:Step:Analyze' => 'First, search for lost/misplaced attachments by analyzing the database.~~',
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Elemzés eredménye:',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => 'Nagyszerű! Úgy tűnik, minden a helyén van.',
'DBTools:LostAttachments:Step:AnalyzeResults:Some' => 'Úgy tűnik, hogy néhány melléklet (%1$d) rossz helyen van. Nézze meg az alábbi listát, és ellenőrizze azokat, amelyeket szeretne áthelyezni.',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:Filename' => 'Fájlnév',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:CurrentLocation' => 'Jelenlegi helye',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:TargetLocation' => 'Áthelyezés...',
'DBTools:LostAttachments:Step:AnalyzeResults' => 'Analyze results:~~',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => 'Great! Every thing seems to be at the right place.~~',
'DBTools:LostAttachments:Step:AnalyzeResults:Some' => 'Some attachments (%1$d) seem to be misplaced. Take a look at the following list and check the ones you would like to move.~~',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:Filename' => 'Filename~~',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:CurrentLocation' => 'Current location~~',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:TargetLocation' => 'Move to...~~',
'DBTools:LostAttachments:Step:RestoreResults' => 'Visszaállítás eredménye:',
'DBTools:LostAttachments:Step:RestoreResults:Results' => '%1$d/%2$d melléklet lett visszaállítva.',
'DBTools:LostAttachments:Step:RestoreResults' => 'Restore results:~~',
'DBTools:LostAttachments:Step:RestoreResults:Results' => '%1$d/%2$d attachments were restored.~~',
'DBTools:LostAttachments:StoredAsInlineImage' => 'Soron belüli képként tárolva',
'DBTools:LostAttachments:History' => 'A %1$s melléklet visszaállítva a DB eszközzel'
'DBTools:LostAttachments:StoredAsInlineImage' => 'Stored as inline image~~',
'DBTools:LostAttachments:History' => 'Attachment "%1$s" restored with DB tools~~'
));

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'combodo-db-tools/3.0.4',
'combodo-db-tools/3.0.3',
array(
// Identification
//

View File

@@ -21,24 +21,26 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Attachments:TabTitle_Count' => 'Mellékletek (%1$d)',
'Attachments:EmptyTabTitle' => 'Mellékletek',
'Attachments:FieldsetTitle' => 'Mellékletek',
'Attachments:DeleteBtn' => 'Törlés',
'Attachments:History_File_Added' => '%1$s melléklet hozzáadva',
'Attachments:History_File_Removed' => '%1$s melléklet eltávolítva',
'Attachments:AddAttachment' => 'Melléklet hozzáadása: ',
'Attachments:UploadNotAllowedOnThisSystem' => 'A fájlfeltöltés nem engedélyezett ezen a rendszeren',
'Attachment:Max_Go' => '(Maximum fájlméret: %1$s GB)',
'Attachment:Max_Mo' => '(Maximum fájlméret: %1$s MB)',
'Attachment:Max_Ko' => '(Maximum fájlméret: %1$s KB)',
'Attachments:NoAttachment' => 'Nincs melléklet. ',
'Attachments:PreviewNotAvailable' => 'Az előnézet nem érhető el ilyen típusú melléklethez',
'Attachments:Error:FileTooLarge' => 'Túl nagy a %1$s fájl a feltöltéshez.',
'Attachments:Error:UploadedFileEmpty' => 'A kapott fájl üres, ezért nem csatolható. Vagy egy üres fájlt húzott be, vagy kérdezze meg a rendszergazdát, hátha az iTop szerver lemeze telt meg.',
'Attachments:Render:Icons' => 'Mutassa ikonként',
'Attachments:Render:Table' => 'Mutassa listaként',
'UI:Attachments:DropYourFileHint' => 'Húzza a fájlokat erre a területre',
'Attachments:TabTitle_Count' => 'Attachments (%1$d)~~',
'Attachments:EmptyTabTitle' => 'Attachments~~',
'Attachments:FieldsetTitle' => 'Attachments~~',
'Attachments:DeleteBtn' => 'Delete~~',
'Attachments:History_File_Added' => 'Attachment %1$s added.~~',
'Attachments:History_File_Removed' => 'Attachment %1$s removed.~~',
'Attachments:AddAttachment' => 'Add attachment: ~~',
'Attachments:UploadNotAllowedOnThisSystem' => 'File upload in NOT allowed on this system.~~',
'Attachment:Max_Go' => '(Maximum file size: %1$s Go)~~',
'Attachment:Max_Mo' => '(Maximum file size: %1$s Mo)~~',
'Attachment:Max_Ko' => '(Maximum file size: %1$s Ko)~~',
'Attachments:NoAttachment' => 'No attachment. ~~',
'Attachments:PreviewNotAvailable' => 'Preview not available for this type of attachment.~~',
'Attachments:Error:FileTooLarge' => 'File is too large to be uploaded. %1$s~~',
'Attachments:Error:UploadedFileEmpty' => 'The received file is empty and cannot be attached.
Either you have pushed an empty file,
or ask your iTop administrator if the iTop server disk is full.~~',
'Attachments:Render:Icons' => 'Display as icons~~',
'Attachments:Render:Table' => 'Display as list~~',
'UI:Attachments:DropYourFileHint' => 'Drop files anywhere in this area~~',
));
//
@@ -46,40 +48,40 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Attachment' => 'Mellékletek',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Lejárat',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Átmeneti azonosító',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Elem típus',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Elem',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Elem szervezeti egység',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Tartalom',
'Class:Attachment/Attribute:contents+' => '~~',
'Class:Attachment' => 'Attachment~~',
'Class:Attachment+' => '~~',
'Class:Attachment/Attribute:expire' => 'Expire~~',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:temp_id' => 'Temporary id~~',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:item_class' => 'Item class~~',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => 'Item~~',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => 'Item organization~~',
'Class:Attachment/Attribute:item_org_id+' => '~~',
'Class:Attachment/Attribute:contents' => 'Contents~~',
'Class:Attachment/Attribute:contents+' => '~~',
));
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Attachments:File:Thumbnail' => 'Ikon',
'Attachments:File:Name' => 'Fájlnév',
'Attachments:File:Date' => 'Feltöltés dátuma',
'Attachments:File:Uploader' => 'Feltöltötte ',
'Attachments:File:Size' => 'Méret',
'Attachments:File:MimeType' => 'Típus',
'Attachments:File:Thumbnail' => 'Icon~~',
'Attachments:File:Name' => 'File name~~',
'Attachments:File:Date' => 'Upload date~~',
'Attachments:File:Uploader' => 'Uploaded by~~',
'Attachments:File:Size' => 'Size~~',
'Attachments:File:MimeType' => 'Type~~',
));
//
// Class: Attachment
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Attachment/Attribute:creation_date' => 'Létrehozás dátuma',
'Class:Attachment/Attribute:creation_date+' => '~~',
'Class:Attachment/Attribute:user_id' => 'Felhasználó',
'Class:Attachment/Attribute:user_id+' => '~~',
'Class:Attachment/Attribute:contact_id' => 'Kapcsolattartó',
'Class:Attachment/Attribute:contact_id+' => '~~',
'Class:Attachment/Attribute:creation_date' => 'Creation date~~',
'Class:Attachment/Attribute:creation_date+' => '~~',
'Class:Attachment/Attribute:user_id' => 'User id~~',
'Class:Attachment/Attribute:user_id+' => '~~',
'Class:Attachment/Attribute:contact_id' => 'Contact id~~',
'Class:Attachment/Attribute:contact_id+' => '~~',
));

View File

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

View File

@@ -22,39 +22,39 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'bkp-backup-running' => 'A mentés fut. Kérem várjon...',
'bkp-restore-running' => 'A visszaállítás fut. Kérem várjon...',
'bkp-backup-running' => 'A backup is running. Please wait...~~',
'bkp-restore-running' => 'A restore is running. Please wait...~~',
'Menu:BackupStatus' => 'Biztonsági mentés',
'bkp-status-title' => 'Adatbázis biztonsági mentés',
'bkp-status-checks' => 'Beállítás és ellenőrzés',
'bkp-mysqldump-ok' => 'mysqldump megvan: %1$s',
'bkp-mysqldump-notfound' => 'mysqldump nem található: %1$s - Győződjön meg róla, hogy telepítve van és szerepel az elérési útvonalban, vagy szerkessze a konfigurációs fájlt a mysql_bindir beállításához..',
'bkp-mysqldump-issue' => 'mysqldump nem hajtható végre (retcode=%1$d): Győződjön meg róla, hogy telepítve van és szerepel az elérési útvonalban, vagy szerkessze a konfigurációs fájlt a mysql_bindir beállításához.',
'bkp-missing-dir' => 'A <code>%1$s</code> célkönyvtár nem található',
'bkp-free-disk-space' => '<b>%1$s szabad</b> a <code>%2$s</code> -ből',
'bkp-dir-not-writeable' => '%1$s nem írható',
'bkp-wrong-format-spec' => 'A fájlnevek formázására vonatkozó jelenlegi specifikáció helytelen (%1$s). Alapértelmezett specifikáció lesz érvényben: %2$s',
'bkp-name-sample' => 'A mentési fájlok neve a DB azonosítóktól, a dátumtól és az időponttól függ. Példa: %1$s',
'bkp-week-days' => 'Biztonsági mentés lesz végrehajtva <b>minden %1$s %2$s -kor</b>',
'bkp-retention' => 'Legfeljebb <b>%1$d biztonsági mentés lesz megőrizve</b> a célkönyvtárban.',
'bkp-next-to-delete' => 'Törölve lesz a következő mentés alkalmával (lásd a "retention_count" beállítást)',
'bkp-table-file' => 'Fájl',
'bkp-table-file+' => 'Csak a .zip kiterjesztésű fájlokat tekintjük biztonsági mentésnek.',
'bkp-table-size' => 'Méret',
'bkp-table-size+' => '~~',
'bkp-table-actions' => 'Műveletek',
'bkp-table-actions+' => '~~',
'bkp-status-backups-auto' => 'Automatikus biztonsági mentés',
'bkp-status-backups-manual' => 'Manuális biztonsági mentés',
'bkp-status-backups-none' => 'Még nincs biztonsági mentés',
'bkp-next-backup' => 'A következő mentés <b>%1$s</b> (%2$s) fog lefutni %3$s -kor',
'bkp-next-backup-unknown' => 'A következő mentés még <b>nincs ütemezve</b>',
'bkp-button-backup-now' => 'Mentés most!',
'bkp-button-restore-now' => 'Visszaállítás!',
'bkp-confirm-backup' => 'Erősítse meg, hogy a biztonsági mentést most kéri.',
'bkp-confirm-restore' => 'Kérjük, erősítse meg, hogy vissza szeretné állítani a %1$s biztonsági mentést.',
'bkp-wait-backup' => 'Várjon a mentés befejezéséig...',
'bkp-wait-restore' => 'Várjon a visszaállítás befejezéséig...',
'bkp-success-restore' => 'A visszaállítás sikerült.',
'Menu:BackupStatus' => 'Scheduled Backups~~',
'bkp-status-title' => 'Scheduled Backups~~',
'bkp-status-checks' => 'Settings and checks~~',
'bkp-mysqldump-ok' => 'mysqldump is present: %1$s~~',
'bkp-mysqldump-notfound' => 'mysqldump could not be found: %1$s - Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir.~~',
'bkp-mysqldump-issue' => 'mysqldump could not be executed (retcode=%1$d): Please make sure it is installed and in the path, or edit the configuration file to tune mysql_bindir~~',
'bkp-missing-dir' => 'The target directory <code>%1$s</code> could not be found~~',
'bkp-free-disk-space' => '<b>%1$s free</b> in <code>%2$s</code>~~',
'bkp-dir-not-writeable' => '%1$s is not writeable~~',
'bkp-wrong-format-spec' => 'The current specification to format the file names is wrong (%1$s). A default specification will apply: %2$s~~',
'bkp-name-sample' => 'Backup files are named depending on DB identifiers, date and time. Example: %1$s~~',
'bkp-week-days' => 'Backups will occur <b>every %1$s at %2$s</b>~~',
'bkp-retention' => 'At most <b>%1$d backup files will be kept</b> in the target directory.~~',
'bkp-next-to-delete' => 'Will be deleted when the next backup occurs (see the setting "retention_count")~~',
'bkp-table-file' => 'File~~',
'bkp-table-file+' => 'Only files having the extension .zip are considered as being backup files~~',
'bkp-table-size' => 'Size~~',
'bkp-table-size+' => '~~',
'bkp-table-actions' => 'Actions~~',
'bkp-table-actions+' => '~~',
'bkp-status-backups-auto' => 'Scheduled backups~~',
'bkp-status-backups-manual' => 'Manual backups~~',
'bkp-status-backups-none' => 'No backup yet~~',
'bkp-next-backup' => 'The next backup will occur on <b>%1$s</b> (%2$s) at %3$s~~',
'bkp-next-backup-unknown' => 'The next backup is <b>not scheduled</b> yet.~~',
'bkp-button-backup-now' => 'Backup now!~~',
'bkp-button-restore-now' => 'Restore!~~',
'bkp-confirm-backup' => 'Please confirm that you do request the backup to occur right now.~~',
'bkp-confirm-restore' => 'Please confirm that you do want to restore the backup %1$s.~~',
'bkp-wait-backup' => 'Please wait for the backup to complete...~~',
'bkp-wait-restore' => 'Please wait for the restore to complete...~~',
'bkp-success-restore' => 'Restore successfully completed.~~',
));

View File

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

View File

@@ -31,24 +31,24 @@
// Class: lnkFunctionalCIToTicket
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:lnkFunctionalCIToTicket' => 'Funkcionális CI / Hibajegy',
'Class:lnkFunctionalCIToTicket+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Hibajegy',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Referenciaszám',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Hibajegy tárgya',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id' => 'CI',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name' => 'CI név',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact' => 'Hatása (szöveg)',
'Class:lnkFunctionalCIToTicket/Attribute:impact+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => 'Hatás kód',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:manual' => 'Kézzel hozzáadva',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:computed' => 'Számított',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:not_impacted' => 'Nincs hatása',
'Class:lnkFunctionalCIToTicket' => 'Link FunctionalCI / Ticket~~',
'Class:lnkFunctionalCIToTicket+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Ticket~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Ref~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => 'Ticket title~~',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id' => 'CI~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name' => 'CI Name~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact' => 'Impact (text)~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => 'Impact~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:manual' => 'Added manually~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:computed' => 'Computed~~',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:not_impacted' => 'Not impacted~~',
));
//
@@ -56,16 +56,16 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:lnkFunctionalCIToProviderContract' => 'Funkcionális CI / Szolgáltatói szerződés',
'Class:lnkFunctionalCIToProviderContract+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Szolgáltatói szerződés',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => 'Szolgáltatói szerződés név',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => 'CI',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => 'CI név',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '~~',
'Class:lnkFunctionalCIToProviderContract' => 'Link FunctionalCI / ProviderContract~~',
'Class:lnkFunctionalCIToProviderContract+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Provider contract~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => 'Provider contract Name~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => 'CI~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => 'CI Name~~',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '~~',
));
//
@@ -73,16 +73,16 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:lnkFunctionalCIToService' => 'Funkcionális CI / Szolgáltatás',
'Class:lnkFunctionalCIToService+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:service_id' => 'Szolgáltatás',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:service_name' => 'Szolgáltatás név',
'Class:lnkFunctionalCIToService/Attribute:service_name+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id' => 'CI',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name' => 'CI név',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name+' => '~~',
'Class:lnkFunctionalCIToService' => 'Link FunctionalCI / Service~~',
'Class:lnkFunctionalCIToService+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:service_id' => 'Service~~',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:service_name' => 'Service Name~~',
'Class:lnkFunctionalCIToService/Attribute:service_name+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id' => 'CI~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id+' => '~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name' => 'CI Name~~',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name+' => '~~',
));
//
@@ -90,10 +90,10 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:FunctionalCI/Attribute:providercontracts_list' => 'Szolgáltatói szerződések',
'Class:FunctionalCI/Attribute:providercontracts_list+' => 'Ehhez a konfigurációs elemhez tartozó beszállítói szerződések',
'Class:FunctionalCI/Attribute:services_list' => 'Szolgáltatások',
'Class:FunctionalCI/Attribute:services_list+' => 'Szolgáltatások amelyekre hatással vannak ez a konfigurációs elem',
'Class:FunctionalCI/Attribute:tickets_list' => 'Hibajegyek',
'Class:FunctionalCI/Attribute:tickets_list+' => 'Hibajegyek ehhez a konfigurációs elemhez',
'Class:FunctionalCI/Attribute:providercontracts_list' => 'Provider contracts~~',
'Class:FunctionalCI/Attribute:providercontracts_list+' => 'All the provider contracts for this configuration item~~',
'Class:FunctionalCI/Attribute:services_list' => 'Services~~',
'Class:FunctionalCI/Attribute:services_list+' => 'All the services impacted by this configuration item~~',
'Class:FunctionalCI/Attribute:tickets_list' => 'Tickets~~',
'Class:FunctionalCI/Attribute:tickets_list+' => 'All the tickets for this configuration item~~',
));

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-cmdb-ticket/3.0.4',
'itop-bridge-cmdb-ticket/3.0.3',
array(
// Identification
//

View File

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

View File

@@ -20,29 +20,29 @@
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:ChangeManagement' => 'Változáskezelés',
'Menu:Change:Overview' => 'Áttekintő',
'Menu:Change:Overview+' => 'Áttekintő oldal',
'Menu:NewChange' => 'Új változás',
'Menu:NewChange+' => 'Új változásjegy létrehozása',
'Menu:SearchChanges' => 'Változás keresés',
'Menu:SearchChanges+' => 'Változásjegy keresés',
'Menu:Change:Shortcuts' => 'Gyorsgombok',
'Menu:Change:Shortcuts+' => 'Gyorselérés gombok',
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
'Menu:WaitingAcceptance+' => 'Elfogadásra váró változások',
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
'Menu:WaitingApproval+' => 'Jóváhagyásra váró változások',
'Menu:Changes' => 'Nyitott változási kérelmek',
'Menu:Changes+' => 'Nyitott változási kérelmek összesítése',
'Menu:MyChanges' => 'Hozzám rendelt változások',
'Menu:MyChanges+' => 'Ügyintézőként hozzám rendelt változások',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Változások kategóriánként az elmúlt 7 napban',
'UI-ChangeManagementOverview-Last-7-days' => 'A változások száma az elmúlt 7 napban',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Változások tartományonként az elmúlt 7 napban',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Változások állapotuk szerint az elmúlt 7 napban',
'Tickets:Related:OpenChanges' => 'Nyitott változások',
'Tickets:Related:RecentChanges' => 'Legutóbbi változások (72h)',
'Menu:ChangeManagement' => 'Változás menedzsment',
'Menu:Change:Overview' => 'Áttekintő',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Új változás',
'Menu:NewChange+' => '',
'Menu:SearchChanges' => 'Változás keresés',
'Menu:SearchChanges+' => '',
'Menu:Change:Shortcuts' => 'Gyorsmenü',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => 'Nyitott változási igények',
'Menu:Changes+' => '',
'Menu:MyChanges' => 'Hozzám rendelt változások',
'Menu:MyChanges+' => '',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Changes by category for the last 7 days~~',
'UI-ChangeManagementOverview-Last-7-days' => 'Number of changes for the last 7 days~~',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Changes by domain for the last 7 days~~',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Changes by status for the last 7 days~~',
'Tickets:Related:OpenChanges' => 'Open changes~~',
'Tickets:Related:RecentChanges' => 'Recent changes (72h)~~',
));
// Dictionnay conventions
@@ -61,102 +61,102 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Change' => 'Változás',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Állapot',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Új',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => 'Ellenőrzött',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Elutasított',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Hozzárendelt',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => 'Tervezett és ütemezett',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Jóváhagyott',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => 'Nem jóváhagyott',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => 'Végrehajtott',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => 'Felügyelt',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Lezárt',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => 'Indoklás',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => 'Kérelmező',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => 'Kérelmező email címe',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:creation_date' => 'Létrehozás dátuma',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:impact' => 'Hatása',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:supervisor_group_id' => 'Supervisor csoport',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => 'Supervisor csoport név',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => 'Supervisor',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Attribute:supervisor_email' => 'Supervisor email címe',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => 'Menedzser csoport',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => 'Menedzser csoport név',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => 'Menedzser',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => 'Menedzser email címe',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => 'Üzemszünet',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nem',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Igen',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:fallback' => 'Visszavonás',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:parent_id' => 'Fölérendelt változás',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => 'Referenciaszám',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
'Class:Change/Attribute:related_request_list+' => 'Ehhez a változáshoz kapcsolódó felhasználói kérelmek',
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
'Class:Change/Attribute:related_problems_list+' => 'Ehhez a változáshoz kapcsolódó problémák',
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
'Class:Change/Attribute:related_incident_list+' => 'Ehhez a változáshoz kapcsolódó incidensek',
'Class:Change/Attribute:child_changes_list' => 'Kapcsolódó változások',
'Class:Change/Attribute:child_changes_list+' => 'Ehhez a változáshoz kapcsolódó változások',
'Class:Change/Attribute:parent_id_friendlyname' => 'Fölérendelt változás rövid név',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Változás típus',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
'Class:Change/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => 'Elutasítás',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Újranyitás',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => 'Tervezés',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => 'Újratervezés',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => 'Nincs jóváhagyás',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => 'Megvalósítás alatt',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => 'Felügyelet',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_finish' => 'Befejezés',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change' => 'Változás',
'Class:Change+' => '',
'Class:Change/Attribute:status' => 'Státusz',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => 'Új',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => 'Ellenőrzött',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => 'Visszautasított',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => 'Hozzárendelt',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => 'Tervezett és ütemezett',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => 'Jóváhagyott',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => 'Nem jóváhagyott',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => 'Végrehajtott',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => 'Felügyelet',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:closed' => 'Lezárt',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => 'Ok',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => 'Igénylő',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => 'Igénylő e-mail',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:creation_date' => 'Létrehozás dátuma',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:impact' => 'Hatás',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:supervisor_group_id' => 'Supervisor csoport',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => 'Supervisor csoport',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => 'Supervisor',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Attribute:supervisor_email' => 'Supervisor',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => 'Menedzser csoport',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => 'Menedzser csoport',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => 'Menedzser',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => 'Menedzser',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => 'Leállás',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => 'Nem',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => 'Igen',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:fallback' => 'Visszatervezés',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:parent_id' => 'Parent change~~',
'Class:Change/Attribute:parent_id+' => '~~',
'Class:Change/Attribute:parent_name' => 'Parent change Ref~~',
'Class:Change/Attribute:parent_name+' => '~~',
'Class:Change/Attribute:related_request_list' => 'Related requests~~',
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
'Class:Change/Attribute:related_problems_list' => 'Related problems~~',
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
'Class:Change/Attribute:related_incident_list' => 'Related incidents~~',
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
'Class:Change/Attribute:child_changes_list' => 'Child changes~~',
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent friendly name~~',
'Class:Change/Attribute:parent_id_friendlyname+' => '~~',
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Change type~~',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '~~',
'Class:Change/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => 'Visszautasítás',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_reopen' => 'Újranyitás',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => 'Tervezés',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => 'Újratervezés',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => 'Visszautasítás',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => 'Végrehajtás',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => 'Felügyelet',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_finish' => 'Befejezés',
'Class:Change/Stimulus:ev_finish+' => '',
));
//
@@ -164,30 +164,30 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:RoutineChange' => 'Szokásos változás',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => 'Elutasítás',
'Class:RoutineChange/Stimulus:ev_reject+' => '',
'Class:RoutineChange/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => 'Tervezés',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:RoutineChange/Stimulus:ev_approve+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => 'Nincs jóváhagyás',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => 'Megvalósítás alatt',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => 'Befejezés',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
'Class:RoutineChange' => 'Szokásos változás',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => 'Visszautasítás',
'Class:RoutineChange/Stimulus:ev_reject+' => '~~',
'Class:RoutineChange/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => 'Tervezés',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:RoutineChange/Stimulus:ev_approve+' => '~~',
'Class:RoutineChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => 'Visszautasítás',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '~~',
'Class:RoutineChange/Stimulus:ev_implement' => 'Végrehajtás',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => 'Befejezés',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
));
//
@@ -195,34 +195,34 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:ApprovedChange' => 'Jóváhagyott változások',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => 'Jóváhagyás dátuma',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => 'Megjegyzés a jóváhagyáshoz',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => 'Elutasítás',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => 'Tervezés',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Nincs jóváhagyás',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => 'Megvalósítás alatt',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => 'Befejezés',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
'Class:ApprovedChange' => 'Jóváhagyott változások',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => 'Jóváhagyás dátuma',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => 'Megjegyzés a jóváhagyáshoz',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => 'Visszautasítás',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => 'Tervezés',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Visszautasítés jóváhagyása',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => 'Végrehajtás',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => 'Befejezés',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
));
//
@@ -230,34 +230,34 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:NormalChange' => 'Normál változás',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_date' => 'Elfogadás dátuma',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => 'Megjegyzés az elfogadáshoz',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => 'Elutasítás',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => 'Tervezés',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => 'Nincs jóváhagyás',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => 'Megvalósítás alatt',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => 'Befejezés',
'Class:NormalChange/Stimulus:ev_finish+' => '',
'Class:NormalChange' => 'Normál változás',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_date' => 'Elfogadás dátuma',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => 'Megjegyzés az elfogadáshoz',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => 'Visszautasítás',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => 'Tervezés',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => 'Jóváhagyás visszautasítás',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => 'Végrehajtás',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => 'Befejezés',
'Class:NormalChange/Stimulus:ev_finish+' => '',
));
//
@@ -265,28 +265,28 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:EmergencyChange' => 'Sürgős változás',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => 'Elutasítás',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => 'Tervezés',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Nincs jóváhagyás',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => 'Megvalósítás alatt',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => 'Befejezés',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
'Class:EmergencyChange' => 'Sűrgős változtatás',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => 'Ellenőrzés',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => 'Visszautasítás',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => 'Újranyitás',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => 'Tervezés',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => 'Újratervezés',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Jóváhagyás visszautasítás',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => 'Végrehajtás',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => 'Felügyelet',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => 'Befejezés',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
));

View File

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

View File

@@ -21,29 +21,29 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:ChangeManagement' => 'Változáskezelés',
'Menu:Change:Overview' => 'Áttekintő',
'Menu:Change:Overview+' => 'Áttekintő oldal',
'Menu:NewChange' => 'Új változás',
'Menu:NewChange+' => 'Új változásjegy létrehozása',
'Menu:SearchChanges' => 'Változás keresés',
'Menu:SearchChanges+' => 'Változásjegy keresés',
'Menu:Change:Shortcuts' => 'Gyorsgombok',
'Menu:Change:Shortcuts+' => 'Gyorselérés gombok',
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
'Menu:WaitingAcceptance+' => 'Elfogadásra váró változások',
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
'Menu:WaitingApproval+' => 'Jóváhagyásra váró változások',
'Menu:Changes' => 'Nyitott változási kérelmek',
'Menu:Changes+' => 'Nyitott változási kérelmek összesítése',
'Menu:MyChanges' => 'Hozzám rendelt változások',
'Menu:MyChanges+' => 'Ügyintézőként hozzám rendelt változások',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Változások kategóriánként az elmúlt 7 napban',
'UI-ChangeManagementOverview-Last-7-days' => 'A változások száma az elmúlt 7 napban',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Változások tartományonként az elmúlt 7 napban',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Változások állapotuk szerint az elmúlt 7 napban',
'Tickets:Related:OpenChanges' => 'Nyitott változások',
'Tickets:Related:RecentChanges' => 'Legutóbbi változások (72h)',
'Menu:ChangeManagement' => 'Változás menedzsment',
'Menu:Change:Overview' => 'Áttekintő',
'Menu:Change:Overview+' => '~~',
'Menu:NewChange' => 'Új változás',
'Menu:NewChange+' => 'Create a new change ticket~~',
'Menu:SearchChanges' => 'Változás keresés',
'Menu:SearchChanges+' => 'Search for change tickets~~',
'Menu:Change:Shortcuts' => 'Gyorsmenü',
'Menu:Change:Shortcuts+' => '~~',
'Menu:WaitingAcceptance' => 'Elfogadásra váró változások',
'Menu:WaitingAcceptance+' => '~~',
'Menu:WaitingApproval' => 'Jóváhagyásra váró változások',
'Menu:WaitingApproval+' => '~~',
'Menu:Changes' => 'Nyitott változási igények',
'Menu:Changes+' => 'All open changes~~',
'Menu:MyChanges' => 'Hozzám rendelt változások',
'Menu:MyChanges+' => 'Changes assigned to me (as Agent)~~',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Changes by category for the last 7 days~~',
'UI-ChangeManagementOverview-Last-7-days' => 'Number of changes for the last 7 days~~',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Changes by domain for the last 7 days~~',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Changes by status for the last 7 days~~',
'Tickets:Related:OpenChanges' => 'Open changes~~',
'Tickets:Related:RecentChanges' => 'Recent changes (72h)~~',
));
// Dictionnay conventions
@@ -62,78 +62,78 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Change' => 'Változás',
'Class:Change+' => '~~',
'Class:Change/Attribute:status' => 'Állapot',
'Class:Change/Attribute:status+' => '~~',
'Class:Change/Attribute:status/Value:new' => 'Új',
'Class:Change/Attribute:status/Value:new+' => '~~',
'Class:Change/Attribute:status/Value:assigned' => 'Hozzárendelt',
'Class:Change/Attribute:status/Value:assigned+' => '~~',
'Class:Change/Attribute:status/Value:planned' => 'Tervezett',
'Class:Change/Attribute:status/Value:planned+' => '~~',
'Class:Change/Attribute:status/Value:rejected' => 'Elutasított',
'Class:Change/Attribute:status/Value:rejected+' => '~~',
'Class:Change/Attribute:status/Value:approved' => 'Jóváhagyott',
'Class:Change/Attribute:status/Value:approved+' => '~~',
'Class:Change/Attribute:status/Value:closed' => 'Lezárt',
'Class:Change/Attribute:status/Value:closed+' => '~~',
'Class:Change/Attribute:category' => 'Kategória',
'Class:Change/Attribute:category+' => '~~',
'Class:Change/Attribute:category/Value:application' => 'Alkalmazás',
'Class:Change/Attribute:category/Value:application+' => '',
'Class:Change/Attribute:category/Value:hardware' => 'Hardver',
'Class:Change/Attribute:category/Value:hardware+' => '',
'Class:Change/Attribute:category/Value:network' => 'Hálózat',
'Class:Change/Attribute:category/Value:network+' => '',
'Class:Change/Attribute:category/Value:other' => 'Egyéb',
'Class:Change/Attribute:category/Value:other+' => '',
'Class:Change/Attribute:category/Value:software' => 'Szoftver',
'Class:Change/Attribute:category/Value:software+' => '',
'Class:Change/Attribute:category/Value:system' => 'Rendszer',
'Class:Change/Attribute:category/Value:system+' => '',
'Class:Change/Attribute:reject_reason' => 'Elutasítás oka',
'Class:Change/Attribute:reject_reason+' => '~~',
'Class:Change/Attribute:changemanager_id' => 'Változás menedzser',
'Class:Change/Attribute:changemanager_id+' => '~~',
'Class:Change/Attribute:changemanager_email' => 'Változás menedzser email címe',
'Class:Change/Attribute:changemanager_email+' => '~~',
'Class:Change/Attribute:parent_id' => 'Fölérendelt változás',
'Class:Change/Attribute:parent_id+' => '~~',
'Class:Change/Attribute:parent_name' => 'Referenciaszám',
'Class:Change/Attribute:parent_name+' => '~~',
'Class:Change/Attribute:creation_date' => 'Létrehozás dátuma',
'Class:Change/Attribute:creation_date+' => '~~',
'Class:Change/Attribute:approval_date' => 'Jóváhagyás dátuma',
'Class:Change/Attribute:approval_date+' => '~~',
'Class:Change/Attribute:fallback_plan' => 'Tartalék terv',
'Class:Change/Attribute:fallback_plan+' => '~~',
'Class:Change/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
'Class:Change/Attribute:related_request_list+' => 'Ehhez a változáshoz kapcsolódó felhasználói kérelmek',
'Class:Change/Attribute:related_incident_list' => 'Kapcsolódó incidensek',
'Class:Change/Attribute:related_incident_list+' => 'Ehhez a változáshoz kapcsolódó incidensek',
'Class:Change/Attribute:related_problems_list' => 'Kapcsolódó problémák',
'Class:Change/Attribute:related_problems_list+' => 'Ehhez a változáshoz kapcsolódó problémák',
'Class:Change/Attribute:child_changes_list' => 'Kapcsolódó változások',
'Class:Change/Attribute:child_changes_list+' => 'Ehhez a változáshoz kapcsolódó változások',
'Class:Change/Attribute:parent_id_friendlyname' => 'Fölérendelt változás rövid név',
'Class:Change/Attribute:parent_id_friendlyname+' => '~~',
'Class:Change/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:Change/Stimulus:ev_assign+' => '~~',
'Class:Change/Stimulus:ev_plan' => 'Tervezés',
'Class:Change/Stimulus:ev_plan+' => '~~',
'Class:Change/Stimulus:ev_reject' => 'Elutasítás',
'Class:Change/Stimulus:ev_reject+' => '~~',
'Class:Change/Stimulus:ev_reopen' => 'Újranyitás',
'Class:Change/Stimulus:ev_reopen+' => '~~',
'Class:Change/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:Change/Stimulus:ev_approve+' => '~~',
'Class:Change/Stimulus:ev_finish' => 'Befejezés',
'Class:Change/Stimulus:ev_finish+' => '~~',
'Class:Change/Attribute:outage' => 'Üzemszünet',
'Class:Change/Attribute:outage+' => '~~',
'Class:Change/Attribute:outage/Value:no' => 'Nem',
'Class:Change/Attribute:outage/Value:no+' => '~~',
'Class:Change/Attribute:outage/Value:yes' => 'Igen',
'Class:Change/Attribute:outage/Value:yes+' => '~~',
'Class:Change' => 'Változás',
'Class:Change+' => '~~',
'Class:Change/Attribute:status' => 'Státusz',
'Class:Change/Attribute:status+' => '~~',
'Class:Change/Attribute:status/Value:new' => 'Új',
'Class:Change/Attribute:status/Value:new+' => '~~',
'Class:Change/Attribute:status/Value:assigned' => 'Hozzárendelt',
'Class:Change/Attribute:status/Value:assigned+' => '~~',
'Class:Change/Attribute:status/Value:planned' => 'Planned~~',
'Class:Change/Attribute:status/Value:planned+' => '~~',
'Class:Change/Attribute:status/Value:rejected' => 'Visszautasított',
'Class:Change/Attribute:status/Value:rejected+' => '~~',
'Class:Change/Attribute:status/Value:approved' => 'Jóváhagyott',
'Class:Change/Attribute:status/Value:approved+' => '~~',
'Class:Change/Attribute:status/Value:closed' => 'Lezárt',
'Class:Change/Attribute:status/Value:closed+' => '~~',
'Class:Change/Attribute:category' => 'Category~~',
'Class:Change/Attribute:category+' => '~~',
'Class:Change/Attribute:category/Value:application' => 'application~~',
'Class:Change/Attribute:category/Value:application+' => 'application~~',
'Class:Change/Attribute:category/Value:hardware' => 'hardware~~',
'Class:Change/Attribute:category/Value:hardware+' => 'hardware~~',
'Class:Change/Attribute:category/Value:network' => 'network~~',
'Class:Change/Attribute:category/Value:network+' => 'network~~',
'Class:Change/Attribute:category/Value:other' => 'other~~',
'Class:Change/Attribute:category/Value:other+' => 'other~~',
'Class:Change/Attribute:category/Value:software' => 'software~~',
'Class:Change/Attribute:category/Value:software+' => 'software~~',
'Class:Change/Attribute:category/Value:system' => 'system~~',
'Class:Change/Attribute:category/Value:system+' => 'system~~',
'Class:Change/Attribute:reject_reason' => 'Reject reason~~',
'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+' => '~~',
'Class:Change/Attribute:parent_id' => 'Parent change~~',
'Class:Change/Attribute:parent_id+' => '~~',
'Class:Change/Attribute:parent_name' => 'Parent change ref~~',
'Class:Change/Attribute:parent_name+' => '~~',
'Class:Change/Attribute:creation_date' => 'Létrehozás dátuma',
'Class:Change/Attribute:creation_date+' => '~~',
'Class:Change/Attribute:approval_date' => 'Approval date~~',
'Class:Change/Attribute:approval_date+' => '~~',
'Class:Change/Attribute:fallback_plan' => 'Fallback plan~~',
'Class:Change/Attribute:fallback_plan+' => '~~',
'Class:Change/Attribute:related_request_list' => 'Related requests~~',
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
'Class:Change/Attribute:related_incident_list' => 'Related incidents~~',
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
'Class:Change/Attribute:related_problems_list' => 'Related problems~~',
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
'Class:Change/Attribute:child_changes_list' => 'Child changes~~',
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent change friendly name~~',
'Class:Change/Attribute:parent_id_friendlyname+' => '~~',
'Class:Change/Stimulus:ev_assign' => 'Hozzárenedelés',
'Class:Change/Stimulus:ev_assign+' => '~~',
'Class:Change/Stimulus:ev_plan' => 'Tervezés',
'Class:Change/Stimulus:ev_plan+' => '~~',
'Class:Change/Stimulus:ev_reject' => 'Visszautasítás',
'Class:Change/Stimulus:ev_reject+' => '~~',
'Class:Change/Stimulus:ev_reopen' => 'Újranyitás',
'Class:Change/Stimulus:ev_reopen+' => '~~',
'Class:Change/Stimulus:ev_approve' => 'Jóváhagyás',
'Class:Change/Stimulus:ev_approve+' => '~~',
'Class:Change/Stimulus:ev_finish' => 'Befejezés',
'Class:Change/Stimulus:ev_finish+' => '~~',
'Class:Change/Attribute:outage' => 'Leállás',
'Class:Change/Attribute:outage+' => '~~',
'Class:Change/Attribute:outage/Value:no' => 'Nem',
'Class:Change/Attribute:outage/Value:no+' => '~~',
'Class:Change/Attribute:outage/Value:yes' => 'Igen',
'Class:Change/Attribute:outage/Value:yes+' => '~~',
));

View File

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

View File

@@ -16,11 +16,15 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* @author LinProfs <info@linprofs.com>
* @author Thomas Casteleyn <info@super-visions.com>
* @author LinProfs <info@linprofs.com>
*
* Linux & Open Source Professionals
* http://www.linprofs.com
*
* @author Hipska (2018, 2019)
* @author Jeffrey Bostoen <info@jeffreybostoen.be> (2018 - 2022)
*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @licence http://opensource.org/licenses/AGPL-3.0
*/
//////////////////////////////////////////////////////////////////////
@@ -28,13 +32,13 @@
//////////////////////////////////////////////////////////////////////
//
Dict::Add('NL NL', 'Dutch', 'Nederlands', array(
'Relation:impacts/Description' => 'Elementen met impact van',
'Relation:impacts/Description' => 'Elementen hebben impact op',
'Relation:impacts/DownStream' => 'Impact op...',
'Relation:impacts/DownStream+' => 'Elementen geïmpacteerd door',
'Relation:impacts/DownStream+' => 'Elementen hebben impact op',
'Relation:impacts/UpStream' => 'Is afhankelijk van...',
'Relation:impacts/UpStream+' => 'Elementen met impact op',
'Relation:impacts/UpStream+' => 'Elementen waar dit object impact op heeft',
// Legacy entries
'Relation:depends on/Description' => 'Elementen afhankelijk van',
'Relation:depends on/Description' => 'Elementen waarvan dit object afhankelijk van is',
'Relation:depends on/DownStream' => 'Is afhankelijk van...',
'Relation:depends on/UpStream' => 'Impact op...',
'Relation:impacts/LoadData' => 'Load data~~',

View File

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

View File

@@ -22,17 +22,17 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:ConfigEditor' => 'Konfiguráció szerkesztő',
'config-edit-title' => 'Konfigurációs fájl szerkesztő',
'config-edit-intro' => 'Legyen nagyon óvatos a konfiguráció szerkesztésénél!',
'config-apply' => 'Alkalmaz',
'config-apply-title' => 'Alkalmaz (Ctrl+S)',
'config-cancel' => 'Visszaállítás',
'config-saved' => 'Sikeresen elmentve.',
'config-confirm-cancel' => 'A változtatások elvesznek.',
'config-no-change' => 'Nincs változtatás: a fájl változatlan maradt.',
'config-reverted' => 'A konfiguráció vissza lett állítva.',
'config-parse-error' => '%2$d sor: %1$s.<br/>A fájl NEM frissült',
'config-current-line' => 'Szerkesztett sor: %1$s',
'config-saved-warning-db-password' => 'Sikeresen elmentve, de a biztonsági mentés nem fog működni az adatbázis jelszavában szereplő nem támogatott karakterek miatt.',
'Menu:ConfigEditor' => 'Configuration~~',
'config-edit-title' => 'Configuration File Editor~~',
'config-edit-intro' => 'Be very cautious when editing the configuration file.~~',
'config-apply' => 'Apply~~',
'config-apply-title' => 'Apply (Ctrl+S)~~',
'config-cancel' => 'Reset~~',
'config-saved' => 'Successfully recorded.~~',
'config-confirm-cancel' => 'Your changes will be lost.~~',
'config-no-change' => 'No change: the file has been left unchanged.~~',
'config-reverted' => 'The configuration has been reverted.~~',
'config-parse-error' => 'Line %2$d: %1$s.<br/>The file has NOT been updated.~~',
'config-current-line' => 'Editing line: %1$s~~',
'config-saved-warning-db-password' => 'Successfully recorded, but the backup won\'t work due to unsupported characters in the database password.~~',
));

View File

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

View File

@@ -21,98 +21,100 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'iTopUpdate:UI:PageTitle' => 'Alkalmazásfrissítés',
'itop-core-update:UI:SelectUpdateFile' => 'Alkalmazásfrissítés',
'itop-core-update:UI:ConfirmUpdate' => 'Alkalmazásfrissítés',
'itop-core-update:UI:UpdateCoreFiles' => 'Alkalmazásfrissítés',
'iTopUpdate:UI:MaintenanceModeActive' => 'Az alkalmazás jelenleg karbantartás alatt áll, egyetlen felhasználó sem tud hozzáférni az alkalmazáshoz. A normál üzemmódba való visszatéréshez telepítést kell futtatnia, vagy vissza kell állítania az alkalmazás archívumát..',
'itop-core-update:UI:UpdateDone' => 'Alkalmazásfrissítés',
'iTopUpdate:UI:PageTitle' => 'Application Upgrade~~',
'itop-core-update:UI:SelectUpdateFile' => 'Application Upgrade~~',
'itop-core-update:UI:ConfirmUpdate' => 'Application Upgrade~~',
'itop-core-update:UI:UpdateCoreFiles' => 'Application Upgrade~~',
'iTopUpdate:UI:MaintenanceModeActive' => 'The application is currently under maintenance, no user can access the application. You have to run a setup or restore the application archive to return in normal mode.~~',
'itop-core-update:UI:UpdateDone' => 'Application Upgrade~~',
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Alkalmazásfrissítés',
'itop-core-update/Operation:ConfirmUpdate/Title' => 'Alkalmazásfrissítés jóváhagyása',
'itop-core-update/Operation:UpdateCoreFiles/Title' => 'Az alkalmazás frissül',
'itop-core-update/Operation:UpdateDone/Title' => 'Alkalmazásfrissítés kész',
'itop-core-update/Operation:SelectUpdateFile/Title' => 'Application Upgrade~~',
'itop-core-update/Operation:ConfirmUpdate/Title' => 'Confirm Application Upgrade~~',
'itop-core-update/Operation:UpdateCoreFiles/Title' => 'Application Upgrading~~',
'itop-core-update/Operation:UpdateDone/Title' => 'Application Upgrade Done~~',
'iTopUpdate:UI:SelectUpdateFile' => 'Válasszon egy frissítést a feltöltéshez',
'iTopUpdate:UI:CheckUpdate' => 'Frissítés ellenőrzése',
'iTopUpdate:UI:ConfirmInstallFile' => '%1$s lesz telepítve',
'iTopUpdate:UI:DoUpdate' => 'Frissítés',
'iTopUpdate:UI:CurrentVersion' => 'Jelenlegi telepített verzió',
'iTopUpdate:UI:NewVersion' => 'Újonnan telepített verzió',
'iTopUpdate:UI:Back' => 'Vissza',
'iTopUpdate:UI:Cancel' => 'Mégsem',
'iTopUpdate:UI:Continue' => 'Folytatás',
'iTopUpdate:UI:RunSetup' => 'Telepítés futtatása',
'iTopUpdate:UI:WithDBBackup' => 'Adatbázis biztonsági mentése',
'iTopUpdate:UI:WithFilesBackup' => 'Alkalmazás fájlok biztonsági mentése',
'iTopUpdate:UI:WithoutBackup' => 'Nincs mentés tervbe véve',
'iTopUpdate:UI:Backup' => 'Frissítés előtt létrehozott biztonsági mentés.',
'iTopUpdate:UI:DoFilesArchive' => 'Archív alkalmazás fájlok',
'iTopUpdate:UI:UploadArchive' => 'Válasszon egy csomagot a feltöltéshez',
'iTopUpdate:UI:ServerFile' => 'A kiszolgálón már meglévő csomag elérési útvonala',
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => 'A frissítés során az alkalmazás csak olvasható lesz.',
'iTopUpdate:UI:SelectUpdateFile' => 'Select an upgrade file to upload~~',
'iTopUpdate:UI:CheckUpdate' => 'Verify upgrade file~~',
'iTopUpdate:UI:ConfirmInstallFile' => 'You are about to install %1$s~~',
'iTopUpdate:UI:DoUpdate' => 'Upgrade~~',
'iTopUpdate:UI:CurrentVersion' => 'Current installed version~~',
'iTopUpdate:UI:NewVersion' => 'Newly installed version~~',
'iTopUpdate:UI:Back' => 'Back~~',
'iTopUpdate:UI:Cancel' => 'Cancel~~',
'iTopUpdate:UI:Continue' => 'Continue~~',
'iTopUpdate:UI:RunSetup' => 'Run Setup~~',
'iTopUpdate:UI:WithDBBackup' => 'Database backup~~',
'iTopUpdate:UI:WithFilesBackup' => 'Application files backup~~',
'iTopUpdate:UI:WithoutBackup' => 'No backup is planned~~',
'iTopUpdate:UI:Backup' => 'Backup generated before update~~',
'iTopUpdate:UI:DoFilesArchive' => 'Archive application files~~',
'iTopUpdate:UI:UploadArchive' => 'Select a package to upload~~',
'iTopUpdate:UI:ServerFile' => 'Path of a package already on the server~~',
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => 'During the upgrade, the application will be read-only.~~',
'iTopUpdate:UI:Status' => 'Állapotjelentés',
'iTopUpdate:UI:Action' => 'Frissítés',
'iTopUpdate:UI:History' => 'Verziótörténet',
'iTopUpdate:UI:Progress' => 'A frissítés folyamata',
'iTopUpdate:UI:Status' => 'Status~~',
'iTopUpdate:UI:Action' => 'Update~~',
'iTopUpdate:UI:History' => 'Versions History~~',
'iTopUpdate:UI:Progress' => 'Progress of the upgrade~~',
'iTopUpdate:UI:DoBackup:Label' => 'Mentés fájlok és adatbázis',
'iTopUpdate:UI:DoBackup:Warning' => 'A biztonsági mentés nem ajánlott a korlátozottan rendelkezésre álló lemezterület miatt.',
'iTopUpdate:UI:DoBackup:Label' => 'Backup files and database~~',
'iTopUpdate:UI:DoBackup:Warning' => 'Backup is not recommended due to limited available disk space~~',
'iTopUpdate:UI:DiskFreeSpace' => 'Lemez szabad terület',
'iTopUpdate:UI:ItopDiskSpace' => ITOP_APPLICATION_SHORT.' lemezterület',
'iTopUpdate:UI:DBDiskSpace' => 'Adatbázis lemezterület',
'iTopUpdate:UI:FileUploadMaxSize' => 'Feltöltés maximális fájlmérete',
'iTopUpdate:UI:DiskFreeSpace' => 'Disk free space~~',
'iTopUpdate:UI:ItopDiskSpace' => ITOP_APPLICATION_SHORT.' disk space~~',
'iTopUpdate:UI:DBDiskSpace' => 'Database disk space~~',
'iTopUpdate:UI:FileUploadMaxSize' => 'File upload max size~~',
'iTopUpdate:UI:PostMaxSize' => 'PHP ini érték post_max_size: %1$s',
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini érték upload_max_filesize: %1$s',
'iTopUpdate:UI:PostMaxSize' => 'PHP ini value post_max_size: %1$s~~',
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini value upload_max_filesize: %1$s~~',
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Fájlrendszer ellenőrzése',
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Fájlrendszer ellenőrzése sikertelen (%1$s)',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Fájlrendszer ellenőrzése sikertelen (Fájl nincs meg %1$s)',
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Fájlrendszer ellenőrzése sikertelen',
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Az alkalmazás frissíthető',
'iTopUpdate:UI:CanCoreUpdate:No' => 'Az alkalmazás nem frissíthető: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Figyelem: alkalmazás frissítés sikertelen lehet: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>Néhány manuálisan módosított fájlt észleltünk</b>, a részleges frissítés nem hajtható végre.</br>Kövesse ezt az <a target="_blank" href="%2$s"> eljárást</a> az iTop manuális frissítéséhez. Az alkalmazás frissítéséhez a <a href="%1$s">setup</a> parancsot kell használnia.',
'iTopUpdate:UI:CheckInProgress' => 'Kérjük, várjon az integritás ellenőrzés alatt',
'iTopUpdate:UI:CanCoreUpdate:Loading' => 'Checking filesystem~~',
'iTopUpdate:UI:CanCoreUpdate:Error' => 'Checking filesystem failed (%1$s)~~',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => 'Checking filesystem failed (File not exist %1$s)~~',
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Checking filesystem failed~~',
'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' => '<b>Some modified files were detected</b>, a partial update cannot be executed.</br>Follow the <a target="_blank" href="%2$s"> procedure</a> in order to manually upgrade your iTop. You must use the <a href="%1$s">setup</a> to update the application.~~',
'iTopUpdate:UI:CheckInProgress' => 'Please wait during integrity check~~',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => 'Készen állunk',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => 'Karbantartási módba lépés',
'iTopUpdate:UI:SetupMessage:Backup' => 'Adatbázis biztonsági mentése',
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Alkalmazás fájlok archiválása',
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Új fájlverziók másolása',
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Alkalmazásfrissítés ellenőrzése',
'iTopUpdate:UI:SetupMessage:Compile' => 'Az alkalmazás és az adatbázis frissítése',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Adatbázis frissítés',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Kilépés a karbantartási módból',
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'A frissítés befejeződött',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => 'Ready to start~~',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => 'Entering maintenance mode~~',
'iTopUpdate:UI:SetupMessage:Backup' => 'Database backup~~',
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Archive application files~~',
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Copy new version files~~',
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Check application upgrade~~',
'iTopUpdate:UI:SetupMessage:Compile' => 'Upgrade application and database~~',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Upgrade database~~',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Exiting maintenance mode~~',
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'Upgrade completed~~',
// Errors
'iTopUpdate:Error:MissingFunction' => 'Lehetetlen elindítani a frissítést, hiányzó funkció',
'iTopUpdate:Error:MissingFile' => 'Hiányzó fájl: %1$s',
'iTopUpdate:Error:CorruptedFile' => 'A %1$s fájl sérült',
'iTopUpdate:Error:BadFileFormat' => 'A frissítési fájl nem zip fájl',
'iTopUpdate:Error:BadFileContent' => 'A frissítési fájl nem alkalmazás archívum',
'iTopUpdate:Error:BadItopProduct' => 'A frissítési fájl nem kompatibilis az alkalmazással',
'iTopUpdate:Error:Copy' => 'Hiba: %1$s nem másolható %2$s -ba',
'iTopUpdate:Error:FileNotFound' => 'Nincs meg a fájl',
'iTopUpdate:Error:NoFile' => 'Nincs fájl megadva',
'iTopUpdate:Error:InvalidToken' => 'Érvénytelen token',
'iTopUpdate:Error:UpdateFailed' => 'Frissítés sikertelen',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => 'A feltöltés maximális mérete túl kicsinek tűnik a frissítéshez. Kérjük, módosítsa a PHP konfigurációt.',
// Errors
'iTopUpdate:Error:MissingFunction' => 'Impossible to start upgrade, missing function~~',
'iTopUpdate:Error:MissingFile' => 'Missing file: %1$s~~',
'iTopUpdate:Error:CorruptedFile' => 'File %1$s is corrupted~~',
'iTopUpdate:Error:BadFileFormat' => 'Upgrade file is not a zip file~~',
'iTopUpdate:Error:BadFileContent' => 'Upgrade file is not an application archive~~',
'iTopUpdate:Error:BadItopProduct' => 'Upgrade file is not compatible with your application~~',
'iTopUpdate:Error:Copy' => 'Error, cannot copy \'%1$s\' to \'%2$s\'~~',
'iTopUpdate:Error:FileNotFound' => 'File not found~~',
'iTopUpdate:Error:NoFile' => 'No file provided~~',
'iTopUpdate:Error:InvalidToken' => 'Invalid token~~',
'iTopUpdate:Error:UpdateFailed' => 'Upgrade failed ~~',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => 'The upload max size seems too small for update. Please change the PHP configuration.~~',
'iTopUpdate:UI:RestoreArchive' => 'Visszaállíthatja az alkalmazást a %1$s archívumból',
'iTopUpdate:UI:RestoreBackup' => 'Visszaállíthatja az adatbázist a %1$s archívumból',
'iTopUpdate:UI:UpdateDone' => 'Frissítés sikeres',
'Menu:iTopUpdate' => 'Alkalmazás frissítés',
'Menu:iTopUpdate+' => 'Alkalmazás frissítés',
'iTopUpdate:UI:RestoreArchive' => 'You can restore your application from the archive \'%1$s\'~~',
'iTopUpdate:UI:RestoreBackup' => 'You can restore the database from \'%1$s\'~~',
'iTopUpdate:UI:UpdateDone' => 'Upgrade successful~~',
'Menu:iTopUpdate' => 'Application Upgrade~~',
'Menu:iTopUpdate+' => 'Application Upgrade~~',
// Missing itop entries
'Class:ModuleInstallation/Attribute:installed' => 'Telepítve ',
'Class:ModuleInstallation/Attribute:name' => 'Név',
'Class:ModuleInstallation/Attribute:version' => 'Verzió',
'Class:ModuleInstallation/Attribute:comment' => 'Megjegyzés',
'Class:ModuleInstallation/Attribute:installed' => 'Installed on~~',
'Class:ModuleInstallation/Attribute:name' => 'Name~~',
'Class:ModuleInstallation/Attribute:version' => 'Version~~',
'Class:ModuleInstallation/Attribute:comment' => 'Comment~~',
));

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-core-update/3.0.4',
'itop-core-update/3.0.3',
array(
// Identification
//

View File

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

View File

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

View File

@@ -23,23 +23,23 @@
// Class: FAQ
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:FAQ' => 'Tudástár',
'Class:FAQ+' => 'Gyakran Ismételt Kérdések',
'Class:FAQ/Attribute:title' => 'Cím',
'Class:FAQ/Attribute:title+' => 'A tudástár címe',
'Class:FAQ/Attribute:summary' => 'Összefoglaló',
'Class:FAQ/Attribute:summary+' => 'Egy rövid leírás a témáról',
'Class:FAQ/Attribute:description' => 'Leírás',
'Class:FAQ/Attribute:description+' => 'Maga a tudástár cikk',
'Class:FAQ/Attribute:category_id' => 'Kategória',
'Class:FAQ/Attribute:category_id+' => '~~',
'Class:FAQ/Attribute:category_name' => 'Kategória név',
'Class:FAQ/Attribute:category_name+' => '~~',
'Class:FAQ/Attribute:error_code' => 'Hibakód',
'Class:FAQ/Attribute:error_code+' => '~~',
'Class:FAQ/Attribute:key_words' => 'Kulcsszavak',
'Class:FAQ/Attribute:key_words+' => 'A keresést segítő kulcsszavak',
'Class:FAQ/Attribute:domains' => 'Hibatartomány',
'Class:FAQ' => 'FAQ~~',
'Class:FAQ+' => 'Frequently asked questions~~',
'Class:FAQ/Attribute:title' => 'Title~~',
'Class:FAQ/Attribute:title+' => '~~',
'Class:FAQ/Attribute:summary' => 'Summary~~',
'Class:FAQ/Attribute:summary+' => '~~',
'Class:FAQ/Attribute:description' => 'Description~~',
'Class:FAQ/Attribute:description+' => '~~',
'Class:FAQ/Attribute:category_id' => 'Category~~',
'Class:FAQ/Attribute:category_id+' => '~~',
'Class:FAQ/Attribute:category_name' => 'Category name~~',
'Class:FAQ/Attribute:category_name+' => '~~',
'Class:FAQ/Attribute:error_code' => 'Error code~~',
'Class:FAQ/Attribute:error_code+' => '~~',
'Class:FAQ/Attribute:key_words' => 'Key words~~',
'Class:FAQ/Attribute:key_words+' => '~~',
'Class:FAQ/Attribute:domains' => 'Domains~~',
));
//
@@ -47,22 +47,22 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:FAQCategory' => 'Tudástár kategória',
'Class:FAQCategory+' => '',
'Class:FAQCategory/Attribute:name' => 'Kategória név',
'Class:FAQCategory/Attribute:name+' => '~~',
'Class:FAQCategory/Attribute:faq_list' => 'Tudástárak',
'Class:FAQCategory/Attribute:faq_list+' => 'Gyakori kérdések ehhez a kategóriához kapcsolódóan',
'Class:FAQCategory' => 'FAQ Category~~',
'Class:FAQCategory+' => 'Category for FAQ~~',
'Class:FAQCategory/Attribute:name' => 'Name~~',
'Class:FAQCategory/Attribute:name+' => '~~',
'Class:FAQCategory/Attribute:faq_list' => 'FAQs~~',
'Class:FAQCategory/Attribute:faq_list+' => 'All the frequently asked questions related to this category~~',
));
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:ProblemManagement' => 'Problémakezelés',
'Menu:ProblemManagement+' => '',
'Menu:Problem:Shortcuts' => 'Gyorsgombok',
'Menu:FAQCategory' => 'Tudástár kategória',
'Menu:FAQCategory+' => 'Tudástár kategóriák',
'Menu:FAQ' => 'Tudástár',
'Menu:FAQ+' => 'Meglévő tudástárak',
'Brick:Portal:FAQ:Menu' => 'Tudástár',
'Brick:Portal:FAQ:Title' => 'Tudástárak',
'Brick:Portal:FAQ:Title+' => '<p>Siet?</p><p>Nézze át a leggyakoribb kérdések listáját, és (talán) azonnal megtalálja a keresett választ.</p>',
'Menu:ProblemManagement' => 'Probléma menedzsment',
'Menu:ProblemManagement+' => '',
'Menu:Problem:Shortcuts' => 'Gyorsmenü',
'Menu:FAQCategory' => 'FAQ categories~~',
'Menu:FAQCategory+' => 'All FAQ categories~~',
'Menu:FAQ' => 'FAQs~~',
'Menu:FAQ+' => 'All FAQs~~',
'Brick:Portal:FAQ:Menu' => 'FAQ~~',
'Brick:Portal:FAQ:Title' => 'Frequently Asked Questions~~',
'Brick:Portal:FAQ:Title+' => '<p>In a hurry?</p><p>Check out the list of most common questions and (maybe) find the expected answer right away.</p>~~',
));

View File

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

View File

@@ -22,10 +22,10 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
// Errors
'FilesInformation:Error:MissingFile' => 'Hiányzó fájl: %1$s',
'FilesInformation:Error:CorruptedFile' => 'A %1$s fájl megsérült',
'FilesInformation:Error:ListCorruptedFile' => 'Sérült fájl(ok): %1$s',
'FilesInformation:Error:CantWriteToFile' => 'A %1$s nem írható',
'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~~',
));

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-files-information/3.0.4',
'itop-files-information/3.0.3',
array(
// Identification
//

View File

@@ -6,7 +6,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-full-itil/3.0.4',
'itop-full-itil/3.0.3',
array(
// Identification
//

View File

@@ -21,64 +21,66 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
// Dictionary entries go here
'Menu:iTopHub' => 'iTop Hub',
'Menu:iTopHub:Register' => 'Kapcsolódás az iTop Hub-ra',
'Menu:iTopHub:Register+' => 'Továbblépés az iTop Hub-ra a '.ITOP_APPLICATION_SHORT.' példányának frissítéséhez',
'Menu:iTopHub:Register:Description' => '<p>Szerezzen hozzáférést az iTop Hub közösségi platformjához!</br>Találja meg az összes szükséges tartalmat és információt, kezelje példányait személyre szabott eszközökkel és telepítsen további bővítményeket.</br><br/>Ha erről az oldalról csatlakozik a Hub-hoz, akkor a Hub-ra továbbítja az '.ITOP_APPLICATION_SHORT.' példányára vonatkozó információkat.</p>',
'Menu:iTopHub:MyExtensions' => 'Telepített bővítmények',
'Menu:iTopHub:MyExtensions+' => 'Lásd a '.ITOP_APPLICATION_SHORT.' példányon telepített bővítmények listáját',
'Menu:iTopHub:BrowseExtensions' => 'Bővítmények beszerzése az iTop Hub-ról',
'Menu:iTopHub:BrowseExtensions+' => 'További bővítmények keresése az iTop Hub-on',
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Nézze meg az iTop Hub áruházát, az Ön egyablakos helyét, ahol csodálatos '.ITOP_APPLICATION_SHORT.' bővítményeket talál!</br>Keresse meg azokat, amelyek segítenek a '.ITOP_APPLICATION_SHORT.' testreszabásában és az Ön folyamataihoz való igazításában.</br><br/>Ha erről az oldalról csatlakozik a Hub-hoz, akkor a Hub-ra továbbítja a '.ITOP_APPLICATION_SHORT.' példányára vonatkozó információkat.</p>',
'iTopHub:GoBtn' => 'Tovább az iTop Hub-ra',
'iTopHub:CloseBtn' => 'Bezárás',
'iTopHub:GoBtn:Tooltip' => 'Ugrás a www.itophub.io -ra',
'iTopHub:OpenInNewWindow' => 'iTop Hub megnyitása új ablakban',
'iTopHub:AutoSubmit' => 'Ne kérdezze újra. Legközelebb menjen az iTop Hub-hoz automatikusan.',
'UI:About:RemoteExtensionSource' => 'iTop Hub',
'iTopHub:Explanation' => 'Erre a gombra kattintva átirányítjuk Önt az iTop Hub oldalára.',
// Dictionary entries go here
'Menu:iTopHub' => 'iTop Hub~~',
'Menu:iTopHub:Register' => 'Connect to iTop Hub~~',
'Menu:iTopHub:Register+' => 'Go to iTop Hub to update your '.ITOP_APPLICATION_SHORT.' instance~~',
'Menu:iTopHub:Register:Description' => '<p>Get access to your community platform iTop Hub!</br>Find all the content and information you need, manage your instances through personalized tools & install more extensions.</br><br/>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
'Menu:iTopHub:MyExtensions' => 'Deployed extensions~~',
'Menu:iTopHub:MyExtensions+' => 'See the list of extensions deployed on this instance of '.ITOP_APPLICATION_SHORT.'~~',
'Menu:iTopHub:BrowseExtensions' => 'Get extensions from iTop Hub~~',
'Menu:iTopHub:BrowseExtensions+' => 'Browse for more extensions on iTop Hub~~',
'Menu:iTopHub:BrowseExtensions:Description' => '<p>Look into iTop Hubs store, your one stop place to find wonderful '.ITOP_APPLICATION_SHORT.' extensions !</br>Find the ones that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes.</br><br/>By connecting to the Hub from this page, you will push information about this '.ITOP_APPLICATION_SHORT.' instance into the Hub.</p>~~',
'iTopHub:GoBtn' => 'Go To iTop Hub~~',
'iTopHub:CloseBtn' => 'Close~~',
'iTopHub:GoBtn:Tooltip' => 'Jump to www.itophub.io~~',
'iTopHub:OpenInNewWindow' => 'Open iTop Hub in a new window~~',
'iTopHub:AutoSubmit' => 'Don\'t ask me again. Next time, go to iTop Hub automatically.~~',
'UI:About:RemoteExtensionSource' => 'iTop Hub~~',
'iTopHub:Explanation' => 'By clicking this button you will be redirected to iTop Hub.~~',
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s szabad lemezterület %2$s -ben',
'iTopHub:FailedToCheckFreeDiskSpace' => 'Nem sikerült ellenőrizni a szabad lemezterületet.',
'iTopHub:BackupOk' => 'Biztonsági mentés Ok.',
'iTopHub:BackupFailed' => 'Biztonsági mentés sikertelen!',
'iTopHub:Landing:Status' => 'Telepítés állapota',
'iTopHub:Landing:Install' => 'Bővítmények telepítése...',
'iTopHub:CompiledOK' => 'Összeállítás sikeres',
'iTopHub:ConfigurationSafelyReverted' => 'Hiba történt telepítés közben!<br/>Az '.ITOP_APPLICATION_SHORT.' konfigurációja NEM lett elmentve.',
'iTopHub:FailAuthent' => 'Azonosítás sikertelen ennél a műveletnél.',
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s free disk space in %2$s.~~',
'iTopHub:FailedToCheckFreeDiskSpace' => 'Failed to check free disk space.~~',
'iTopHub:BackupOk' => 'Backup Ok.~~',
'iTopHub:BackupFailed' => 'Backup failed!~~',
'iTopHub:Landing:Status' => 'Deployment status~~',
'iTopHub:Landing:Install' => 'Deploying extensions...~~',
'iTopHub:CompiledOK' => 'Compilation successful.~~',
'iTopHub:ConfigurationSafelyReverted' => 'Error detected during deployment!<br/>'.ITOP_APPLICATION_SHORT.' configuration has NOT been modified.~~',
'iTopHub:FailAuthent' => 'Authentication failed for this action.~~',
'iTopHub:InstalledExtensions' => 'A bővítmények feltelepültek erre a példányra',
'iTopHub:ExtensionCategory:Manual' => 'A bővítmények manuálisan telepítve',
'iTopHub:ExtensionCategory:Manual+' => 'A következő bővítményeket kézi másolással telepítettük a '.ITOP_APPLICATION_SHORT.' %1$s könyvtárába:',
'iTopHub:ExtensionCategory:Remote' => 'Az iTop Hub-ról telepített bővítmények',
'iTopHub:ExtensionCategory:Remote+' => 'A következő bővítményeket telepítettük az iTop Hub-ról:',
'iTopHub:NoExtensionInThisCategory' => 'Ebben a kategóriában nincs bővítmény',
'iTopHub:NoExtensionInThisCategory+' => 'Böngésszen az iTop Hub-ban, hogy megtalálja azokat a bővítményeket, amelyek segítenek testreszabni és az Ön folyamataihoz igazítani az '.ITOP_APPLICATION_SHORT.'-ot !',
'iTopHub:ExtensionNotInstalled' => 'Nincs telepítve',
'iTopHub:GetMoreExtensions' => 'Bővítmények beszerzése az iTop Hub-ról...',
'iTopHub:InstalledExtensions' => 'Extensions deployed on this instance~~',
'iTopHub:ExtensionCategory:Manual' => 'Extensions deployed manually~~',
'iTopHub:ExtensionCategory:Manual+' => 'The following extensions have been deployed by copying them manually in the %1$s directory of '.ITOP_APPLICATION_SHORT.':~~',
'iTopHub:ExtensionCategory:Remote' => 'Extensions deployed from iTop Hub~~',
'iTopHub:ExtensionCategory:Remote+' => 'The following extensions have been deployed from iTop Hub:~~',
'iTopHub:NoExtensionInThisCategory' => 'There is no extension in this category~~',
'iTopHub:NoExtensionInThisCategory+' => 'Browse iTop Hub to find the extensions that will help you customize and adapt '.ITOP_APPLICATION_SHORT.' to your processes !~~',
'iTopHub:ExtensionNotInstalled' => 'Not installed~~',
'iTopHub:GetMoreExtensions' => 'Get extensions from iTop Hub...~~',
'iTopHub:LandingWelcome' => 'Gratulálunk! A következő bővítményeket letöltöttük az iTop Hub-ról, és telepítettük az Ön '.ITOP_APPLICATION_SHORT.' példányára.',
'iTopHub:GoBackToITopBtn' => 'Vissza az '.ITOP_APPLICATION_SHORT.'-hoz',
'iTopHub:Uncompressing' => 'Bővítmények kicsomagolása...',
'iTopHub:InstallationWelcome' => 'Az iTop Hub-ról letöltött bővítmények telepítése',
'iTopHub:DBBackupLabel' => 'Példány mentés',
'iTopHub:DBBackupSentence' => 'A frissítés előtt biztonsági mentést készítünk az adatbázisról és az '.ITOP_APPLICATION_SHORT.' konfigurációról.',
'iTopHub:DeployBtn' => 'Telepítés !',
'iTopHub:DatabaseBackupProgress' => 'Példány mentés...',
'iTopHub:LandingWelcome' => 'Congratulations! The following extensions were downloaded from iTop Hub and deployed into your '.ITOP_APPLICATION_SHORT.'.~~',
'iTopHub:GoBackToITopBtn' => 'Go Back to '.ITOP_APPLICATION_SHORT.'~~',
'iTopHub:Uncompressing' => 'Uncompressing extensions...~~',
'iTopHub:InstallationWelcome' => 'Installation of the extensions downloaded from iTop Hub~~',
'iTopHub:DBBackupLabel' => 'Instance backup~~',
'iTopHub:DBBackupSentence' => 'Do a backup of the database and '.ITOP_APPLICATION_SHORT.' configuration before updating~~',
'iTopHub:DeployBtn' => 'Deploy !~~',
'iTopHub:DatabaseBackupProgress' => 'Instance backup...~~',
'iTopHub:InstallationEffect:Install' => 'Verzió: %1$s lesz telepítve.',
'iTopHub:InstallationEffect:NoChange' => 'Verzió: %1$s már telepítve. Nincs változás.',
'iTopHub:InstallationEffect:Upgrade' => '<b>Frissítve</b> lesz %1$s verzióról %2$s verzióra.',
'iTopHub:InstallationEffect:Downgrade' => '<b>Lebutítva</b> lesz %1$s verzióról %2$s verzióra.',
'iTopHub:InstallationProgress:DatabaseBackup' => ITOP_APPLICATION_SHORT.' példány backup...',
'iTopHub:InstallationProgress:ExtensionsInstallation' => 'A bővítmény telepítése',
'iTopHub:InstallationEffect:MissingDependencies' => 'Ez a bővítmény nem telepíthető nem teljesített függőségek miatt.',
'iTopHub:InstallationEffect:MissingDependencies_Details' => 'A bővítményhez további modulok szükségesek: %1$s',
'iTopHub:InstallationProgress:InstallationSuccessful' => 'A telepítés sikeres',
'iTopHub:InstallationEffect:Install' => 'Version: %1$s will be installed.~~',
'iTopHub:InstallationEffect:NoChange' => 'Version: %1$s already installed. Nothing will change.~~',
'iTopHub:InstallationEffect:Upgrade' => 'Will be <b>upgraded</b> from version %1$s to version %2$s.~~',
'iTopHub:InstallationEffect:Downgrade' => 'Will be <b>DOWNGRADED</b> from version %1$s to version %2$s.~~',
'iTopHub:InstallationProgress:DatabaseBackup' => ITOP_APPLICATION_SHORT.' Instance backup...~~',
'iTopHub:InstallationProgress:ExtensionsInstallation' => 'Installation of the extensions~~',
'iTopHub:InstallationEffect:MissingDependencies' => 'This extension cannot be installed because of unmet dependencies.~~',
'iTopHub:InstallationEffect:MissingDependencies_Details' => 'The extension requires the module(s): %1$s~~',
'iTopHub:InstallationProgress:InstallationSuccessful' => 'Installation successful!~~',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s verzió: %2$s.',
'iTopHub:InstallationStatus:Installed' => 'Telepítve',
'iTopHub:InstallationStatus:Version_NotInstalled' => 'A %1$s verzió <b>NINCS</b> telepítve.',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s version: %2$s.~~',
'iTopHub:InstallationStatus:Installed' => 'Installed~~',
'iTopHub:InstallationStatus:Version_NotInstalled' => 'Version %1$s <b>NOT</b> installed.~~',
));

View File

@@ -8,7 +8,7 @@ class HubConnectorPage extends NiceWebPage
parent::__construct($sTitle);
$this->no_cache();
$this->add_http_headers();
$this->add_xframe_options();
$sImagesDir = utils::GetAbsoluteUrlAppRoot().'images';
$sModuleImagesDir = utils::GetAbsoluteUrlModulesRoot().'itop-hub-connector/images';

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-hub-connector/3.0.4',
'itop-hub-connector/3.0.3',
array(
// Identification
//

View File

@@ -21,27 +21,27 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:IncidentManagement' => 'Incidenskezelés',
'Menu:IncidentManagement+' => '',
'Menu:Incident:Overview' => 'Áttekintő',
'Menu:Incident:Overview+' => 'Áttekintő oldal',
'Menu:NewIncident' => 'Új incidens',
'Menu:NewIncident+' => 'Új incidens hibajegy létrehozása',
'Menu:SearchIncidents' => 'Incidensek keresése',
'Menu:SearchIncidents+' => 'Incidens hibajegyek keresése',
'Menu:Incident:Shortcuts' => 'Gyorsgombok',
'Menu:Incident:Shortcuts+' => 'Gyorselérés gombok',
'Menu:Incident:MyIncidents' => 'Hozzám rendelt incidensek',
'Menu:Incident:MyIncidents+' => 'Hozzám rendelt incidensek (ügyintézőként)',
'Menu:Incident:EscalatedIncidents' => 'Eszkalált incidensek',
'Menu:Incident:EscalatedIncidents+' => 'Eszkalált incidensek',
'Menu:Incident:OpenIncidents' => 'Nyitott incidensek',
'Menu:Incident:OpenIncidents+' => 'Nyitott incidensek',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => 'Az elmúlt 14 nap incidensei prioritásuk szerint',
'UI-IncidentManagementOverview-Last-14-days' => 'Az elmúlt 14 nap incidensei',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => 'Nyitott incidensek állapotuk szerint',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => 'Nyitott incidensek ügyintézőnként',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => 'Nyitott incidensek ügyfelenként',
'Menu:IncidentManagement' => 'Incident Management~~',
'Menu:IncidentManagement+' => 'Incident Management~~',
'Menu:Incident:Overview' => 'Overview~~',
'Menu:Incident:Overview+' => 'Overview~~',
'Menu:NewIncident' => 'New incident~~',
'Menu:NewIncident+' => 'Create a new incident ticket~~',
'Menu:SearchIncidents' => 'Search for incidents~~',
'Menu:SearchIncidents+' => 'Search for incident tickets~~',
'Menu:Incident:Shortcuts' => 'Shortcuts~~',
'Menu:Incident:Shortcuts+' => '~~',
'Menu:Incident:MyIncidents' => 'Incidents assigned to me~~',
'Menu:Incident:MyIncidents+' => 'Incidents assigned to me (as Agent)~~',
'Menu:Incident:EscalatedIncidents' => 'Escalated incidents~~',
'Menu:Incident:EscalatedIncidents+' => 'Escalated incidents~~',
'Menu:Incident:OpenIncidents' => 'All open incidents~~',
'Menu:Incident:OpenIncidents+' => 'All open incidents~~',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => 'Last 14 days incident per priority~~',
'UI-IncidentManagementOverview-Last-14-days' => 'Last 14 days number of incidents~~',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => 'Open incidents by status~~',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => 'Open incidents by agent~~',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => 'Open incidents by customer~~',
));
@@ -60,179 +60,179 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:Incident' => 'Incidens',
'Class:Incident+' => '~~',
'Class:Incident/Attribute:status' => 'Állapot',
'Class:Incident/Attribute:status+' => '~~',
'Class:Incident/Attribute:status/Value:new' => 'Új',
'Class:Incident/Attribute:status/Value:new+' => '~~',
'Class:Incident/Attribute:status/Value:escalated_tto' => 'Eszkalált TTO',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '~~',
'Class:Incident/Attribute:status/Value:assigned' => 'Hozzárendelt',
'Class:Incident/Attribute:status/Value:assigned+' => '~~',
'Class:Incident/Attribute:status/Value:escalated_ttr' => 'Eszkalált TTR',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '~~',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => 'Jóváhagyásra vár',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '~~',
'Class:Incident/Attribute:status/Value:pending' => 'Függőben',
'Class:Incident/Attribute:status/Value:pending+' => '~~',
'Class:Incident/Attribute:status/Value:resolved' => 'Megoldva',
'Class:Incident/Attribute:status/Value:resolved+' => '~~',
'Class:Incident/Attribute:status/Value:closed' => 'Lezárt',
'Class:Incident/Attribute:status/Value:closed+' => '~~',
'Class:Incident/Attribute:impact' => 'Hatása',
'Class:Incident/Attribute:impact+' => '~~',
'Class:Incident/Attribute:impact/Value:1' => 'Részlegre',
'Class:Incident/Attribute:impact/Value:1+' => '~~',
'Class:Incident/Attribute:impact/Value:2' => 'Szolgáltatásra',
'Class:Incident/Attribute:impact/Value:2+' => '~~',
'Class:Incident/Attribute:impact/Value:3' => 'Személyre',
'Class:Incident/Attribute:impact/Value:3+' => '~~',
'Class:Incident/Attribute:priority' => 'Prioritás',
'Class:Incident/Attribute:priority+' => '~~',
'Class:Incident/Attribute:priority/Value:1' => 'Kritikus',
'Class:Incident/Attribute:priority/Value:1+' => 'critical~~',
'Class:Incident/Attribute:priority/Value:2' => 'Magas',
'Class:Incident/Attribute:priority/Value:2+' => 'high~~',
'Class:Incident/Attribute:priority/Value:3' => 'Közepes',
'Class:Incident/Attribute:priority/Value:3+' => 'medium~~',
'Class:Incident/Attribute:priority/Value:4' => 'Alacsony',
'Class:Incident/Attribute:priority/Value:4+' => 'low~~',
'Class:Incident/Attribute:urgency' => 'Sürgősség',
'Class:Incident/Attribute:urgency+' => '~~',
'Class:Incident/Attribute:urgency/Value:1' => 'Nem várhat',
'Class:Incident/Attribute:urgency/Value:1+' => 'critical~~',
'Class:Incident/Attribute:urgency/Value:2' => 'Nagyon sürgős',
'Class:Incident/Attribute:urgency/Value:2+' => 'high~~',
'Class:Incident/Attribute:urgency/Value:3' => 'Sürgős',
'Class:Incident/Attribute:urgency/Value:3+' => 'sürgős',
'Class:Incident/Attribute:urgency/Value:4' => 'Nem sürgős',
'Class:Incident/Attribute:urgency/Value:4+' => 'low~~',
'Class:Incident/Attribute:origin' => 'Eredet',
'Class:Incident/Attribute:origin+' => '~~',
'Class:Incident/Attribute:origin/Value:mail' => 'Email',
'Class:Incident/Attribute:origin/Value:mail+' => 'email~~',
'Class:Incident/Attribute:origin/Value:monitoring' => 'Felügyelet',
'Class:Incident/Attribute:origin/Value:monitoring+' => 'monitoring~~',
'Class:Incident/Attribute:origin/Value:phone' => 'Telefon',
'Class:Incident/Attribute:origin/Value:phone+' => 'phone~~',
'Class:Incident/Attribute:origin/Value:portal' => 'Portál',
'Class:Incident/Attribute:origin/Value:portal+' => 'portal~~',
'Class:Incident/Attribute:service_id' => 'Szolgáltatás',
'Class:Incident/Attribute:service_id+' => '~~',
'Class:Incident/Attribute:service_name' => 'Szolgáltatás név',
'Class:Incident/Attribute:service_name+' => '~~',
'Class:Incident/Attribute:servicesubcategory_id' => 'Szolgáltatás alkategória',
'Class:Incident/Attribute:servicesubcategory_id+' => '~~',
'Class:Incident/Attribute:servicesubcategory_name' => 'Szolgáltatás alkategória név',
'Class:Incident/Attribute:servicesubcategory_name+' => '~~',
'Class:Incident/Attribute:escalation_flag' => 'Sürgősség jelzés',
'Class:Incident/Attribute:escalation_flag+' => '~~',
'Class:Incident/Attribute:escalation_flag/Value:no' => 'Nem',
'Class:Incident/Attribute:escalation_flag/Value:no+' => 'No~~',
'Class:Incident/Attribute:escalation_flag/Value:yes' => 'Igen',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => 'Yes~~',
'Class:Incident/Attribute:escalation_reason' => 'Sürgősségi ok',
'Class:Incident/Attribute:escalation_reason+' => '~~',
'Class:Incident/Attribute:assignment_date' => 'Megbízási dátum',
'Class:Incident/Attribute:assignment_date+' => '~~',
'Class:Incident/Attribute:resolution_date' => 'Megoldási dátum',
'Class:Incident/Attribute:resolution_date+' => '~~',
'Class:Incident/Attribute:last_pending_date' => 'Függőben lévőség dátum',
'Class:Incident/Attribute:last_pending_date+' => '~~',
'Class:Incident/Attribute:cumulatedpending' => 'Kumulált függőben lévő',
'Class:Incident/Attribute:cumulatedpending+' => '~~',
'Class:Incident/Attribute:tto' => 'TTO',
'Class:Incident/Attribute:tto+' => '~~',
'Class:Incident/Attribute:ttr' => 'TTR',
'Class:Incident/Attribute:ttr+' => '~~',
'Class:Incident/Attribute:tto_escalation_deadline' => 'TTO határidő',
'Class:Incident/Attribute:tto_escalation_deadline+' => '~~',
'Class:Incident/Attribute:sla_tto_passed' => 'SLA TTO letelve',
'Class:Incident/Attribute:sla_tto_passed+' => '~~',
'Class:Incident/Attribute:sla_tto_over' => 'SLA TTO túllépve',
'Class:Incident/Attribute:sla_tto_over+' => '~~',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'TTR határidő',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '~~',
'Class:Incident/Attribute:sla_ttr_passed' => 'SLA TTR letelve',
'Class:Incident/Attribute:sla_ttr_passed+' => '~~',
'Class:Incident/Attribute:sla_ttr_over' => 'SLA TTR túllépve',
'Class:Incident/Attribute:sla_ttr_over+' => '~~',
'Class:Incident/Attribute:time_spent' => 'Időráfordítás',
'Class:Incident/Attribute:time_spent+' => '~~',
'Class:Incident/Attribute:resolution_code' => 'Megoldás kód',
'Class:Incident/Attribute:resolution_code+' => '~~',
'Class:Incident/Attribute:resolution_code/Value:assistance' => 'Támogatás',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => '',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'Programiba javítás',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => '',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => 'Hardver javítás',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => '',
'Class:Incident/Attribute:resolution_code/Value:other' => 'Egyéb',
'Class:Incident/Attribute:resolution_code/Value:other+' => '',
'Class:Incident/Attribute:resolution_code/Value:software patch' => 'Szoftverfrissítés',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => '',
'Class:Incident/Attribute:resolution_code/Value:system update' => 'Rendszerfrissítés',
'Class:Incident/Attribute:resolution_code/Value:system update+' => '',
'Class:Incident/Attribute:resolution_code/Value:training' => 'Oktatás',
'Class:Incident/Attribute:resolution_code/Value:training+' => '',
'Class:Incident/Attribute:solution' => 'Megoldás',
'Class:Incident/Attribute:solution+' => '~~',
'Class:Incident/Attribute:pending_reason' => 'Függőben lévőség oka',
'Class:Incident/Attribute:pending_reason+' => '~~',
'Class:Incident/Attribute:parent_incident_id' => 'Fölérendelt incidens',
'Class:Incident/Attribute:parent_incident_id+' => '~~',
'Class:Incident/Attribute:parent_incident_ref' => 'Referenciaszám',
'Class:Incident/Attribute:parent_incident_ref+' => '~~',
'Class:Incident/Attribute:parent_change_id' => 'Fölérendelt változás',
'Class:Incident/Attribute:parent_change_id+' => '~~',
'Class:Incident/Attribute:parent_change_ref' => 'Referenciaszám',
'Class:Incident/Attribute:parent_change_ref+' => '~~',
'Class:Incident/Attribute:parent_problem_id' => 'Fölérendelt probléma',
'Class:Incident/Attribute:parent_problem_id+' => '~~',
'Class:Incident/Attribute:parent_problem_ref' => 'Referenciaszám',
'Class:Incident/Attribute:parent_problem_ref+' => '~~',
'Class:Incident/Attribute:related_request_list' => 'Kapcsolódó kérelmek',
'Class:Incident/Attribute:related_request_list+' => '~~',
'Class:Incident/Attribute:child_incidents_list' => 'Kapcsolódó incidensek',
'Class:Incident/Attribute:child_incidents_list+' => 'Az összes ehhez az incidenshez kapcsolódó incidens',
'Class:Incident/Attribute:public_log' => 'Nyilvános napló',
'Class:Incident/Attribute:public_log+' => '~~',
'Class:Incident/Attribute:user_satisfaction' => 'Felhasználói elégedettség',
'Class:Incident/Attribute:user_satisfaction+' => '~~',
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Nagyon elégedett',
'Class:Incident/Attribute:user_satisfaction/Value:1+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Viszonylag elégedett',
'Class:Incident/Attribute:user_satisfaction/Value:2+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Inkább elégedetlen',
'Class:Incident/Attribute:user_satisfaction/Value:3+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Nagyon elégedetlen',
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '',
'Class:Incident/Attribute:user_comment' => 'Felhasználói megjegyzés',
'Class:Incident/Attribute:user_comment+' => '~~',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'parent_incident_id_friendlyname',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '~~',
'Class:Incident/Stimulus:ev_assign' => 'Hozzárendelés',
'Class:Incident/Stimulus:ev_assign+' => '~~',
'Class:Incident/Stimulus:ev_reassign' => 'Újra hozzárendelés',
'Class:Incident/Stimulus:ev_reassign+' => '~~',
'Class:Incident/Stimulus:ev_pending' => 'Függőben',
'Class:Incident/Stimulus:ev_pending+' => '~~',
'Class:Incident/Stimulus:ev_timeout' => 'Időtúllépés',
'Class:Incident/Stimulus:ev_timeout+' => '~~',
'Class:Incident/Stimulus:ev_autoresolve' => 'Automatikus megoldás',
'Class:Incident/Stimulus:ev_autoresolve+' => '~~',
'Class:Incident/Stimulus:ev_autoclose' => 'Automatikus lezárás',
'Class:Incident/Stimulus:ev_autoclose+' => '~~',
'Class:Incident/Stimulus:ev_resolve' => 'Megoldva',
'Class:Incident/Stimulus:ev_resolve+' => '~~',
'Class:Incident/Stimulus:ev_close' => 'Lezárás',
'Class:Incident/Stimulus:ev_close+' => '~~',
'Class:Incident/Stimulus:ev_reopen' => 'Újranyitás',
'Class:Incident/Stimulus:ev_reopen+' => '~~',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => 'A fölérendelt incidenst nem lehet magához az incidenshez rendelni.',
'Class:Incident' => 'Incident~~',
'Class:Incident+' => '~~',
'Class:Incident/Attribute:status' => 'Status~~',
'Class:Incident/Attribute:status+' => '~~',
'Class:Incident/Attribute:status/Value:new' => 'New~~',
'Class:Incident/Attribute:status/Value:new+' => '~~',
'Class:Incident/Attribute:status/Value:escalated_tto' => 'Escalated TTO~~',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '~~',
'Class:Incident/Attribute:status/Value:assigned' => 'Assigned~~',
'Class:Incident/Attribute:status/Value:assigned+' => '~~',
'Class:Incident/Attribute:status/Value:escalated_ttr' => 'Escalated TTR~~',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '~~',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => 'Waiting for approval~~',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '~~',
'Class:Incident/Attribute:status/Value:pending' => 'Pending~~',
'Class:Incident/Attribute:status/Value:pending+' => '~~',
'Class:Incident/Attribute:status/Value:resolved' => 'Resolved~~',
'Class:Incident/Attribute:status/Value:resolved+' => '~~',
'Class:Incident/Attribute:status/Value:closed' => 'Closed~~',
'Class:Incident/Attribute:status/Value:closed+' => '~~',
'Class:Incident/Attribute:impact' => 'Impact~~',
'Class:Incident/Attribute:impact+' => '~~',
'Class:Incident/Attribute:impact/Value:1' => 'A department~~',
'Class:Incident/Attribute:impact/Value:1+' => '~~',
'Class:Incident/Attribute:impact/Value:2' => 'A service~~',
'Class:Incident/Attribute:impact/Value:2+' => '~~',
'Class:Incident/Attribute:impact/Value:3' => 'A person~~',
'Class:Incident/Attribute:impact/Value:3+' => '~~',
'Class:Incident/Attribute:priority' => 'Priority~~',
'Class:Incident/Attribute:priority+' => '~~',
'Class:Incident/Attribute:priority/Value:1' => 'critical~~',
'Class:Incident/Attribute:priority/Value:1+' => 'critical~~',
'Class:Incident/Attribute:priority/Value:2' => 'high~~',
'Class:Incident/Attribute:priority/Value:2+' => 'high~~',
'Class:Incident/Attribute:priority/Value:3' => 'medium~~',
'Class:Incident/Attribute:priority/Value:3+' => 'medium~~',
'Class:Incident/Attribute:priority/Value:4' => 'low~~',
'Class:Incident/Attribute:priority/Value:4+' => 'low~~',
'Class:Incident/Attribute:urgency' => 'Urgency~~',
'Class:Incident/Attribute:urgency+' => '~~',
'Class:Incident/Attribute:urgency/Value:1' => 'critical~~',
'Class:Incident/Attribute:urgency/Value:1+' => 'critical~~',
'Class:Incident/Attribute:urgency/Value:2' => 'high~~',
'Class:Incident/Attribute:urgency/Value:2+' => 'high~~',
'Class:Incident/Attribute:urgency/Value:3' => 'medium~~',
'Class:Incident/Attribute:urgency/Value:3+' => 'medium~~',
'Class:Incident/Attribute:urgency/Value:4' => 'low~~',
'Class:Incident/Attribute:urgency/Value:4+' => 'low~~',
'Class:Incident/Attribute:origin' => 'Origin~~',
'Class:Incident/Attribute:origin+' => '~~',
'Class:Incident/Attribute:origin/Value:mail' => 'email~~',
'Class:Incident/Attribute:origin/Value:mail+' => 'email~~',
'Class:Incident/Attribute:origin/Value:monitoring' => 'monitoring~~',
'Class:Incident/Attribute:origin/Value:monitoring+' => 'monitoring~~',
'Class:Incident/Attribute:origin/Value:phone' => 'phone~~',
'Class:Incident/Attribute:origin/Value:phone+' => 'phone~~',
'Class:Incident/Attribute:origin/Value:portal' => 'portal~~',
'Class:Incident/Attribute:origin/Value:portal+' => 'portal~~',
'Class:Incident/Attribute:service_id' => 'Service~~',
'Class:Incident/Attribute:service_id+' => '~~',
'Class:Incident/Attribute:service_name' => 'Service name~~',
'Class:Incident/Attribute:service_name+' => '~~',
'Class:Incident/Attribute:servicesubcategory_id' => 'Service subcategory~~',
'Class:Incident/Attribute:servicesubcategory_id+' => '~~',
'Class:Incident/Attribute:servicesubcategory_name' => 'Service subcategory name~~',
'Class:Incident/Attribute:servicesubcategory_name+' => '~~',
'Class:Incident/Attribute:escalation_flag' => 'Hot Flag~~',
'Class:Incident/Attribute:escalation_flag+' => '~~',
'Class:Incident/Attribute:escalation_flag/Value:no' => 'No~~',
'Class:Incident/Attribute:escalation_flag/Value:no+' => 'No~~',
'Class:Incident/Attribute:escalation_flag/Value:yes' => 'Yes~~',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => 'Yes~~',
'Class:Incident/Attribute:escalation_reason' => 'Hot reason~~',
'Class:Incident/Attribute:escalation_reason+' => '~~',
'Class:Incident/Attribute:assignment_date' => 'Assignment date~~',
'Class:Incident/Attribute:assignment_date+' => '~~',
'Class:Incident/Attribute:resolution_date' => 'Resolution date~~',
'Class:Incident/Attribute:resolution_date+' => '~~',
'Class:Incident/Attribute:last_pending_date' => 'Last pending date~~',
'Class:Incident/Attribute:last_pending_date+' => '~~',
'Class:Incident/Attribute:cumulatedpending' => 'Cumulated pending~~',
'Class:Incident/Attribute:cumulatedpending+' => '~~',
'Class:Incident/Attribute:tto' => 'tto~~',
'Class:Incident/Attribute:tto+' => '~~',
'Class:Incident/Attribute:ttr' => 'ttr~~',
'Class:Incident/Attribute:ttr+' => '~~',
'Class:Incident/Attribute:tto_escalation_deadline' => 'TTO Deadline~~',
'Class:Incident/Attribute:tto_escalation_deadline+' => '~~',
'Class:Incident/Attribute:sla_tto_passed' => 'SLA tto passed~~',
'Class:Incident/Attribute:sla_tto_passed+' => '~~',
'Class:Incident/Attribute:sla_tto_over' => 'SLA tto over~~',
'Class:Incident/Attribute:sla_tto_over+' => '~~',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'TTR Deadline~~',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '~~',
'Class:Incident/Attribute:sla_ttr_passed' => 'SLA ttr passed~~',
'Class:Incident/Attribute:sla_ttr_passed+' => '~~',
'Class:Incident/Attribute:sla_ttr_over' => 'SLA ttr over~~',
'Class:Incident/Attribute:sla_ttr_over+' => '~~',
'Class:Incident/Attribute:time_spent' => 'Resolution delay~~',
'Class:Incident/Attribute:time_spent+' => '~~',
'Class:Incident/Attribute:resolution_code' => 'Resolution code~~',
'Class:Incident/Attribute:resolution_code+' => '~~',
'Class:Incident/Attribute:resolution_code/Value:assistance' => 'assistance~~',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => 'assistance~~',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'bug fixed~~',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => 'bug fixed~~',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => 'hardware repair~~',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => 'hardware repair~~',
'Class:Incident/Attribute:resolution_code/Value:other' => 'other~~',
'Class:Incident/Attribute:resolution_code/Value:other+' => 'other~~',
'Class:Incident/Attribute:resolution_code/Value:software patch' => 'software patch~~',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => 'software patch~~',
'Class:Incident/Attribute:resolution_code/Value:system update' => 'system update~~',
'Class:Incident/Attribute:resolution_code/Value:system update+' => 'system update~~',
'Class:Incident/Attribute:resolution_code/Value:training' => 'training~~',
'Class:Incident/Attribute:resolution_code/Value:training+' => 'training~~',
'Class:Incident/Attribute:solution' => 'Solution~~',
'Class:Incident/Attribute:solution+' => '~~',
'Class:Incident/Attribute:pending_reason' => 'Pending reason~~',
'Class:Incident/Attribute:pending_reason+' => '~~',
'Class:Incident/Attribute:parent_incident_id' => 'Parent incident~~',
'Class:Incident/Attribute:parent_incident_id+' => '~~',
'Class:Incident/Attribute:parent_incident_ref' => 'Parent incident ref~~',
'Class:Incident/Attribute:parent_incident_ref+' => '~~',
'Class:Incident/Attribute:parent_change_id' => 'Parent change~~',
'Class:Incident/Attribute:parent_change_id+' => '~~',
'Class:Incident/Attribute:parent_change_ref' => 'Parent change ref~~',
'Class:Incident/Attribute:parent_change_ref+' => '~~',
'Class:Incident/Attribute:parent_problem_id' => 'Parent problem id~~',
'Class:Incident/Attribute:parent_problem_id+' => '~~',
'Class:Incident/Attribute:parent_problem_ref' => 'Parent problem ref~~',
'Class:Incident/Attribute:parent_problem_ref+' => '~~',
'Class:Incident/Attribute:related_request_list' => 'Child requests~~',
'Class:Incident/Attribute:related_request_list+' => '~~',
'Class:Incident/Attribute:child_incidents_list' => 'Child incidents~~',
'Class:Incident/Attribute:child_incidents_list+' => 'All the child incidents related to this incident~~',
'Class:Incident/Attribute:public_log' => 'Public log~~',
'Class:Incident/Attribute:public_log+' => '~~',
'Class:Incident/Attribute:user_satisfaction' => 'User satisfaction~~',
'Class:Incident/Attribute:user_satisfaction+' => '~~',
'Class:Incident/Attribute:user_satisfaction/Value:1' => 'Very satisfied~~',
'Class:Incident/Attribute:user_satisfaction/Value:1+' => 'Very satisfied~~',
'Class:Incident/Attribute:user_satisfaction/Value:2' => 'Fairly statisfied~~',
'Class:Incident/Attribute:user_satisfaction/Value:2+' => 'Fairly statisfied~~',
'Class:Incident/Attribute:user_satisfaction/Value:3' => 'Rather Dissatified~~',
'Class:Incident/Attribute:user_satisfaction/Value:3+' => 'Rather Dissatified~~',
'Class:Incident/Attribute:user_satisfaction/Value:4' => 'Very Dissatisfied~~',
'Class:Incident/Attribute:user_satisfaction/Value:4+' => 'Very Dissatisfied~~',
'Class:Incident/Attribute:user_comment' => 'User comment~~',
'Class:Incident/Attribute:user_comment+' => '~~',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'parent_incident_id_friendlyname~~',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '~~',
'Class:Incident/Stimulus:ev_assign' => 'Assign~~',
'Class:Incident/Stimulus:ev_assign+' => '~~',
'Class:Incident/Stimulus:ev_reassign' => 'Re-assign~~',
'Class:Incident/Stimulus:ev_reassign+' => '~~',
'Class:Incident/Stimulus:ev_pending' => 'Pending~~',
'Class:Incident/Stimulus:ev_pending+' => '~~',
'Class:Incident/Stimulus:ev_timeout' => 'Timeout~~',
'Class:Incident/Stimulus:ev_timeout+' => '~~',
'Class:Incident/Stimulus:ev_autoresolve' => 'Automatic resolve~~',
'Class:Incident/Stimulus:ev_autoresolve+' => '~~',
'Class:Incident/Stimulus:ev_autoclose' => 'Automatic close~~',
'Class:Incident/Stimulus:ev_autoclose+' => '~~',
'Class:Incident/Stimulus:ev_resolve' => 'Mark as resolved~~',
'Class:Incident/Stimulus:ev_resolve+' => '~~',
'Class:Incident/Stimulus:ev_close' => 'Close this request~~',
'Class:Incident/Stimulus:ev_close+' => '~~',
'Class:Incident/Stimulus:ev_reopen' => 'Re-open~~',
'Class:Incident/Stimulus:ev_reopen+' => '~~',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => 'Cannot assign the Parent incident to the incident itself~~',
'Class:Incident/Method:ResolveChildTickets' => 'ResolveChildTickets',
'Class:Incident/Method:ResolveChildTickets+' => 'A megoldás kaszkádozása a kapcsolódó jegyhez (ev_autoresolve), és a következő jellemzők összehangolása: szolgáltatás, csapat, ügyintéző, megoldási információ.',
'Tickets:Related:OpenIncidents' => 'Nyitott incidensek',
'Class:Incident/Method:ResolveChildTickets' => 'ResolveChildTickets~~',
'Class:Incident/Method:ResolveChildTickets+' => 'Cascade the resolution to child ticket (ev_autoresolve), and align the following characteristics: service, team, agent, resolution info~~',
'Tickets:Related:OpenIncidents' => 'Open incidents~~',
));

View File

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

View File

@@ -20,48 +20,48 @@
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:KnownError' => 'Ismert hiba',
'Class:KnownError+' => '',
'Class:KnownError/Attribute:name' => 'Ismert hiba név',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Ügyfél',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => 'Ügyfél név',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Kapcsolódó probléma',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Referenciaszám',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Hibajelenség',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => 'Gyökér ok',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => 'Elkerülő megoldás',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => 'Megoldás',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => 'Hibakód',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => 'Hibatartomány',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => 'Alkalmazás',
'Class:KnownError/Attribute:domain/Value:Application+' => '',
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Desktop+' => '',
'Class:KnownError/Attribute:domain/Value:Network' => 'Hálózat',
'Class:KnownError/Attribute:domain/Value:Network+' => '',
'Class:KnownError/Attribute:domain/Value:Server' => 'Szerver',
'Class:KnownError/Attribute:domain/Value:Server+' => '',
'Class:KnownError/Attribute:vendor' => 'Gyártó',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => 'Modell',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => 'Verzió',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'CI-k',
'Class:KnownError/Attribute:ci_list+' => '',
'Class:KnownError/Attribute:document_list' => 'Dokumentumok',
'Class:KnownError/Attribute:document_list+' => '',
'Class:KnownError' => 'Ismert hiba',
'Class:KnownError+' => '',
'Class:KnownError/Attribute:name' => 'Név',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Ügyfél',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => 'Ügyfél neve',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Kapcsolódó probléma',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Referencia',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Jelenség',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => 'Gyökérok',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => 'Elkerülő megoldás',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => 'Megoldás',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => 'Hibakód',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => 'Hiba behatárolás',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => 'Alkalmazás',
'Class:KnownError/Attribute:domain/Value:Application+' => '',
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Desktop+' => '',
'Class:KnownError/Attribute:domain/Value:Network' => 'Hálózat',
'Class:KnownError/Attribute:domain/Value:Network+' => '',
'Class:KnownError/Attribute:domain/Value:Server' => 'Szerver',
'Class:KnownError/Attribute:domain/Value:Server+' => '',
'Class:KnownError/Attribute:vendor' => 'Szállító',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => 'Model',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => 'Verzió',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'CI-k',
'Class:KnownError/Attribute:ci_list+' => 'All the configuration items that are related to this known error~~',
'Class:KnownError/Attribute:document_list' => 'Dokumentumok',
'Class:KnownError/Attribute:document_list+' => 'All the documents linked to this known error~~',
));
//
@@ -69,18 +69,18 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:lnkErrorToFunctionalCI' => 'Hiba / Funkcionális CI',
'Class:lnkErrorToFunctionalCI+' => 'Infra ismert hibához kapcsolódóan',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'CI',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'CI név',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => 'Hiba',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => 'Hiba név',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => 'Hibaok',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '~~',
'Class:lnkErrorToFunctionalCI' => 'Link Error / FunctionalCI~~',
'Class:lnkErrorToFunctionalCI+' => 'Infra related to a known error~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'CI~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'CI name~~',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => 'Error~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => 'Error name~~',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '~~',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => 'Reason~~',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '~~',
));
//
@@ -88,28 +88,28 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Class:lnkDocumentToError' => 'Dokumentumok / Hibák',
'Class:lnkDocumentToError+' => '~~',
'Class:lnkDocumentToError/Attribute:document_id' => 'Dokumentum',
'Class:lnkDocumentToError/Attribute:document_id+' => '~~',
'Class:lnkDocumentToError/Attribute:document_name' => 'Dokumentum név',
'Class:lnkDocumentToError/Attribute:document_name+' => '~~',
'Class:lnkDocumentToError/Attribute:error_id' => 'Hiba',
'Class:lnkDocumentToError/Attribute:error_id+' => '~~',
'Class:lnkDocumentToError/Attribute:error_name' => 'Hiba név',
'Class:lnkDocumentToError/Attribute:error_name+' => '~~',
'Class:lnkDocumentToError/Attribute:link_type' => 'link_type',
'Class:lnkDocumentToError/Attribute:link_type+' => '~~',
'Class:lnkDocumentToError' => 'Link Documents / Errors~~',
'Class:lnkDocumentToError+' => 'A link between a document and a known error~~',
'Class:lnkDocumentToError/Attribute:document_id' => 'Document~~',
'Class:lnkDocumentToError/Attribute:document_id+' => '~~',
'Class:lnkDocumentToError/Attribute:document_name' => 'Document Name~~',
'Class:lnkDocumentToError/Attribute:document_name+' => '~~',
'Class:lnkDocumentToError/Attribute:error_id' => 'Error~~',
'Class:lnkDocumentToError/Attribute:error_id+' => '~~',
'Class:lnkDocumentToError/Attribute:error_name' => 'Error name~~',
'Class:lnkDocumentToError/Attribute:error_name+' => '~~',
'Class:lnkDocumentToError/Attribute:link_type' => 'link_type~~',
'Class:lnkDocumentToError/Attribute:link_type+' => '~~',
));
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Menu:ProblemManagement' => 'Problémakezelés',
'Menu:ProblemManagement+' => '',
'Menu:Problem:Shortcuts' => 'Gyorsgomb',
'Menu:NewError' => 'Új ismert hiba',
'Menu:NewError+' => '',
'Menu:SearchError' => 'Ismert hiba keresés',
'Menu:SearchError+' => '',
'Menu:Problem:KnownErrors' => 'Ismert hibák',
'Menu:Problem:KnownErrors+' => '',
'Menu:ProblemManagement' => 'Probléma menedzsment',
'Menu:ProblemManagement+' => '',
'Menu:Problem:Shortcuts' => 'Gyorsmenü',
'Menu:NewError' => 'Új ismert hiba',
'Menu:NewError+' => '',
'Menu:SearchError' => 'Ismert hiba keresés',
'Menu:SearchError+' => '',
'Menu:Problem:KnownErrors' => 'Összes ismert hiba',
'Menu:Problem:KnownErrors+' => '',
));

View File

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

View File

@@ -229,7 +229,6 @@ HTML
$this->Set('refresh_token', $oAccessToken->getRefreshToken());
}
$this->Set('status', 'active');
$this->AllowWrite();
$this->DBUpdate();
}
]]></code>

View File

@@ -7,20 +7,20 @@
*/
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Menu:CreateMailbox' => 'Postafiók létrehozása...',
'Menu:OAuthClient' => 'OAuth ügyfél',
'Menu:OAuthClient+' => '~~',
'Menu:GenerateTokens' => 'Hozzáférési tokenek generálása...',
'Menu:RegenerateTokens' => 'Hozzáférési tokenek újragenerálása...',
'Menu:CreateMailbox' => 'Create a mailbox...~~',
'Menu:OAuthClient' => 'OAuth Client~~',
'Menu:OAuthClient+' => '~~',
'Menu:GenerateTokens' => 'Generate access tokens...~~',
'Menu:RegenerateTokens' => 'Regenerate access tokens...~~',
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Postafiók létrehozás',
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailbox creation~~',
'itop-oauth-client:UsedForSMTP' => 'Ez az OAuth ügyfél SMTP-hez van használva',
'itop-oauth-client:TestSMTP' => 'Email tesztüzenet',
'itop-oauth-client:MissingOAuthClient' => 'Hiányzó Oauth ügyfél a %1$s felhasználóhoz',
'itop-oauth-client:Message:MissingToken' => 'Hozzáférési token generálása az OAuth ügyfél használata előtt',
'itop-oauth-client:Message:TokenCreated' => 'Hozzáférési token kész',
'itop-oauth-client:Message:TokenRecreated' => 'Hozzáférési token újragenerálva',
'itop-oauth-client:UsedForSMTP' => 'This OAuth client is used for SMTP~~',
'itop-oauth-client:TestSMTP' => 'Email send test~~',
'itop-oauth-client:MissingOAuthClient' => 'Missing Oauth client for user name %1$s~~',
'itop-oauth-client:Message:MissingToken' => 'Generate access token before using this OAuth client~~',
'itop-oauth-client:Message:TokenCreated' => 'Access token created~~',
'itop-oauth-client:Message:TokenRecreated' => 'Access token regenerated~~',
]);
//
@@ -28,45 +28,47 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Class:OAuthClient' => 'OAuth ügyfél',
'Class:OAuthClient/Attribute:provider' => 'Szolgáltató',
'Class:OAuthClient/Attribute:provider+' => '~~',
'Class:OAuthClient/Attribute:name' => 'Bejelentkezés',
'Class:OAuthClient/Attribute:name+' => '~~',
'Class:OAuthClient/Attribute:scope' => 'Hatókör',
'Class:OAuthClient/Attribute:scope+' => '~~',
'Class:OAuthClient/Attribute:description' => 'Leírás',
'Class:OAuthClient/Attribute:description+' => '~~',
'Class:OAuthClient/Attribute:client_id' => 'Ügyfél azonosító',
'Class:OAuthClient/Attribute:client_id+' => '~~',
'Class:OAuthClient/Attribute:client_secret' => 'Ügyfél kulcs',
'Class:OAuthClient/Attribute:client_secret+' => '~~',
'Class:OAuthClient/Attribute:refresh_token' => 'Token frissítése',
'Class:OAuthClient/Attribute:refresh_token+' => '~~',
'Class:OAuthClient/Attribute:refresh_token_expiration' => 'A token lejáratának frissítése',
'Class:OAuthClient/Attribute:refresh_token_expiration+' => '~~',
'Class:OAuthClient/Attribute:token' => 'Hozzáférési token',
'Class:OAuthClient/Attribute:token+' => '~~',
'Class:OAuthClient/Attribute:token_expiration' => 'Hozzáférési token lejárata',
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
'Class:OAuthClient/Attribute:redirect_url' => 'URL átirányítás',
'Class:OAuthClient/Attribute:redirect_url+' => '~~',
'Class:OAuthClient/Attribute:mailbox_list' => 'Postafiók lista',
'Class:OAuthClient/Attribute:mailbox_list+' => '~~',
'Class:OAuthClient' => 'OAuth Client~~',
'Class:OAuthClient/Attribute:provider' => 'Provider~~',
'Class:OAuthClient/Attribute:provider+' => '~~',
'Class:OAuthClient/Attribute:name' => 'Login~~',
'Class:OAuthClient/Attribute:name+' => '~~',
'Class:OAuthClient/Attribute:scope' => 'Scope~~',
'Class:OAuthClient/Attribute:scope+' => '~~',
'Class:OAuthClient/Attribute:description' => 'Description~~',
'Class:OAuthClient/Attribute:description+' => '~~',
'Class:OAuthClient/Attribute:client_id' => 'Client id~~',
'Class:OAuthClient/Attribute:client_id+' => '~~',
'Class:OAuthClient/Attribute:client_secret' => 'Client secret~~',
'Class:OAuthClient/Attribute:client_secret+' => '~~',
'Class:OAuthClient/Attribute:refresh_token' => 'Refresh token~~',
'Class:OAuthClient/Attribute:refresh_token+' => '~~',
'Class:OAuthClient/Attribute:refresh_token_expiration' => 'Refresh token expiration~~',
'Class:OAuthClient/Attribute:refresh_token_expiration+' => '~~',
'Class:OAuthClient/Attribute:token' => 'Access token~~',
'Class:OAuthClient/Attribute:token+' => '~~',
'Class:OAuthClient/Attribute:token_expiration' => 'Access token expiration~~',
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
'Class:OAuthClient/Attribute:redirect_url' => 'Redirect url~~',
'Class:OAuthClient/Attribute:redirect_url+' => '~~',
'Class:OAuthClient/Attribute:mailbox_list' => 'Mailbox list~~',
'Class:OAuthClient/Attribute:mailbox_list+' => '~~',
]);
//
// Class: OAuthClientAzure
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Class:OAuthClientAzure' => 'OAuth ügyfél Microsoft Azure-hoz',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
'Class:OAuthClientAzure' => 'OAuth client for Microsoft Azure~~',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)~~',
]);
//
// Class: OAuthClientGoogle
//
Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Class:OAuthClientGoogle' => 'OAuth ügyfél a Google-höz',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
'Class:OAuthClientGoogle' => 'OAuth client for Google~~',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)~~',
]);

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-oauth-client/3.0.4',
'itop-oauth-client/3.0.3',
array(
// Identification
//

View File

@@ -11,7 +11,6 @@ use Combodo\iTop\Application\TwigBase\Controller\Controller;
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
use Dict;
use IssueLog;
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use MetaModel;
use utils;
use WebPage;
@@ -66,15 +65,13 @@ class AjaxOauthClientController extends Controller
}
if (isset($aQuery['code'])) {
$sCode = $aQuery['code'];
try {
$oAccessToken = OAuthClientProviderFactory::GetAccessTokenFromCode($oOAuthClient, $sCode);
$oOAuthClient->SetAccessToken($oAccessToken);
$aResult['status'] = 'success';
}
catch (IdentityProviderException $e) {
$aResult['status'] = 'error';
$aResult['error_description'] = $e->getMessage();
}
$oAccessToken = OAuthClientProviderFactory::GetAccessTokenFromCode($oOAuthClient, $sCode);
$oOAuthClient->SetAccessToken($oAccessToken);
$aResult['status'] = 'success';
}
} else {
$aResult['status'] = 'error';

View File

@@ -18,137 +18,137 @@
*/
// Portal
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Page:DefaultTitle' => '%1$s Felhasználói portál',
'Page:PleaseWait' => 'Kérem várjon...',
'Page:Home' => 'Kezdőlap',
'Page:GoPortalHome' => 'Kezdőlap',
'Page:GoPreviousPage' => 'Előző oldal',
'Page:ReloadPage' => 'Oldal újratöltése',
'Portal:Button:Submit' => 'Beküldés',
'Portal:Button:Apply' => 'Alkalmazás',
'Portal:Button:Cancel' => 'Mégsem',
'Portal:Button:Close' => 'Bezárás',
'Portal:Button:Add' => 'Hozzáadás',
'Portal:Button:Remove' => 'Eltávolítás',
'Portal:Button:Delete' => 'Törlés',
'Portal:EnvironmentBanner:Title' => 'Jelenleg <strong>%1$s</strong> módban van',
'Portal:EnvironmentBanner:GoToProduction' => 'Visszatérés az ÉLES módba',
'Error:HTTP:400' => 'Hibás kérelem',
'Error:HTTP:401' => 'Azonosítás',
'Error:HTTP:404' => 'Az oldal nem található',
'Error:HTTP:500' => 'Hopp! Valami hiba történt.',
'Error:HTTP:GetHelp' => 'Kérjük, lépjen kapcsolatba a %1$s rendszergazdával, ha a probléma továbbra is fennáll.',
'Error:XHR:Fail' => 'Nem sikerült betölteni az adatokat, kérjük, lépjen kapcsolatba a %1$s rendszergazdával',
'Portal:ErrorUserLoggedOut' => 'Kijelentkezett, és a folytatáshoz újra be kell jelentkeznie.',
'Portal:Datatables:Language:Processing' => 'Kérem várjon...',
'Portal:Datatables:Language:Search' => 'Szűrő:',
'Portal:Datatables:Language:LengthMenu' => '_MENU_ elemek kijelzése oldalanként',
'Portal:Datatables:Language:ZeroRecords' => 'Nincs eredmény',
'Portal:Datatables:Language:Info' => '_PAGE_ oldal a _PAGES_ oldalból',
'Portal:Datatables:Language:InfoEmpty' => 'Nincs információ',
'Portal:Datatables:Language:InfoFiltered' => 'leszűrve _MAX_ elemből',
'Portal:Datatables:Language:EmptyTable' => 'Nincs adat ehhez a táblázathoz',
'Portal:Datatables:Language:DisplayLength:All' => 'Összes',
'Portal:Datatables:Language:Paginate:First' => 'Első',
'Portal:Datatables:Language:Paginate:Previous' => 'Előző',
'Portal:Datatables:Language:Paginate:Next' => 'Következő',
'Portal:Datatables:Language:Paginate:Last' => 'Utolsó',
'Portal:Datatables:Language:Sort:Ascending' => 'Növekvő rendezés',
'Portal:Datatables:Language:Sort:Descending' => 'Csökkenő rendezés',
'Portal:Autocomplete:NoResult' => 'Nincs adat',
'Portal:Attachments:DropZone:Message' => 'Húzza ide a fájlokat, hogy csatolmányként hozzáadhassa őket',
'Portal:File:None' => 'Nincs fájl',
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Megnyitás</a> / <a href="%4$s" class="file_download_link">Letöltés</a>',
'Portal:Calendar-FirstDayOfWeek' => 'hu', //work with moment.js locales
'Page:DefaultTitle' => '%1$s User portal~~',
'Page:PleaseWait' => 'Please wait...~~',
'Page:Home' => 'Home~~',
'Page:GoPortalHome' => 'Home page~~',
'Page:GoPreviousPage' => 'Previous page~~',
'Page:ReloadPage' => 'Reload page~~',
'Portal:Button:Submit' => 'Submit~~',
'Portal:Button:Apply' => 'Update~~',
'Portal:Button:Cancel' => 'Cancel~~',
'Portal:Button:Close' => 'Close~~',
'Portal:Button:Add' => 'Add~~',
'Portal:Button:Remove' => 'Remove~~',
'Portal:Button:Delete' => 'Delete~~',
'Portal:EnvironmentBanner:Title' => 'You are currently in <strong>%1$s</strong> mode~~',
'Portal:EnvironmentBanner:GoToProduction' => 'Go back to PRODUCTION mode~~',
'Error:HTTP:400' => 'Bad request~~',
'Error:HTTP:401' => 'Authentication~~',
'Error:HTTP:404' => 'Page not found~~',
'Error:HTTP:500' => 'Oops! An error has occured.~~',
'Error:HTTP:GetHelp' => 'Please contact your %1$s administrator if the problem keeps happening.~~',
'Error:XHR:Fail' => 'Could not load data, please contact your %1$s administrator~~',
'Portal:ErrorUserLoggedOut' => 'You are logged out and need to log in again in order to continue.~~',
'Portal:Datatables:Language:Processing' => 'Please wait...~~',
'Portal:Datatables:Language:Search' => 'Filter:~~',
'Portal:Datatables:Language:LengthMenu' => 'Display _MENU_ items per page~~',
'Portal:Datatables:Language:ZeroRecords' => 'No result~~',
'Portal:Datatables:Language:Info' => 'Page _PAGE_ of _PAGES_~~',
'Portal:Datatables:Language:InfoEmpty' => 'No information~~',
'Portal:Datatables:Language:InfoFiltered' => 'filtered out of _MAX_ items~~',
'Portal:Datatables:Language:EmptyTable' => 'No data available in this table~~',
'Portal:Datatables:Language:DisplayLength:All' => 'All~~',
'Portal:Datatables:Language:Paginate:First' => 'First~~',
'Portal:Datatables:Language:Paginate:Previous' => 'Previous~~',
'Portal:Datatables:Language:Paginate:Next' => 'Next~~',
'Portal:Datatables:Language:Paginate:Last' => 'Last~~',
'Portal:Datatables:Language:Sort:Ascending' => 'enable for an ascending sort~~',
'Portal:Datatables:Language:Sort:Descending' => 'enable for a descending sort~~',
'Portal:Autocomplete:NoResult' => 'No data~~',
'Portal:Attachments:DropZone:Message' => 'Drop your files to add them as attachments~~',
'Portal:File:None' => 'No file~~',
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>~~',
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">Open</a> / <a href="%4$s" class="file_download_link">Download</a>~~',
'Portal:Calendar-FirstDayOfWeek' => 'hu', //work with moment.js locales
));
// Object form
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Bejegyzés bezárása',
'Portal:Form:Close:Warning' => 'Szeretné elhagyni ezt az űrlapot? A megadott adatok elveszhetnek',
'Portal:Error:ObjectCannotBeCreated' => 'Hiba: az objektum nem hozható létre. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
'Portal:Error:ObjectCannotBeUpdated' => 'Hiba: az objektum nem frissíthető. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.',
'Portal:Form:Caselog:Entry:Close:Tooltip' => 'Close this entry~~',
'Portal:Form:Close:Warning' => 'Do you want to leave this form ? Data entered may be lost~~',
'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting again this form.~~',
'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting again this form.~~',
));
// UserProfile brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:UserProfile:Name' => 'Felhasználói profil',
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'Saját profil',
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Kijelentkezés',
'Brick:Portal:UserProfile:Password:Title' => 'Jelszó',
'Brick:Portal:UserProfile:Password:ChoosePassword' => 'Új jelszó',
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Jelszó megerősítése',
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'Jelszóváltoztatáshoz forduljon az %1$s rendszergazdához',
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Nem tudja megváltoztatni a jelszót, lépjen kapcsolatba az %1$s rendszergazdával',
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Személyi adatok',
'Brick:Portal:UserProfile:Photo:Title' => 'Fénykép',
'Brick:Portal:UserProfile:Name' => 'User profile~~',
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => 'My profile~~',
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => 'Logoff~~',
'Brick:Portal:UserProfile:Password:Title' => 'Password~~',
'Brick:Portal:UserProfile:Password:ChoosePassword' => 'Choose password~~',
'Brick:Portal:UserProfile:Password:ConfirmPassword' => 'Confirm password~~',
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => 'To change your password, please contact your %1$s administrator~~',
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => 'Can\'t change password, please contact your %1$s administrator~~',
'Brick:Portal:UserProfile:PersonalInformations:Title' => 'Personal informations~~',
'Brick:Portal:UserProfile:Photo:Title' => 'Photo~~',
));
// AggregatePageBrick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:AggregatePage:DefaultTitle' => 'Műszerfal',
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
));
// BrowseBrick brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:Browse:Name' => 'Böngésszen az elemek között',
'Brick:Portal:Browse:Mode:List' => 'Lista',
'Brick:Portal:Browse:Mode:Tree' => 'Fa',
'Brick:Portal:Browse:Mode:Mosaic' => 'Mozaik',
'Brick:Portal:Browse:Action:Drilldown' => 'Lefúrás',
'Brick:Portal:Browse:Action:View' => 'Részletek',
'Brick:Portal:Browse:Action:Edit' => 'Szerkesztés',
'Brick:Portal:Browse:Action:Create' => 'Létrehozás',
'Brick:Portal:Browse:Action:CreateObjectFromThis' => 'Új %1$s',
'Brick:Portal:Browse:Tree:ExpandAll' => 'Összes kinyitása',
'Brick:Portal:Browse:Tree:CollapseAll' => 'Összecsukás',
'Brick:Portal:Browse:Filter:NoData' => 'Nincs elem',
'Brick:Portal:Browse:Name' => 'Browse throught items~~',
'Brick:Portal:Browse:Mode:List' => 'List~~',
'Brick:Portal:Browse:Mode:Tree' => 'Tree~~',
'Brick:Portal:Browse:Mode:Mosaic' => 'Mosaic~~',
'Brick:Portal:Browse:Action:Drilldown' => 'Drilldown~~',
'Brick:Portal:Browse:Action:View' => 'Details~~',
'Brick:Portal:Browse:Action:Edit' => 'Edit~~',
'Brick:Portal:Browse:Action:Create' => 'Create~~',
'Brick:Portal:Browse:Action:CreateObjectFromThis' => 'New %1$s~~',
'Brick:Portal:Browse:Tree:ExpandAll' => 'Expand all~~',
'Brick:Portal:Browse:Tree:CollapseAll' => 'Collapse all~~',
'Brick:Portal:Browse:Filter:NoData' => 'No item~~',
));
// ManageBrick brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:Manage:Name' => 'Elemek kezelése',
'Brick:Portal:Manage:Table:NoData' => 'Nincs elem',
'Brick:Portal:Manage:Table:ItemActions' => 'Műveletek',
'Brick:Portal:Manage:DisplayMode:list' => 'Lista',
'Brick:Portal:Manage:DisplayMode:pie-chart' => 'Tortadiagram',
'Brick:Portal:Manage:DisplayMode:bar-chart' => 'Oszlopdiagram',
'Brick:Portal:Manage:Others' => 'Egyéb',
'Brick:Portal:Manage:All' => 'Összes',
'Brick:Portal:Manage:Group' => 'Csoport',
'Brick:Portal:Manage:fct:count' => 'Összesen',
'Brick:Portal:Manage:fct:sum' => 'Összeg',
'Brick:Portal:Manage:fct:avg' => 'Átlag',
'Brick:Portal:Manage:fct:min' => 'Minimum',
'Brick:Portal:Manage:fct:max' => 'Maximum',
'Brick:Portal:Manage:Name' => 'Manage items~~',
'Brick:Portal:Manage:Table:NoData' => 'No item.~~',
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
'Brick:Portal:Manage:DisplayMode:list' => 'List~~',
'Brick:Portal:Manage:DisplayMode:pie-chart' => 'Pie Chart~~',
'Brick:Portal:Manage:DisplayMode:bar-chart' => 'Bar Chart~~',
'Brick:Portal:Manage:Others' => 'Others~~',
'Brick:Portal:Manage:All' => 'All~~',
'Brick:Portal:Manage:Group' => 'Group~~',
'Brick:Portal:Manage:fct:count' => 'Total~~',
'Brick:Portal:Manage:fct:sum' => 'Sum~~',
'Brick:Portal:Manage:fct:avg' => 'Average~~',
'Brick:Portal:Manage:fct:min' => 'Min~~',
'Brick:Portal:Manage:fct:max' => 'Max~~',
));
// ObjectBrick brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:Object:Name' => 'Objektum',
'Brick:Portal:Object:Form:Create:Title' => 'Új %1$s',
'Brick:Portal:Object:Form:Edit:Title' => '%2$s frissítése (%1$s)',
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s',
'Brick:Portal:Object:Form:Stimulus:Title' => 'Adja meg a következő információkat:',
'Brick:Portal:Object:Form:Message:Saved' => 'Mentve',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s mentve',
'Brick:Portal:Object:Search:Regular:Title' => '%1$s kiválasztása (%2$s)',
'Brick:Portal:Object:Search:Hierarchy:Title' => '%1$s kiválasztása (%2$s)',
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s',
'Brick:Portal:Object:Copy:Tooltip' => 'Objektum hivatkozás másolása',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Másolva'
'Brick:Portal:Object:Name' => 'Object~~',
'Brick:Portal:Object:Form:Create:Title' => 'New %1$s~~',
'Brick:Portal:Object:Form:Edit:Title' => 'Updating %2$s (%1$s)~~',
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s~~',
'Brick:Portal:Object:Form:Stimulus:Title' => 'Please, fill the following informations:~~',
'Brick:Portal:Object:Form:Message:Saved' => 'Saved~~',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s saved~~',
'Brick:Portal:Object:Search:Regular:Title' => 'Select %1$s (%2$s)~~',
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Select %1$s (%2$s)~~',
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s~~',
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
));
// CreateBrick brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:Create:Name' => 'Gyors létrehozás',
'Brick:Portal:Create:ChooseType' => 'Válasszon típust',
'Brick:Portal:Create:Name' => 'Quick creation~~',
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
));
// Filter brick
Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'Brick:Portal:Filter:Name' => 'Tégla előszűrése',
'Brick:Portal:Filter:SearchInput:Placeholder' => 'pl. wifi kapcsolat',
'Brick:Portal:Filter:SearchInput:Submit' => 'Keresés',
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
));

View File

@@ -20,7 +20,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-portal-base/3.0.4', array(
'itop-portal-base/3.0.3', array(
// Identification
'label' => 'Portal Development Library',
'category' => 'Portal',

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